Programming is typically considered one of the rare dream jobs that can be done from anywhere in the world that has a decent internet connection and access to coffee. And that's pretty much true for the most part. But it doesn't make the job any easier by any means.
I've been programming remotely for over 6 years now and I can safely say now that "dream" wouldn't be the exact word to use in this situation. Because while it does help to save time and money, in terms of not having to drive anywhere, it also comes with a fair number of challenges as well.
I still prefer to work remotely, even after all this time, but there are certain aspects to the office life that I do miss on occasion. Such as.
7. Lack of Collaboration
While there are plenty of communication tools at our disposal these days, nothing quite matches up with being able to walk over to a teammate's cubicle to have a quit chat and get something resolved.
The main issue here is mainly dealing with speed. Because you will undoubtedly have plenty of remote meetings within your remote workplace, but they are typically scheduled ahead of time and getting someone to hop on a zoom call on short notice doesn't always work out.
When I worked in a corporate office, I often times had questions on implementation or design from other people on my team, and a quick 5-minute chat on the subject was usually enough to get things moving. And that's mainly because everyone on my team was essentially a few feet away. I don't quite have that guarantee when it comes to a remote team.
Often times I will send a message with a question, only to hear back about it hours later. It's the nature of things. Sometimes people are distracted with life and other times, the notification icon doesn't go off. And sometimes, your fellow employees are halfway across the world. It happens and there really isn't any kind of long term fix for this.
There's a few benefits to working in a physical office, such as free coffee, snacks and sometimes lunch and dinner. And having worked over a decade for large companies with fully stocked kitchens, I can say that this is indeed a big part of the corporate coding experience.
When you are using your brain to problem solve for hours on end, you get hungry and usually some form of light snacking is in order.
Well, as a remote worker, I'm pretty much paying for any and all snacking that goes on. And for me personally, this isn't cheap. I keep my cabinets stocked with protein bars, instant coffees and (sugar free) energy drinks.
But outside of snacks, there are various other costs that are associated with remote work, such as office supplies, electricity and really the cost of you being at home for more hours in the day.
Large companies can save a fortune by opting to go remote-only and thus not having to lease office space for thousands of employees. But that cost often times doesn't just vanish. It needs to go somewhere. And it goes directly into your account.
This mainly applies when working with large remote teams where there are many moving parts that need to work together. Mostly where you see multiple departments that must collaborate, such as sales, marketing and development.
In an office setting, I would often read an email or a Slack message that didn't quite make sense in the moment, and I would simply walk over to the person that sent it to clarify. Often times, that clarification took a while to get because the system was either too complex or because there was some misunderstanding somewhere.
It's hard to get that kind of communication in a virtual setting. For one, people aren't always at their desk and you have no idea when they will be there or if they are busy working with someone else. In real life, you would simply poke your head out over your cubicle to take a look. You can't do that remotely.
So things will inevitably get lost in translation and you will probably end up developing something that doesn't quite match the spec that someone else had in mind. This happens all the time, even in a non-remote setting so you can imagine the potential headaches that are possible remotely.
In order to combat this as much as possible, you definitely need strong project management within your company. Having a dedicated person, who's main job is to ensure proper spec-sheet hand off and understanding is an often ignored critical part of a tech team.
Working remotely can be incredibly fun. At least, for a little while, and typically during the first few years of doing so. But eventually, that makeshift desk that you set up on the dinner room table gets old, and so does everything else around you.
A big part of having a fun and enjoyable job/career is getting to spend time with like-minded people who are into the exact same things that you are. You get to build strong relationships, meet families, celebrate wins and work through loses with a community.
You might have that kind of environment working remotely, but it isn't guaranteed by any means. I've personally spent years working remotely for certain companies where I rarely got the opportunity to really get to know someone. Aside from the Slack message reply, or the random comment on Asana, there was little to no real communication between departments.
And sure, at the end of the day, the job is the actual priority and we all need to be closing. But it is definitely hard to execute at your peak when your head is bobbing from boredom and all of your Slack messages are going unread.
3. Unstable work hours
Working in an office typically comes with a built-in clocking mechanism, as most people will walk through the doors at around 9am and walk back out the same doors around 5pm.
You have no such clock when working from home. You very well could maintain a strict 9 to 5 schedule, but often times, you will get an email, Slack message or server notification anywhere from 5am all the way to midnight.
And since you technically have your workstation with you at all times, the excuse of putting things off until you get to the office the next day is pretty much non-existent.
I personally don't mind the random hours, as it's how I've pretty much worked my entire career. But if you aren't used to it and are looking for more stability, you might encounter some issues.
Because this does interfere with your personal life to some extent. It becomes more difficult to make "non-work" plans, when you aren't quite sure if work has ended or not. And having to cancel plans over and over again will definitely reduce your overall quality of life.
Home is where the heart is. As well as where family, roommates, dogs, cats and everything else that makes up a home also live. To say the least, it's distracting sometimes.
You can be in an important meeting that's long past its end-time, and the dog needs to go for its walk.
You might be knee deep in focus, only for the UPS driver to knock on your door and have your dog lose its mind. It happens all the time, and it is technically expected at this point.
And that's the other side of this issue as well. You might be having an important conversion, only to have the other person pause for a minute, that later turns into 10, because they are putting out fires at home.
While it is expected at this point in time, it definitely doesn't help you in terms of finishing your work.
1. Hard to stand out
Coming from a corporate environment, I can say that a big part of standing out in terms of getting promotions and raises comes down to who knows you and how often your name comes up. And this typically happens during corporate meetings. If you're the developer that keeps getting invited to daily meetings, being seen by all the higher ups, then there's a good chance that you are making a name for yourself.
On the other end of that, I've been in Zoom meetings with 200 people on the other end. And roughly only 3 people out of those 200 actually got an opportunity to speak on something. But most people remained muted, with a default profile picture and without too much context to their name.
Unless the company has some way to track remote employee performance, and do so accurately, then many employees will probably fall through the cracks and find themselves in unfulfilling positions similar to the coding windowless basements of the 80's.
Aside from everything on this list though, remote work is still the way to go. It's better for everyone's wallet and you get more time to yourself every single day, in terms of not having to drive anywhere.
But in order to maximize it's effectiveness, companies need to ensure that the proper remote workflows are in place and working company wide.
Walter Guevara is a software engineer, startup founder and currently teaches programming for a coding bootcamp. He is currently building things that don't yet exist.