In 1991, when Linus Torvalds was working on an alternative to the MINIX system due to its restrictive nature, he posted this message in a Usenet newsgroup,
"Hello everybody out there using minix -
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu)"
At that time, he didn't know that his hobby would later take the shape of the Linux kernel. But he was interested in getting people involved in his idea. Soon enough, he had unknowingly pioneered FOSS and the era of distributed software development had been kick-started.
Today, developing software applications with the designer in the Philippines and the coder in India is a reality for innumerable software teams. While there are no doubts about the sustainability of distributed teams, managing one successfully is still a tough ask.
With a receding pandemic in the picture, and workplaces actively hiring remote workers, how do you ensure project success?
Let me share some empirical tips and nifty Remote Software Development tools that will help you achieve your development goals, in an increasingly remote environment.
1. Minimum Friction in Project Communication
2. Ensuring that Timelines are Met
3. The Team Stays on the Same Page vis-a-vis the Development Lifecycle
4. The Development Guidelines Should be Standardized
You're free to add more to the above list but I am sure these would most probably be your top priorities. Let's see what all your team can do to achieve these goals consistently.
In a remote environment, communication is bound to get disrupted. It isn't as convenient as making a quick walk to your colleague's seat.
A few barriers to effective project communication are;
- Time Zone differences
- Cultural differences
- Inadequate channels of communication
Not knowing when to ping your overseas team members can lead to delays and overstepping their active hours.
Every Time Zone is a straightforward tool that helps you view the current time in all the time zones that your remote workers belong to. You can also view the hours remaining for the day and when they go to bed.
Just visit the website and quickly glance through the slider. You can always create an account to access advanced functionalities.
Respecting the little cultural ethnicities pertaining to a region can go a long way in establishing trust and strong communication.
Although you will learn about the cultural differences as the project proceeds, having a quick primer beforehand will help a lot.
For instance, our remote team in Russia is fully proficient to speak English, but still we greet them using words like "Dobroe utro" (Good Morning) or “Dobriy den” (Good afternoon) as a small gesture of respect. They usually laugh at our misfit accent.
Similarly, we have also learned that using Gospodin (Mr.) before names is warmly welcomed. The same goes for Gospozha (Mrs.).
Any well-managed remote project requires several channels of communication. Relying only on chat software or ditching email altogether can both lead to project failure.
The key is to strike a balance between asynchronous and real-time communication channels.
ProofHub manages all of our project communication. All task comments, @mentions, and bug reports are sent through ProofHub. Just like Jira, it allows us to manage the flow of code easily, but we also use the 1-on-1 chat feature for our IM-ing needs.
All our daily and weekly meetings are conducted on Zoom. We always have the ProofHub Notes window open to record minutes of the meeting, on the side. Any UI screenshots or important task changes are also attached while the call goes on.
This duo helps us prevent communication gaps as the remote team members can ping us for a quick chat, Zoom calls us for anything urgent or just leaves a comment wherever necessary.
We also use Dialpad for quick meetings and daily stand-ups.
Keeping project velocity in check is critical for the business as well as for maintaining decorum in code releases.
Most Agile teams that work with overseas collaborators follow a 2-3 week sprint cycle. In which, you have to pack development, testing, pre-production release, and finally the production release.
To ensure that the timelines don't get sabotaged, you have to;
Allocate work with accountability
Check productivity levels
The best way to ensure accountability is by assigning tasks with clear outcomes and context. Using a Remote Software Development tools that lets you communicate task requirements is necessary.
If you assign tasks loosely without setting clear expectations, you might not be able to build accountability. The above conversation doesn't talk about deadlines, task details are on the email and task priority hasn't been mentioned.
Now, look at the above task assigned using ProofHub. It contains details on what the task is, how it should be done, when it should be delivered, and the priority the assignee needs to follow.
This way, the chances of task delay are minimum. The assignee can manage their tasks at hand in a much better way, now that expectations are crystal clear.
Team's collective productivity is a sum total of individual productivity levels. In order to ensure that the tasks are being productively handled, you need to track productivity in objective terms.
Use Remote Software Development tools that can help you capture detailed reports on productivity.
You can create a dashboard of completed tasks and overdue tasks with a snapshot of who is lagging behind. In remote environments, having this information available for reference will help you gain clarity on project progress.
If one of your remote team members is unable to meet the productivity benchmarks, you'd know it's time to help them resolve the issues that they might be facing. Rather than assuming that they're being unproductive on purpose.
We were using Asana earlier for this purpose.
One of the most difficult tasks in a remote team is to keep everyone on the same page in regards to the development lifecycle.
When you're working with multiple developers and several git commits are locked each day, it's easy to lose track of what is happening.
To solve this, you can implement a workflow-based process that is visible to everyone like one giant wall with sticky notes on it.
I am talking of Kanban boards, that help as a comprehensible point of reference for distributed teams.
These can be customized to suit your process or dev ticket disposition needs. Here is what we generally use to move our tasks from To-do's to "Deploy to Pre-production"
Breakdown Analysis -> Ready for Developer -> Send to Dev Server -> Deploy to QA -> Testing on QA -> Ready for Pre-prod -> Deploy to Pre-prod
All developers and team members, including the in-house and remote workers can access it freely. As tickets and tasks move from one stage to another, all the key stakeholders are instantly notified.
This way, we have made it easier to track each ticket as it moves through the development lifecycle. Whether you're in the office or at home, the Kanban Board appears the same, bringing uniformity to the process.
As a result, we are able to avoid confusions and bring the development upto speed.
If you're using Jira, we recommend automating comments with Github issue labels using Automate.io.
Each workplace has its own way of developing a project.###
There's an unwritten code of conduct that each developer follows, to keep things simple for everyone. In virtual workplaces, such obvious rules need to become Formalized Development Guidelines.
I refer to this as "Common Sense of working together." You get used to the behavioral patterns and code practices that your fellow developers are following, when you are sitting side-by-side.
But in a virtual team, this can only be enforced by laying down a mutually agreeable development methodology.
Below is an example of standard Coding Guidelines that your team can use. Include all the Class Structures, functions and headers you want to standardize. Share it with your remote team in a collaborative way.
We have used ProofHub Notes for this requirement as it's part of the software package.
Developing software remotely helps you cut OPEX costs, onboard developers with highly-specific skill sets and enjoy a flexible work environment. Just that managing a remote development project can get tricky, without the right methodology in place.
If you employ the right remote software development tools and keep communication aligned, you'll reap all the benefits that it offers. Whether you're building an MVP or a full-scale SaaS web application, your development goals would be similar to the ones talked about in this article. Be agile, keep communicating and stay productive!