Best collaboration practices for software development teams

Mislav Stanic
Author
12 minutes
Reading time
Managing
Category

Even if you get the best software developers in the country to work for you, it doesn’t necessarily mean you’ve assembled the best team too.

When you want your developers to deliver the best results, collaboration is vital. 

Without proper teamwork, your developers are bound to butt heads, which will stunt their professional growth and slow down projects. 

Your team will only be performing its best once everyone is exchanging ideas and helping each other out.

Therefore, you’ll want to put the right framework in place that will facilitate collaboration, and you may wonder where to start.

That’s what this article is here for—to walk you through the best collaboration practices for software development teams. 

Defining clear work guidelines 

Collaboration automatically becomes more manageable when there are fixed standard practices. 

By establishing clear guidelines, your employees won’t waste time wondering how to go about a task or how to act in certain situations. Instead, the answer will be immediately available. 

For example, imagine if your developers didn’t know which new feature has priority or what testing parameters to use. In other words, they need advice.

Bug and crash reporting tool for your mobile app.

Apple developed a fantastic method for these situations—DRIs. DRI stands for Directly Responsible Individual and indicates the employee responsible for each project. 

That way, everyone knows exactly whom to contact.

Adam Lashinsky explained the practice well:

Source: Shake

When they are assigned a DRI, all employees know who their first point of contact is, which immediately streamlines collaboration.

However, make sure to clarify at what point employees should reach out to the DRI. The DRI shouldn’t be the first resource for minor issues.

For instance, if you’re unsure how to install Django in Ubuntu, this is hardly worth bothering the DRI about. 

Google will have the answer. In this and similar situations, developers should try to find the answer themselves, whenever possible.

Here are some examples of poor questions:

Source: Michael Lynch

Your developer should be able to find the answer to the first two questions independently, and the third is much too vague. 

There are multiple online resources for the first two, and the third question could be much more specific.

This is what well-constructed questions look like:

Source: Michael Lynch

No one but the DRI will know the answer to these project-specific questions, making them worth asking. 

Furthermore, they clearly indicate where the developer encountered problems and what solutions they tried. 

The DRI will understand that the developer has already attempted to solve the problem on their own.

With these types of guidelines in place, your developers will know exactly whom to contact and about what. 

Operations should flow much more smoothly with such transparent, standardized practices.

On a higher organizational level, you’d also do well to implement OKRs—objectives and key results. 

They represent a method for setting and tracking goals, as it would be helpful for your team to always have a core goal to refer back to when working on tasks. 

John Doerr has explained the methodology well:

Source: Shake

To sum up, with OKRs, your developer will also have an overarching goal to work towards, which will help them prioritize and complete their tasks according to the company’s vision. 

An OKR serves as a sort of guide to the bigger picture.

Keeping communication open

Communication and collaboration are inextricably linked. 

Without transparent, open communication, team members will wrestle with information silos, refrain from offering their ideas, and withhold constructive feedback

These are not characteristics you—or your employees—want at your workplace.

In fact, a Gartner survey from last year revealed the following:

Source: Shake

Clearly, transparency is a highly-valued organizational trait. This is hardly surprising, as open communication enhances workplace collaboration and employee efficiency.

So, how can you practice open communication? Well, your meetings are a good place to start. 

Meetings are an opportunity for team members to debate and share their thoughts. However, for this to happen, your developers need to be informed of the meeting’s subject in advance. 

You can’t expect your employees to contribute if they only learn the topic once you start talking.

In other words, it’s a good idea to distribute a meeting agenda beforehand. That way, everyone is on the same page. 

Gergely Orosz, the author of The Pragmatic Engineer, has emphasized this:

Source: Twitter

Per his advice, an agenda gives the meeting a sense of focus and promotes easier communication. 

Everyone knows what will be discussed well in advance, meaning that they can prepare adequately, allowing for the best possible exchange of ideas.

Once in the meeting, however, it’s important to be receptive to the ideas of others. Participants should be willing to own up when proven wrong and take others’ insights into account. 

Paul Saffo, a Stanford professor, coined a phrase for the kind of mindset that everyone should adopt when going into meetings:

“Strong opinions, weakly held.”

He defined the philosophy as follows:

Source: Shake

The creative doubt necessary for developing your decision will come precisely from your team members. 

Welcome these suspicions, as such an approach will result in better collaboration and more sophisticated solutions.

Open communication allows team members to quickly identify contradictory information and find indicators pointing in new directions. 

Your results will only improve with everyone communicating transparently.

However, disagreement is a natural component of open communication. Although not inherently wrong on its own, disagreement can sometimes be uncomfortable and unfounded. 

To ease tensions, we recommend implementing the steel man principle.

The approach encompasses articulating the absolute strongest version of the opponent’s position before responding. 

When opinions clash, each party must have a perfect understanding of the other’s stance before arguing against it, as exemplified below:

Source: Shake

This approach communicates respect and ensures a productive conversation, as it guarantees everyone is on the same page. 

With this method, even the dangers of disagreement should still result in helpful collaboration.

Maintaining comprehensive documentation

In a software development team, each developer has their own task and is developing their own features. 

When team members require each other’s assistance with these projects, the easiest way to share knowledge is to prepare comprehensive documentation.

Extensive documentation means no time is lost on explaining work to other team members. 

Instead, that one document delivers all the explanations and examples in one central location. Knowledge sharing is effortless, ensuring more productive collaboration.

This Reddit user offered examples of their documentation, highlighting its use for their coworkers:

Source: Reddit

The bits of knowledge in the examples above are intended to significantly ease collaboration. Having information written down simply makes it easier to circulate.

This is why comprehensive documentation is a must-have for asynchronous work. Knowledge transfer can sometimes be challenging when employees don’t have to be online simultaneously.

In such workflows, documentation serves as a central reference point. 

Since the coworker you want to talk to may not be available when you need them, the documentation must be comprehensive enough to answer your questions and enable you to continue with your work even without touching base. 

Preston Wickersham, an asynchronous work advocate, described the benefits well:

Source: Shake

Although documentation is mandatory for asynchronous work, there are also advantages to asynchronous work. 

Who wouldn’t want clean, easy handoffs? This is hugely useful when developers take annual or sick leave.

Remote software development teams also collaborate much more easily with ample documentation. 

Since it’s impossible to just walk over to a coworker’s desk, documentation is a considerable asset when learning about a new piece of software.

GitLab’s Remote Manifesto even dedicates four of its nine points to documentation practices:

Source: GitLab

GitLab has found that comprehensive documentation makes their remote work easier. 

They even allow public sharing of information to ensure their remote employees can access everything they need. 

Such practices should greatly facilitate collaboration between remote team members.

There are multiple online tools to help you manage your documentation. One good example is Bit.ai, a documentation collaboration platform for creating notes, documents, and wikis. 

This tool allows all your employees to easily find your various internal documents.

The platform even has a template and guide for creating software design documentation:

Source: Bit.ai on YouTube

With all your documentation stored in one central location, your developers will never lose time looking for the information they need. All the answers they need will be just a click away.

Using the right communication tools

It’s the 21st century, gone are the days of Excel spreadsheets, phone books, and in-person meetings. 

Technology has advanced tremendously in the last 30 years alone, and there are now countless tools for all aspects of doing business. 

A recent McKinsey study has revealed that collaboration-boosting features are most important to companies:

Source: McKinsey

Given the undeniable importance of collaboration and the benefits these tools can bring, why not take advantage of the available resources? 

Rock is a great example. This tool is an all-in-one communication and collaboration platform encompassing messaging and task management simultaneously. 

You can communicate with your coworkers while keeping an eye on your to-do list. Here’s what the platform looks like:

Source: Rock

This setup is invaluable, as your team won’t have to constantly toggle between fragmented apps

It will be much easier to keep organized when all your projects and messages are in one space.

Rock also has an additional fantastic collaboration feature—Quick Connect

By sharing a Quick Connect link, users immediately open up a collaborative space where all invited can join and work together. The feature is displayed below:

Source: Rock

The tool is the equivalent of a one-stop shop. Rock offers messaging and task management services in one location, making it an invaluable collaboration tool.

For face-to-face (virtual) communication, Zoom is a great option. 

A video conferencing tool, Zoom offers impressive audio settings with advanced background noise suppression, meeting recordings, and even screen sharing.

Source: Zoom

The screen sharing feature makes the resource ideal for meetings and hosting presentations. Multiple users can share the screen if necessary—the feature isn’t restricted to one presenter.

Last but not least, a version control tool would make your developers’ lives much easier. Version control keeps track of changes made in the code, saving older code versions. 

This repository is invaluable if any new bugs appear or the architecture becomes too convoluted. 

Developers can always examine the older code version, compare it with the current code, and, if necessary, revert to the original. 

Here’s an example of what version control looks like in VS code:

Source: Visual Studio Code

If multiple developers are continuously working on the same code, this tool is very much required, as coworkers will clearly understand the changes made without their input. 

Collaboration becomes infinitely easier with documented records of the changes mode.

Having short feedback loops

Receiving constructive feedback from coworkers is always beneficial, as your developers will advance their skillset. 

With that in mind, you’ll want to shorten your feedback loop as much as possible.

One tactic is to simply involve your developers in giving frequent feedback from the get-go. 

If you’re in the beginning stages of development or trying to tackle a serious bug, you might as well call a meeting with everyone involved

It’s bound to be more productive than trying to reach a decision yourself. This way, everyone can offer their thoughts all at once.

Ogi Kavazovic of HouseRX considers this practice invaluable:

Source: Shake

With such an approach, you receive everyone’s feedback immediately, ensuring all team members look forward to the next steps.

However, when the project starts, ensure you are the only individual offering feedback to those who report to you directly. 

You should have the most insight into the project, making you the most qualified to give feedback and with the most opportunities to give it frequently.

Source: Shake

Executive-level employees are not the best choice for doling out feedback to junior employees, as they are not as well acquainted with those employees (or the project) as you are. 

It’s preferable for you to often communicate with your team members and defer upper management from directly critiquing your team.

One method of providing this repeated feedback is to streamline your code reviews. Code reviews can sometimes be ambiguous and take up unnecessary time due to unclear comments.

For more explicit feedback, it’s recommended to use the traffic light system, assigning the following markers:

  • Red when something must be changed
  • Yellow for a discussion
  • Green for something that can be dealt with later, and for now, can stay the same.

Here is an example:

Source: Global App Testing

With this system, your developers will know exactly what is and what isn’t a priority. 

This saves a substantial amount of time, as there are no hours lost going back-and-forth about what changes to make.

Another excellent method for quick feedback is pair programming

With pair programming, the feedback is instantaneous, as you can offer advice to your developer on the spot – you will literally watch them code. 

Several tools can help you with online pair programming if you have remote employees. Displayed below is Devskiller’s resource:

Source: Devskiller

As you can see, their editor even allows for a video call so that you can chat with your team members and offer feedback in a friendly, relaxed manner.

Conclusion

Collaborative software development teams are the prerequisite for efficient, productive, and innovative results. 

When your developers all work together, your team can achieve fantastic results.

One essential teamwork practice to uphold is open communication. You can also use fantastic communication tools to make the process easier.

Maintaining comprehensive documentation is a huge help too. Do your best to shorten feedback loops as well, ensuring continuous teaching and improvement.

Finally, clear work guidelines are a must. Your team can’t be collaborative without a clear structure in place.

Follow these collaboration practices, and you’ll have a top-notch software development team.

About Shake

Shake is a bug and crash reporting tool for mobile apps. It was founded in 2019 with the mission to help app developers spend less time on debugging and manual overhead — and growing daily since thanks to a small and dedicated team of geeks based in the EU.

Meet your favorite bug and crash reporting tool.

Add to app in minutes

Doesn’t affect app speed

GDPR & CCPA compliant