
On Working Remotely - niyazpk
http://www.codinghorror.com/blog/2010/05/on-working-remotely.html
======
lukev
Wow. I guess I'm completely different from Jeff.

I have no need whatsoever for a "coding buddy." I'm considerably more
comfortable working on a project solo. Even with a good team, I hate the
coordination overhead.

I _can_ , of course, and good team skills are important. I'm not saying that.
But the coordination costs of software development increase super-linearly, so
I tend to prefer using the minimum number of people that can possibly do a
job. The break-even point is around 4-5 - after that, adding more people makes
things _slower_ , unless you can split the project into autonomous chunks.

~~~
barredo
My order of preference:

Working with better programmers than me > Working solo > Working with others

I guess it is a common preference

~~~
ewanmcteagle
It is. I agree with you but if you're working with programmers better than you
which one of these three is the situation from their perspective? At least
some of the better programmers have to be willing to bend on this or you never
work with anyone better.

~~~
digitallogic
You only need to perceive that the other programmers are better, they don't
actually need to be that way. And given that competent people generally
underrate their abilities [1], you could have a team of equally highly skilled
people who all think they are working with a team that is generally better
than them. I actually think this would be an ideal situation.

1: <http://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect>

~~~
fnid2
They don't have to be _better_. What is "better" anyway? More efficient
algorithms? More normalized data? Fewer bugs?

For me, it's about experiences and perspectives. When I work with other
programmers who have unique approaches to problems that help me work more
efficiently, I enjoy working with them.

I also enjoy working with less experienced programmers who are willing to
learn and practice new, more efficient methods.

I really dislike working with programmers who think they are awesome, but are
really clueless. I try to help them, but their pride gets in the way. It's
funny when they try to school me on stuff. I just don't have time for that. I
feel bad for their clients.

But sometimes I run across people who know little tricks or constructs and I'm
like, Wow, that's awesome, teach me more!

~~~
digitallogic
I'm with you that 'better' is highly subjective, and in the case of
inexperienced and wanting to learn vs any amount experience and excessive
pride I'll take inexperienced any day. Technology is too diverse and filled
with rapid change to ever think you don't need to be open to new ideas and
improvement.

------
edw519
_One guy working all by yourself alone. This didn't work at all for me._

Funny, I have trouble working any other way.

 _I was unmoored, directionless, suffering from analysis paralysis, and barely
able to get motivated enough to write even a few lines of code._

I am totally grounded with tons of work and a million ideas of what to do and
how to do it. I'm having so much fun, my biggest problem is finding time to
triage all the possibilities in my head.

I understand OP, but that's just not my experience. Programming can be a
lonely lifestyle. I have my code and my cats to keep me company. I love them
both.

[EDIT: I don't want to leave the wrong impression; I am very social and used
to find it challenging being alone. Not anymore. I just bury myself in my
work, which is something that has to be done anyway. Now I don't want to be
bothered when "I'm busy", but I _do_ want to be bothered at most other times.
Dinner with SO, time with friends & family, and visits to the hn virtual water
cooler fit in perfectly. Now back to work - see you in a few hours.]

~~~
inerte
Since you and lukev shared similar experiences and are currently modded
highly, I want to say I am the opposite of you and more like Jeff, but like he
said, maybe we're a rare breed among programmers.

People make me feel empowered. I enjoy the watercooler talk, I feel depressed
when I lunch alone (really, really down. For days). I like to talk, I like to
make people laugh.

I think the lesson is to know who you are. Jeff and me like social, you and
lukev like more lonely. Don't rely on blog posts telling what's better, find
what works for you and go for it.

~~~
TheSOB88
Oh God, eating alone is the _worst_. Especially at a sitdown restaurant. It's
like God teasing you about your lack of friends.

~~~
ojbyrne
Eat at the bar if you can. Sometimes its actually an advantage because you can
get a single seat at the bar even when all the tables are filled. I do agree
with your sentiment though.

------
jasonkester
"The minimum remote team size is two."

By definition, I suppose, since a one-man shop has nobody to be remote _from_.

I disagree though. I'm self motivated enough to run with stuff on my own. I've
built a lot of big successful things with a team size of one, and I find it
the perfect team size during the prototyping and buildout phases of a project.

Sure, once you hit maintenance mode it's nice to have another person along to
share the pain and help generate the discipline needed for months of
refactoring and slow iteration. But when you're actually building something,
I'm all about small teams.

So now we have two datapoints. If I were the author, I would have gathered a
few thousand more before publishing this article.

------
S_A_P
I disagree somewhat. I dont feel that I "Bleed ones and zeros" but find the
solitude in my home office far less distracting than an office cubical, and
tend to be way more productive.

I think you really just have 2 basic types of people: those who want to get
their work done(and do it well) and those who arent really committed.(for
whatever reason, incompetent, lazy, bad work ethic, not interested in the
work, etc...) If you have a team of the first type, you will get things done,
if not, you wont. A less experienced developer with motivation to get things
finished will not let distance get in the way.

~~~
MartinCron
Not to go off on a tangent about office architecture, but I feel that cube
farms are the worst of all worlds for any intellectually demanding work.

One extreme, private offices for everyone, works pretty well in that you have
quiet when you need it and you can also collaborate verbally without
disrupting others.

The other extreme, a bunch of people in one room, works pretty well in that
you can get a peripheral sense of what everyone else is doing, talking to the
person next to you doesn't require hollering through 3/4 height walls, and you
can always put on your headphones to signal "leave me the heck alone".

The middle ground, cube farms, tend to eliminate both useful silence and
useful noise.

Personal preference matters, too. Some people just can't function in a noisy
bullpen environment, while others tend to just "go dark" and run in the wrong
direction if left alone.

My company is planning on moving into a new office space divided into just two
sections, one speaking-in-normal-tones-is-OK bullpen, and a distinct shut-the-
hell-up fishbowl space to accommodate the different work styles. I'm eager to
see how it works. I actually see myself shuffling from zone to zone depending
on the nature of what I'm working on.

~~~
MichaelSalib
Another middle ground is where everyone has an office with a door that closes
but there are 2-3 engineers in that office. Back in the day when AT&T Bell
Labs was the coolest thing ever, that was the system they had and the best
companies I've worked for replicated it as well.

~~~
MartinCron
Yeah, I've worked a handful of places that have done that. It only failed me
when I was working at a place where my office mates where on different
projects, so all of their interaction was just noise to me, and all of my
interactions was just noise to them.

I find it works well if the 1-2 other people working in the same space are
working on the same thing, ideally as a cross-functional team, (i.e. don't
have an office full of "UX" people down the hall from an office full of "DB
People")

------
dan00
I'm working remote and love it. But I'm a very introvert guy. I don't like
smalltalk, I don't like talking to a group of people, it exhausts me. But I
love to philosophize with one person, when one thought generates another one,
when both appreciate the thoughts of the other and go together beyond their
own border.

Most of the communication with my teammates is done by phone and a request
tracker. If someone develops a new feature or a customer has a demand,
everything goes over the rt. It works pretty well, you can always see what
your teamates are working on, and how they solved a problem.

~~~
msg
He he, I did a double-take when you said you didn't like smalltalk. I was
like, hey, object-orientation isn't so bad.

Guess I am one of those introverts too.

------
DanielBMarkham
Good article.

The part that was missing was: your mileage may vary.

I love hearing about how teams make it work. But over and over again I see a
team do things one way that worked wonderfully well for them and then
everybody else just copying that. Then it doesn't work.

Every project is a new game.

It's a well-worn anti-pattern

------
grnknight
Remote work and distributed teams provides one heck of a challenge for sure.
We've been finding our way by trying different things and succeeding or
failing - but I certainly agree with what Jeff Atwood said about keeping up
with chat and mail lists... We're very cross-platform, so video chat doesn't
work all that well for us across Linux, Windows, and Mac, etc... But I think
the weekly status reports to the team has been forgotten, so we'll have to
start that up again. :)

I did a presentation for EclipseCon 2010 about our challenges that you can
find here (with links to a slide):
<http://www.eclipsecon.org/2010/sessions/sessions?id=1156>

Great article though. Today it's nearly impossible to avoid a distributed team
to get stuff done!

------
ben1040
I can't stress enough the _persistent_ part of the "persistent mailing list."

I worked as a remote employee in a group where we had half the team (couple
dozen folks) in an office in Toronto, and the remainder of us scattered about
in remote sites across the US.

We had a mailing list for questions along the line of "Hey, this question is
important but not enough so to bug anyone in chat." It wasn't persistent in
any usable manner; it archived to an Exchange shared folder hosted in the main
office, and I learned that searching these folders over VPN was an exercise in
futility.

Basically then you'd have new people hiring on and not having the
organizational knowledge pent up from all the decisions made in the past.
They'd make bad decisions in their work because either a) they couldn't search
the list for help and just decided to cowboy it, or b) they mailed the list,
got blown off for asking a question that has been asked dozens of times before
they showed up, and will just cowboy it the next time.

~~~
dpritchett
The best enterprise collaboration tools merge read-/post-by-email features
with a rich web application. This gives everyone a chance to stay in touch
whether they're on a laptop or a blackberry.

Edit: Forgot to add my agreement that Google Groups-style search and archiving
is key as the parent poster asserted.

------
joubert
the fact that people are "chatting" on HN seems to prove his point that you
need human contact during the work day

------
liedra
It seems a bit odd to me that he talks about working remotely and how awesome
it was, but then all the coding jobs for his site (which he was somewhat
selling in this entry) are for people "in an office in NY".

But I agree, if you're working by yourself, you definitely need a very
structured workplan, and it's very good to have someone to "report" to, even
if they're not coders, but just as a grounding point for feedback and a
passive nag to not slack off and get things done.

------
mbrubeck
It's much better working on a truly distributed team than being the one remote
worker on a mostly-centralized team.

My group at Mozilla is distributed across seven cities (I think) on two
continents. We use all of the techniques Atwood listed. At Mozilla, where a
large portion of the staff is in Mountain View, it helps that my manager is
working remotely just like me - so I'm not more remote _from him_ than anyone
else is.

------
matthewcford
Some good tips in here, we run a fully distributed team and had overcome
similar challenges.

One tip I would add is pair-programming on complex parts or sticking points
through screen and vim, we have an ec2 instance dedicated for pairing which
everyone has access to.

~~~
technomancy
I was surprised at that omission from the article. Getting tools to ease
remote pairing is one of the most challenging things about remote work. We
ended up making Emacs a hiring requirement just because working from screen is
such a crucial part of what we do.

~~~
matthewcford
yes, vim or willingness to learn is currently a hiring requirement for us. Not
a religious thing, just happend the first two guys we hired preferred vim.

------
someone_here
Mumble is a great project that works well for teams. Low bandwidth, high
quality voice chat.

<http://mumble.sourceforge.net/>

~~~
BudVVeezer
Oddly, at my last job, we used ventrillo. I happened to have a server from
playing WoW, and so I just had the rest of the team use it. Cross-platform,
low-bandwidth, and worked awesome.

------
jasonkester
At the risk of plugging my own thing, this situation is the reason we built
Twiddla, so I'd recommend checking it out if you're trying to build stuff with
a distributed team.

Mostly it was to deal with communicating little graphical changes to remote
designers without resorting to MS Paint and email, but it does chat and voice
too, so it pretty much wraps up the whole "tools you need" section in one
thing.

~~~
pppglowacki
Hi, from personal experience, our 2-man team found TeamViewer a bit more
useful though.

Twiddla has its strengths but it failed when we tried to share a dynamic
website. It only excelled in sharing static websites so we were unable to
share websites that required a log-in or a form submission. We ran in to a lot
of time consuming problems when using Twiddla so we abandoned it because we
just did'nt have the time to play around. I guess it is more for communicating
with remote designers and it definatly is way better than MS Paint.

------
bmj
I've worked on a distributed team for three years now. We've found that
regular phone conversations and weekly "status" emails (nothing formal) really
help the process and keep everyone connected. Typically we use email and Skype
to communicate, but if an email conversation begins to get too unwieldy, we
simply get on the phone.

------
dmn001
Teamviewer, DropBox and Skype are the best tools I've used for remote working.

~~~
morbidkk
add mikogo and callgraph to it

------
c00p3r
I wonder how the projects like freebsd, webkit, chromium, and thousands and
thousands more are successfully going on without such pathos and attempt to
impress the world.

Shared culture and vision plus trac with several plugins (or code.google.com)
are enough.

