I think the concepts of Agile Software Development are summed up quite nicely by the “three simple truths” as described in the book, The Agile Samurai: How Agile Masters Deliver Great Software.
- It is impossible to gather all the requirements at the beginning of a project.
- Whatever requirements you do gather are guaranteed to change.
- There will always be more to do than time and money will allow.
Understanding and accepting the reality of the “three truths” will properly set your expectations and help keep you sane.
The Agile method treats the delivery of quality, production ready software as a feature and emphasises the need for continuous and frequent delivery.
Agile focuses on the following concepts:
- Breaking big problems down into smaller ones
- Focus on what is most important first.
- Ensure that what is being delivered works.
- Solicit feedback early and often.
- Change course when necessary.
- Being accountable and setting expectations.
A final introductory concept of Agile Software Development that needs to be understood is the meaning of the word “Done”. A feature or requirement is not “Done” until it is deemed production ready. That means it could be deployed into the live production environment. If the feature can’t be shipped, it’s not done.