Developing successful software projects is extremely difficult, resulting in projects running over-budget, being delivered late, delivered with missing functionality, or often not meeting fundamental requirements / objectives. The Standish Group [2001] research found that only 28% of projects developed in 2000 were actually successful. The chance of a project failing increases as the size and complexity of the project increases.
The solution is an adaptive development methodology. This involves small iterations and small releases, with continuous integration. Gathering requirements shouldn't be done as a once-off single first step; we believe in rapid prototyping and small releases to ensure that the software we are building fits the customer's requirements. Similarly, testing shouldn't be left as a final QA task; we believe in Test-First development and automated testing. This methodology is the basis of our consulting group, AdaptiveDevelopment, and is applicable to all software development projects, whether a large and complex telephony server, or a simple small project.
Over the last ten years, we have found that the following tenets are very beneficial and they now form the core of our development: -
- An iterative development process
- Testing, testing, testing
- Customer interaction
- Continuous integration
- Prototyping
- Lean and effective design, documentation and code
- Small teams
- Motivated, empowered developers
- Collaboration and collective ownership
- Accountability
- Rationalized development streams
- Diagnostics
- Automation
- Tools
- Depth of thought
- Agile decision process
- Egoless development
- Attack problems and not people
- Effective customer support
Download this document for a full discussion of our tenets: Adaptive Development Tenets
Download this document for a description of our development model: Adaptive Development Software Development Model