Definition of “successful“
There are five basic truths that make a successful software project: regardless of what development environment or programming language is used, no matter whether it is managed using an “agile“ or a waterfall process, OO, SOA, AI or punch cards.
- The customer/user has a reason for the project (based on their need, a demonstrated ROI, “it sounds cool“, etc)
- The developers know what they are building (there is some mechanism for requirements specification)
- The developers know how they are to do it (knowledge and usage of tools and “process“)
- The development team will know when they are done (there exists some “exit“ milestone criteria)
- The customer/user agrees (they accept or purchase it)