In general I write about specific technical issues on this blog: how to get something done with a Rational tool.
I’ve also worked a lot with processes over the years, and I’ve developed some… opinions… about Agile processes. I like a lot of Agile techniques, I’ve written Agile processes, and I’ve helped many people adopt new methodologies including Agile ones. Agile became mainstream some years ago, so it’s past time to post a few articles about some of the issues around Agile development.
Let’s talk about collaboration first.
Ask an Agilist if they think collaboration is important to be successful in adopting Agile techniques. The answer will be “absolutely yes”. The word “collaboration” comes up a lot when talking about Agility.
Then ask an Agilist to define what “collaboration” means. I’ve done this a number of times over the years with some of the top Agile consultants. No one has given me a good answer. The answer I usually get is “people working together”. Well, people work together all the time and they aren’t being “Agile”. And there are plenty of caustic work environments where people work together, but most people wouldn’t call that “collaborative”.
It’s surprising that for such an important Agile concept, there is no definition that’s generally agreed upon. In fact, no one even seems to talk about what collaboration is with regards to Agility. Well, except for me. Today.
If you look at the Principles behind the Agile Manifesto, you’ll see that at least 5 of the 12 Agile Principles – almost half – require that teams be highly collaborative:
- Satisfy the customer through early and continuous delivery
- Welcome changing requirements
- Business people and developers work together daily
- The best way to convey information is face-to-face
- The team regularly tunes and adjust its behavior
So being Agile makes you collaborative, right?
Take another look at the list above. All these principles require that you BE collaborative in order to be successful fulfilling them. They don’t promise that you will BECOME collaborative.
If you’re not collaborative, you can’t welcome changing requirements. You can’t understand the customer’s motivations, embrace the change, honestly communicate the impact of the change. If you’re not collaborative, you don’t have a good understanding of what it will take to satisfy the customer. You have difficulty encouraging their comments and absorbing their feedback. You resent their requests and their input.
If you have difficulty collaborating, you won’t be able to address these Agile principles. If you don’t address these principles, you won’t have an Agile process. If you don’t have an Agile process, you can’t take advantage of the techniques and benefits of Agility.
If you don’t get the benefits of Agility in your project, you will increase your risk of failure. You’ve selected Agile techniques to reduce your project’s risks, but you’re not really doing Agile. You avoid doing some documentation, for instance, because you’re more collaborative, more Agile. But if you’re not really more collaborative, then you’re just skipping an important work product that you need.
So, is collaboration important for Agile development? Absolutely yes! But what is collaboration, and how can I get me some?
Collaboration isn’t about using tools (though some tools can support and enhance your collaboration). Collaboration isn’t about management techniques like timeboxed meetings (though good meeting management is an excellent tool).
Poor collaboration is a result of poor relationships and rivalrous practices. You get poor collaboration in highly politicized or blame-based environments. If you find yourself regularly spending time figuring out how to protect your job and reputation, or you feel that you have to get the team to adopt every idea you have, or you need to point out how other people or teams have caused the problems that arise, then you’re likely in a low collaboration environment. Not fun.
Becoming collaborative is a two-pronged task. The organization has to support it and reward it, and the individuals need to develop the habits and behaviors that realize collaboration. The organization need to make the team responsible, to give the team authority as a whole, rather than having a single “boss” make all the important decisons. The team itself is measured for its success or failure. And the team members are measured by their ability to make the team work better, not for an individual idea that was promoted or criticized.
Individuals need to learn to curb rivalrous impulses and vocabulary. This is hard. In fact, it’s a lifetime’s task. But environments where ideas are embraced and built upon, rather than being torn apart until what’s left “must be good because it survived”, are far more successful.
Rarely you find an organization that can do this. I once worked for a company where, for the first year-and-a-half, we all worked long hours and weekends. And we would marvel that no one, not one person, complained. We were appreciated and fulfilled. Everyone felt valued because we contributed to the team’s admirable goals. Everyone was responsible for the team’s results. The team didn’t have a leader. Or, perhaps we were all team leaders.
This required management to take a stand, train their people, and measure them based on their success at collaboration over their success at selling or their success at getting their individual idea judged “the best”.
It turns out that collaboration is a real resource. It’s an energy and idea factory that is not available to a group of individualists. Collaborative organizations have this extra resource that other organizations lack.
The full scope of what collaboration is and what it takes to be truly collaborative is beyond this blog post. But here’s a working definition of collaboration that is close to what we need to be successful with Agile development:
The cooperative behavior of a team empowered to solve a clear and meaningful problem, such that the capabilities of the team are leveraged in addition to the collection of individual talents. This is accomplished through rigorous dialogical practices among team members.
For our purposes, this means that few organizations have the resources to be fully Agile because they don’t have much capability at collaboration. As we discovered above, Agile doesn’t make you collaborative. Agility requires collaboration to be successful.
This doesn’t mean you can’t take advantage of Agile techniques. A true Scrum meeting is going to be helpful for most organizations (although most organizations don’t seem to do true Scrum meetings these days). Delivering iteratively and incrementally is a desirable approach to software development. But will face-to-face interactions be more effective in a collaborative team? Well, collaborative teams as defined above enjoy working together. They like solving problems together – all the time. And they leverage that unique resource that low-collaboration teams don’t have. So the high-collaboration team is going to be successful with those face-to-face interactions, usually solving problems faster and more creatively than a team of individuals. A collaborative team takes much greater responsibility for proactively solving the project’s problems.
A theme in these methodology articles will be “Go do Agile. Just know what you’re getting into”. Adopting Agile techniques are supposed to be ways of exercising Agile principles, of leveraging a team’s collaborative capabilities. But it’s the people, the collaboration between them, that will be the critical factor in being successful adopting Agile techniques. If you don’t have that in your organization (and it’s safest to assume that you don’t yet), then you probably won’t get the value you expect from using Agile. Go do Agile techniques, just know what you’ll be able to get out of them.
Since you’ve read all the way to the end of this article, here’s a special treat: An image showing the conjunction of Earth and Jupiter from Mars! With moons!
A conjunction is when some heavenly bodies appear close to each other in the sky. From Earth, we might see the Moon and Mars, for instance, sitting right next to each other in the night sky.
This image shows you a conjunction from the view of Mars, and gives you a sense of the distance and size of the planets. Very cool.