On Working Remotely

I think it’s more important that remote co-workers have the ability of “getting things done”. seniority comes after that.

I also suggest Google Docs. It’s very easy to share documents and you can edit the same doc with more than one editor. It’s realtime: you see your modifications and the ones from others. Try it. It’s fantastic.

fabrizio

The LAST thing I want to have is a chat session open during my programming day. Its bad enough that the telephone ringing makes me cringe but CHAT is even worse. Its instant gratification at its best. I can not code and be disrupted like that. I do not know how others do it. I will not work at a company that requires me to have an instant messenger open in the corner of my screen. Its proven to be a complete failure for me. I cant get up and take a dump without a 1/2 dozen people asking WHY I am “unavailable”. In that example, having become enrgaged as to why they were even ASKING me about my “unavailable” status, I simply replied to everyone on the list with “I was taking a shit. Do you want to see pictures of the wipe next time?”. I presented my 2 week notice later that day. Cant deal with chat. Email is about as disruptive as I want my day to get. I even turn off the phone most of the time. What I cant stand about the phone is people calling and not leaving messages EXPECTING that I should call back. Uh, if you didnt leave a message then it wasnt important. And, similarly, when I leave a message, what MOST people do is just call me back and not listen to my message! That is quite arrogant. I simply tell them to listen to the voice mail and then call me back, and then I nicely end the call. Even though we’ve got more and more “instant” methods, communications between people have become rude if not horrendous.

@Shvedsky: Sorry, but, we have more than enough illegal workers in the United States. That coupled with out of control outsourcing has destroyed the US’ economy. You wouldnt hire anyone in YOUR nation if they werent legal? No other nation hires illegals like the US does. Stop the whining.

@Phat, that’s not about that. Just the statements about “global” coupled with a map of the US only sound… (I’m not from US, so I can’t pick a proper adjective) like lies.

@Shvedsky: Its not lies, its policy. Every nation has its labor policies. I can not just waltz into another nation and expect to find work at the expense of those who live there and pay taxes there. There are far, far too many people already working in the USA that do not pay taxes here and for that our cities, our states… our infrastructure is beginning to suffer.

Skype includes a decent chat program, so using it you can kill 2 birds with one stone.

Nice post, but I want to add one more thing:

Google Wave is one of THE MOST AWESOME services you can use for this ^^

Jeff, have you ever considered running a MOO for this? you can have any features you want to add to a MOO- mailing lists, tasks, and so on. All it takes is a moo server and learning moocode.

Have you thought about using virtual world environments like opensimulator.org in your remote working environment? You could create virtual work room with text and voice chat.

Does your group use any specific tool for minutes? I always try to cram to much information in because I don’t want those who missed meetings to make the same argument about a certain aspect of design that someone else did and we already discussed the pro’s and cons of it.
How do you suggest someone actually become “remote working” capable since newer people you say should not do it but it seems that if its a Non-Profit project that those who are new to the industry (myself included) can learn in these types of environments better then making small scale projects by themselves.

In this quite lengthy blog-post there is a great section on remote pair-programming that may relate to distributed teamwork presented above:

http://blog.xebia.com/2010/05/09/practical-styles-of-pair-programming/

“Tim M wrote: (on top of which I’m a novice programmer, as these things go: only three years of actual experience and that with a giant pile of legacy code).”

3 years shoud make you more than novice. And working with legacy code is an essential skill to any programmer - debugging other people’s code - good and bad - teaches you many lessons.

Generally: There are some great commercial and open source tools now to support remote and distributed working. I have used webex and similar for oline collaborative working; IM; Skype; Google docs for document sharing and various others. Thoughtworks have some great tools and they are now looking to integrate those with Google Wave, which should be interesting.

Distributed VCS is now available, automated test management tools from unit to system (Junit, Selenim et al), online PM tools for agile project management and the plethora of wikis, blogs, facebook type apps and so on.

For those working out of Eclipse, the Eclipse Communication Framework would be a boon.

Combined with an XMPP(S) server, such as openfire, you can have a controlled IM system, chatrooms and shared editor, allowing both of you to edit an individuals local copy of the code in realtime while keeping your copy clean.

Along with this is of course basic file & screen shot sending utilities.

You can of course keep chat logs, but there are better tools for meetings and doc sharing, especially for collaboration.

A googlewave plug in for eclipse would be a killer feature.

Amen Jeff.
I’ve been doing this for a decade now - working in a small team in a big company from across the world. My current team has had up to 5 timezones in 3 countries at time. I’ve often considered blogging about it, but my first post would have read just like yours:

IM is crucial (didn’t have it when I started) as a replacement for over-the-cubicle-wall chatter.

I would add that with the right attitude you can be hugely more productive when not constantly interrupted by general meetings, birthdays, wanderer’s by and so on. I miss all that to some extent true - but on those rare occasions when I fly in and visit the mother ship, and spend some time in a cube, I start to wonder how anyone gets anything done (or how I did back then)

I agree there are times when being there is very beneficial, however overall this loss is outweighed by the productivity gained by working alone.

On a technology note: If the advent of IM was a real boon to this way of working, the advent of VPNs around 1999 was an absolutely essential part of making this possible - if you’re doing it for a big company.

Blanket statements tend to over generalize to a startling degree.

Newbie programmers, or competent programmers who are phoning it in, are absolutely not going to have the moxie necessary to get things done remotely – at least, not without a pointy haired manager, or grumpy old team lead, breathing down their neck. Don’t even think about working remotely with anyone who doesn’t freakin’ bleed ones and zeros, and has a proven track record of getting things done.

The only important part of this sentence is “gettings things done”. I’ve been working in the office four days a week and one day a week remotely largely doing development work for the last four years and it doesn’t really matter where I am working. If you have the experience, creativity and drive you will get things done.

Malcolm

You say that mentoring remotely shouldn’t even be considered… but don’t projects like [Google/Ruby] Summer of Code rely heavily on remote interaction between the student and mentor?

I understand that mentoring in a production environment would be far more stressful than mentoring a low risk project, i.e GSoC; but to flat out say “mentoring of newbies or casual programmers simply doesn’t work at all remotely” is wrong.

I for one would kill to just watch a remote-desktop stream of someone working on StackOverflow’s unicorn-backend and give my feedback over a VoIP program like Ventrilo.

If working remotely is truly the future of work, then it should be the future of mentoring as well. Unless it’s high-time we got rid of on the job training?

I disagree with your positon re: newbies. What you really need to succeed in a remote or any isolated work environment is a strong work ethic.

The recipe for success is to find smart people that are motivated to work hard, maintain social connections and get things done, and add some good leadership. If you can attract and retain top performers in their craft, that’s great, but isn’t really relevant to remote work.

I’ve worked with a few folks that I would consider absolutely brilliant in various roles who would wither in a remote work environment – especially in an org with more than a dozen people. They need that social contact. Conversely, I’ve worked with folks who as a programmer or engineer weren’t at the top of the heap, but had the people/social skills to thrive in any environment – they would still be contributing if their connection to the rest of the team was morse code over shortwave radio.

Most people lie in the middle, obviously.

For quick remote pair-programming sessions, I second the nomination of GNU screen + Google voice chat.

If you haven’t used screen, here are basic instructions to get multi-user working:
http://dustwell.com/screen_command_to_pair_program.html

I’m curious about Leetdoodsnonexistentramblings.blogspot.com’s assertion that using a MOO would help with collaboration – and even asked a question on SuperUser about it. Does anyone have any thoughts on how this would facilitate collaboration?