Last night i was having a chat with one of my former college and he was telling me about his project being scraped and how this has resulted in undue pressure on them and effecting moral of the entire team.
What really amaze me is that how often i hear these stories,and is their any other industry with failure rate as high as Software.
I did some googling to come up with some solid numbers and was totally aback to see overall software failure rate is around 63%.Here the guideline is that any software which has not covered its investment cost will be considered as failure.What is more astonishing is around 46% of software are never completed or delivered to client.
Now what makes Software field so different from other processes like Manufacturing or say Construction.These disciplines have really shown a commendable success with even very complex set of problems.Here i would like to quote from one of my favorite blog Coding Horror.
I don’t think bridge building has anything in common with software development.* It’s a specious comparison.
Software development is only like bridge building if you’re building a bridge on the planet Jupiter,
out of newly invented materials, using construction equipment that didn’t exist five years ago.
I can understand the frustration of any Software developer when our process is compared with other Industries and people start uttering words like assembly-line,automation,Six-Sigma etc.I really like assembly-line comparison because its really funny.Let me explain you:
The argument is that Industries like automobile have perfected the art of making automobiles to such an extent that a new Car is roll out in less than 3 minutes from a assembly line.
Now my response is the time we are talking about here is time taken to make a duplicate copy.In automobile industry also to churn a new model still takes more than a year.Now if apply this logic than how much time we take in making a copy of a developed software.It took Microsoft around 5 years to comes with Vista but how much time will they take to come up with say 1 billion copies of Vista,sorry folks this is not the way you can compare things.
But still question ,why Software projects fails so much is very important,as their is lot of money involved with it.You can read some research finding here to get some feel about this question Failure Rate.I’ll just highlight some important findings:
- An IT project is more likely to fail than succeed.
- 20% projects can be termed as successful.
- The larger the project the more likely is the Failure.
And i would like to add my favorite “The More MBA’s are in a project,the more likely is the failure” ,that’s why companies like Google don’t hire MBA’s but promote internal technical people to manage Projects.
My list of reason’s about this:
- Lack of Career path for technical people.At some point of time they have to move to managerial level to advance their careers.Companies like Google and Microsoft are noticeable exception to this.
- Specially in Indian Context:A person with 5 years of experience rarely codes.So coding is always done by freshers ,who are learning about How To Code.No matter how good is the design if the people who are actually writing the code are not experienced than we know what to expect from code!
- Mad rush for Cost Saving and buzz word like Out-Sourcing and off-shoring.A software projects has two type of costs ,Real or upfront cost and hidden or maintenance cost.One should include both the costs and not just see that in location X we can hire developer for pennies.
- Unrealistic Time lines:Every Software when developed is happening for the first time so add uncertainty factor in your time lines.The more same kind of projects you will take ,the less will be the uncertainty factor.
What i think about how to improve this situation:
- Stringent hiring process.Don’t recruit in masses.One common argument is that we are not able to find good people.If their aren’t good people available than its not the place to be in.
- Very high emphasis on learning and constant improvement.In-fact the ideal work to learning ratio can be 75:25.This means out of office time ,employees spend 75% of time on active work and around 25% time in improving their skill set.
- If you have Out-Sourced your project to a vendor than each quarter randomly select some developers from vendor’s developer list and taking technical test .This will keep your vendor on toes.
- In software resource planning 1+1 !=2 ,its simply not equal you have to add communication cost and hence bigger the team more is the communication cost in terms of time.
- 3 average programmers are not better than 1 good programmer .Programming is not a physical task so why compare in physical terms.
what you think?What could be more reason’s and remedies for this problem.I am as much interested to know as you are!