The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Why is it said so?
We know that one of the basic premises of Agile product development is to favour adaptability over control. That is to say that we have greater chances of success at managing complexity if we are more ready to change and adapt to new realities than trying to predict, plan and control everything. While this is debated endlessly what cannot be debated is the need for information and it’s free flow regardless for successful product development and delivery. Information needs to flow fast, realities need to surface quickly and all impediments to free flow of information, and transitively to successful delivery, should be removed.
In an Agile mode of working, all activities – planning, estimation, development, testing, packaging, deployment, handling changes, and more – happen just-in-time and from time-to-time. So any vital information that can impact any of this must surface as soon as possible, as clearly as possible, and in time for the team to adapt and deliver.
Hence, communication is vital and everything needs to be done to enable efficient and effective flow of information – within the team and between the organization and the team.
However, this principle has to be adjusted while implementing based on current realities. The principle states “face-to-face” communication which makes readers implicitly assume co-located development teams. However, distributed teams are a reality today. In fact, I have seen projects where freelancers working-from-home from different cities are working on creating a software product using Agile methods. Co-location is a challenge in such cases but face-to-face communication can still be managed thanks to services like Google Hangouts. I have understood that “face-to-face communication” should mean real-time flow of information. The preference should always be to make use of such channels of communication that allows for immediate access to the other person and exchange of information. I have thus experienced that this would be the descending order of the best channels of efficient and effective communication:
- Co-location and face-to-face communication
- Google Hangouts or similar conferencing technologies
- Phone calls
- Chat technologies
- Forums and other collaboration tools
How is this principle put in practice?
Scrum provides specific meeting ceremonies where the development team and the organization can meet and exchange information. The Sprint planning meeting helps the development team identify and commit to the work for the coming iteration. The daily Scrum meeting helps the team to discuss ongoing progress and bring any impediments to the Scrum Master’s and team’s attention. The Sprint review meeting helps the organization understand what was done in the iteration and give valuable feedback. The Sprint retrospective meeting helps the team to look within and improve from time to time. The backlog grooming meeting optionally helps the team to keep the product backlog in shape for the immediately coming Sprints and the Scrum of Scrums different dependent development teams stay in sync.
References used in this post
- The Agile manifesto
- The principles of Agile software development
- A gentle introduction to extreme programming
- Wikipedia entry about Scrum
- Mountain Goat software’s pages on Scrum
- MSDN pages on Scrum
- AgileDevelopmentSite pages on project management using Scrum
- AgileAlliance guide to Agile practices