Co-located Professionals
Posted by Jochen on September 3rd, 2008Although the agile manifesto was defined and released in 2001, it is the result of many years of validating these practices in numerous real projects. I see the four statements defined in the manifesto as high-level direction to our industry. Recently I have to admit, I have an inner-conflict with one of the statements and the direction we take as a community. It is “Individuals and interaction over processes and tools”.
During the 1990s, agile development was seen as a beginning of a revolution in the IT industry. People referred to agilists as rebels. Please forgive me if this comparison is a bit strong but similar to the 1960s and 1970s generation of music, when new sounds and creativity erupted, agile development practices tackled many root causes of software engineering problems with really cool ideas. Have you seen the scene in the movie “Office Space” in which the actor decided to take down the walls of his cube? Agilists did do that! The fascinating aspect of this movement was the simplicity of the practices and that we focused on sometimes very basic ideas and tools. Among many others, index cards, pair programming and one co-located project team in one team room. Please also remember, that agile emerged during a time in which others explored with generating code directly from UML and heavy-weight process documentation. Today we know that we supported the right thing.
Important is however, that many of these early projects succeeded not only because we had a very basic tool of index cards, but because we worked in one team room. As a matter of fact, because we worked in one room, index cards were ideal and sufficient to manage our projects.Our project teams were also social networks which had due to their proximity a huge advantage, “individuals and frequent interaction over processes and tools”.Besides the daily scrum meeting, the team shared constantly small fragments of information.For example we didn’t write e-mails or call colleagues. We just asked “who wants t pair up and write some code?”, “Who broke the component xyz?” or “I am out for lunch for the next hour”. These were simple and good times.
Since the agile manifesto in 2001, many organizations experimented with distributed development, often motivated by accounting and financial departments.Reducing costs seemed to be directly linked to the wages of software engineers. On payroll paper, that appeared to be a great idea but caused in my opinion a major problem for agile projects. Let’s re-iterate.
The very first step was outsourcing “testing”, but we practiced test-driven design. What now? Well, with a little compromise, many projects fell back into old waterfall habits, and “just” did the QA at the end of the iteration? One team in one room was already history at that point, and our index cards didn’t work anymore. A few years later, with the increasing maturity level of off-shore organizations, we delegated programming as well. To do all the coding and testing, the team abroad needed specifications. Not a big deal, right? On one side of the planet a team which writes a specification, on the other side a team which digests it and tests at the end. That model has little to do with a team and the definition of agile assembled in the manifesto.
Instead of tackling the root cause, which is communication and collaboration of a geographically dispersed team, we transformed the tool instead.We digitized the index cards and card wall and created software products which we hoped will solve our problems.Psychologically, there is a huge difference between someone getting up a chair, walking to the card wall and move a card into the “done” column. Having the entire team in one room, we all witnessed the transition of the card, followed occasionally by applause. A card also carries a much stronger ownership because it is tangible. When a team member puts their initials down and moves the card into the “in progress” column, that team members really owned the card. In a distributed team these things are almost anonymous and may happen while the other part of the team sleeps (time-difference). Written words travel much slower than spoken and sometimes nothing needs to be said at all to share information. Neither the early steps of offshore development were agile, nor are many agile projects which were converted into agile distributed projects these days.Yes, many so-called agile distributed projects are workarounds. Industry leaders estimate at least a 50% productivity loss when distributing an agile team. But that said, even with a distributed agile solution, there are still benefits compared to waterfall projects. With a distributed model in place and the compromise in productivity, executives need to confirm that time-to-market is not as important as the development costs.That includes the potential revenue we sacrifice by deploying late instead of paying back the development costs earlier.Please don’t get me wrong, I am not suggesting that distributed agile does not work, I am just pointing out the productivity loss and that distributed projects live with a smaller profit margin.That might be perfectly suitable in many occasions.
Recently I have received a constructive comment about rock-star behavior of certain agile speakers. But perhaps that is exactly what our industry actually needs right now. Professionals with a wealth of experience who stand-up and take positions. Someone who may even exaggerate certain metaphors, entertains us with it and simultaneously encourages us to (re) think. Somebody who puts a stake in the ground, takes position and defends that side with healthy arguments.Agree with one side or not, it takes a difference in opinions to allow a good debate, otherwise everything is just blurry without substance. In a debate about distributed teams we will need to protect the term “agile” otherwise it will be blurry soon, too. For example, the agile conference’08 had a track dedicated to Distributed Agile and many more books are soon to be released around this topic. Some of the speakers and authors in our industry promote distributed agile frameworks which have in my opinion not been proven in practice, sometimes not even applied. It is ok that speakers admit that distributed teams are sub-optimal compared to co-located teams, but sub-optimal was not measure for success when agile originally emerged. Executives want to hear what is optimal and consultants advising executives with distributed frameworks need to be careful, because some of these immature solutions may come back like boomerangs.