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've played with the thought of how I would construct my dream company and how one could make it highly attractive to great programmers. If one could employ a few "superstar" programmers instead of many "good" ones.

One thing I personally would enjoy is the freedom to work from whenever I wanted. So I could travel around different cities if I felt like it and work remotely, or I could simply sit at home when there was crunch mode. In my experience however you do want some kind of office with peers where you can discuss things and have company "culture"

So say you wanted to hire a bunch of top talent programmers, possibly from different countries and cities. How would one set it up to compete with campuses? Having a completely office-less company seems a bit sub-optimal, you probably want some office space where people can meet and chose to work from.

I guess what one could do is have small offices in different countries and let people work from the ones they chose. Programmer's could take off for "crunch-modes" when warranted but also work from location when teamwork and face to face was needed

Another model would be to instead of having offices of your own hire seats in offices where other programmers work. That way even if there's only one or two employees in your city you could still get some company if you felt "lonely" from working remotely.

Another idea is that like one week every other month you take the whole team to the same location. Which might not be an office but could be just some interesting city or attractice resort and work together from there. People with spouses might have a problem with things like that though.

You might also have a network of company apartments in different cities (for 2-3 people) , both where you have offices and also in some other locations so programmers or teams or programmers could roam around and "clump" together as they wish.

If it was legal (I'm not sure how it differs from country to country) you could even swat two flies in one go and have combined office/apartments in different cities. "Hack Pad: London" "Hack Pad:Berlin" etc

a) So I guess my questions are, would a setup like this be viable? How could one improve the concept?

b) Would you find a company which gives you this kind of freedom attractive or would you prefer one with a big office you go into every day?

So basically, what would make a "superstar" programmer chose working with a company setup like this instead at the google, facebook or microsoft campus where you get the fun and company of lots of talented individuals.

share|improve this question
    
You've just described my dream job. Working and traveling at the same time, roaming the Wi-Fis of fine patrons, in their fine cities, with their fine inhabitants. Alas, running a business on such a model is a different story entirely. –  Filip Dupanović Jan 19 '11 at 18:07
add comment

10 Answers

up vote 4 down vote accepted

Here is what I've observed while working with distributed team (offshore and not offshore) for the past 10 years in both large enterprise projects and startups.

Having a distributed has a cost. It can be huge if the team works on the same parts of a project. So this is true for large enterprise projects which requires high collaboration and communication.

However it works pretty well in small startups. My current team is spread all over the world, but it works because they have a very well defined role (not recommended in a team at the same location) and the API they work on is pretty well defined. People that works on the same module are at the same geographical position.

I think it's how SO do things. Many large open source projects work like that too.

However always remind yourself that, in most case:

it is viable, but a distributed team cost more that a colocated one in most cases

Don't forget the social aspect too. I've been working for a year alone at home, and while I enjoyed that the first month, I try to avoid it now. Because of the social aspects. I also observed that when a team membere is located at a different place, he is not really part of the team in the collective unconscious.

Costs are increased due to:

  • comunication problems (more frequent than you think in that setup) in the team, with users or management (have you tried to resolve a conflict in emails or phone?)
  • inability for your team to learn from each other effectively (great impact)
  • inability for your team to help each other effectively (huge impact)
  • reduced feeling of being in a (real) team reduce motivation
  • procrastination is more frequent when you are alone. You are not in the pace of the team. Not everybody has the self discipline to work remotely.
  • since you don't feel part a something physically, there is a higher turnover
share|improve this answer
    
+1, Good answer from someone that actually have experience. Only missing why it incurres a greater cost. –  user1041 Jan 19 '11 at 9:59
    
I'll fix that in a minute –  user2567 Jan 19 '11 at 10:37
    
I agree, there's lot's of cost involved in working remotely, I've tried it myself and you get lots of things done but in the long run the physical and social aspects tend to make it less appealing. That's at the core of my question, how can one make a distributed company not only on par with a normal one, but even make it more appealing. It's not an easy one –  konrad Jan 19 '11 at 15:04
add comment

While having a real office is a necessity (for legal and financial reasons), a distributed setup can be viable. A burning example of this is StackOverflow as Jeff Atwood points out in this blog post.

share|improve this answer
    
What kind of legal reasons? –  Matthew Read Jan 19 '11 at 5:31
    
@Mathhew When you are setting up a company, you have to follow some government regulations. For example, in India you have to obtain Permanent Account Number (PAN) from Income Tax Department, obey Shop and Establishments Act, etc. All these formalities require a correspondence address (preferably on your company's letterhead). So you do need an office. I am sorry if I am not as clear as I should be, but hey I am not a legal expert. :) –  Mayank Jan 19 '11 at 5:45
    
@Mayank - Rules are different in different countries. In the USA I know of a few virtual companies. There is a physical address, but it's usually a post office box. Interesting to know about India though. Are there ways to get around that rule? –  jmort253 Jan 19 '11 at 6:04
    
@jmort253 No I don't know ways to get around the rules. :) –  Mayank Jan 19 '11 at 6:17
    
Erm - the necessity for a correspondence address doesn't mean that you have to have an office - or at least not your own office. I'd be astonished if there weren't businesses in India that provided a suitable service to manage this. –  Murph Jan 19 '11 at 10:18
show 1 more comment

I would love the idea of the roaming office, as long as I could stay in contact with the rest of my team (ie. over IM or something). It would also help to keep things fresh, I think, and a bit more interesting.

share|improve this answer
add comment

"So basically, what would make a "superstar" programmer chose working with a company setup like this instead at the "google plex" or microsoft campus"...nothing other than he/she wants to.

It is going to come down to personal preference. Personally, I would rather go into the office everyday, but I have my own office and only I live 10mins away...so take my opinion for what you will.

share|improve this answer
add comment

It can be extremely viable, provided that you give people the tools that they need to work with. You need the same tools that you would have in a conventional office:

  • PBX / Phone System
  • Document storage / collaboration
  • Storage servers for checking in code / backups
  • Build / test servers

You'll also need some things in place for the administrative end:

  • Some kind of HR system, especially if you bill clients for time
  • Some kind of CRM (optional, but nice)

There are on-line services like Creately that make collaborating relatively painless. It isn't an exact substitute for a good old fashioned white board, but white boards generally don't have save buttons.

Be prepared to ship people what they need to do their job. Just like you would in an office, you want to make sure your people have the hardware that they need to be productive. This also includes IP phones (Polycom on my desk), software licenses (company is a MS partner) and other things that people tend to need.

Additionally, you have to provide programs for employees to get books that they might need. If you set up a company account at Amazon, send the employees the money to pay for the book but have them use your affiliate ID, you recoup a small part of that cost.

A decent company should treat their people to lunch at least a few times a week. Provide an allowance for that. I actually enjoy going to the deli once a week to pick out the stuff I want for lunch the following week. This also helps the remote worker feel more connected to the company. Keep in mind that the employee pays for stuff like electricity, so if you send them a bunch of power sucking storage servers to configure, be sure to send them something to offset the cost.

If you manage it correctly, you'll be every bit as productive as you would if everyone was working under one roof. People should understand that they are expected to be at their desk at a certain time and expected to accomplish a certain amount of work. Good bug / task tracking systems show any problems in this area quickly.

As you mature as a company, you'll develop your own systems and controls that make adding additional employees from anywhere in the world painless. We do have some space secured in areas where we have several telecommuters, but it is rarely used. Most people really like working from home.

share|improve this answer
add comment

You could make sure that each (or a sampling) employee had more than one work area set up in their home office if they worked remotely. This could allow them to have guest co-workers for those times where you want/need to work as a team.

I think it would be best to also have a regularly scheduled day where you did go into the office besides the random days that people choose to. That way you can have more of the face to face discussions.

I would be more productive in that type of environment because the days where I needed to to just be alone and work vs. working with others would be better defined. Team members would still be accessable if needed.

share|improve this answer
    
yeah, it'd probably be good to have like mondays and fridays be general (if not strictly mandatory) "office" days –  konrad Jan 19 '11 at 5:31
add comment

The distributed office is a great idea if you're sure of the dedication of the team members and don't have to worry about how the work is being done.

A network of superstar programmers would be more reliable than the average guys. I don't think you'll need an office in every country; several programmers reporting to the global headquarters would be good enough.

Only at a later stage, office space might become inevitable, particularly since more of your personnel will be meeting clients and linking up with trainees to deal with greater business growth.

share|improve this answer
add comment

Technology has come a long way to allowing us to work remotely, and this technology keeps on improving.

The better the technology gets, the more connected we become, even with distance.

Improved Setup:

I always pictured remote workers eventually having an "always-on" group video chat on a third or fourth monitor on their workstation, or some equivalent means of staying in constant contact with the rest of the team. This is what I picture as an "improved setup".

I find that sometimes when I'm working with a remote coworker, we leave our Skype video calls on while we both are working on something that requires our individual focus.

The analogy is this: If we were both working in the same office, we wouldn't necessarily be always talking to one another. Thus, we need to learn to treat these technologies in the same manner as just silently being in the same room with a coworker.

Keep in mind that this is already viable, as is! Check out these people who are traveling the world while gainfully employed!

Would I find this attractive?

Would I find this attractive? YES! Imagine the freedom and flexibility of being able to have a great career and yet still be free to live your dream of traveling the world! I hope my place of business can one day progress to this level.

share|improve this answer
add comment

Try to read Rework (by the people from 37signals), it specifically addresses the issues of remote working, the team of superstar programmers and many others that they had to deal with, first hand. Not an oh-It-changed-my-life-and-how-I-think-about-starting-a-business book, but still pretty interesting.

share|improve this answer
add comment

I really don't have any idea about how a company should be organized, but I can tell you what I'd love to have:

  • Work from seats/cubicles/rooms in shared offices (rooms shared with another developer from the same team would be great, I suggest hiring at least two developers in the same city);
  • Meeting once a month with all the other developers, for four days. Assuming a Scrum scenario, these meetings will be more or less like this:
    • Day 1, ideally Saturday - no work the day before: morning, sprint review; afternoon, sprint retrospective; dinner, some group going-out;
    • Day 2, Sunday: chilling out in the resort, socialization etc.;
    • Day 3, Monday: sprint planning;
    • Day 4, afternoon, relaxed development - as in, very small daily assignments, something that could ideally be done in half the time, and very big pauses at given times; in this pauses, developers will be invited to ask about each other's code - things that looked funny; things that looked smart and so on.

Always-on skype distracts me a lot; I would like to have video calls limited to a specific time every day.

The idea is having everything clarified in the monthly meeting, in order to reduce technical communication during the month.

share|improve this answer
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.