Agile Methods

August 18th, 2008

Wikipedia entry:

Agile methods emphasize working software as the primary measure of progress. Combined with the preference for face-to-face communication, agile methods usually produce less written documentation than other methods. In an agile project, documentation, Gantt charts and other project artifacts all rank equally with working product. However, when stakeholders are asked to prioritise deliverables for demonstration at the end of the current iteration, they generally prefer to see working product. Stakeholders are encouraged to prioritise iteration outcomes based exclusively on business value perceived at the beginning of the iteration. If documentation represents higher business value than working software in any particular iteration then stakeholders give it a higher priority than working software. The (cross-functional) development team will accordingly produce that documentation instead of lower priority software.[citation needed]

Agile means being able to quickly change direction. In software development, it requires strong discipline to code for agility. It includes writing tests for functionality before coding. It calls for naming of functionality to exactly match the intent and the terminology of the problem domain. It demands cessation of coding when the tests pass. The sum total of all the disciplines delivers an ability to change direction quickly. New and unexpected functionality required to cope with a sudden change in the business landscape can be inserted in existing code using test-driven development and all the previous tests will pass or fail to instantly indicate where code needs to be refactored to stay functional. If functionality is added before it is required then it becomes “dead weight” when refactoring is called for.

Leave a Reply

You must be logged in to post a comment.