Working remotely in software projects is not just about having the right tools and an internet connection. This idea falls apart when we start realizing the problems it brings with it. Is there anything we can do to change this situation? Consider these three tips for remote working successfully when developing software projects.
Nowadays, internet omnipresence and the vast array of interconnected devices on most modern homes tend to make people think that working remotely is just a matter of where you are physically. You can do the same work, in the same way, no matter whether you are at the office or in the comfort of your house.
In the IT field, having employees working from home is an ever-growing practice. If you can go fully remote, working from home also breaks the geographic limitations. Companies can hire people from different cities, even from other countries.
At first sight, all you need to work remotely is to have the proper technological tools (mainly a good laptop) and a good internet connection, that’s it. Unfortunately, this theory falls apart as soon as you start working from home and realize the many problems it brings with it. Meetings rarely run smoothly, your teammates may handle different times due to domestic activities or to different time zones, the VPN connection with the office might not work very well sometimes, and the work hours become indistinct from your personal/family time, ultimately increasing your stress. After a few months of working the same ways as if you were at the office, you will easily notice that your progress, your overall performance is heavily affected.
Organizations are aware of these complexities and might regret allowing employees to work remotely because of this decrease in productivity. However, most of the problems related to efficient productivity arise from thinking that working remotely simply implies mimicking the office workplace. The office fosters the common workplace: it gives everyone the same tools, time, and physical space. However, reality shows that little or none of that may happen at home where everyone’s home is different and even if you have an exclusive office room, you are still exposed to other interferences (emails, phone calls, attending your family and neighbors, etc.).
Is there anything we can do to improve and change this situation? Definitely, technology can help, and a stable internet connection can facilitate making a video conference, but in most cases, the outcome will hardly improve if you are focusing only on the technological aspect of remote work.
Having this in mind, we can consider three main aspects to successfully work from home when developing software projects. Although these items are desirable in any organization — independent of working remotely — we will see how they become key factors when going remote.
1. Development process
Working from home is all about minimizing obstacles. Hierarchical organizations with several layers of bureaucratic communication and large workflows that most of the time are sequenced in time will definitely slow down development (think about development projects working with Cascade methodology).
If your team is physically located in the same building with other departments of your organization, there are some changes to speed things up a little bit, for example, by having informal talks that ease solving an issue, even if later on you need to formally send your request via an email or any other kind of document. Working remotely eliminates all these informal communication channels, and therefore, Agile techniques may become a game-changer.
In general, Agile teams tend to adopt a product-based development workflow, consisting of isolated cells with high independence among them. The processes in Agile development also tend to require fewer meetings, and back-and-forths between the different teams and departments are minimized.
2. Development toolchain
As I noted before, many companies let employees work from home but with very poor tools that just slow them down and impose too many restrictions. In most cases, the toolset consists merely of a remote desktop connection: using a VPN or any other way to connect to their physical or virtual machines located securely at the office’s IT department.
Although it could be possible to have a reliable internet connection, the latency introduced by the virtual system and the network traffic may be too big, which can significantly affect productivity.
If your company requires such a high level of security (and in most cases, they will), there are a few alternatives: Either use a VPN and remote desktop access, or provide the employee with a laptop with the proper security measures (administered by your organization, usually keeping all data encrypted locally). Also, combining both approaches, developers may work locally saving data to their encrypted hard disks and then committing changes to the IT remote servers via a secure communication channel.
However, even if you can manage to work with a secured local development environment, it may not be enough. Several other components in the development process need to be considered. Do you provide a way of testing your development locally? Do you have a test database? What about accessing other services/middleware that interacts with the product you are working on?
The IT infrastructure must consider all development phases and plan carefully for all of those tasks that need to be done outside the office’s LAN. Most servers and databases can be virtualized and encapsulated with technologies such as Docker/Kubernetes to pack and distribute them to your developers with relative ease. The point is to let developers work on a task completely independently of your IT’s department infrastructure.
3. Effective Communication
Finally, let us talk about perhaps the most important aspect of working remotely: effective communication.
In most cases, enterprise software projects involve multi-disciplinary teams, and therefore, it implies a lot of changing variables that affect specifications. The Agile paradigm tackles the organizational processes adopting the change as a fundamental part of building the software. However, none of the selected processes or methodologies will succeed if your team does not communicate efficiently.
The right amount of meetings
Meetings, even physical ones, always include a huge amount of waste of time. Think about the slot time before the meeting begins or how much time you have to delay some stuff so it does not interfere with the meeting.
Of course, you can tweak meetings to make sure you include only the minimal attendees, and you can prepare the meeting’s agenda in advance, but even with that done, a meeting is a blocking/time-consuming activity and might be a lot harder to control when everyone is at home working.
Instead of thinking about how to improve the video or audio call, or how to squeeze meeting times as much as possible, what about tackling the real cause of the hurdle — eliminating the meeting whenever possible?
Think about if the topic under discussion can be resolved by any other means before deciding to schedule a meeting to resolve it. For example, you can let developers write issues up and think about a good way of making information disseminate to the right destination. Afterward, they receive the requested information through any other text-based communication tool (email, chat, etc.).
Meetings are one aspect of communication, and having only the necessary meetings will be of great help.
The right tools for the right times
There are many other aspects needing improvements within communications besides just meetings. You need to plan and agree on the best way of using every communication tool — from real-time chat rooms (such as Skype, Zoom, or Slack) to classic email clients.
Of course, focusing on mainly asynchronous communication tools and using them effectively may imply people have to learn and follow a new paradigm. You need to work differently if you want to maximize asynchronous communication and minimize interferences with calls/meetings, and therefore, you will have to learn new habits and work paths. And that’s precisely what remote working is about — it is one more skill that needs to be mastered. Those teams that have this new ability will be in better shape than those that don’t.
Organizations prepared to work effectively remotely, in the same way they do it at the office, have an advantage with this interconnected globalized work, and they are more resilient to unexpected environmental changes. Think about climate events that may occur such as earthquakes or typhoons, cities where air pollution could lead the government to restrict vehicle circulation, or something more completely unexpected like the most recent events of the Covid-19 pandemic.
To Sum Up
Allowing your organization to work remotely efficiently is not just a mere technological/infrastructure challenge. There are some aspects of working from home that will slow your productivity down if you only focus on mimicking the workplace at home.
Successfully working from home requires a solid methodological base, applying a workflow that prefers asynchronous communication channels (like chat rooms/emails) over meetings and phone calls. Developers need to be able to work as independently as possible of on-site infrastructure in order to complete their tasks (for example, commit source code, deploy and test remotely).
Remote work can also be viewed as a skill. The company that is able to master this way of working can be as productive as working on-site, and it will have a tremendous competitive advantage over those that are not prepared. Your company will not only be able to get talents from almost any place in the world, but it will also be far more resilient to problems that may arise in the modern world.
Comments? Contact us for more information. We’ll quickly get back to you with the information you need.