I was 19 and working for a very small website development shop out of the owner's in-law suite in their house. It was my first real job as a software developer, and I came into the "office" most days.
But everything was done from my laptop, so whenever the owner needed the space, I would work from home. And slowly I began working from home even when it wasn't strictly necessary.
When I left that job, I joined a company that was semi-remote (they went into the office once a week), and I was the youngest by about 20 years. The devs there taught me how to manage remote work well, and a lot of the habits and skills related to working from home that I formed at that time are still going strong.
I was able to skip a lot of the biggest "pain points" of remote work - and to avoid a lot of the mistakes - simply because that company was already well versed in working remotely.
They were able to give me the tools to succeed, and they already had the communication system down very well, which helped a ton.
Currently, I'm a senior software developer at a startup called Next Trucking, working on mostly React-based web applications.
I'm part of a small team of 3 or so. Right now, we're working on a new React Native mobile application.
I mostly deal with the "non-UI" aspects - tooling, build systems, testing, client-side data storage. I'm also the one that interfaces with the APIs for the most part.
My current company is based on the West Coast, but I live on the East Coast. There is a 3-hour time difference between us, so I generally have about 3-4 hours of uninterrupted time before the rest of the company really comes online every morning.
So, my days tend to get split up into a few different parts.
First, I start by reviewing PRs or code checked in from the day before. This helps me get up to speed with what is different or what is being worked on, and lets me kind of get back in the programming mindset.
Pretty soon after that, I start the main "programming" part of the day, where I generally have a single focus, one problem, or one part of the code that I need to work on.
Because of the time difference, both of these parts almost always fall during the time when I don't need to worry about interruptions from the rest of my team.
I'm free to really focus on the problem in front of me. Sometimes I'll purposely take myself offline, if I really need to avoid distractions.
The next chunk is normally the "meetings" part of my day, where I spend time talking with coworkers, having meetings, discussing problems and solutions, talking about timelines, and overall just communicating with others at the company.
The last part of my day is normally spent finishing up work from the morning and writing documentation, tests, small scripts, or fixing more trivial bugs.
This also doubles as my "wind down" from the day, so I pick easier or less "intense" things to work on, and try to pick things that can be easily interrupted and restarted.
I will also often set up the problem or task I'll be working on the next day, so that after I'm done doing PR review, I can jump right into it.
Yes, I have a dedicated office. In my opinion, it is extremely important to have one (at least for me it is).
My office is where I go to work, it's my "commute" - and since I own it, I'm able to set it up exactly as I want.
A large comfortable chair, a very large corner desk, 3 monitors and a desktop computer, the temperature set to what I want, a nice mechanical keyboard, and the ability to shut the doors to keep others at my house from interrupting me.
My family knows that when I'm in there and the door is shut, I'm working. I don't need to worry about pets or other people interrupting, and the fact that it's a dedicated workspace means the "call" of distractions is out of sight and out of mind.
I've tried working on the couch, or in the kitchen or on the back porch, but I've found I just can't focus unless I'm in my element with everything I need to work within arms' reach.
Another big benefit of having a dedicated workspace is that there is a clear line between "working" and "not working".
When I first started working remotely, I fell into the trap of starting early because I was up, and working until like 7 or 8PM because "why not - I'm here and I'm not doing anything else."
I wouldn't be able to stop thinking about a problem even after I was "done" and sitting at the kitchen table eating dinner. I would let frustrations with work bleed over into my personal life. Having a specific physical area that I work in helps stop that.
Even the few seconds that it takes me to walk out of the office is enough to help my brain switch into a "home" context. Now work problems stay in the office, home problems stay at home, and I'm able to walk away from them (both physically and mentally) when needed.
Having that dedicated space also puts some more barriers up and makes it a little harder to switch between "working" and "at home", which means you are much less tempted to "just finish this one thing after dinner" because it would take me 5 minutes to turn everything back on, launch my editor, etc.
While that may make it sound like I'm trying to "slack off" or that I'm stopping myself from working hard, the opposite is true. We need breaks to focus, we need times when we aren't working in order to work effectively.
The days after I put down the headset and stop working at 5PM are always much more productive than the ones where I let myself continue working until I go to bed only to start again the next morning.
Getting away from problems of work helps you come back with a new perspective or start thinking about it from the ground up again. And you can't do that if part of your brain is always in "work mode".
A comfortable and ergonomic desk and chair setup is key. I have a stand for 3 monitors that keeps them at a good height, and a good comfortable chair that fits me well.
A good headset and camera are always a huge plus as well.
Communication is extremely important when working remotely, so having a good quality microphone - so you can be heard - and speakers or headphones - so you can hear well - is very helpful.
I use a "gaming" headset, because I like it to be wireless (and I can't find any half decent "business" wireless headsets with a boom mic for under $700), but I'm able to turn off all the flashing colors in it with a companion app on the computer, so I'm pretty happy with it.
A whiteboard is a huge help for me when I'm brainstorming or designing a new system, and getting up to walk over to it is always a good idea to stop from sitting in your chair for several hours straight.
I actually have a smaller whiteboard that I replaced a while ago that sits under my desk, and sometimes I'll pull it out to draw or sketch something up while sitting at the PC.
I also use site blocker extensions for my browser to limit my time on sites like Twitter, Hacker News, or other timewasters. Even if it's super easy for me to turn off, the big red warning screen it shows when I go to one of those sites is normally enough for me to realize that it's probably not a good idea.
Finally, a good timer/alarm/calendar system. I live and die by my calendar, so I've set up an old tablet in a stand under my right monitor, and have it displaying my calendar so I always know what is coming up.
I also use a Google Home to set reminders and alarms for different times as I need to. Being able to just tell the oval on my desk to remind me to take out the trash at like 6pm tonight is really nice, and keeps me focused without just ignoring things that I might need to do or remember.
Strict scheduling, being ready to work the moment I sit down, and having a dedicated workspace are key.
I have ADD, so I've learned over the years how important a strict schedule is to me. I need to schedule chunks of time dedicated to a specific task, and I need to stick to it.
Interestingly enough to those who don't know, ADD can have an aspect called "hyperfocus" where you generally become so engrossed in a specific task that literally hours can go by without you even realizing.
Hyperfocus might sound like a blessing, but very rarely is it a good thing for me. Most of the time if I get hyperfocused on something, the result is not ideal.
It's often missing big parts (like documentation or testing), it's sometimes deviated from solving the actual problem (instead I almost create my own problem to solve and then solve it), and the code is often more complicated than it should be.
Making sure I follow my schedule on both when to start and when to stop a task are very important in avoiding both the lack of focus and the hyperfocus caused by my ADD.
Being ready to work when I sit down is another. Before I start working in the mornings, I'm fully dressed, done eating, well rested, and overall just ready to work. Distractions are a lot easier to indulge when you have to get up anyway to go get breakfast, or you have to go get dressed before that video call at noon so you can just slack off for the next 15 minutes since you won't get anything done in that time anyway.
I treat walking into my office like a commute: I shouldn't have any other obligations that have to be done for a while before I sit down to work.
And finally, that dedicated workspace is very important. My family is home during the day, so to be able to close the door and not get distracted by others, or to be able to keep the rest of the house out of sight and out of mind means, there is less to be tempted by in the first place.
Read 36 answers from other remote workers
The freedom, the ability to focus, and strangely enough, the isolation.
The freedom that remote work gives me is huge. I've been able to travel while still working. My wife (who also works from home) and I can fly up to the East Coast where both of our families are from and stay there for a week or two without having to worry about taking time off.
We even were able to pick where we wanted to live in the US (we chose northern Florida!) as we weren't tied to any specific area because of a job.
That kind of freedom is huge, and the ability to choose where I live is a perk that I can't even describe to most people because it's not something that they have thought about.
It's such an amazing bonus - the freedom to just look at a map and pick anywhere you would like to live. We are even planning to take a month-long trip across Europe one day, and we can still work for the majority of it.
The ability to focus and change your environment to something that suits you best is also very powerful.
It's made me a better developer, and I feel like I have a leg up over some of my colleagues that go into the office every day, because I don't need to worry about noisy coworkers, uncomfortable desks or chairs, or traffic!
And the last one might be a bit strange to many, but I genuinely enjoy the isolation.
I have the tendency to be an introverted person, and after being out with people (friends or coworkers), I feel mentally drained. Being able to shut myself into a room and just work on a task for a few hours provides a way to recharge myself.
It sounds crazy to some, but if I had a busy weekend, Monday mornings are my relaxation time in many aspects, because the isolation and ability to withdraw myself for chunks of time helps me relax and recharge.
If the company really values remote work, there isn't a ton I don't like.
It makes communication harder. This is something that every remote worker I know needs to continuously put in effort for.
The biggest thing missing is the ability to "overhear" things. If you are in an office with others, you might overhear that Bob is having trouble with that same component that you had trouble with last week, you might be able to offer him some pointers, or that Sarah is brainstorming a bit with Michael on ways to design this element, and you would like to be a part of that conversation so you can go over and ask. But when working remotely, you don't get that.
Conversations naturally tend to happen only with the people that they were meant to: Bob asked his boss about that issue, Sara and Michael had a call to discuss the design, and you never heard anything about any of it.
A policy of having conversations in a "public" space (like a Slack channel, GitHub issues, or some other kind of company "forum") can go a very long way toward solving a lot of this trouble, in my opinion.
Companies that don't understand the amount of work, and how much they need to really try to create a good remote work environment, are a really big downside. I don't really believe that it can work well unless a significant portion of the company works remote, or unless there are some very core very early employees that work remote.
Also, getting the job in the first place can be very difficult. You aren't competing against those in your area, you aren't even competing against those who are willing to relocate to that area, you are competing against the entire country, and in some cases the whole world.
Getting a job is a lot harder when statistically there is probably someone else out there looking for a job that will do it for less than you, and might even do a better job than you.
Add to that the fact that remote-work is still uncommon, and you now have a much larger pool of talented developers competing for a much smaller group of potential companies.
I don't really have any advice here, but it is a problem that I have encountered in the past, and it is a big downside to trying to work remotely.
At RemoteHabits we're always trying to improve our interviews, what question should we have asked Gregory Benner?
Greg is a software developer who loves creating solid, well working software. Currently working at an LA based startup called Next Trucking from his home in northern Florida. (By the way, Next Trucking is currently hiring!
Keep your remote working skills sharp—get notified when the next interview goes live!