Fork me on GitHub

Friday, July 25, 2008

Thoughts on truthfulness as agile value

I read this nice post in infoQ... actually I had to dig it from somewhere as it was already lost from my reading list. It discusses truthfulness as an agile value. I have a lot of respect for agile methodology as it is the only methodology which considers values as one of the main ingredients of software development (Others being practices and principles). Practices like TDD, Continuous integration don’t make meaning when they stand alone. They need to be based on values. Values decide why we do something and why we don’t. We have daily standup meeting as a practice because we value communication, we use test driven development and continuous integration because we value immediate feedback. But values and practices are two distinct things. Because we value communication we can’t add writing 1000 page document as practice when the message can be conveyed face to face in a meeting. To avoid such unnecessary practices and help us to add new practices when we feel something is lacking we have principles. Kent Beck gives an analogy of Principles acting as a bridge between Values and Practices.

Now coming to this post actual message, do we need truthfulness as an agile value? If we see the agile methodology the practices like Onsite customer, daily standup meeting, continuous integration, collective ownership, planning game all have truthfulness as an implicit in itself. If we are not truthful about the current status of the project, the planning game and whole team will be a failure as well we can’t have collective ownership. If we are not truthful about the estimates release planning and iteration planning won’t get done properly. If we don’t value truthfulness, we can’t work in pair as we have to admit if we make a mistake and also have to accept if the other person has a better design decision than us. But making truthfulness as an explicit value helps us to keep it in context when we make decisions.

People may argue that truthfulness is needed for every project development project whether we follow agile or not. So are the other values of Agile (Simplicity, Feedback, Communication, and Courage). But keeping these values explicit helps us to keep them at front when we make decisions and add practices make them aligned with the basic principles we have. If we have them implicit we may not take notice of them as we go along using the methodology.

In a complex process like software development it is easy to loose perspective of our values when we are working. In my opinion having the values and principles as explicit as possible is always beneficial for us so that next time we make a decision we will take all these into consideration. Truthfulness has to be always in agile to make the methodology work successful but we can make it explicit to help people use it as a guiding value in their day to day work.

No comments: