Introduce a More Agile Communication System
Brian Sam-Bodden Scottsdale, Arizona, USA
Most retrospectives of failed projects place a great deal of blame on communication breakdowns between software project managers, team members, and stakeholders. Project managers are taught to mitigate communication breakdowns between team members, and provide constant, effective communication. The weight of this responsibility sometimes leads project managers to overreact. They blur the line between essential, concrete communications and those where the content-to-noise ratio actually harms project progress instead of helping it.
To solve this problem, many software development endeavors are moving toward a more flexible, agile process. The key to agile methodologies is timely communication loops which enable agile teams to respond effectively to unforeseen changes, and quickly reassess and reprioritization project features.
How do agile project managers keep communications to the essentials? They promote the daily “15 minute stand-up” meeting. It entails developers describing what they've accomplished since the last stand-up, what they're planning to accomplish “today”, and any impediments they foresee in reaching their goals. The negative risk of a stand-up meeting is that it may rely solely on the precision of each developer's self-assessment. The solution? To make stand-up meetings more effective, integrate a task management tool which can show the output of a feature's tests. A tool does not lie about the state of a project's codebase, and testing results are a valuable addition to developer self-assessment. Presenting report data correlating a feature to a set of tests it passed gives a more accurate representation of the state of the feature.
For example, results from a continuous integration tool can paint an objective picture of progress. This reduces the stand-up meeting communication to the essentials; reporting of impediments (hopefully, already caught by the task management tool) and unforeseen developments due to edge cases, integration challenges, and bugs/defects. By reflecting these development “discoveries” through a shared, globally-accessible tool, developers gain a greater level of feedback precision. Often, unseen connections between features and tasks can be discovered early.
One typical misconception is that synchronous* communications are always more effective that asynchronous** communications. Adding development tools and short, asynchronous communication loops can effectively supplement face-to-face communications.
At a more general level of feedback, a Wiki*** system can easily keep the vision of the project adjusted to the reality of the development progress. Such a system can also make information available in a timely manner and provide a higher-level channel to communicate to stakeholders-at-large, who might not be interested in the deep, technical details impeding a particular feature's progress. By contrast, a software developer's vision of the overall project can be blurred over time by the minutiae of their daily technical work. A Wiki is an effective way to keep a clear, shared vision of the project among all the participants.
By attacking the problem of keeping information loops tight and noise-free, software project managers can help avoid the breakdown in communications typically blamed for project failures. A project manager's responsibility and challenge is to streamline the feedback loops at every level of a project.
- Synchronous Communication - Participants all participate at the same time, whether in person or by virtual means.
- Asynchronous Communication - Participants have access to information, but do not have to physically present and available in real time. Examples include, e-mail, discussion boards, and shared folders.
- Wiki - A server program that allows users to collaborate in forming the site's content.