A Mode of Work: Reflections on Developing Software Remotely

It's been a little more than a year and a half since I last commuted to work on a regular basis and I think it's time I reflected on the significance of this. Remote work has been beneficial to my software career, but it has changed me.

A quick outline of my remote experience, as I've worked remotely in a few ways: I went from working at home a few days a week, to taking a solo contract gig that only required a few in-person meetings, to working on a fully distributed team with colleagues spread out across the United States and Europe.

A More Natural Balance Between Work and Rest

I work remotely because it gives me greater control over my own productivity. I have been at places where getting caught up in interesting technical tangents was too common. There is a place for this type of discussion, but I found it was becoming a roadblock to stable deep work. And it can happen when just one of your colleagues needs a break, reads something on the internet, and starts talking about it. The worst part is that it reinforces a pattern of staying longer at work just to finish the things you had ample time to do. At some point, I began to wonder: what kind of developer could I be without these distractions? I decided to pursue that question and it turns out that working remotely encourages more sustained focus more of the time.

Software developers aren't a special group, but for one aspect that doesn't get enough emphasis among non-developers: we answer first and foremost to a compiler, not a human being. Thus, our work requires us to spend most of our working day thinking intensely about a problem. A sudden interruption can set you back an hour. What does the office have to do with this? Offices are poorly optimized for software developers. Even if you're not part of a Self-Distracting Bikeshed Clan, you're likely to be positioned in a place that detracts from efficiently-produced, quality work. Like right next to that salesperson with the booming voice, adjacent to an exit, or simply without enough personal space to tune out the unrelated conversations of your neighbors and their distractors. Finally, natural light and distances to look across in order to rest the eye are also integral to any computer user's health.

The common wisdom in the age of the open office is to wear noise cancelling headphones (no mention of the other four sensory modalities). If you're also a recording musician for whom there really is no such thing as 'background' music, this doesn't work. Even musak is likely to get me thinking 'why exactly is this bad, and is there nothing that can be learned from it'? I'll save my elaboration for another day, but suffice it to say that I view this functional attitude toward music as an insult to musicians and listeners alike. It is also a great way to gratuitously fatigue your ears, and if you're wearing earbuds, cause permanent damage.

The flip side of controlling when and how you work is that you can take more effective breaks. Returning control over the work / break balance to the developer makes the entire process of building good software quickly less difficult. There isn't a conventional start or end of the day, or a time when everyone is expected to be, or not be, at lunch. You can go for a run, meditate, call a friend or run an errand largely on your own time. Your needs are not coupled with the social biases of your entire workplace. I have a colleague that lives in Utah and takes a break to go skiing in the middle of the day. He happens to be, by far, the most skilled and productive developer I've ever worked with. I can't imagine that getting that sort of exercise mid-day is anything but beneficial to your ability to focus when developing.

Just to be clear, I don't think that a corporate office is necessarily a net negative. You can go for a run or play basketball in the middle of the day, at or near work. It's common. The thing I find least productive -- an open office -- might be exactly what you need to thrive. But you have a choice, and that choice might make you more productive.

Isolation and Intentionality

It's a good time to take an interest in remote development. More and more companies (well, excluding the gentrificational behemoths known as the 'Big N') are not only open to this, but are actively structuring themselves around remote work. But make sure to do some introspection first -- and then some serious research into how remote companies typically operate -- because you are in for a change in the way you socialize. It's important to ask the right questions about team dynamics when you're looking for a remote position. Are they remote-first, partially remote, or are you going to be remotely working with a team that is mostly colocated? Do they seem to foster a supportive and collaborative environment? Are they explicit about their social and technical expectations? Can you bet on gender equity based on their communication and interview style? These things were important to me, but you may have other priorities. It's important to figure those out in advance.

The distributed team I joined had a blog post that examined what worked and what needed improving with their remote dynamics. That level of open introspection really sold me on working there. A healthy and collaborative culture is certainly not the default, it needs to be deliberately achieved by hiring beyond just skillset, and managing beyond just hitting milestones. I'm glad to say that while there were things that frustrated me, it ended up being a very positive and comfortable working culture. Voicing a concern about process or jumping on a call with my teammates was encouraged and something to look forward to.

And yet, I would still describe my initial feelings, after the first few weeks passed, as gnawing loneliness. I missed eating lunch with other developers and laughing about certain absurdities of the tech world. I felt reduced to text, and out of touch with meme culture. For a while, I felt some sort of loss of my former self, to be honest. This shouldn't be ignored.

But it ended up being a very positive thing in my life. I started to confront some fundamental things about my behavior that up to that point I didn't really feel the need to change. I was stressed out, not sleeping or exercising enough, drinking too much coffee, and generally not taking very good care of myself. Apart from my relationship with my wife, I wasn't actively building or maintaining lasting friendships like I had been before I became a developer. It might just be me, but consistent, casual conversations with colleagues at work about topics that your other friends might find boring can make you complacent socially. For me it did.

I was in some ways happy with a new sense of autonomy, but I felt alone. So I did something about it. At work, I started to figure out how I wanted to be perceived on Slack and leaned in. I started to upload custom emojis. (Don't underestimate emojis, especially custom ones, they are mechanisms of camaraderie and support in chat-based teamwork.) I began to invest more in relationships with friends that I had let decay. I started to look around locally for events related to things I was interested in. Fortunately, I found a makerspace attached to my local library that has a strong musician/programmer/electronics community, and began to just show up on a regular basis. Just showing up was not something I ever did before. I had gone to some Haskell meetups, but usually felt too inexperienced to really carry a conversation. I feel now that I can go to an event alone where I know no one, genuinely interact with people I don't know, and if it doesn't go well, it's not necessarily me. It's similar with work. You make a joke (that's not at someone else's expense, of course), and it gets no reaction? Oh well. No need to think too much about it or withdraw, it's not necessarily you.

And what did I do with that extra hour I had previously spent commuting? At first, I used it for sleep. And then I started to devote it to learning the things I never had the energy for after an evening commute, dinner and a conversation with my wife. This was my initial issue with commuting anyway: I was spending the brightest part of my day not applying my mind to something interesting, but to making sure I didn't die in a car accident crossing the 520 bridge to Redmond, Washington. King County, the land of unused turn signals. What a waste! Now, I spend every morning playing the career long game, digging into a technical topic that really interests me. I just pick up where I left off the previous day.

Freedom is Scary

The main psychological hurdle of transitioning to a remote work environment is the immediate disappearance of familiar structure. While you have more freedom, you also have full responsibility for turning each and every day into something not only productive, but bearable. Learning how to do this can make you more capable and confident.

People who haven't worked remotely tend to speak about it as if it were a form of luxury. "You don't have to put on pants!", they might quip. But I think beneath the joke, there is a certain fear that we all have when confronted with the task of imposing structure where there isn't any.

'The horror, the horror!'