Agile Software Development
Agile software development refers to software development methodology that focuses on continuous delivery of relatively minor incremental improvements. It is in contrast to waterfall development which targets big releases at longer intervals.
What are the tenets of the agile manifesto?
The manifesto, verbatim, states:
"We are uncovering better ways of developing software by doing it and helping others do it. Through this work, we have come to value:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more."
What are the characteristics of agile development?
Agile development has the traits of being iterative and adaptive. This methodology translates to short development, testing, and release cycles, which deliver features into users' hands faster, thus shortening feedback loops that drive the next development cycle. The short loops allow agile teams to course-correct quickly based on customers' needs and are essential for startups.
Agile development also emphasizes communication, such as the public kanban board and daily standup meetings, to remove roadblocks and clear interdependencies. Proponents of agile methodology have always expounded on the benefits of colocation. However, online counterparts to these communication channels have enabled distributed teams to work in an agile fashion.
Agile development takes a "just barely good enough" approach to documentation. Documentation should not be too lacking (it becomes unhelpful) and not too detailed (it becomes hard to maintain and update with the codebase).