1. Excessive Promises – Often made without developer input or consultation. Promises of insane levels of functionality will only seek to burden the project with unnecessary tasks. Example:
- Sales: You want a Titanium Rocket Car with your project???
- Customer: Errm…well no…erm…
- Sales: You can have it!!!
…later…
- Sales: We need a Titanium Rocket Car!!
- Programmer: WTF?!?!
2. Change – Or should I say: Refusing to accept that change is inevitable and having fixed requirements with no flexibility is unnatural.
3. Lack of Communication – Lack of client involvement and poor communication is working blind. Ever hear of Chinese whispers?
4. Inexperience – from the team leaders, programmers and management. In fact anywhere in the line can cause problems.
5. Lack of Planning – Often a curse of developers who just want to get on with the job. Planning is by far the most important aspect of a new project and also the most often neglected.
6. Lack of Priority – Concentrating too much on ‘parts’ and losing site of the bigger picture.
7. Relying on a Due-Date – See Parkinsons Law (work will expand to fill the time allowed).
8. Hardware and poor hardware management.
9. Ignorant Managerial Interference – I did have a great Dilbert comic for this but I lost it.
10. Insufficient Resources – Whether that be staff, time, facilities or raw materials.
Can anyone think of anymore?