Agile Development

Agile development has become a common practice in the software development world. There are a lot of moving parts, ideas, and optional parts involved However, there are just a few core principles. These were documented in the Agile Manifesto of 2001:


• Individuals over processes/tools
• Working software over documentation
• Customer collaboration over contract negotiation
• Responding to change over following a plan


Agile was designed to respond to continually evolving requirements. It preaches an adaptive planning strategy to rapidly respond to changes. As such, project plans cannot not be overly rigid. Agile is characterized by early delivery. Software is developed incrementally.


There are twelve main principles to Agile. Some highlights are continuous/frequent delivery, progress measured by working software, good design, and simplicity. Software work is broken down into iterations called springs. Sprints last one to four weeks normally. Programming and testing are conducted in the same sprint.


A key activity in Agile is the daily stand up meeting, also known as the daily scrum. Team members announce what they did the previous day, what they plan to do today, and any roadblocks. This meeting is not meant for any problem resolution; you only provide the team a brief overview on your progress.


There are assorted techniques used in Agile: continuous integration, automated unit testing, pair programming, design patterns, test driven development, and code refactoring. Agile is more of an adaptive than predictive form of development.


Agile emphasizes the product over the project. Some liken Agile to working at a lean startup. A goal is to produce documentation that is just barely enough. Stories, which are akin to use cases, are used to drive modeling. Choices are deferred as close as possible to implementation time.