I have worked on several software projects where planning is hugely influenced by waterfall concepts.
Which consist of:
- Hire some business/functional analysts to find and write ‘requirements’ and specifications
- Dividing the software in ‘modules’
- Listing all tasks required to do this job ( generally this is done by architects or managers)
- Rough estimations of all these tasks
- GANTT charts! (They love them!)
- Budget allocation based on rough estimations
- Hiring developers based on rough estimations
- Assigning all the tasks to developers (some of them not yet hired)
Here are some observations I have seen with time :
- The customer* rarely know in advance what he really wants/needs
- If he knows, he might have some difficulties to express it correctly
- Customer will change ideas FOR SURE during the development process.
- In 2011, business is moving FAST. Marketing, vision, human resources, laws… All these change sources will need software to be easily moved toward new directions.
- After final release, when trying it for real purposes, this is when the customer has the best ideas of real good features to implement. Never before!
* The customer
The customer in the upper observations may sound a bit idiot and simple minded. However, I include myself in this group. If I was financing a personal project and was in a position to request some features for my software, I would surely be as the customer stated above. I would not really know for sure all the features, would change my mind, and for sure would have the best ideas only once the software is finally delivered in front of me.
These are mainly the reasons I am a big fan of Agile/Scrum approach to almost all software projects.
Team collaboration with the customer, iterative delivery and transparency are key points to a software fit for purpose. These three words (fit for purpose) tend to be often forgotten in a waterfall process.
Following the plan and the budget is very often more important than adjusting the features to be sure the ROI is maximized.