In this post, I want to cover some of my personal thoughts and experiences about remote work. There are many opinions about remote work, and it may not be for everyone, but that's ok. Remote work is about flexibility and trust for both the company and the employee. This post will be some of my experiences but in no way are a comprehensive argument for or against remote work. If you want a comprehensive guide for remote work, I cannot recommend enough the book Remote: Office Not Required by David Heinemeier Hansson and Jason Fried.
My experiences with remote work have been for the most part positive. I started remote working a few years ago when the company I work for expanded to a larger city (St. Louis, MO). The end goal was to open up an office to recruit more programmers into the company. Eventually, we were able to get an office opened up and started on-boarding developers.
My wife and I wanted to live outside St. Louis to be near family in our hometown we grew up in about 45 minutes away from the new office. It was a tough decision to move so far away. I had become accustomed to living a mere 5 minutes away from the office in our small apartment. Eventually, we decided it would be best for our family as we were planning on having kids and wanted family support nearby. So I accepted my fate of becoming a commuter with a minimum 45 minute drive one way. That quickly added up to a lot of driving time.
Later into the year, a project was put on a tight deadline so we started giving the flexibility to work from home to optimize additional time required for the project. While this helped cut down driving, it also inadvertently encouraged 10 hour plus workdays; something I quickly slipped into a bad habit of doing. I struggled to turn off "work mode" and switch over into "personal mode" when done with work.
This was the first time I saw one of the negative aspects of remote work. It wasn't that I was not working enough, but I worked way too much. It was so easy to check an email and quickly get sucked back into work for another hour or two. Not after too long the project shipped and things settled down for a while. I went back to my regular commute into the office. Then life happened.
My wife became pregnant with our first child and we were ecstatic. As I tried to read and study everything I could about becoming a father, I had this reoccurring thought in the back of my mind, "Driving is wasting so much time that I could use to get other things accomplished". I shook it off thinking everyone commutes and it's not that big of a deal.
The thought kept coming back. I remembered back to a Pluralsight course called the "Becoming an Outlier: Reprogramming the Developer Mind" by Cory House. Its a great course about how to kickstart your programming career and in it he talks about remote work vs. commuting. It was one of the first times I had heard about remote work in a practical, pragmatic way. I decided to start researching. That's when I came across Remote: Office Not Required. This is such a fantastic book about how to make remote work. I found many other resources on both sides of remote work, but this book convinced me that not only is remote work an option but a very practical one.
After my research, I realized I was already remote in a way. We had offices in two different cities. I was on a small team, so the single dev team was split between the two offices. We used video conferencing software like appear.in and Google Hangouts. I helped other programmers daily using screen sharing software and collaborative tools that we all had become proficient with. We leveraged slack to send gifs and jokes to everyone. Our infrastructure team had already solved the majority of challenging technical problems with creating a secure network/VPN for multiple offices/machines to communicate safely.
We were already remote. We just hadn't realized it.
With this realization, I proposed a first draft policy for developers to have the option to remote work. I took ideas I learned from Remote: Office Not Required. Some of the important points included in my proposal:
- Time overlap- making sure everyone on the team works within a certain
number of overlapping hours so everyone can be reached at some point during each workday
- Rules about equipment- making sure you have adequate equipment for your remote setup
- Ensuring an appropriate workspace/office
The proposal was accepted, and the first
few senior devs started remote working a couple of days a week.
Soon after we implemented the first remote work policy, my wife and I had our first child. My life changed for the better in an instant. What an amazing experience it has been. Quickly though that 45-minute commute became a lot more painful to make every day. While I lost the convenience of my 5 minute drive to work when we moved from the city, we gained the help of our nearby family with the baby. I think that was likely one the best decisions we have made.
I realized the remote work policy became much more valuable as a parent. My priorities changed. It wasn't about working long hours and spending as much time as I could to advance my career. It was now about my family. It was a massive change for me. I became ever so grateful to have the remote work policy. That flexibility gave me back two hours every day, almost 10 hours every week! That's 10 hours more I could spend with our newborn.
Remote work has allowed me to attend all of my daughter's doctor appointments where traditionally that would not have been possible or practical.
Soon after becoming a parent I was also accepted into the Google Developer Expert (GDE) program. Being in the GDE program I try my best to help the Web and Angular communities by teaching workshops, speaking, and writing. None of this would be possible without the flexibility remote work has given me. I have learned so much in the past year and hope to pass that knowledge along to my teammates and others throughout the web community.
Our baby is now eight months old at the time of this writing, and remote work has been invaluable. Remote work is a benefit many other industries can't or won't provide. I am so very grateful to be in an industry and company (Vintage Software) where this is possible. Now with my personal experience covered I want to go over a few points or opinions I have about the pros and cons of remote work.
I will be the first to admit remote work is not for everyone as being remote has its own set of challenges. Some people enjoy being in the office setting and find remote work to be isolating or lonely. I have been there. Even living close enough to drive to an office having the remote options is excellent. I can get the best of both worlds. When I need to work alone and focused, I can work from home. When I need to collaborate with my team, I can drive into the office. Allowing remote work is giving flexibility to your employee. It's also a strong statement of trust.
The argument, "I can't trust my programmers to do their job remotely", is very troubling to me. Consider this, do you manage your hosting servers on site, physically where you work? No, not likely at all. You rely on those servers for your company to function. You expect professionals outside of your company that you have likely never met to do their job maintaining those servers. Why not have the same level of trust with your own employees the same way you are trusting a complete stranger?
Many programmers are working on software that businesses depend on to make money, function properly, and directly effect the company's success. If you can't trust your programmer's work ethic when working remote, then it's illogical to trust them with something so critical to your business. Software developers are and should act as professionals. If you don't trust that person outside the office, then you should not hire that individual. There are always exceptions when it comes to trust and remote work, for example, classified government or military work.
There are other arguments against remote work that I can get behind. When hiring new junior developers, I think one on one mentoring is ideal.
If you run internships with multiple developers, on site is likely best. I don't think it's unreasonable to have a trial policy of some kind; for example, programmers can remotely work after one year with the company. Depending on your company, location, and hiring resources this may or may not be possible.
I often travel to help teach and consult developer teams, and many are in expensive cities like San Francisco. There are many economic issues directly impacted by tech companies from recruiting in so many developers to the same city. Many of these companies have no remote policy and require on-site work with open floor offices. There are many issues I take with work policies like this.
First, this encourages long commutes into the city that may take well over an hour. In some cities, this is driving costs of living making it almost impossible to live in with a family. Remote opens up many opportunities to hire from anywhere in the world! Why limit your company to only hiring what is available in just your city? If you had the option to hire the best from anywhere in the world wouldn't you do it?
Remote is also a great option if you can't afford private offices. Private offices provide a quiet and focused place for developers to work. Its significantly more money to give each programmer their own office but quiet focus is essential for programming. If you can't afford private offices and have to do open office layouts, then provide a remote policy so people can escape to a quiet place to focus. You can read more about Stack Overflow's experiences here:
As an industry, we create all the great tools that make remote work possible. From consulting I have seen industries like Banking or Mortgage Companies that traditionally are slow to change, adopt remote work and provide remote policies. These policies are for not just their programmers but for many of their other employees. Remote work can give your company an advantage in many ways but also give your employees flexibility and choice in their life.