11 ms·
Making Remote Work Work
I wrote a few words about my process for remote development & PM at NPR. Seems like it might be interesting to this audience.
- rjzzleep 13y agosince 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'
- mojuba 13y agoExcellent 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.
- herge 13y agoI use http://everytimezone.com/ http://everytimezone.com/ all the time.
- mojuba 13y agoYes, nice, but incomplete (see my other reply in this thread)
- mbesto 13y agoI use: http://www.thetimezoneconverter.com/ http://www.thetimezoneconverter.com/ http://everytimezone.com/ http://everytimezone.com/ http://time.is/ http://time.is/
- mojuba 13y agoThanks, but: http://www.thetimezoneconverter.com/ 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/ 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/ http://time.is/ - shows only current time, or otherwise compares times only in two locations. Useless, just like thousands of other similar web sites.
- shrikant 13y agoI've used http://www.worldtimebuddy.com/ http://www.worldtimebuddy.com/ for this in the past and it's worked really well.
- mojuba 13y agoKind of like http://timesched.pocoo.org http://timesched.pocoo.org suggested in another comment here, but this one is more cluttered. Anyway, nice tool, thanks!
- sneak 13y agoSO THAT'S HOW YOU SET ENVIRONMENT VARIABLES IN ALIASES! THANK YOU! (I'd been making the slight-environment-change aliases into bash functions as a workaround. You just helped me so much.)
- mscman 13y agoThis 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.
- emillon 13y agoI think that you can also use env(1) for this. berlin='env TZ=Europe/Berlin date'
- technomancy 13y agoI have my chat client set to timestamp in UTC; helps a lot.
- zrail 13y agoThis 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.
- LanceH 13y agoThese 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.
- djim 13y agoeh. 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.
- Touche 13y agoExcellent 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.
- pasbesoin 13y agoA 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.
- skj 13y agoMy 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.
- mbillie1 13y agoA 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 :)
- yawz 13y agoOn 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.
- king_magic 13y agoI completely disagree with blanket statements like "You should be pair programming". Ugh.
- neverminder 13y agoI 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.
- randlet 13y ago"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.
- toomuchtodo 13y agoProtip: 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.
- dsr_ 13y agoWe 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.
- toomuchtodo 13y agoExactly 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.
- whazzmaster 13y agoMy 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.
- barake 13y agoThe 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.
- eweise 13y agoWow. "you should be pair programming". Terrible advice. Isn't effective in the office. Tons worse when remote.
- mbillie1 13y agoI 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)
- deleted 13y ago[deleted]
- technomancy 13y agoIt 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.
- eweise 13y agoTotally 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.
- technomancy 13y agoI don't think it's fair to define X as "doing X badly" and then complain about people who encourage X.
- banachtarski 13y agoFor 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.
- mbillie1 13y agoOne 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.
- smackfu 13y agoInteresting, 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.
- jewel 13y agoInstead 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/ http://stevenjewel.com/2013/11/detecting-headphone-use/
- malaporte 13y agoRemote 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 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.
- yawz 13y agoI've tried a few things. I find Sqwiggle's (https://www.sqwiggle.com/ 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.
- fixedd 13y agoI 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.
- tommoor 13y agoThanks for the feedback! We definitely hear these concerns and are working on a few things to improve in this area, particularly with privacy :)
- ChiperSoft 13y ago
- btipling 13y agoThank 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.
- yawz 13y agoAny 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.
- house9-2 13y agoI have not done much remote pairing, but there is a really good list of tools and resources here: http://www.pairprogramwith.me/ http://www.pairprogramwith.me/ one that looks very interesting: https://www.nitrous.io/ https://www.nitrous.io/
- falcolas 13y agoScreen sharing in google hangouts work pretty well. Can't both type with that, but you both can see the editor with acceptable lag, IMO.
- memracom 13y agoI'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.
- technomancy 13y agoI 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 http://syme.herokuapp.com to make it easy to spin up a throw-away EC2 node preconfigured for a pairing session.
- johnvschmitt 13y agoENVIRONMENT 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.
- Swizec 13y agoI 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.
- sneak 13y agoCreate 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.)
- d0 13y agoYou 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.
- mscman 13y agoI 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.
- jj00 13y agoI'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).
- dba7dba 13y agoI 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.
- yawz 13y agoFor the ones who require some extra motivation to remain disciplined, you can use a tool like SelfControl (http://selfcontrolapp.com/ 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=12) 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).
- chermanowicz 13y agoGood 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.
- wdaher 13y agoFor 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.]
- gleiva 13y agoWould 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.
- diogene 13y agoFor 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.
- alex_zige 13y agolol, those comments are quite geeky :D
- ommunist 13y agoThank 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.
- dhimes 13y agoDoes anyone know of one that works with Linux?
- sergiotapia 13y agoThe 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.
- scelerat 13y agoI 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.