A Mode of Work: Reflections on Developing Software Remotely
It's been a while (🎶) since I last commuted to an office on a regular basis and I think it's time I reflected on this. I miss the office, the casualness, the folks that knew nothing about software development. I miss people. I'm also a bit reclusive because I like to build things that are hard for me to build. But remote work has served me and the quality of my code well. Unexpectedly, it's led me to make a bit more out of my local community.
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 doing a contract 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 focus, and there is no commute.
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. A colleague takes a break, reads something on the internet, and starts to talk 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? It turns out that working remotely encourages more sustained focus, more of the time.
You may disagree on the grounds that one's home and work shouldn't be mixed.
Software developers aren't a special group but for one crucial detail: we answer first and foremost to a compiler, not a human being. The work requires that we spend most of our working day thinking both broadly and very specifically about how to solve a problem, and what the ramifications of that solution will be in the future. Hard to do when Brad is yelling about his favorite episode of The Office at the office. Offices are poorly optimized for us. Even if you're not part of a self-distracting team, 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).
The common wisdom in the age of the open office is to wear headphones. This is misguided for a few reasons: constant exposure to noise will give you tinnitus. The solution often given, as you might expect, is: noise-cancelling headphones. These adaptively emit waves 180 degrees out of phase with the external noise, such that the incoming noise is nullified. Well, not exactly. Guess what happens when that phase cancelling algorithm detect your environmental noise and cancel it perfectly? The result is a tertiary wave generated from the other two, and it ends up somewhere in the 50hz range. Aka, the range of a semi idling next to your house. Why am I getting dizzy, I was asking myself. Also me: why do I feel this strange bass frequency when I wear these expensive noise cancelling Bose headphones. It's the artifact of imperfect noise cancelling. Not everyone hears it, but I sure do.
cancel I doubt the majority of people willing to use headphones as a noise-cancelling device understand the compensation mechanisms our brain employ to protect us from loud sounds. Prolonged use of headphones will give you tinnitus. If you're me, a recording musician, for whom there really is no such thing as 'background' music, this also 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 a a health hazard and 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!'