|
Introduction
It is a sad statistical fact that software projects are scientifically fragile and tend to fail more than other engineering fields.
"A Standish Group research report shows a staggering 31.1% of projects will be cancelled before they ever get completed. Further results indicate 52.7% of projects will cost 189% of their original estimates" (1)
The statistics also show results for different software company sizes and types:
"…such failures occur far more often than they should. What's more, the failures are universally unprejudiced: they happen in every country; to large companies and small; in commercial, nonprofit, and governmental organizations; and without regard to status or reputation…" (4)
Scope
This article describes several reasons for software project failures.
Who Should Read this Article?
Readers who are interested in the article question, especially software project managers.
When Can a Software Project be Defined as a Failure?
The failure mark of disgrace is quite arbitrary and subjective. Ask the project manager of a failure project and he will tell you that it is not. The intensiveness of the failure also varies from project to project. In a commercial software company, a failure will be related to the software consumer. For example:
- The software did not meet with the consumers need.
- The software release was later than scheduled (deadline violation).
- The software had too many bugs.
Sad Statistical facts
According to research conducted by the Standish Group in 2005:
- "… only 28 percent of software projects in 2000 succeeded outright …" (2)
- "… Some 23 percent were cancelled, and the remainder were substantially late …"(2)
- The following statistics are a result of the year 2000:
- The following is a list of failure reasons, Standish Group (1):
Why Do Software Projects Tend to Fail?
Note: The following list of software project failure reasons is not prioritized. Some of the reasons are claims that were measured by researchers. I have tried not to add my own judgment; it is left to the reader.
-
The maturity of the software engineering field
- The software engineering field is much younger than the other engineering fields and that, in time, will get more stable
- The field is young and therefore most of the field engineers and managers are also young. Young people have less experience and therefore tend to fail more
- Young people are more optimistic and tend to estimate badly
-
Shortage of knowledge base
As a relatively young engineering field, software engineering is short of accumulative knowledge bases. For example, the famous gang of four book "Design Patterns: Elements of Reusable Object-Oriented Software" was first published in late 1994. The book suggests design patterns to common software design problems and it is one of the famous knowledge base materials in the software engineering field. "Software engineering has evolved steadily from its founding days in the 1940s"(5), but it is still short of accumulative knowledge base as opposed to other engineering fields. Another example is OOP (Object Oriented Paradigm). OOP is considered to be more successful than the previous procedural paradigm. OOP was only embraced by the Software industry in the 1990s. "Even though it originated in the 1960s, OOP was not commonly used in mainstream software application development until the 1990s."(Wikipedia)
-
Software is not tangible
As opposed to other engineering fields like civil engineering, the software engineering building blocks are much less tangible and therefore hard to measure and estimate. "Software is abstract"(2)
-
Competition: harsh deadlines
The competition in the software industry is harsh. The Time-To-Market (TTM) is crucial and the drive to meet harsh deadlines is enormous. This characteristic, along with other methodological anomalies like "Code first; think later" and "Plan to throw one away; you will, anyhow," makes competition harsh. The hard competition in the software industry causes not only the need to deliver ASAP, but also the requirement to catch as many potential customer eyes as possible. Firing in every direction causes disorganization, fast coding and projects that are not well planned.
-
Technology changes rapidly
"Software development technologies change faster than other construction technologies."(2) Until recently, Microsoft was frequently bombarding the industry with new technologies. Rapid technology changes introduce liability for software manufactures. For example, new Operating Systems obligate a company like Ahead to release a new adaptable version of Nero. A few years ago, Microsoft had decided to change the way it introduced new technologies to the software industry. It introduced the wave methodology. In this methodology, Microsoft agreed to release a bundle of technologies (tools, Framework, programming languages etc.) in waves, every several years and by that, let the software industry adapt and digest the new upcoming technologies. Lots of popular software like Ulead Video Studio and Nero that used to run on Windows XP do not run on Windows Vista.
-
Change is tempting
A building architect will not decide to add additional floors during the building construction. The result would be dreadful, as the building foundations were not constructed for it. The software architect's hand, however, will be much more loose on the trigger. Irresponsible changes like adding new features and redefining existed ones may cause deadline violations and/or bad planning and coding (patch). Given the harsh competition (see item 6), it looks like changes are inevitable.
-
Bad time management
Estimating the development time should correlate to the employees ("resources") on hand. In some cases, managers estimate and then enforce a time table as if they were the ones who were going to do the developing. This type of enforcement yields pressure on development and may harm it. Moreover, violating deadlines in this condition is common.
-
Bad or no managing skills
It is common that software managers are used to being excellent, successful and professional software engineers. Unfortunately, the skills are not the same when it comes to successful managing. Great engineering skills do not guarantee great managing. Newborn software managers do not receive the right, or any, guidance.
-
Wrong or no Software Development Life Cycle (SDLC) methodology
Developing life cycle methodology must be part of software project management. Nevertheless, it should not be forced into the R&D environment. The software engineering field is relatively young (see item 4), but still there are already well-known developing life cycle methodologists (Agile, Crystal, Spiral, Waterfall, etc.), successful stories and case studies. Software project managers may adopt one of the existing methodologies, but usually there is also a need to adapt the methodology to the company on hand. The adaptation includes: company culture, employees, marker, managers, etc. This is the Waterfall Model:
-
Bad or no documentation
Documentation should be considered as a "must have" and not "nice to have". Documentation is an integral part of developing the life cycle process. It should not be caught as a nagging tedious task, done for the sake of some strict QA manager. There are various types of software project documentation, each related to a certain stage in the development life cycle of the project. For example:
- Statement of Work: preliminary requirements and project frame, usually written by the customer
- Marketing Requirements Document (MRD)
- Software Requirements Specifications (SRS)
- High Level Design (HLD), written by R&D
- Low Level Design, written by the R&D
- Project Schedule
- Software Quality Assurance Plan (SQA)
There are lots of templates and different names to the above documentation. Nevertheless, the important thing is that their existence requires the position holder to think before working on the project. The documents need to be stored and updated during the life of the project as it is done in a source code case (out of date document is a bug). Badly written or no MRD or SRS document can cause project failure (See item 11 bad SRS document).
-
Bad or no software requirements
As much as it sounds bizarre, in some software projects SRSs (Software Requirement Specifications) do not exist or are badly written. There are many types of SRS formats and even if it was only one common template, the content would vary from company to company. It is a question of how well-defined the requirements are. I have never heard about a well-defined SRS that caused projects to fail, but I am familiar with the opposite. A laconic requirements document affects the ability to break the software complexity, generate tasks and estimate time. Moreover, inadequate definitions cause misunderstandings and wrong implementation. Changes to the project during the development become inevitable and, in time, project deadlines will be missed.
-
Lack of testing
- Those who develop the software should not test it. The developer should run unit testing, but it is not a replacement to an objective QA test.
- Testing only at the end of a long milestone raises problems due to the load of testing and inherent problems that should have been caught at earlier stages.
Moreover, managers tend to rush the testing period at the end of the milestone in order to release on time
- QA that does not bite and has no real power does not have the right effect on the R&D department and is there for the project itself.
- QA should be started as soon as the software project starts. Hence, even in the planning stage. QA participation in early stages is important for its preparation for the software. For example, QA should also check the SRS document and make sure that the software was implemented according to it.
- The following Professor Brooks rule of thumb might seem radical, but being given no proportional time for planning and testing is indeed problematic: "1/3 of the schedule for design, 1/6 for coding, 1/4 for component testing, and 1/4 for system testing."(3)
- Tester to developer ratio: there is no rule of thumb that defines the number of QA engineers per software engineer. The reason for that is that it depends on many variables and more specifically on the characteristics of the software. For example, if "multilingual" is a software requirement, then the number of tests increases. Another example will be the number of supported Operating Systems. The number of testers required to test the software requires estimation. Bad estimation can cause project failure. There are several models that help with Tester to developer ratio (see reference number 7). According to a recent informal survey held at QAI's 20th Annual Software Testing Conference in September of 2000 (8):
-
Poor communication among the "Holy Triangle:" customers, R&D and marketing
The "Holy Triangle," as I define it, describes the important relationships between the customers, marketing and R&D. As seen in the picture below, the marketing side combines the Customer and R&D. Marketing interviews the customers and picks at their needs constantly. Then it brings the important knowledge to the R&D department. Strange as it may seem, in some commercial software companies, the customer requirements and needs are not gathered. This anomaly can happen if the company suffers from "Hero base project." In this case, a certain persona, usually the company CTO, enforces the project requirements without taking into consideration the market and the customer's real needs. The result of this behavior might be the creation of software that lacks the market needs and, in time, is a project failure. "… The communication of requirements from customers to developers is a common source of problems, as is the communication from developers to customers of the repercussions of those requirements…"(2)
-
Human resources management
It is a given fact that lots of software project managers start working without the basic guidance of how to motivate people to succeed. Software managers tend to manage their software engineers only in the professional engineering aspects. However, software engineers are people too. Learning what motivates them requires time and will from the manager side. No two men are alike, both in terms of management and motivation.
-
No version / source control
Surprising as it may sound, some software projects are not backed up in source control. Sources get lost; versions cannot be regained; products on customer's side can not be reconstructed.
-
No or bad risk management
"…A project risk is an uncertain event or condition that has consequences for the project…The purpose of risk management is to identify, analyze, and respond to project risks…"(2). Given the above items and the fact that software projects tend to fail, it would be absurd not to manage risks. The Risk Management Document is the foremost design to enforce the software company to think about what can go wrong. The thinking process itself can solve problems before they even happened. Examples of risk:
- Incomplete or badly written requirements
- Choosing a technology that is not known by the current developers
- Relying on complex third party software
The Risk Management Document needs to be updated during project life cycles. It should not be too general or vague, but address real details of problems that might occur.
Summary
"…Software development isn't just a process of creating software; it's also a process of learning how to create the software that is best suited for its purpose."(2) The article describes some of the answers to the question, "Why software projects tend to fail?" I encourage the reader to keep reading on that topic for two main reasons:
- Knowledge: knowing why software projects fail is a good start to preventing your own software project failure.
- Incomplete: the information in this article is incomplete; I consider it as a promo to keep reading.
Bibliography and References
- The CHAOS Report
Standishgroup web site, 1994
- Software Project Secrets Why Software Projects Fail
George Stepanek, Apress, Sep 2005
- The Mythical Man-Month Essays on Software Engineering
20th Anniversary Edition, Frederick P. Brooks, JR, Addison Wesley, Aug 2002 Why Software Fails, spectrum IEEE Online, Robert N. Charette
- History of software engineering, Wikipedia
- Theory and Problems of Software Engineering
David A. Gustafson, McGraw-Hill.
- Estimating Tester to Developer Ratios
Kathy Iberle,Sue Bartlett
- The Elusive Tester to Developer Ratio
Randall W. Rice
- Templates and Guidance
- Project Reference
- Recommended Requirements Gathering Practices
Dr. Ralph R. Young, Northrop Grumman Information Technology
| You must Sign In to use this message board. |
|
| | Msgs 1 to 16 of 16 (Total in Forum: 16) (Refresh) | FirstPrevNext |
|
|
 |
|
|
The opening paragraphs of your article says 31% of projects will be cancelled, then a few lines later it says 23%.
You are in fact referring to 2 different Standish Group reports - one from 1994, and one that appears to have been conducted in 2000. As there appears to have been a marked improvement in these 6 years, you should probably point that out.
I also believe Standish Group publishes yearly reports, so it would therefore have been interesting to pull in figures from the very latest research - instead of using figures over decade old. A discussion on what has changed would be really interesting.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Although I voted this article a '4', I should have given it a '5'. The only thing holding me back was that the author didn't touch on a very important core reason behind the lack of skilled resources. This has to do with the drive to leverage low-cost labor. The primary source of this low cost labor is resources from underdeveloped countries and college campuses. Yes, I am a 48 year old programmer from way back, and through very hard work and a couple of guardian angels I have been able to keep my job at a Fortune 500 company. But the truth is that companies are continuously replacing highly-paid, skilled programmers with low cost 'alternatives'. That is THEE reason that the work force is 'young'.
CodeMasterMP
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
I think it is a myth that big civil engineering projects are any different to big software products in their success rate.
To quote from the wikipedia article on cost overrun:
"Cost overrun is common in infrastructure, building, and technology projects. One of the most comprehensive studies [1] of cost overrun that exists found that 9 out of 10 projects had overrun, overruns of 50 to 100 percent were common, overrun was found in each of 20 nations and five continents covered by the study, and overrun had been constant for the 70 years for which data were available. For IT projects an industry study by the Standish Group (2004) found that average cost overrun was 43 percent, 71 percent of projects were over budget, over time, and under scope"
That paragraph would even seem to suggest that IT projects are better than average at only 43% overrun rather than 50-100%!
You might also find this bbc article on "Why Do Costs Overrun?" interesting. It discusses why big governments projects (Olympics, Millennium Dome, Eurofighter, National ID Database, etc.) go over budget, and also if it is even feasible to set a budget based on a large number of variables and the difficulty of knowing what might happen in the future - sound familiar?
I think the difference is that the software industry still hasn't learned that Fred Brooks was right when he said there were no silver bullets. Complexity happens, and just using waterfall CMM Rational Unified Process Agile SCRUM WhateverComesNext methodology will not avoid that complexity and guarantee you release on time, on budget, and with all the features.
So given that (a) we are no worse than big engineering projects, (b) complexity happens, and (c) there can be no silver bullet to remove it, why do we continue to pretend that it can be otherwise?
To quote the BBC article: "[Dr Will Jennings] believes the public need to be more "mature" in their attitude, accepting a certain amount of cost-over run as a price worth paying for something, such as the 2012 Olympics, that will bring social and economic benefits."
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
This does not discuss the main reason most software projects run into trouble. I'll quote Ken Schwaber in "Agile Software Development with Scrum" (p24-25):
"I wanted to understand the reason why my customers' methodologies didn't work for my company, so I brought several systems development methodologies to process theory experts at the DuPont Experimental Station in 1995. These experts, led by Babatunde "Tunde" Ogannaike, are the most highly respected theorists in industrial process control. They know process control inside and out. Some of them even taught the subject at major universities. They had all been brought in by DuPont to automate the entire product flow, from forecasts and orders to product delivery.
"They inspected the systems development processses that I brought them I have rarely provided a group with so much laughter. They were amazed and appallled that my industry, systems developent, was trying to do its work using a completely inappropriate process cnotrol model. They said systems development had so much complexity and unpredictability that it had to be managed by a process control method they referred to as "empirical." They said this was nothing new, and all complex processes that weren't completely understood required the empirical model. They helped me go through a book that is the Bible of industrial process control theory, Process Dynamics, modeling and Control [Tunde] to understand why I was off track.
"In a nutshell, there are two major approaches to controlling any process. The "defined" process control model requires that every piece of work be completely understood. Given a well-defined set of inputs, the same outputs are generated every time. A defined process can be started and allowed to run until completion, with the same results every time. Tunde said the methodologies that I showed him attempted to use the defined model, but none of the processes or tasks were defined in enough detail to provide repeatability and predictability. Tunde said my business was an intellectually intensive business that required too much thinking and creativity to be a good candidate for the defined approach. He theorized that my industry's application of the defined methodologies must have resulted in a lot of surprises, loss of control, and incomplete or just wrong products. He was particularly amused that the tasks were linked together with dependencies, as though they could predictably start and finish just like a well defined industrial process.
"Tunde told me the empricial model of process control, on the other hand, expects the unexpected. It provides and exercises control through frequenct inspect and adaptation for processes that are imperfectly defined and generate unpredictable and unrepeatable outputs. He recommended I study this model and consider its application to the process of building systems.
"During my visit to DuPont, I experienced a true epiphany. Suddenly something in me clicked and I realized why everyone in my industry had such problems building systems. I realized why the industry was in such trouble and had such a poor reputation. We were wasting our time tring to control our work by thinknig we had an assembly line, when the only proper control was frequent and first-hand inspection, followed by immediate adjustments."
My most successful project was implemented in 2-week iterations, with a fully-functioning demonstration at the end of every fortnight. The requirements were vague, and evolved by feedback from the demonstrations. We had no design spec up front, and with 2-week iterations, we could work out the design of the new blocks on a whiteboard and just get them done. With 2-week iterations with shippable code and a demonstration at the end of each, we were forced to keep on top of bugs. We were within 11 days of our 6-month deadline, which our Sales Manager later admitted he thought was impossible.
Many of the items in this article come out of the "software development is an assembly line" mistake that has been hurting our industry for decades. For example, 10 and 11 assume the design and analysis can be done up front, whereas in reality, you discover the design has to change as you go along, the market moves so requirements change, people don't really know what they want until they see it. To develop successfully, you need a process which still provides control, but raises issues early so they can be easily addressed.
My biggest failures came when I tried to follow the classic "analyse, design in blocks, integrate, test, deploy" model which this article seems to be advocating. My worst record here was 9 months late on a 6-month project.
Ian Brockbank ian@scottishdance.net
-- modified at 6:23 Tuesday 18th September, 2007
|
| Sign In·View Thread·PermaLink | 5.00/5 (1 vote) |
|
|
|
 |
|
|
Wow. That's more useful than the article (and the article was pretty decent). An actual solution to the woes that plague the planning department.
Thanks
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Vista failed in some parts. At least on deadline. IMHO features that dropped from final product is another fail.
Now what do you think is the reason for those particular failure's?
I think feature changes, and management probably, however I must be certainly wrong because I have never been in Microsoft.
// "Life is very short and is very fragile also." Yanni while (I'm_alive) { cout<<"I love programming."; }
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
Thanks' for links.
Cohen Shwartz Oren wrote: I liked your signature a lot.
That's kind of you. Thnk you.
// "Life is very short and is very fragile also." Yanni while (I'm_alive) { cout<<"I love programming."; }
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
I think the problems with Vista are related to the security chnages MS made. They fall first in the traps with their improved security. And now we struggle with it.
I really hope that the coming Service Pack is resolving the most trouble, so Vista will not only look nice but also will work reliable.
Greetings from Germany
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
Well-done Cohen. Software projects do tends to fail. It is a sad fact, one that I have witness myself.
Dr. G
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
 |
|
|
"Most of the information is derived from references to known books and articles..."
Then why repeat it?
only two letters away from being an asset
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
I liked it a lot. Good summary. Well putted. The guy gives credits what's wrong with that?
Lopo ------------------------------------------------- Sun always shine on t.v.
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Nothing wrong with giving credit where credit is do. Why repeat something that has been covered ad nauseam
only two letters away from being an asset
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
Because every now and then everyone needs a "wakeup call" (a/k/a refresher) for something they missed .....
Try "three french fries short of a Happy Meal".
|
| Sign In·View Thread·PermaLink | |
|
|
|
 |
|
|
General News Question Answer Joke Rant Admin
|