Cross sector solutions

BBD’s best tools for distributed development

BBD’s best tools for distributed development

Part 2 of the distributed development series

Wading through all the tools available to aid distributed software development can be like swimming in jeans – challenging. With as many years of experience as we have in perfecting a distributed way of working for clients across many sectors, knowing which tools and methodologies are best suited to your project environment has become its own art form.

As a software development company with an international footprint and staff in Bulgaria, Cyprus, India, Netherlands, Poland, South Africa and the United Kingdom, we understand what is required to make this model work. As part two of a three-part series, this article looks into the right tools for ensuring teams are able to effectively deliver and adapt.

Understanding your options

“Diving into a distributed development model, where work is distributed across a single geographically spread team, can seem daunting at first” explains Dieter Rosch, a BBD executive and team lead for multiple distributed teams. This is especially true when getting to grips with the tools your teams need to use. It all comes down to the fact that custom distributed teams need a customised tool selection. For BBD, this is important because not every project team operates in the same way, nor do we want them to. “Although we have preferred ways to work as a business, we support our project teams defining their workflows according to the client, the environment and the project itself” explains Rosch. There is a plethora of tools, both licensed and open source to choose from, but before identifying which could be the right ones for your team, it’s important to first acknowledge a few key concepts:

  1. Teams will need more than one tool to successfully communicate and deliver. “At BBD we’ve found stripping down to only the necessary tools for video, chat, project management and source control is a winning recipe.”
  2. When working across multiple time zones, the capacity for offline communication is key as not everyone will always be online at the same time. Rosch adds that although there are often overlaps in working hours across his teams, you never want to end up with a situation where the ‘shift A’ is confused as to what ‘shift B’ has accomplished.
  3. Easy feedback and centralised saving are crucial to your team’s ability to work naturally and comfortably.
  4. Your team will also have preferences, so remember to take these into account.
  5. Lastly, he adds that it’s not only about the software, but good hardware – quality headset / earphones, a decent camera and a clear microphone are paramount.

With this in mind, you can start digging into the available options.

Top tools for virtual chats

  1. Slack
    Slack is essentially a group chat room with the ability to assign multiple channels to organise communication into both functions and thought threads. You’re also able to react, set reminders and use emoticons to increase the signal-to-noise ratio (basically less chat and more action in functional channels). You can also set up a bot that team members use to send text commands to, which the bot then actions on the system. Rosch explains that this feature allows teams to automate smaller tasks, freeing software engineers up for meatier ones where they are better utilised.

Rachel Da Justa, a fellow BBD executive with many years’ practical insight working in distributed teams explains that many of the teams she’s worked in have daily check-ins which replace standups and act as a ‘reporting for duty’ action. “This message-centric approach allows our team members to check in when it’s appropriate for their time zone – an important fact to consider when, like me, you’re working on a project covering three continents” Da Justa adds that this practice also forces each team member to plan their day, helping build self-managed teams who are accountable and responsible for themselves – a move BBD fully supports in our project teams. As an added benefit, Slack integrates into Trello, Jira and Outlook.

  1. Microsoft Teams
    With both video and chat functionality, Teams works well for social and formal chats, as well as video conferencing. This highly accessible platform is easy to adopt in cross-functional teams, allowing you to engage with all relevant parties in its persistent conversation threads. The platform integrates into multiple third-party apps including Zoom, GitHub, Jira and Polly for quick poll-based feedback. Teams also fully integrates into Office 365.

Da Justa says that “An added benefit with Teams for us is that you can create conversation channels, much like you can in Slack. This helps us keep track, allowing every member of the team to stay in touch with what’s happening”.

  1. Telegram
    Rosch explains that it is important to be able to separate high priority messages from the humdrum of conversation. For this, Telegram has been a successful tool because when used only for work, every notification then means that something is happening, or needs to be actioned. “The trick to these tools is to get them to work for you – even when on the go. For some projects we have used the automated bot functionality to set alerts that send direct messages to production support teams through Telegram. These are then meaningful alerts that won’t get lost in between other emails or team chatter.”

Top tools for video conferencing

  1. Zoom
    With so many of us having found ourselves working at home due to COVID-19, Zoom has become a staple tool for video conferencing and virtual meetings. For BBD, it’s a firm favourite among the distributed development teams with its large participant limits, network stability, functionality and ease of use across the mobile and desktop apps and through your browser.

From a development point of view, Zoom’s video recording functionality lets team record end-of-sprint demos and save them either to the cloud or onto your device. This then means that distributed teams can watch when they’re available. Da Justa says that this functionality is especially important for distributed teams because not everyone will be online at the same time.

  1. Microsoft Teams
    Similarly, Teams offers high participant limits on calls, easy content sharing, video recording and access to previous meeting notes and recordings. Da Justa notes that being able to invite external people makes keeping all stakeholders in the loop easy.

Rosch explains that choosing between Teams and Zoom is often a matter of personal preference.

We wouldn’t be software engineers if we didn’t have opinions on the tech we use.

Top tools for project management

  1. GitLab
    GitLab is a powerful tool for co-ordinating activities at all stages of software delivery, from initial code design through to app development, infrastructure provisioning and canary deployments. Da Justa explains that many of BBD’s teams enjoy using the project management component of GitLab because it becomes a single source of truth in which everything is code. “There’s also no chance of someone accidentally changing a weird setting somewhere and you not being able to find and fix it quickly because if something doesn’t work, the problem is in the repo. Somewhere, that change is in the commit.”

For Rosch, the GitLab suite includes functionality that aides distributed teams because you can organise projects, tag them and search through your code – “this is especially important when the team is growing as it helps newcomers find what they’re looking for relatively easily”.

  1. Atlassian Jira
    Amenable to teams of any size, Jira offers different packages based on the functionality you need, including methods for KanBan and Scrum. As a project management tool, Jira lets you keep track of every issue your team is currently working on, each task assigned to the members and where the code is in the deployment. With the Agile methodology taking root in many projects, we have found that the Agile board template is highly effective. “Our goal is always to ensure that we’re adding value for our clients, so project management tools such as Jira help relieve unnecessary disruptions for development teams because we can quickly see as bugs are fixed, code is deployed and tasks are completed” reveals Da Justa.

Top tools for source control

As a popular version control system for agile software development, Git is a well-supported open source platform that supports a range of workflows to suit different project teams. A big difference between Git and many others code repositories is that it is distributed, not centralised. This gives software engineers the freedom to experiment locally and only publish their changes once they’re ready to send them to the rest of the team. “Software development is a lot about solving problems – a creative activity. Sometimes the best way to solve something is to play. Git gives us that flexibility” explains Da Justa.

A number of companies have taken basic Git and bundled it into their own value-added offerings. In our experience, two stand out for enterprise adoption.

  1. GitLab
    Mentioned previously, GitLab is a versatile and collaborative tool, whose source control component has successfully been used in many of our distributed development projects.

Because of its distributed nature and the fact that it works much like an Agile component, changes can be pushed down the deployment pipeline faster than with a monolithic and centralised system. “Couple this with the ability to create your own personal copy of the repository hosted alongside the main codebase and you have a light but secure tool that merges changes as you need them too” explains Rosch.

  1. Bitbucket
    Bitbucket is a popular tool for BBD teams because it stores all project code in one secure repository from which the team members can access and pull needed code. All changes are tracked and you can rollback if you need to. An added benefit is that Bitbucket also stores server configurations and scripts, essentially making it a one-stop shop. When integrated with Jira, Da Justa’s teams have found that its handy to not have to leave the tool to receive bug issue status reports before actioning them.

Its built-in continuous delivery functionality also allows team to increase efficiency in how they can build, test and deploy all while benefitting from quick feedback loops.

At the end of day, it all comes down to understanding your team and assessing which tools best suit their needs in the project. “Our experience in the tools above means that we’re confident and comfortable in their effectiveness for our teams – in varying combinations” explains Rosch. The important thing to remember though, adds Da Justa, is that adoption is paramount to success.

If your teams don’t commit to using the tools consistently, then communication and productivity cannot flourish.

The next article in this series dives into the culture of distributed development, looking at how to foster a successful team, no matter how widely spread.

What’s next? We’re ready!