I've been remote working as a software developer for more than 12 years. That's full time remote, with occasional trips to "the office". Here's a few of the things I've learnt and passed on to other remoties as we've built a remote working team.
This isn't an article to persuade anyone remote working is great, or help make a business case with pros and cons. Here I'm just talking about what I've found works and what I feel is important for a permanent remote worker.
A lot of this will probably apply if you're only working remotely part time, but maybe you won't find it as important, since you will still have regular/frequent office access.
Nearly ten of my remotie years have been with the same company, in the same software team. In my case, "the office" is a train, plane and taxi trip away (about 5 hours door-to-door). There are about ten of us, split roughly half remote and half in the office, with the remote half travelling to the office for a week every 3 or 4 months.
So we are properly remote (no popping into the office for an emergency meeting on short notice) but we do regularly meet each other and the rest of the business. They get reminders that we physically exist beyond the world of networks :-)
As far as cultural remoteness goes, we are all in the same timezone, speak the same language and have roughly the same kinds of backgrounds. Also we're all fairly senior, both in actual age (mostly over 40 years old) and software experience (probably all of us have over 20 years programming). So we're not very "remote" from each other in terms of life.
On the equipment side, we use VDI boxes over VPN, connecting us to (virtualised) PCs sat in server rooms at the office. We have VOIP phones running over the same VPN, connected into the same VOIP network that the rest of the office uses. There may be a separate post about that, if our IT guys are ok with me sharing some of the details about all the work they've done.
For our daily comms, IM, email and phones cover the majority of talking to both our team and the wider business. Within the team we also use the Atlassian suite; mainly Jira (bug tracker), Confluence (wiki), Crucible (code review). We also use VNC, shared directories and (occasionally heated) SVN commit messages as additional comms channels. Again I'll hopefully write a separate blog post about those tools and how we've developed their usage.
There is a fairly small list of things which I'd say are key to making full time remote working a realistic and enjoyable option. This is the list I've shared with new remoties and interviewees and with anyone else who asks about starting full time remote working. These aren't in any priority order, because my opinion is that all of them are necessary.
You're going to be spending a pretty large chunk of your life at a desk, in front of screens and a keyboard. So treat it as a permanent part of your working life. Make it work for you, make it comfortable, and make it a pleasant place to spend time.
For me, "the office" is a desk I've made in a spare bedroom, Other remoties use their attic, a store room, or a partitioned area of a family room. This has to be somewhere you can point to and call it "the office". You (and anyone else in the house) know that during office hours, while you're in "the office", you are not really at home. It doesn't necessarily need to be totally blocked off or reserved for work, but make it a clearly defined area where you will be at work.
Personally I like the fact that I have an office with a door. If I need to concentrate, the door can be shut allowing me to ignore anything except a fire alarm or screams from outside it. It also means that on a phone call no one else can hear anything outside the office.
You'll be here every day - make it a place you're happy to be (or at least that won't make you miserable or less capable).
This will depend on the type of work you're doing, the company rules and how your office is set up. We deal with financial information so spend a lot of time on data security. Our IT team sorted out all the relevant VPN router hardware, VDI/thin client boxes, VOIP phones connected over the VPN, etc.
We also don't have local printers and the unused ports on our kit are disabled. The only paperwork we have on remotie desks is reference docs/books and notepads. Any potentially sensitive stuff that we write down we shred when it's no longer needed.
Occasionally our security environment causes minor problems. For example we couldn't print out and sign some forms from HR. We suggest alternatives in these cases - either saving the paperwork until the next team visit, signing the PDF electronically, or sending a confirmation email for HR to store.
The key to an easy life is to work with whoever is responsible for the security rules. This may include persuading the people responsible that you follow the rules when they can't see you. So be professional, be reasonable, and integrate good habits into your daily processes so security doesn't become more of a burden than it would be in a main office.
Ensure the remote working security arrangements are no weaker than in a main office and that you follow the agreed rules.
This is something I emphasize with anyone who asks about remote working. It's become part of our remotie talk for potential hires and it is something we've all found helps.
The idea is to make a mental journey to work each morning and a second mental journey home at the end of the day. This gives you a clear start point for the work day and, more importantly, a defined end to the work day, after which work waits until the next day.
For me, the morning commute is a set routine: get up, turn on the work kit, wash and dress, get a mug of tea, sit down. From that point, I'm at work. Then I log in, and start the morning as if I was at a desk in a main office.
My evening commute is a simpler routine: Save/close whatever I'm working on, say "bye" in IM (or a phone call to whoever I've been working with), log out of any dev boxes, turn off the work kit, check the desk is clear, stand up and leave the room. From that point I'm at home - even if I go back to the same desk later on for home stuff.
Between the two commutes, try to stay mentally "at work". don't feel guilty about ignoring the doorbell and home phone if necessary, you're not really at home. Conversely, outside the two commutes you're "at home" so don't worry about any work related stuff.
That doesn't mean never leaving the desk. Get up and walk around, make tea, lunch, etc. You'd be doing that if you were at a desk in a main office. If there's an interruption and you're not engrossed in something or in a call, it's easy to deal with. That's one of the main reasons remote working is so good.
Make a habit of constructing two separate mental states for "at work" and "at home" and have a routine for switching between them.
This could be a general rule for all developers - don't let yourself get stuck in your own little hole focused on the machine world for the whole day. Every day make sure that you have at least some contact with your colleagues. For remoties, this is even more important because if you don't talk to people, they literally have no physical clue that you exist and similarly you don't register their existence as much either.
For our team, this meant talking to at least one member of the team every day. If you get to the last part of the day and realise you haven't talked to anyone, pick someone and give them a call (be polite, IM them first). Conversely, if you get a call from a remotie that doesn't seem to have a specific reason, you may be their chosen human contact for the day, try to appreciate it.
For our team we also set up two IM chatrooms: formal and informal. The formal one focused on work related conversations and announcements and the other had the more informal chatter. We all logged into both rooms as part of our morning "commute" and usually said hello in some form in at least one of the rooms.
By the way, ff you don't live with anyone, this rule becomes even more important - make sure you speak to someone real each day, at work or not! If you do live with someone, speak to them about something other than work.
Talk to someone at work every day. Talk to someone not related to work every day.
Carrying on the theme of stuff which isn't to do with work - make sure you have stuff to do which has nothing in common with work and do it regularly. Preferrably something that gets you out of the house and meeting actual, physical people.
If you're a permanent remotie, the rest of life can slowly creep away if you're not watching carefully. Be on guard for that. In our team we've seen this happen to a few members and it can cause real problems. You can easily chat to mates online, order supermarket deliveries, play games, watch films and TV. If your work is also in the same house you can go for months without having to leave it. And that is not healthy. For those as old as me, remember the old kids TV catch phrase from Why Don't You: "turn off the TV set, go out and do something less boring instead!"
Even though I said at the beginning that these weren't in priority order, this one is the most important of these unprioritised items. Otherwise you won't be a happy remotie for very long.
When work stops, you need something else to do that gets you out of the house, frequently and enjoyably.
Related to the main points above, here's a few more minor things that help with making remote working more enjoyable if you're in it for the long haul.
Actually I'd strongly advise this for anyone who uses a phone and a keyboard at the same time.
Get a comfortable hands free kit and a phone with speed dial so you can set up your team to be easily contactable. Unplug the handset so you don't get tempted to use it. Either leave the kit on (if it's wireless, or really comfortable) or make it quick to put on.
This is a life saver on long phone calls, especially con-calls and calls that need you searching for stuff or IMing others at the same time.
The point here is to
listen to more reggae not stay sat at that desk all day. This is the same advice the ergonomics and workstation assessment bods would have given you if you were in a big office. It's the same advice given by medical experts to anyone who has a desk job. It applies to you too.
If you've got a hands free kit for the phone (see above) you can stand and wander a bit on calls. If you're stuck on a knotty design or debug issue, stand up and look out of a window for a while. I'm lucky on this, the window nearest my desk looks out towards the Peak District - but any window will do.
Go to the kitchen and make tea/coffee, anything to get your legs moving around and remind your body how to stand up properly.
You're going to be sat at a desk, on a chair, in front of a keyboard, mouse and screen(s), using a phone and notepads, ALL DAY (unless you read the previous note). Make sure all of those things are decent enough that they work well, are reliable, don't cause you problems, and that you like using them.
I've written a separate blog post specifically about [my dev kit](), but that's just what I've decided I like using - your personal preferences will differ. These are the tools of your trade - a joiner has a set of decent set of saws, a brickie has their favorite trowels, a park ranger has decent waterproofs. I'm sure you can think of better examples, but you get the idea. Even if your work won't pay for them, get decent tools, they're what you use every day.
Finally, there are a few things that we've tried over the years because they sound useful, but we haven't found very helpful. Or in some cases, not helpful enough to be worth the hassle.
None of us are that pretty and we have mugshots on the wiki if we really feel like looking at each other.
Also most of the stuff we're talking about is code or documentation - that's text - so having all our screens showing the same text while we talk on the phones turns out to be far more use than having our faces taking up screen space.
Plus it's a faff to set up, everyone gets distracted by moving pictures, and the bandwidth requirements meant it could get a bit choppy for some of us.
This was something we all thought was worth trying, but after a bit of trialing we ended up with an agreement that it was a handy tool to keep around for specific tasks, but not something to stick to rigidly for every development task.
So we do some pair programming on occasions, for a few hours or maybe a whole day, when two devs agree it'll be helpful, but not as a standard practice.
If you're wondering how pair programming works for remoties, the summary is:
- hands-free kit for the VOIP phones
- VNC or RDP to share a single machine
- close chatrooms and email on that machine (there's always a joker)
- work around whoever has the smallest screen real-estate
- agree switching control of machine ("can I have control", "yup, I'm off the mouse now", etc)
This isn't specific to remoties, but yeah - don't do that.
There were various attempts to set up complex mailing groups that did or didn't include remoties, or added people to mailing groups based on what they were doing or where they were at the time. But they almost always either missed people off, included people who didn't care, or ended up derailing any group mail with natter about who should/shouldn't get them.
By all means set up a small number of mail groups within the team, but don't go crazy and don't use them for every tiny announcement.
We found that "office team" and "whole team" groups were the main ones used. That way "Cake in the kitchen" emails don't make the remoties envious, but "management just gave everyone the afternoon off" emails can make everyone happy.