Martin Fowler and Dan North from ThoughtWorks gave a keynote at QCon entitled The yawning crevasse of doom; this refers to the tendency of those who develop software not to communicate with the beneficiaries of the software – users, business people etc. This was a recurrent theme at QCon; addressing this problem strikes me as a primary characteristic of agile methods such as Scrum. It helped me to understand that most software failures are caused not by technical issues but rather by communication problems. Of course communication failures can occur within the development team as well as between developers and other stakeholders; Kevlin Henney and James Coplien mentioned the perils of “throwing architecture over the wall” in their session on Agile Architecture is not Fragile Architecture. If architecture is divorced from coding it is likely to fail. It further follows that improving the software development process is more to do with improving how teams function than it is about tools or even procedures.
I find this a healthy corrective to the reams of PR I receive from vendors implying that their tools can prevent project failures. They love to quote figures from the Standish Group which allege that most software projects fail. This is the cue for a marketing pitch explaining the benefits of their application lifecycle tools. I am not against application lifecycle tools; one of their purposes is to enable better communication. However, it’s unlikely that landing new tools on dysfunctional teams will bring about improvement. It’s better to fix the team, which is a management issue, and only then to resource it with the right tools.
What is the team? In reality, the team is everyone with an interest in the outcome of the project, not just developers.
The snag is that it is much easier to buy new tools, or indulge in other forms of deckchair rearrangement, than it is to address the real issues that are preventing the team from functioning – maybe issues of personality, geography, or inappropriate management structures.