Predictability
The way to drive software projects within the needle's eye we call the budget is to work out to have as much predictability as possible. Rule out and isolate what is unknown. Divide the project into what's predictable and what's uncertain. Remove unknowns by offering spikes, a time box where you try out new technology, and prestudies outside the project scope.
There are many tools a project manager could use. The following is what we developers can do to create predictability.
Testing
This is how you build a bookcase:
- Specification: You start by making a design where you decide how high, wide, and deep the bookcase should be
- Tests: You continue by measuring some wood carefully to get the correct length of the parts to be assembled
- Code: You hammer it all together, following the design using the carefully assembled parts
Writing a system without specification or tests is like building a bookcase by taking some random parts lying around and hammering them together....