Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I keep hearing about the desperate recruiting efforts of companies in tech hubs such as SF and NYC. However, every time I'm contacted by a startup I'm told the position is on-site and working remotely isn't possible.

Let me clarify that these are tech startups. They should be very comfortable with the idea of using technology to get things done and connect teams together.

With the housing market the way it is, many of us can't relocate even if we wanted to pay the higher cost of living. Why are so many companies still stuck in the industrial mindset of butts in seats?

share|improve this question
15  
In light of the vapid orgy of offshoring developers for under the US minimum wage, I would say that one of the few advantages that us locals still have is that we are a butt in the seat and are physically available for ad-hoc meetings. –  maple_shaft Dec 1 '11 at 1:16
3  
Possible duplicate of programmers.stackexchange.com/questions/348/… –  Anna Lear Dec 1 '11 at 2:25
2  
Be careful what you wish for... Remote development means competing with guys who live off $10 a month. –  Lord Tydus Dec 7 '11 at 0:33
add comment

9 Answers 9

I've worked remotely in a couple of companies over several years. Let me tell you something: it's not convenient. Both as a remote member of a team and as an employer of remote contractors. I wouldn't do it again if I had a choice (and I have - work on-site with the team).

Its OK to work remotely a day or two a week, and many do so. But to have a full-time remote engineer is a pain. It may work well with contractors that get a chunk of work to be done, and deliver on time. But to hire a new employee, train him, have him integrated into a team, and supervise his daily work - all that on remote - it just doesn't work well with most people (managers, engineers, or both).

Now add to that the complexity of equipment - many tech start-ups require labs, hardware development, testing suits, and all these are very expensive, and not always available for remote connection and control. I have in one occasion witnessed my company shipping a $100K piece of equipment to a remote location for the contractors to work with (a whole team of contractors, not one). I had another one of these in my cube for my whole team to share. Had my team been all remote - we would have to ship another bunch of these, just for them to be able to work. Does it make sense to do so? Of course not.

Many companies offer relocation packages, and the tech salaries are way higher than the average, everywhere, so you don't have the excuse of "oh, it's so expensive in San Francisco".

share|improve this answer
3  
+1 I work with local and remote. Local is by far more efficient overall, even before you consider timezones. –  Dan McGrath Dec 1 '11 at 3:43
1  
I disagree. Working across timezones can put a team at a massive advantage. If the geographical spread is right you can have team which is capable of functioning 24/7. This allows for some extremely rapid development (without the sleep deprivation). –  Kim Burgess Dec 1 '11 at 4:34
7  
@Kim - that was precisely the situation I was in. It did have some advantages with regards to rolling the ball and having 24/7 availability, but the disadvantages of being asleep when some other team members have design reviews or having a problem that doesn't allow me to continue when everyone else is partying in their respective pubs or asleep and cannot help me - way overcome the advantages. What you describe is good for field support and tier 2 groups, not R&D. –  littleadv Dec 1 '11 at 6:48
7  
@KimBurgess nice in theory, doesn't work in practice. In practice you need to have multiple full teams, one in each of several offices, and have daily coordination meetings between them. If you set up 4 locations, you effectively only get the work done for 3 of them, the rest of the time is spent in those coordination meetings. Been there, done that, burned the deadline. –  jwenting Dec 1 '11 at 6:55
    
It's hard to get right, no argument there. But it can work (speaking from experience), it can also fail miserably (again, experience). As long as you ensure different team members maintain solid communication it's not that different to having a workplace with flexible hours. It's still massively important to have meetings everyone can make. Yes it can be a pain to get a time that suits across time zones but no more of a pain than turning up to an 8am meeting on any weekday for a lot of office based devs that work in flexible environments. –  Kim Burgess Dec 1 '11 at 8:54
add comment

The simple answer is: humans like face to face interaction, we've been doing it for quite some time.

If you're in the same physical environment its extremely easy to spin around and run an idea past a colleague, roll some code together (and discuss it in the process) and be extremely spontaneous and agile in the way you work. This is an extremely precious thing in a startup.

An experience very close to this, but not the same, can be created in the digital world. Videoconfercing, distributed VCS's and a good selection of the many, many web based collaboration tools can be combined to create an environment that supports and encourages remote collaboration. The problem with this is

  1. It needs to be set up specifically for your environment (that's people and workflow), and
  2. people need to be taught how to, and actually use it.

A lot of places that implement a distributed team tend to not quite perfect one of these points. This results in the tech being labelled as at fault, rather than the implementation.

Personally I've had some fantastic experiences working as a member of a distributed team. One technique that works extremely well is to get everyone to set up a camera in their workspace. Not directly on top of their monitor but on a secondary display if they have it, or off to one side - looking at peoples blank expressions when they're working is creapy. Whenever you are working call into a videoconference (using your platform of choice) so that you can see everyone else in 'the office' / 'studio' / 'dev dungeon'. If you need to talk to someone - do it. This provides nice flexible communication and also helps prevent people from working in their underwear covered in three day old cheezels crumbs (hopefully).

share|improve this answer
3  
This provides nice flexible communication and also helps prevent people from working in their underwear covered in three day old cheezels crumbs (hopefully). Best Line Ever! –  Ramhound Dec 1 '11 at 17:05
add comment

There are many reasons that companies/managers may prefer local candidates:

  1. Easier to integrate new programmer into a team/build comraderie
  2. Easier communications face-to-face
  3. Not all employees can work effectively at a remote site
  4. Easier to ask questions/get up to speed when working locally
  5. Harder to have impromptu whiteboarding sessions when working remotely

Now, this may not be true for all companies, but it's particularly tough to start out working remotely, particularly if you don't already know people at the company.

Check out this other Programmers.SE post for good answers to a similar question.

share|improve this answer
add comment

Do not underestimate the information bandwidth of being physically together with your co-workers!

Most non-trivial projects need to be parallelized to ever get done. This mean more than just you working on the project with which you will need to communicate intensely to save time and effort for your employer. Double so, if you are the only one never there which your co-workers must make an extra effort to keep you up to date.

share|improve this answer
    
+1. I've been writing my own answer which started with (literally) "Don't underestimate the information bandwidth..." and than I've found your answer ))) –  shabunc Dec 6 '11 at 19:39
add comment

I worked remotely for 1.5 years and loved it. I set up an office in my home, woke up in the morning and didn't have to drive to work and got to eat lunch with my family. This saved us a lot of money. Because of that I was in a sense earning more than I am currently. Likewise, I ended up working more hours and getting more done because I wasn't spending five hours a week driving and then getting settled into my office and I was more likely to work late on my projects after the family went to bed.

I will admit that there were some communication challenges.

  1. If I called my team lead on the phone he was not always at his desk. I therefore didn't know if he was there at all, in a meeting, etc. I'd leave a message and he may not have returned my call for three hours which sometimes kept me from moving forward.

  2. Thankfully I already knew their business well to allow me to run on my own but there were times where I needed to meet with my Team Lead to discuss specifications. It is difficult to draw up a blue print on paper over the phone.

  3. I am self motivated but other remote developers were not. We had no guarantee that they were spending eight hours working on their tasks.

  4. Sometimes remote developers were not in sync with the rest of the project plan so sometimes there were unnecessary iterations to get them on track.

I say all of that to say this: These issues aren't any different than working face to face. Every one of the listed issues is found in the local work place and it is too subjective to say it is easier in the work place than remotely. All points above occurred in the same manner whether at work or outside of it.

Take for example problem one. In the office I may have sat five cubicles away from my Team Lead. If I had a question I would've sat up from my desk and walked to his cube. It takes less time to pick up a phone that's next to me to call. Likewise, if he was in a meeting while I was there, I would still have to wait for him to get back from his meeting or whatever else.

Problem two is a little more challenging to justify but with Skype, Collaboration Software, etc, this is definitely doable.

Three and four are problems in communication and understanding in general. These are operational issues that exist locally or remotely and in each environment they require innovative forms of leadership.

I would add a couple of things to this mix and that is cost. If a techie is in the office they will be using electricity to run their computer and cubical lights, run water for drinking or flushing the toilet, they will chit-chat with co-workers, wear down carpet, spread illness, etc, etc. If five developers are not at work, it would be interesting to determine the cost savings in areas like this.

share|improve this answer
add comment

I've been working on distributed teams for the past 6 years. While previous projects have struggled to integrate remote team members, my current project has hit a sweet spot, and has had great success by following the following principles...

For voice communication:

  • A high quality (Skype) audio call and text chat, is left open with the whole team connected all day. At times nothing is being said, but this facilitates the "over-the-cube", watercooler, random gathering, etc. discussions that frequently occur in a physical office.
  • Avoid speakerphones, cell phones, etc whenever possible. The limited bandwidth and call quality is a distraction and makes communication more difficult.
  • Any time the team needs to call someone without Skype, the entire call is joined to that person's phone
  • One-on-one or sidebar discussions take place on separate Skype calls, as needed.

For collaboration:

  • The Kanban board in an electronic project management tool, which replaces sticky notes on the wall
  • Rapid wireframing tools replace whiteboards
  • Remote desktop sharing tools are used for things like pairing, sharing, and mutual troubleshooting
  • Wikis are used for documentation
  • Daily meetings, reviews, planning meetings are all conducted via remote desktop sharing software.

By doing the above, our experience has been that there is little to no negative impact to the entire team being remote. In fact we've seen productivity gains where team members have the best of both worlds, with the ability to hit the mute button to have "quiet hours" a few minutes to focus on a problem (while still keeping track of the text chat), and then join back to the group audio when finished. You get rapid voice communication like in the office when needed, but you can also have a few quiet moments to focus when you need to.

share|improve this answer
    
DEFINITELY avoid speakerphones during meetings! Biggest hassle I had with my last job (I was one of only two remote guys) was that the rest of the team used a speakerphone for all meetings, as did the other remote dev. I had a lot of trouble hearing people. –  Michael Kohne Dec 6 '11 at 20:09
add comment

Please consider these (pre-written by my coauthor and myself, not quoted here):

It's hard being distributed, and especially if you have an agile team. I'm a distributed team member (part of the time) and have worked as a distributed member for years. It is hard. It is especially hard on the managers who don't see you working or hear you talking about your work.

It's hard on teammates (as described in the articles above).

If you're doing solo work, and you can do it in isolation from the other employees of the team, and you turn in frequent increments of work to the boss, it can work.

If you work very tightly with other teammates through remote collaboration tools (webex, etc) then it can work. In may cases, it does not work even though it has every reason to work fine.

If I were the manager, distributed team members probably would not be my default initial stance.

See the 5-point list by JW01 here (nice work, JW01).

share|improve this answer
    
Tks for the edits, friends. –  tottinge Dec 2 '11 at 4:05
add comment

It has a lot to do with company's culture. If a company is set up to operate in a way that many (or most) developers work remotely, it can be done. It is much harder if only a small part of the team works that way.

share|improve this answer
add comment

The reality is that many companies are stuck in the 1950s factory worker mentality, where the rule of the day was You can't manage what you can't see. These places are so caught up in squeezing every productive hour out of employees that the concept of remote work is an anathema. How dare I let somebody work from home where they might take an extra 30 minutes of lunch to do groceries, or god forbid they might have to pick their child up from school.

That's the answer, plain and simple. The status quo of companies are used to making sure everyone is in the office and at their desk typing away, so it's very hard to modernize them.

share|improve this answer
    
-1, as per the many astute response above: "face to face" trumps all in team development work. –  Vector Dec 7 '11 at 0:32
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.