Agile software development is a method of developing and delivering software. This method reflects the unpredictable and innovative nature of software projects. There are multiple processes within Agile, the most popular are Scrum and Kanban.
The main idea in Agile is to stay flexible, prioritize the most important features to deliver the most value to customers. Then, through iterations and feedback keep improving the product rather than having a rigid plan set in advance.
Developed by software engineers originally, Agile is being misused by many companies who simply want to maximize the output of software engineering teams. The philosophy of this methodology is to be agile (responding to change over following a plan) rather than practice a specific process defined by a project manager.
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
12 Principles for Agile
- Customer satisfaction by early and continuous delivery of valuable software.
- Welcome changing requirements, even in late development.
- Deliver working software frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the primary measure of progress
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Best architectures, requirements, and designs emerge from self-organizing teams
- Regularly, the team reflects on how to become more effective, and adjusts accordingly