Hacker News new | past | comments | ask | show | jobs | submit login
Making Remote Work Work (opennews.org)
186 points by staringmonkey on Feb 13, 2014 | hide | past | favorite | 90 comments

Create another local user account on your computer for being at work. Change the desktop background to big work logos. Don't configure your personal instant messenger accounts and whatnot. Set up the email client to only check the "work" account so you don't fall down personal email item rabbit holes. Configure the WasteNoTime Safari extension appropriately (more strictly than your personal account's config, with sites like reddit, facebook, HN, etc on unconditional block).

Added benefits:

* easy default correct ssh key use (~/.ssh/id_rsa in work account is not my personal key)

* different browser cookie jar

* different dropbox/gdrive login

* different bookmarks

* different shell history

* faster homedir backups (my personal account has ~300GB of aperture in its homedir, my work account is <10GB)

* privilege separation (both my personal and work accounts are unprivileged, so unless there's local priv escalation being used, rogue user-priv software in one can't steal keys/data from the other)

Then, finally, disable fast user switching. (You should do this anyway, as having it turned on enables a Firewire/Thunderbolt DMA memory-dumping attack that can steal your FileVault2 keys while your screen is locked.) This means that you have to consciously choose to "leave work" by logging out and then logging in to your personal account you use to browse reddit/HN/etc.

This is the single biggest productivity gain I found for enforcing the "I am at work now" discipline. (Being able to use a non-personal dropbox account for work stuff is almost worth the price of admission itself.)

You dont need to do any of this. Walking away from a problem and doing something else ends up in faster more elegant solutions every time than avoiding distractions on the machine. I'll tap out a tune on my piano, play with the kids or sit in the garden for a bit whilst working from home. Then I'll do an hour or two of work and repeat.

I deliver more finished higher quality code and solutions than anyone else chained to the keyboard all day.

I'm glad you found a routine that works for you. If doing particularly grueling work (hey, who doesn't here and there?) or I'm in a mental slump, your methods don't work for me. I don't think productivity has a turn-key solution

Holidays are a turn key solution from experience. Even if its a weekend sleeping in a tent somewhere. I go like a machine after them for days.

Productivity isn't something that can be forced; there's some good books out there on the subject. The 'grueling work' you described (and likewise) remind me of Stephen Covey's quadrants [1] (and similar); being in one quadrant (grueling work being 'urgent but not important') too much will cause someone to go to another for escape (not important, non-urgent tasks; distractions). It's important to find a balance there, for both personal planning and if you're a resource planner / project manager / scrum master / whatever


> You dont need to do any of this. Walking away from a problem and doing something else ends up in faster more elegant solutions every time than avoiding distractions on the machine.

I am not talking about what I do when I take breaks, I'm talking about keeping those breaks from turning from "a short 5 minute break" to "oh shit I just spent four hours in a wikipedia rabbit hole about nuclear energy and now the day is over and I'm tired and my work isn't done".

<snark mode on> You mean taking breaks from work like every profession ever does / requires of its employees? </snark>

I don't know where this 'being chained to the keyboard all day' mentality came from, even if I experience and have seen it a lot in the industry. Take breaks; in a lot of countries, the law or health & safety regulations even make it obligatory. And don't feel guilty over it.

I feel some of this is based on personality. It's great that you're able to step away from work periodically and then focus again (I do the same thing working from home). A lot of people have trouble getting back into the work mode again after taking that break. That's what the "work account" idea is designed to help.

To be fair, I've had that trouble but I found out that I just wasn't happy doing what I was doing so changed it. You have to want to do it before focus comes naturally.

Telling someone with attention/focus issues "you just have to WANT IT" is like telling someone with depression "first you have to WANT to be not depressed!"

It doesn't work that way.

It's funny, I've been a full-time remote worker for over a year, and it never dawned on me until last week to do exactly what you described. I'm on week two of having separate user accounts, and it really does make a huge difference in defining your current "role".

An associate of mine takes this to a different extreme; he creates a different virtual machine for each client, and works only in that.

I tend to keep completely separate physical machines. I have Thinkpad provided by work, and a personal Thinkpad. When the workday starts, the work machine goes in the dock, then at the end of the workday, I swap it out for the personal machine.

I'm a strong believer in using company hardware only for work, and never using personal hardware for work related tasks, if only because it makes things slightly less complicated with regard to who owns what IP.

EDIT: Correcting typos.

It doesn't need to be different physical machines, separate user accounts on the same machine (as long as both are unprivileged and can't access the other) are fine.

Wait till you go to a "Bring Your Own Device" employer.... ugh.

Use a virtual machine on Your Own Device as the Work Computer?

I just got an iPad. Now work-related computing happens on my laptop, at my desk. Leisure computing happens on my lap, on the couch. It makes it much easier to establish a clear divide between “working” and “not working”. Being able to disconnect properly is very important for quality of life and productivity.

I did this for compliance reasons (needed disk encryption and my CPU is too slow for full-disk), but it turned out to be really handy regardless. You can't turn off fast user switching using X on Linux systems, but it hasn't been a problem for me; I just close my personal mail client.


He touched on this, but I want to let you know, after 4 years working from home, how important this is.

The environment gives you unconscious cues on how to behave. If you goof off (surf the web, stream, eat, play, etc) where you work, you are "poisoning" that environment, & make it very hard to focus on work next time there.

After "poisoning" several places in my house, I've setup a workbench in the garage, & ONLY work there. Meaning, if I'm working there & need a break, I LEAVE that environment, so as to keep it clean. Then, when I return to the environment, it's easier to focus & get things done.

I do something similar, but with time. Some blocks of time/days are ALWAYS work. Others are ALWAYS goofing around.

It's often a simpler and more viable solution when you don't have a huge house.

I used to be on the other end of the remote working, meaning I was often the guy that had to go to make sure projector/phone was working etc. Since I was IT, it was part of my job. But it get pretty annoying. I can't imagine how annoying it would be for non-IT guy who keeps getting called in to do it.

So if you are a remote worker and you end up using someone else's body often for remote meeting set up, please don't forget to send a little thank you gift, like $10 amazon card every once in a while. Don't forget, everyone else is already jealous/upset that YOU get to work from home and enjoy all the benefits while someone else is stuck in office and on top of that has to act as your virtual hands/feet.

since i spend a lot of time in the console i have a few very simple aliases, for the following and some other time zones i use frequently.

    cst='TZ=CST6CDT date'
    est='TZ=EST date'
    berlin='TZ=''Europe/Berlin'' date'
then i can just convert times and needed.

    berlin -d '4:00pm EST'


(I'd been making the slight-environment-change aliases into bash functions as a workaround. You just helped me so much.)

This works in a normal bash/zsh prompt as well if you want to set a variable only for that single command. It's why a lot of times you'll see build instructions like:

# CC=gcc make

After the command runs, CC will go back to whatever it was set to before (or unset if it wasn't set). Very handy for some operations.

I think that you can also use env(1) for this.

    berlin='env TZ=Europe/Berlin date'

Excellent idea. This, and I wonder when will I finally see a simple, practical web site that does just that: helps to schedule inter-timezone conf calls with minimal clicks. One such web site was once posted here on HN but it was unfinished at the time (didn't allow to add custom locations) and probably doesn't exist anymore.

I've used http://www.worldtimebuddy.com/ for this in the past and it's worked really well.

Kind of like http://timesched.pocoo.org suggested in another comment here, but this one is more cluttered. Anyway, nice tool, thanks!

Thanks, but:

http://www.thetimezoneconverter.com/ - allows only two locations. What about scheduling a conf call across NY, Dublin, Berlin and Moscow? What is the best time for all 4 locations?

http://everytimezone.com/ - awesome interface, but doesn't allow any customizations, e.g. pick just the locations I need. This was on HN, I remember I made some suggestions which the guy never implemented.

http://time.is/ - shows only current time, or otherwise compares times only in two locations. Useless, just like thousands of other similar web sites.

Try this one by Armin Ronacher: http://timesched.pocoo.org/ - it's open source as well

Nice one, thanks!

I use http://everytimezone.com/ all the time.

Yes, nice, but incomplete (see my other reply in this thread)

I have my chat client set to timestamp in UTC; helps a lot.

Remote worker here, I agree with most things he said.

I work with an on-site team, and I'm the only remote worker in that group. We use a permanent Hangout that I can keep opened in the background, in order to hear what's going on at the office. With the press of a button I can 'upgrade' it to a full two way video chat. I'm using an old battered laptop sitting on a stand, along with a good quality microphone and a webcam I can pan remotely (pretty fun). Here's a picture: http://imgur.com/OD4V9Z4

When it's open it feels a lot like if I'm sitting there. I can take part of informal conversations, etc. It's pretty great... although it does sound creepy when I describe it.

Still my coworkers are totally OK with that, and honestly once you get used to it it's fine. I'd see and hear the same things if I was physically there. And since I'm in a different timezone, I still get to work all morning mostly uninterrupted.

Also, we have similar setups in a few conference rooms, so it's always extra easy go gather people for quick talks.

I'm curious to know if other people are using something similar.

I've tried a few things. I find Sqwiggle's (https://www.sqwiggle.com/) approach the best. You can see your team thanks to a-few-minute-apart snapshots and you're just a click away from talking to them.

I like Sqwiggle, in theory, but the CPU use and constant camera connection even while it's not in active-recording-mode was annoying... it murdered the battery life on my laptop. Some of my coworkers also found it a little privacy-invasioney.

Thanks for the feedback! We definitely hear these concerns and are working on a few things to improve in this area, particularly with privacy :)

We had something similar at my last job. A laptop setup in the team area with a wide-angle camera and Skype setup to auto-accept incoming calls. It meant I could pop in any time I wanted to for team meetings or just to get someone's attention for a quick chat.

Another team in the company had a laptop setup on a permanent google hangout that all the remote people could come and go to at will.

"If your office has a phone system that uses short extensions internally, have your IT department set one up to redirect to your cell phone. That way you can tell your coworkers to dial “5555”, instead of your whole number."

Fantastic tip! Super simple but I really think this idea will make you feel more available to your co-workers.

Protip: This can be done extremely cheaply with Asterisk and a SIP provider; it can be done faster at a slightly higher cost with Twilio.

EDIT: changed lower to higher @ "cost with Twilio". Need moar coffee.

We use Asterisk to do a multiple-simultaneous-ring service. Actually, a little more complex. The typical plan is:

ring a desk phone for 10 seconds then ring the desk phone and a cellphone for 55 seconds then drop to voicemail voicemail is transcoded to mp3 and emailed to your preferred address as an attachment, along with call ID info.

Exactly what I had in mind. I've done it with Asterisk and Twilio, and as I mentioned, Twilio is a little more expensive but its easier to wrap it together quickly, while Asterisk can be much more flexible but requires some admin.

The phone system where I work unfortunately doesn't support forwarding extensions like this. Instead I setup a Google Voice number that is a local call for everyone at the office.

My office also provides VPN phones for remote employees. Plug it into your network, login with your token and you have your full extension, vmail, etc. available anywhere.

A decade ago I was trained on pbx system in the office and one thing the trainer mentioned that I remember is that this extension forwarding should be avoided. Reason? A rogue employee can set it up to forward to a foreign country and make expensive calls on company dime. So we just turned it off.

Thank you for the kind comments about floobits, seeing comments like that really means a lot to us. All of us work remotely too, so your blog has some good tips. We use IRC for chat and Shush, a Mac OS X push to talk app has also been very good for communicating. Let me know if you do run into any trouble or have questions.

This is all super valuable advice. The biggest thing that I've learned from working 100% remote for the last six months (which is also in the article) is to have a space that is just for work.

Another thing that I've learned is to be crystal clear on when your normal working hours are, especially if the bulk of your team is in a different time zone. Don't be inflexible, of course, but establish normal working hours and stick to them.

I really like the article. Numerous tiny things I've never considered, like the switch between headphones and speakers.

The weird thing is I started working in my bedroom a while back. Not only have I had the most productive year in my life (and I never had a computer in my bedroom, even as a child) I also have managed to completely eliminate my sleep disorders.

The most important things I tell people, including my own remote developers:

-Exercise and be active -Eat healthy -Control your light: flu.x, lightbulbs, tape all blue electronics lights -Be social; working from home in a remote area is really bad, in a city its great

If your smart, you can figure out the rest of the stuff because you won't have to worry about your health. I jump out of bed in the morning happy and ready to work.

That runs counter to alot of advice I've seen. Working in the same room as your bed has helped you sleep better?

I've gotten the advice of using the bedroom only for sleep and (well other very specific things) but I personally have no problem to fall asleep after using my computer in bed. Programming or watching a movie or surfing the web. I honestly think it helps me (I've tried to leave my laptop on a single dedicated room before, never taking it from there as a personal experience and I did notice I got more antsy, and had difficulty falling asleep).

But my wife is the opposite, if she uses her iPad or laptop in bed, she will go to sleep a couple hours later than usual. Different strokes and all ;)

No, rather I think that the room had nothing to do with sleep -- light control had everything to do with it.

I tried just about all of the other tricks short of sleeping pills, none had any meaningful impact.

I had no choice but to set up my computer in my dorm room at college for 4 years. By the end of the third year, my ability to sleep in that room was gone. I also work remotely and I do so from a remote area. Cities are too noisy and the few years in which I lived in SF, it drove me crazy.

This is all my way of saying what works for one person may not work for another. Which is one of the points of remote work, isn't it? To create the perfect environment for you?

Excellent points. #2 is critical.

This is what I have to say about #1. It's important for your psyche. So you can feel like you are "leaving work" at the end of the day. But after a while it becomes less important. You get used to working from home and don't need the office as much. My routine is I get up ~7:30, make some coffee and work from the couch until 10, take a shower and then go back to work (could be any number of places around the house or outside) until lunch. Then I like to work in the office more during the afternoon.

For me the routine works because I am much more of a morning person. It's easy for me to have 2 pull requests ready in the first hour of working. The afternoon is tougher so I go to my office to concentrate. But absolutely, the first couple of months working from home there's a jarring sense of work/life imbalance and having an office is critical to bringing the balance. Eventually the need simply goes away.

These are points #1 and #2 for me as well.

I couldn't manage more than a day in a row at home, until I made my own space for it. It went from impossible to more productive. Having a space just for work also eliminates the "at home commute" of switching out personal and professional computers/books/papers/phone/etc...

I separate my computer as well. I have a personal and professional laptop. I know a lot of people live the lifestyle and mix the two, but the separation keeps things clear for me.

eh. ive worked from home for 6+ years and i don't have a "space" designated for work. i work from bed, the desk, my couch, kitchen table, etc. all i need is a laptop and i'm at work.

I completely disagree with blanket statements like "You should be pair programming". Ugh.

I prefer brainstorming. If you talk to workout the solution to the problem then surely afterwards you don't need to look over your colleague's shoulder while he's bashing out the syntax? I never understood the purpose of paired programming unless you're explaining somebody the syntax.

    The single best advice I got when I went remote 
    was from Matt Waite, >who said, “Put on pants,” 
    by which I’m pretty sure he meant, “Act like 
    you’re going to work.”
Remote worker here, for about 2 years running. Yes, this is great advice and probably the single biggest factor that will help you stick to work.

Some days I roll out of bed and work in my pajamas, and without a doubt those are the days I'm least productive in contrast with the days I go balls out with shower, shave, breakfast, fully clothed ZZ-Top-sharp-dressed-man style.

Instead of a headphone switch, you can enable and disable "Auto-mute" automatically, at least in linux:

    amixer sset 'Auto-Mute Mode' Disabled
This lets you switch between headphone and speaker mode with a keyboard shortcut or from the command-line. If even that is too much effort, I use my webcam to detect my headphone presence automatically: http://stevenjewel.com/2013/11/detecting-headphone-use/

For the ones who require some extra motivation to remain disciplined, you can use a tool like SelfControl (http://selfcontrolapp.com/) to keep you away from casual browsing.

Also, FWIW, I find Pomodoro's time slicing technique pretty productive (there are many apps that support it - I'm using PomodoroApp on Mac (https://itunes.apple.com/us/app/pomodoroapp/id705103149?mt=1...). I usually go with 25min + 5min cycles. (If only all meetings fit in that 25 mins I'd be the happiest man on Earth).

Thank you for the nice article. Especially for the documents camera tip. I use phone cam, but this one is better. For remote work timekeeping per project is indispensable. I recommend Freckle. But pen'n paper with timespending cards is also ok.

Does anyone know of one that works with Linux?

Any remote-working developer who's pair-programming? I'd love to hear about your experiences?

I know there's been a few attempts at creating remote pair-programming tools but I'm not familiar with any particularly successful one.

I did this exclusively for about two years at my last gig; we just used shared tmux sessions with everyone's pubkeys and ssh hostnames in a git repo.

These days I'm not consistently pairing with the same set of people, so I created http://syme.herokuapp.com to make it easy to spin up a throw-away EC2 node preconfigured for a pairing session.

I have not done much remote pairing, but there is a really good list of tools and resources here: http://www.pairprogramwith.me/

one that looks very interesting: https://www.nitrous.io/

Screen sharing in google hangouts work pretty well. Can't both type with that, but you both can see the editor with acceptable lag, IMO.

I've done it in Google hangouts but I only shared my IDE. And I reduced the size of the IDE window a bit so that it was large and clear on my co-worker's screen. The way we did it, I had the keyboard all the time, so when he wanted something to be typed, he told me. Or, we would work on two different files, i.e. the kind of change that cascades across several classes, and since we were working on an SVN branch, we frequently committed to share the work to date. It is a different kind of pairing than the single PC with two keyboards and two mice, but it worked well enough to get two pairs of eyes working on one set of code. With two PCs it was easier for one person to drop into a browser to do research while the other was still looking at the shared IDE and thinking about the next move. I have used a tablet to do research while doing single PC pairing but it was actually more awkward than the remote pairing.

And if there is enough timezone difference you can relay the work by doing handovers at the beginning of your colleague's workday.

One of those rare "making x work" articles that was actually filled with awesome, actionable tips. I really enjoyed this and will be passing it around at work, thanks.

I've been doing remote work for going on 8 years now. All solid advice, but I think the general theme I've gone by is to always be open to trying new ideas.

I've come full-circle on a number of things: I started with 4 clocks on my wall (laziness/batteries), tried to write my own desktop widget (client turned them off), then websites (too many tabs), and now an old iTouch (setup today).

Would be great to include the opinion and feedback from your coworkers who actually go to the office. This seems like good feedback for people who maybe does not feel comfortable with their home setup and a few practices. But I still feel the team's productivity is certainly increased if the team is working together.

A bit OT, but personally I've never found the need for a multi-zone clock or clocks. It's just a few offset quantities to remember, and the math is fairly instantaneous. Although it does get a bit hinky when shifts to and from daylight savings time don't align across differing regions.

On a mac, you can display the clock widget multiple times with different time zones and access it with <Ctrl> + Left Arrow. Pretty quick feedback IMHO.

My calendar lets me have a sidebar to list the time in other time zones, for when I want to schedule something with someone in California.

A super lazy, low-effort method is just googling "what time is it in..." and I'm ashamed to say I do that quite a bit :)

For pair programming or other remote collaboration stuff, I've been really happy with Screenhero (screenhero.com).

[Disclaimer: I've invested in them -- but I legitimately do also use it regularly for this sort of thing.]

Good article, and commentators below have some good suggestions. I'm curious what tools the HN community uses to make their lives easier?

Project Management? Chat/IM? Task & Calendars? etc.

I make sure to shave and put on a work shirt. Video conferencing happens, and this is part of the reason, but just going through the ritual puts me in the right frame of mind.

For my company of two i use free Teambox and Skype, i run my company server on a Raspberry pi and i feel liberated whenever i travel around the world with all my stuff.

Interesting, we don't really use video chat at all. We use one-to-one text chat, an IRC room, and conference calls. Seems to work so far.

Wow. "you should be pair programming". Terrible advice. Isn't effective in the office. Tons worse when remote.

I wish he had left that out, only because it was obviously going to lead to lots of reactions like this. Pair programming, at least on HN/reddit, is a fairly polarizing issue. I'm in favor of it, but plenty of folks aren't, and it's really an orthogonal issue with respect to working remotely.

(For the record: tmux/vim/skype has worked perfectly fine for me while remote pairing)

For me personally, I hate it. Mainly for ideological reasons. I believe that when I'm "programming," most of it is spent in thought or jotting things down on paper. When it comes to actually typing things on a keyboard, I've already figured out exactly what should happen. Pair programming goes against this work methodology, so I don't subscribe to it. Naysayers tell me that I can work through the "thought process" in a pair too. No, I can't. That's not how I work. I'd be happy to discuss my thoughts after I've had alone time, but that time is critical for me to get things done at a reasonable rate.

That is a very reasonably response, and I certainly wouldn't push the idea that pair programming is great for everyone. It definitely works better for people with a particular personality type, and worse for people with other personality types. And I think it's a shame that the industry sometimes pushes things like pair programming as a panacea - like any "best" practice or agile catechism, it only works if it works for your developers. I just find a lot of resistance to pairing from people who have never even tried it, and I think that this is unfortunate, because it doesn't have to be as awful as it's often described here, reddit, etc.

Yea I was careful to qualify my preference as a "personal" one. As a former educator, I believe it can be helpful in some cases, especially for people in an "exploratory" stage where they haven't learned the best way to reason about things yet. However, once individuals start performing at a level where they have particular individual methodologies, pair programming manifests itself as an impedance mismatch.

It depends what you're doing. If you're getting up to speed on a completely new system, you're going to waste a lot of time if you don't have someone who's familiar with the codebase helping you out. If two people have fairly similar levels of expertise in a given area, the benefit is going to be a lot lower.

Totally and its great to mentor someone for a little while or occasionally work on a problem together. Pair programming though is practice where two people work together all day everyday until one of them becomes batshit crazy or quits the company.

I don't think it's fair to define X as "doing X badly" and then complain about people who encourage X.

lol, those comments are quite geeky :D

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact