Building and supporting software does not require you to be in the office every day. Companies like GitLab, Digital Ocean, CircleCI, InVision, and Stripe have realized that remote work gives them a recruiting and productivity advantage over the competition.
We are witnessing a big cultural shift - remote work is going mainstream for engineers in the "maker's schedule"
If you double click and look at what makes a developer productive, the biggest revelation is considerable time spent on effective communication. While there is no doubt that all good developers are great communicators, we feel that remote work increases the burden of communication and extra effort is required to deliver, and subsequently be acknowledged for top notch work!
We take a stab at defining the top 3 traits (or habits) of a "quintessential" remote developer:
For years, software managers have struggled to measure the value of work people do on a daily basis. Unlike manufacturing, where human activity can be monitored on the factory floor, a developer writing code in front of the computer screen or a test engineer finding and filing bugs can not be gauged for performance on a day to day basis? How do you measure them on the output? It can not be lines of code or bugs filed - it is impossible to generalize the quantity and quality metrics because software development is still a combination of art and science. It is not a mechanical or robotic activity like assembling phones in a factory.
Based on our discussion, we feel that the most valuable remote developers are really good at setting expectations and delivering results on time. Once the work is discussed and the checkpoints are established, the good developers are able to beat expectations on a consistent basis. It is a combination of effective communication and upfront planning.
We had a hard time finding the right word here. In the end, we felt that we need to go metaphorical to get our point across.
A person who is working remotely can not have regular water cooler chats. Impromptu whiteboard discussions are not possible. Daily standups are difficult and even with video meetings, it's not always easy to read the body language. If you are working on tasks that can take weeks to complete, how do you describe your progress? Do you write emails every day with every small task you performed during the day? Do you ask for more airtime in every team sync up call?
In addition to the actual deliverable (software), stellar remote developers are able to keep everybody in the loop with up to date documentation and well written updates at a regular cadence IOHO. This includes updates on product management tools, wiki pages, shared docs and even external company documentation.
As a side note, the award for the most lickable documentation according to our team goes to Stripe.
Software Development is a team sport. Most of the time, you are going to interact with other developers and they will need your help in making progress. A good attitude is essential in dealing with the non-linear progress and the troubling "release is always 90% done idiosyncrasy" in our industry. A single bug can take days to troubleshoot. A customer escalation can jeopardize the next milestone. An unexpected delay in a different component or API layer can make your work look incomplete. Do you blame others or do a good job of playing with the team?
The key is to avoid medals for individual or personal milestones. A more team based holistic approach is desirable. Empathy is critical to achieve success even in the software lifecycle. Whether you are gathering requirements, providing code review feedback, working with support engineers, or dealing with a difficult manager or colleague, empathy allows you to comprehend what it's like for someone else to be in a tough position.
Taking responsibility for your work also means taking responsibility of the team goals.
There is a misconception that developers don't have to do any "management". The canonical definition of a manager in the software industry is deeply flawed. Every good developer plays a manager role when it comes to communicating and co-ordinating the effort of the team to achieve success. Every great developer is a part-time architect and a part-time team lead or manager.
In the book Deep Work, Cal Newport describes the schedule of a person who combines both roles (maker and manager), Wharton professor Adam Grant.
In summary, there are a ton of tips on the internet to improve your productivity like long uninterrupted stretches to produce software as a remote developer. Our contribution is to highlight that stellar developers stand out because they product good software and also nail the "effective communication" aspect.
Previously published at https://www.devtendo.com/post/the-quintessential-remote-developer