Project management

A project management tool is like a spine to every software development project. You need to have one place with an agile view on tasks that are being planned, done and reviewed.

From our experience, for smaller or open-source projects, Github works just fine. Our second thought choice is Trello that is super light, supports agile view and doesn’t create unnecessary tasks. It’s totally customizable so you can create any columns you want. For projects where you don’t have many use cases, it works just fine.

Screenshot of one of the Trello public templates (https://trello.com/inspiration)

As for the setup, we usually go for simplicity. We try to stick to five columns so that we benefit from its lightness. Some of the most popular setups include the following columns: backlog, to do/selected, doing, done, in review/verifying in production.

Screenshot from an official JIRA project (jira.atlassian.com/projects)

While Trello works fine for smaller projects, JIRA is our first choice in case of more advanced projects. Although it is a bit slow sometimes, it gives you many useful features like managing sprints or submitting for review. What’s most important when setting up JIRA is again going for simplicity. Get rid of any custom fields, whenever it’s possible make sure your views are showing only the things you really need. For example, it could be as simple as: title, description, and a number of story points. The second important thing to remember is making sure that it is regularly updated. Agree on the best practices that the whole team will follow and make someone responsible for monitoring the updates. That way, you make sure that JIRA reflects the current state of your project.

Github project vs Trello vs JIRA — features comparison

Communication

Communication in a project is like blood for a living organism. You need to design a system that supports its fast, uninterrupted flow. A successful communication system effectively supports four aspects of communication: ad hoc communication, video communication, wiki-like communication, and screen sharing.

Ad hoc communication

As we’re a 100% remote team, this part of communication has been given a top priority in our company. We’ve learned throughout the previous years that since we’re all distributed we need to create an online, virtual office that feels like… a real office.

That’s why all our teams use in their daily work a combination of two tools: TeamSpeak for audio communication and Slack for written, chat-like communication. It’s not a surprise that both tools represent the type of communication that emerged together with multiplayer online games in which communication is key.

A screenshot of SoftwareMill’s TeamSpeak account.

Voice communication will always be more efficient than the written one. That’s why on a daily basis our teams use TeamSpeak, which uses the push-to-talk mechanism. Every team has a dedicated channel where everyone ‘sits’ during the day. That way we create an office-like vibe where we chat during the day. There are quiet zones where you can switch off easily when you need to focus. With a push-to-talk tool, your communication is easier and faster than in a physical space. In an office you need to walk to someone and tap them on the shoulder as the majority of people use headphones to reduce the number of distractions. With TeamSpeak you can fully control the number of conversations you’re hearing and at the same time you can talk to anyone in just seconds. If you want to try TeamSpeak in your team read 6 steps to improve your remote communication with TeamSpeak.

Apart from voice communication, you need to be supporting the written one as well. Chat-like communication is faster than emails, enables you to reply in threads and you have access to the history of communication. Slack is perfect for us for this type of communication.

You can create a workspace with your client or you can invite your client to a single channel. Slack lets you create different channels for different purposes. Some of our teams have a dedicated channel for stand-ups. Due to different time zones, they don’t do stand-up at the same time, but they post their updates on the channel instead. Other teams create separate channels for particularly complex epics. That way they keep the discussion about it in one place, everyone who is working on a particular feature gets notified when there is an update and the channel is easy to search when looking for a piece of particular information.

TeamSpeak vs Slack — when to use which

Video communication

It’s a priority for our teams to have video meetings when possible. We use zoom or Google Hangouts for that. It’s a much better experience when you talk to someone and you see their face and expressions they make than when you only hear their voice. It makes the conversation much more human. Some of our teams do daily stand-ups using these tools, while others use them for ad hoc, quick meetings.

Zoom vs Google Hangouts — features comparison

For a daily, all-company meeting, we use a combination of TeamSpeak for audio and BigBlueButton for video. This combination turned out to be the most reliable and hassle-free for us.

A screenshot from SoftwareMill’s meeting on BigBlueButton.

Wiki-like communication

Every project requires a team to keep some notes about its requirements, business decisions that were made, project setup or technical diagrams. It’s worth the investment to keep all that in one place. We use either Confluence by Atlassian or Google Docs for that. That way, we organize the information in folders or pages, it’s easily searchable and you keep the history of changes.

There is a risk when it comes to storing such information tough. You can easily get swamped with lots of pages or documents that are hard to keep up-to-date and organized. People lose trust in them and slowly stop using them. So try to stick to the most important information about the project. It could be as simple as a short FAQ like how to start the project, how to deploy it on production, etc. If your project is small, even the Readme part could be enough for that.

Confluence vs Google Docs — features comparison

Screen sharing

Screen sharing is what gives you this feeling of sitting next to someone and watching what they do on their computer. It’s really useful, especially when someone in your team needs a hand in solving a difficult problem or simply got stuck in their code. You can look at their code, see what they’re trying to do and give some new ideas on how to approach the issue. It also enables pair-programming and makes it so efficient. Zoom and Slack are the tools that we use for that. They enable both screen sharing and also drawing on the shared screen.

zoom vs Slack — features comparison

Retrospectives

Good retrospectives are like unicorns — everyone heard about them, but no one saw them in real life. Especially in remote teams that work for a client it’s difficult to make them really efficient. First, you need a high level of trust in a team so they’re open and transparent about the things that don’t work. What usually helps to a great extent is seeing everyone that’s in the meeting on a camera. We always use zoom or Google Hangouts for that.

Next, you need one place where you keep the notes from all your retrospectives. It’s a good practice to start every retrospective with a review of action points from the previous one. We usually use confluence where you can create a to-do checklist for every meeting. There are also two other tools that we recommend which include designed workflows for retrospections: TeamRetro and Reetro.

TeamRetro and Reetro — features comparison

Other

Some other tools that we use in our software development teams are dedicated to particular aspects of a project: