Reducing Cost Of Software Projects (’Why we get paid’-Series)
November 3, 2007
a: cheaper people or smaller team
The most obvious way to keep cost small is to hire people that cost less. What is a lot less obvious is the negative impact this practice can have on both: b and c. While the per month cost is lower, the project is likely to get done later, and maintenance will be more difficult.
A more promising way is to use a smaller team. For example use 5 instead of 15 people. By cutting down communication overhead, b may not even be threatened.
b: be done earlier
Everybody would like to be done earlier. Having people work overtime isn’t the way to get there. Why? Because if you try it this way, you’ll likely increase a and c, resulting in bigger overall cost.
There are several things that can help you get done earlier:
- Simple systems (don’t use technology you don’t need)
- Yagni - You ain’t gonna need it (don’t create things you think might be necessary some time in the future)
- Get started early (don’t specify every detail of the system)
- Technology (good frameworks, programming language etc.)
c: maintainable code base
Creating maintainable code sometimes competes with a and b. Some of the things that help keeping maintenance cost down:
- Well designed code (another argument for good developers)
- Good communication (the more people know about the software, the better the chance that somebody knows what’s going on)
- Original team maintains code
- Automated tests
Good documentation is only a last resort.
What other practices do you see, that can reduce the overall cost of the project?