Remote Work Is Not The Best Possible Future
There has been quite a bit of talk lately about how companies are moving to remote work. Some people even go so far to say that all companies should be remote. Having an office is just clinging to the past. The office is obsolete and remote work is the future we should have.
I can’t disagree more. As far as software development is concerned, I think the most efficient teams in the future will be in the office. I’ve worked remotely for the past 4 years. For personal reasons, I expect to work remotely for the foreseeable future. However, I am almost certain that I am less effective remote than I am in the office.
Let’s look at conducting one on ones first. I’ve worked with many developers who were initially hesitant to voice opinions. This can give people the impression they don’t have any, which severely limits career progression if those people are in senior management. One on ones are a way to provide those developers a place where they can say what they’re thinking without worrying about it being “stupid”. It helps if the physical place is more casual like a coffee shop or out for a walk near the office.
Virtual one on ones tend to be more formal because both parties are either in a home office or in a meeting room. That formality raises the stakes on an opinion having flaws. Hesitancy to speak honestly hinders any efforts to help a developer learn and grow. It is possible to work past this, but the job is significantly more difficult.
Another casualty of remote work is the creativity/inspiration effect of working with other people in the same space. This is a bit of a fuzzy concept, but the effect is very real. A team that sits together communicates better. Asking a question to someone next to you is as simple as turning your head. Showing a problem is as simple as pointing at your monitor.
Doing the same thing remotely requires an attempt to explain the situation in text form with a video chat following if that fails. It doesn’t sound like that much more effort, but it is enough for most people to not bother. They’d rather bang their head against a wall for a few hours before taking that effort (note: I’m guilty of this too).
That head banging can be a learning experience in some situations, but it is a waste of time in many others. Take AWS. Now, I love AWS. I’ve tried using other cloud providers, but the product quality at AWS keeps bringing me back. However, AWS documentation leaves a LOT to be desired. There is nothing gained spending hours/days banging your head trying to figure out what you’re supposed to do by reading that documentation. Having a 15 to 30 minute conversation with someone who has experience with an AWS service will almost certainly provide a better learning experience AND save a ton of time. That productive conversation is more likely to be delayed, or may not even happen, with a remote team.
This brings us to the point that many people like about remote work: fewer people bother you during the day. You can write so much more code without everyone coming to you with constant pestering questions!
Pestering questions was one of my biggest complaints at a job I had a decade ago. My boss had this tendency to try and understand problems before coming up with solutions though. He asked me to write down every instance where I was interrupted at work. It seemed like an annoying task at first, but I did it anyway.
I was pretty amazed after a couple of days. On the surface things seemed bad. I was interrupted at least 25 times a day. However, when I looked at what each interruption actually was, I realized the value that was being created with that time. Our systems always ended up with a better design because of those conversations. I wasn’t as productive with the work that was directly assigned to me, but I was providing more value to the company by helping the people that came to me.
This experience has given me a strong belief that the productivity boost from working remotely is an illusion. The value a software developer creates isn’t the number of lines of code they write, the number of features they implement, or the number of bugs they fix. The value of a software developer is a lot harder to measure because it involves teamwork. That means not just fixing a bug, but discussing better fixes for bugs so that they don’t reoccur. That means not just implementing a feature, but discussing ways to implement it that would be better for users of the software.
The “productivity boost” from working remotely relies on the premise that you have fewer meetings. That’s just another way of saying you would be more productive by talking to your team less. However, those meetings are more productive than they seem. Talking to your team is not a waste of time.
I keep this blog around for posterity, but have since moved on. An explanation can be found here
I still write though and if you'd like to read my more recent work, feel free to subscribe to my substack.