Chapter 5
Software development
One thing in common: FAILURE
84% of all software projects DO NOT finish on time, on budget and with all features installed according to a survey by the Standish Group which covered 8,000 software projects in the US in 1995.
30% of all projects were CANCELLED before completion!
What does all this mean?
The chance of FAILURE is HIGHER than that of success.
*****************************************************
Why is software development so prone to failure?
1. Extreme complexity involved
Simply put -> Close to 100% of a software program has to be accurate to work even somewhat correctly!
We all know how many bugs Windows 95 has right? But have we considered that Win95 has 11 million lines of codes?
And how many OTHER million lines of codes interact with it?
If you build a car, if a nut came off, you may not even notice it.
With a software program, a bug is highly disruptive and will most likely give you an error result!
2. Extreme uncertainties from the outset - Why?
a. Unclear customer requirements - what would the system be used for? who will be using it? will it be changed? will it need to be upgraded constantly?
b. Design not entirely predictable - structure of the software may be wrongly decided on. Should we use VB.net? ASP.net? Php 4/5? Mysql?...each design is different.
c. Changing requirements - Yahoo! made 3 changes THREE TIMES before lanching MyYahoo! Enough said!
d. Changing technology - php 4 today php 5 tomorrow! Win XP today Win Vista tomorrow??
*****************************************************
HOW software projects commonly fail
a. Overly optimistic developers
Adding people to a project does not mean a shorten schedule. This is a common mistake. Interdependencies require certain task to be done sequentially.
For e.g. Can you come up with the Invoicing module of an accounting program if your Customer database has not been setup?
Fred brooks put it "It takes nine months to bear a child, no matter how many women are assigned"!!
b. Underestimating the efforts required to make products out of projects.
Professional services firm follows a common failure pattern. They try to develop a standard product after they have developed similar systems for various clients.
Mass-market software is designed MORE BROADLY. Meaning, you have to take into consideration 1000 users instead of just one.
Enterprise software - with enterprise software, the environment, the user, the requirements are more or less made known early on. For the mass market product, different operating systems would cause problems.
Fred Brooks estimates that the effort to create a successful product is three times as high as for a comparable individual system.
c. External pressure from marketing, customers and management
Martketing department try hard to shorten schedules.
Management has unrealistic expectations.
Wishful thinking can be attributed to the marketing and management dept.
d. Feature creep
A quote that says it all "Nobody would force a builder to rebuild the basement after having put on the roof, but in the software industry, that's common practice."
*****************************************************
HOW TO COMPLETE THE IMPOSSIBLE MISSION?
1. Prepare for uncertainty, rather than ignoring it.
2. Establish flexibility - use this system
i. Must-do features (basic features and to make the system run)
ii. Should-do features (implement IF time is left)
iii. Could-do features (normally delayed till next release)
3. Adapt to the upstream-downstream
i. Phase 1 - Creativity phase
ii. Phase 2 - Implementation of phase 1 ideas NO OTHER DISTRACTIONS permitted.
4. Spend time to save time
Late fixes to software design costs an astonishing 50 to 200 times the effort of an immediate fix. A superior product architecture bears many advantages in terms of expandability, scalability, and maintainability of the later product and can thus be a real competitive advantage.
Leaders of successful software firms emphasized that problems should be resolved in the EARLY phases of the development project.
5. Stongly invest in people
6. Creating powerful team structures
7. Holding on to top talent
8. Invest in process for higher performance and more more freedom
9. Involve project stakeholders extensively
10. Marketing experts married to development managers. (Prevent future feature creep)
11. Frequent project reviews with all stakeholders.
12. Have daily builds - test and debug daily. This means the WHOLE system.
IS THERE A SILVER BULLET? NO, THERE ISN'T.
But follow closely the above, and you won't go far wrong.
Read the book Secrets of Software Success for more.
Saturday, September 1, 2007
Software development
Labels:
Software businesses
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment