by Dwayne Phillips
Agile development is not an excuse for knowing what you did, why you did it, and how you did it.
You’re doing agile development. You hold a meeting to start a sprint (different methods use different names for this). You sprint! You meet again at the end of the sprint.
- What did you do?
- Why did you do it?
- How did you do it?
Question 1: at the end of the sprint, you demonstrated what you did. You should record that in some tool you use for agile.
Question 2: you did what you did because someone asked for it. Again, you should record that.
Question 3: you wrote code, you changed code, you tested the result.
The answer to question 1 almost always happens. The answers to the other questions…well, not so much.
If you don’t know who wanted something, how can you demonstrate that something to them to see if they are satisfied? This requires recording information about who asked for what. I know, in agile, documentation is not as important as working code. But still, come on folks, we write software for a person. If we don’t record the person’s name, how will we satisfy the person?
Now the awful question 3. Can we repeat what we did? Do we have the information as to the data and methods we used to prove that our additions and changes satisfy what was requested? If we don’t, we are wasting time and money.
Note how I used the word “satisfy.” This is why we are working—to satisfy someone else.
The answers to 2 and 3 are met by the systems engineering function of tracing. Everything has a reason, a purpose, a place to fit. Tracing allows us to follow the reason through our work. Work without a reason is, well, unreasonable. Hmm.
Yes, working software is more important than documentation. Use of good tools allows agile teams to document work so it can be traced without doing more work. Let’s be aware of what we can do to satisfy others.