For a past few years i was lucky enough to work in some kind of teams. At first they were project dependent (formed for the project, and dismissed after the project ended), later they were stable groups of people who liked working with each other. It was obvious for me and all my co-workers, that sitting together in one room, and crunching the code as a team, was efficient and productive. Lately I’ve stumbled upon radically different approach, and for the first time, I had to think-out why I loved so much working in teams, and why teamwork is better (at least for me). It turned out, that for many companies teamwork is unknown abstraction, or pure fiction. I’ve witness horrible things supporting this statement – like programmers working in 1,5m x1,5m almost completely closed cubicals with their headphones on and insulting testers for interrupting their ‘important’ work. Pure blasphemy in XXIth century, as far as I am concerned.
Nonetheless, I’ve had to come up the benefits of teamwork (and why they trump “people like their current desk, and they won’t be willing to give it up to sit together”). There are lots of posts on web explaining the same topic, so I’ll just try to sum up the most important things from my point of view.
So, why forming real teams and teamwork matters?
1. It breaks down “my tasks, your tasks” culture. I believe, that such an attitude is one of the roots of all evil, responsible for many dysfunctions from poor department cooperation, to hundreds of bugs in supposedly finished part of code. Teamwork introduce other perspective, enforcing people to look at the project as a whole (or at least within the responsibility of the team), rather than only on their own tasklists. It leads to better quality, better design, and more care for the final product.
2. Teamwork implies shared responsibility for the work to be done, and usually enforces acknowledgment that all the team members are responsible for all the tasks. So if two pieces of code are not working well together – it is the team’s fault, not John’s who wrote part A, or Mike’s who wrote part B. It’s worth noting here, that the closer people work together, and the smaller the team is, the greater the sense of responsibility. Six people should care more for the upcoming sprint review, than thirty people for whole milestone. If the human psychology worked differently, the communism would be a great success ;]
3. For stating the obvious, there are also benefits of better communication. The feedback loops are shorter, people talk rather than write long discussions over some communicator (Agile Manifesto!), and so on. This leads to better knowledge distribution (both domain, and technical), and in the end it leads to product with less bugs and better suited for the client needs, or at least for what the analyst wanted ;]
4. Better communication leads also to better design of the application, especially when conjoined with practices such as CodeReviews, or just brainstorming.
5. Task sharing helps avoiding the >40h behemoths-tasks, that are responsible for narrow domain specialization of people, that drastically rise the truck-factor. Such tasks should be avoided at any cost, so there’s no area of code that only one person knows well. Teamwork helps fighting with that, usually enforcing well-grained small tasks, that are easily maintainable and interchangeable between team members, thus enabling people to work on the same feature together.
There are a lot more reasons to go with the teamwork instead of the sum of the single worker’s efforts – just use Google. Those mentioned above are the most important to me.
P.S. I’ve noticed that perhaps the true reason of my disappointment with lack of appreciation to teamwork among some organizations is in fact the misuse of “team” and “teamwork” terms. For me, ten people working for the same project, but scattered across the floor, without paying any interest in each other’s tasks are NOT team, and the DON’T DO teamwork. That leaves us with the question, what’s the difference between them and The Team, but that’s a good topic for the whole new post, so stay tuned :)