Agile software development is not really about burn-down-charts, unit tests, refactoring or code metrics or even pair programming. At it’s heart, it’s about building software that really works for the people who are going to use it. All those practices you read about are just tools that help you to develop software iteratively, so that you can keep moving the software closer and closer to becoming what it’s users actually want.
The goal is not the practices themselves, but the ability they give you to iterate.
If you really want to build software iteratively, you also need to understand about User-Centric Design. I’m finally getting the opportunity to get involved with a project early enough to put this into practice myself. Here’s a great introduction I just found.
In summary:
- Early and continual focus on user and their tasks
- Empirical measurement of user behaviour
- Iterative design