Collaborative Software Teams

The most impactful cultural shift your team can make

July 25, 2020

programmingproductivity

3 min read

I think the most impactful marker of how productive a development team is how collaborative they are. I set the expectation with my team that collaboration is top priority, and do my best to identify and facilitate collaborative opportunities. Here’s what to look for:

Planning

Collaborative teams work together to plan architecture and design before jumping into the code. Software that has had discussion and debate around architecture and planning is higher quality, better architected, and more valuable to customers. Having alternative views into a problem before jumping in identifies pitfalls and solutions that a single person may not have thought of.

The time this saves long term is enormous. Your team will spend less time falling into rabbit holes, spend less time re-working hasty or single-minded solutions, and they’ll produce solutions that more accurately solve customers’ needs.

Unblocking

Collaborative teams reach out to their teammates when they are stuck. A team that hasn’t developed the culture of intense collaboration will have developers that spend far too long spinning their wheels.

Developers who reach out when they’re stuck get back on track quickly. They more often produce the proper solution. They complete higher quality work, and more of it.

Experience and skill

Collaborative teams level up faster! Developers who work together share ideas and insights. They do research together. Leveled up developers produce higher quality, more value, and mentor your less experienced team members.

Happiness

Collaborative teams are happier! High velocity, high quality, and constant learning makes happy developers. A happy developer produces better work. All developers (so far) are humans, and humans are social and collaborative animals.

Without collaboration

Developers who miss opportunities for collaboration may have their code reach code review before coming under any scrutiny — this is too late.

There’s extra friction involved with asking a developer to change their approach when they’ve already committed the time. The existing code adds constraints to reviewers’ thinking, making other solutions less obvious. The long term cost of this is drastic.

How can I get my team to be collaborative?

Set the expectation that collaboration is the most important value. Sell them on the benefits and get their buy in.

The daily planning meeting is the most effective way to collaborate. Have your developers plan their day out loud and identify possible opportunities for collaboration and pair programming. Look for plans with complexity involved, and encourage collaboration to tackle that complexity together. Look for developers who might be stuck on something and encourage pair programming to get through the issue. Look for spikes or research tasks that can be tackled together.

I recommend a video chat or in person meeting for your standup. Standups over Slack or other messaging systems aren’t real-time enough for collaboration, and typically result in status updates, not collaborative day planning. Your teams’ status should be in your project management software. Look there for work progress, and save your daily planning meeting as a catalyst for collaboration.

Teams that aren’t used to collaborating intensely may need some practice to get used to it. Give your team some time to get through the initial adaptation. Good luck!