Agile development is a software development approach that emphasizes shorter delivery cycles with frequent customer collaboration and faster responses to change (less rigid plans). It favors working code over more disciplined and rigid documentation and tool-based software development methodologies (see the Agile Manifesto).
Kanban is a framework for Agile development that visualizes workflow with a kanban board in order to balance demand with available capacity and bottlenecks. Scrum is another framework that offers iteration techniques (called “Sprints”) and requirements management with “User Stories”.
- Customer Satisfaction through early and continuous delivery of valuable software
- Embrace changing requirements. Agile processes harness change to give customer a competitive edge
- Frequent delivery of working software. Shorter timescale deliverables
- Daily cooperation between developers and business analysts through the lifespan of the project
- Build projects around motivated individuals and provide them with the environment and support needed to get the job done
- Face-to-face communication is key to effectively conveying information between team members
- Working software is the primary measure of progress
- Agile processes promote sustainable development. Any project is maintainable indefinitely
- Continuous attention to technical excellence and clean code standards
- Simplicity — the art of maximizing the amount of work not done — is essential
- The best architectures, requirements and designs emerge from self-organizing teams
- Teams reflect at regular intervals on internal effectiveness and make adjustments accordingly
Agile is a powerful methodology to build great software to achieve business objectives with a flexible and often faster, less costly approach.
See the 32 best practices and approaches from the General Accounting Office report about adopting Agile. Agile development relies on the adherence to clean code standards by developers.