views:

282

answers:

8

It's commonly agreed that successful software development is as much about teamwork and communication as it is about individual programming expertise. Given this, one might assume that by operating a geographically distributed team you are at an immediate disadvantage to a tight-knit team all working locally.

When my startup company was founded, we couldn't afford shared office space and I was actually located in a different city to the rest of the team, so we all had to work remotely and use tools such as Basecamp, Skype and Trac to communicate. One the whole, this was really successful -- we got a huge amount of quality work done in a short space of time and launched a successful product. Working remotely gave our developers the time and space they needed to focus on the job and be productive without having interruptions or enduring office politics. To me, this is a huge advantage.

Given my experience, as well as the success of software companies with distributed teams such as 37signals and StackOverflow (and I'm sure many more), I'm increasingly of the opinion that the advantages of running a distributed team outweighs those of running a centralised team, especially for start-up companies.

Would you agree?

+4  A: 

I agree that offices are quite distracting due to noise and interruptions. But the distractions that hinder you are the other side of the coin to the ability to ask people around you questions. Although I've not tried remote working for more than a few days at a time, the inability to get an answer to a quick question in 30s is the main disadvantage that I see.

frankster
That's what SO is for! ;-)
JasCav
+2  A: 

Given my experience, as well as the success of software companies with distributed teams such as 37signals and StackOverflow (and I'm sure many more), I'm increasingly of the opinion that the advantages of running a distributed team outweighs those of running a centralised team, especially for start-up companies.

Would you agree?

I half agree.

Running a distributed team definitely has its disadvantages. As you pointed out in your own post, communication is a big problem. There are times, as a developer, I enjoy just bouncing ideas off other developers and swapping ideas that I may not have thought up on my own. In addition, it can be tough to get feedback or to perform code reviews (practices that I have found useful in my development experience).

With that said, I also think there is an advantage to a distributed team. The biggest of these being that developers tend to do better when they can focus and just develop and not have to worry about being interrupted or having to attend frequent meetings, etc. This was a huge advantage at one job I had at a smaller company.

In your specific situation, have you considered that one reason you were so successful was not because you were geographically dispersed, but you were successful because you're a small company? Small companies have an advantage in that you have a limited number of products, there tends to be more focus, and, as a result, you can maintain a better control over your products/schedules/etc.

That's my 2 cents.

JasCav
+1  A: 

I totally agree. An office environment provides mainly distractions and opportunities to waste time and look busy. A distributed team doesn't have to pay rent, they can deduct part of their own rent or mortgage from their taxes, and they can recruit talent from virtually anywhere in the world (instead of trying to find capable RoR developers in East Bumwipe, Oklahoma).

MusiGenesis
+1  A: 

Pros: You can hire the person you like instead of sticking with those available in the neighborhood.

Cons: It can be difficult to communicate if your team members live in various time zones.

Developer Art
+2  A: 

Like-for-like comparisons that might give us empirical data are very hard to do, arguably practically impossible. So that gives us the licence to speculate, right?

My pet theory is that any sufficiently talented and motivated team can make most any system, method, geographical dispersion work.

djna
I tend to agree with your statement. I feel that all of the project management methodologies out there just attempt to do the best they can with mediocre staff.Everyone trashes on the "waterfall" method, and while I don't believe that it's optimal I have seen it work well with the right people.
jessecurry
Wrong! Try putting your talented and motivated team in prison, and see what you get out of them.
MusiGenesis
The Bridge over the River Kwai perhaps? Obviously, if we make the environment completely restrictive then nothing gets done (unleash the code weevils, devour all traces of code!) But I would back a good team with a poor process over a team of lazy incompetents under the finest TDD Agile process it's possible to devise.
djna
+1 for the "Bridge Over the River Kwai" comment, although now I can't get that damn whistling tune out of my head.
MusiGenesis
+2  A: 

Are you a regular reader of Joel Spolsky's blog?

Joel described the centralized offices they have set up in order to increase productivity.

  • More than enough room for each developer, so they can walk up and down for a while whenever a bug haunts one of them. :)
  • Separated offices. During work hours, only the developer and the given task exist. Nothing else.
  • Sound-proof walls. (As far as I can remember.) Generally useful to provide full control over work space. Devs can listen to music without headphones, for example.

As you can see, FogCreek has managed to combine most advantages of remote work, while still keeping live communication as an option.

However, due to lack of teleportation, this customized and professional office is yet to solve the problem of different world-wide locations.

pestaa
+2  A: 

From personal experience I am much more productive when working remotely. I lose the sense that someone is staring over my shoulder, criticizing me for being lazy when I'm really just taking a moment to collect my thoughts. I also appreciate not having a commute, even if I'm only saving 20 minutes each way it's a huge load off of my back, plus I don't have to dress to be in the office so I save time getting ready in the morning. I've found that it's fairly easy to mitigate the communication issues by implementing a certain time during the day to be online, we had people on the east and west coast so we had people stay online between 1-4p EST. Also, just making sure that everyone has each other's phone numbers was a good thing, there were many problems that could be resolved with a quick phone call. I wish that more businesses would support remote developers, I'm in an office right now and I feel that being here is so wasteful. I could get more done in less time without the distractions involved, and would have a better ability to manage my time.

jessecurry
Totally true. When you work as part of a distributed team, you have to be judged by what you produce, not by what it looks like you're producing. So somewhat counter-intuitively, it's much harder to slack.
MusiGenesis
+1  A: 

I think a start up works best if the core team are physically close in space. As the team grows and the product and processes matures remote work gains traction in my experience. During that critical first year there can't be too much communication between developers and founders.

Once the startup has real direction and good processes in place remote working becomes very effective.

Certainly having some developers working remotely saves real money in overhead costs and makes everyone happy if its possible.

In my startup a lot of our work requires direct physical interaction with expensive equipment, so we can't all be virtual. Some of us can, and our remote developers are good contributors.

Jim In Texas