This post is from the Collabnet VersionOne blog and has not been updated since the original publish date.
How Much Ceremony Do We Need?
The agile world has a number of myths that tend to be perpetuated, often for private agendas. One of them is that agile means no documentation or formality in its approach. A counter to this are the conversations about professional behaviour as described in “The Clean Coder” from Robert Martin, or Uncle Bob as some know him. This kind of behaviour means that we recognise the nature of the work we do and the requirements for ceremony that is required for it – in short that we act as professionals. Let’s look at this question of ceremony first by defining ceremony and understanding what it means. Ceremony has a number of aspects and we can turn up and turn down the level that we apply each of these aspects. As professionals, sometime we can’t make popular or easy decisions, but considered ones. Here are some example aspects, with a short discussion about options. Now there is quite a lot to talk about here and some people will say that some of the extremes are not agile. But we are professional, so what is the right level and why? Take two examples.
- We are coding a web site for curry recipes and need to be able to provide a few basics such as search, create, update, read and delete services. OK it should look nice and be easy to use. There may be some security NFRs as well, but no personal data is maintained in the system.
- We are coding a system that monitors the status of various points in a nuclear power plant. If something is going wrong we shut the reactor down. It must never fail. If something unexpected happens shut down now, better safe than sorry. Demonstrate that this is so.
That seems pretty clear. So the first agreement is that we would use an agile approach in both cases. I say yes as disciplined agile is the best way to produce code to the level of quality needed. But consider the ceremony dial, where do we set it for each of these situations, and again why. Please bear in mind that we have a professional standard to maintain. This includes the need to deliver value for money, over/engineering is as bad as under/engineering. So now let’s think about this from the point of view of the aspects that we have looked at. Do you agree with the following? Yes/No and Why/Why Not. In some cases the level of ceremony is not optional. The regulatory requirement for a safety critical application would demand that certain things happen. Consider what would happen if the recipe site crashed, the worst case is that dinner will be late. What if the nuclear reactor safety system fails? Will the police be involved, lawyers? If it turned out to be software that you wrote, and you couldn’t prove that you met the required regulations what could happen? You might lose a client, or your liberty. And could you live with yourself for the consequences? In all cases the level of ceremony should be decided upon and not defaulted because we cannot be bothered to think about it. In the extreme example it is hardly a surprise that we need to crank everything up to really loud, man. But what is the minimal level that we should agree to. Remember we have professional standards that we need to maintain. We follow Test Driven Development (TDD) because it is our natural tendency. Someone coming up behind us will need some clues as to how we created the application and how they can extend it. Using a platform such as the VersionOne Enteprise Agile platform will put some of the aspects higher up the volume scale automatically. For example an audit trail will be in place as you work through epics, features stories, tasks and tests. So this may start at “7” and be taken high by including additional artifacts in the audit trail. In all cases you may need to justify your decisions, in some cases to a court, which may be uncomfortable. Make sure that what/ever level you turn the knob to, that you can justify it as being an appropriate decision. And please stay out of jail!