Ask HN: Developer workstation setup to promote startup culture?
I’m interested to hear HN’ers views on how best to set up developer’s workstations to promote both the startup mentality we want and also for good productivity. Based on my years as a developer at both startups and BigCo’s (and now I’m the co-founder), my proposal is:
Developer is provided a brand new iMac and a second Dell screen connected and set 90 degrees in portrait mode (as seen at Pivotal Labs, and others). Dell screen for writing code and the iMac screen for seeing results in the browser (we’re a web app)
We want developers to work almost all of the time in the office at the early stage of the company so collaboration between the team can occur. This is the thought behind issueing iMacs over laptops. We also want to create a culture where the work iMac is for dev and you can bring your own laptop in and hook it to our network for your own stuff (email checking, IM’ing, checking your bank online, etc).
I would be interested to hear other’s views on laptop vs fixed computer to encourage work to take place in the office, and also the idea of being strict on having work dev machines ‘clean’ of personal apps and use by encouraging the developer to use their own equipment for personal use during work.
Thanks
25 comments
[ 3.2 ms ] story [ 80.4 ms ] threadWe're a startup so our network is just our router plugged into the internet :)
The nice thing about having it as a laptop is if you have to go collaborate you can go to a meeting room and both sit down with your laptops. As opposed to, i don't know, really...
At my current work I often save a lot of time (and save myself from abject boredom), by bringing my laptop into meetings that are not really relevant to me, and hacking until the part of the meeting that I need to pay attention to is happening.
It seems that you are very insistent on the idea that the iMac will cause work to take place in the office. Really what it will do is cause work to not take place other places.
Lets say I have an iMac and we really need to get X feature over the goal line soon. If i want to put in a couple of extra hours at night to do that, I'll have to stay at the office. I don't particularly like the office (and its spooky at night there...), so I'll probably not do that.
If I have a laptop, I'll probably just unplug the laptop at 5:00 and take the darn thing home. Then I can work on whatever while eating caviar and watching MythBusters on FULL Cable, because of the billions in stock options i've made from our AWESOME web app.
I mean, if you want people to be at the office most of the time, I think you are well within your rights as an employer to say, 'Hey, i expect you to be here between X-hour and Y-hour'.
Anyway, iMac and Dell sounds very branded. I'd go with solid laptops running some version of Linux (whatever you are deploying on), and the nicest/biggest secondary screens that you can get on the cheap.
That's actually part of the point. I would like developers to put in good hours in the office but I don't want to create a culture of 80hr work weeks.
I'm mindful we're a startup and it's about putting in the hours - but my experience has been that "putting in the hours" often includes the procrastination in the office during the day OR it means doing lots and lots of work and the quality drops off as it's not sustainable.
Spend that money (and more) on getting everyone a MacBook Pro as well. As anonjon points out, if you don't give out laptops you might be discouraging working outside the office more than encouraging working at the office. An important part of startup culture, imho, is to not require face time at the office.
Shameless plug: I agree with you that encouraging collaboration is key. Since lots of teams are working in a distributed fashion these days, we think they need some other way to collaborate effectively. This is why we're building http://shoptalkapp.com . We've found that it even encourages more collaboration for those that are in the office.
If we were going to do that we could just buy MacBook Pros and be done with it.
Currently, my favorite spot is the office couch. Maybe next week it'll be the conference room table.
I encourage people at startups to integrate work with their life. It's not just a job.
That being said, my preferred rig is a macbook with wireless. It comes to the table for demos on the projector, it can sit at my desk or come to the couch.
It feels like you're treating your developers somewhat condesceningly. Go with laptops dude, and extra screens (2 large ones each) at the office. That's what developers like.
You should let people choose what sort of setup they want (within reason). Let them get a desktop if they just want to work in the office (which seems to be what you want anyway), and let them get a laptop if they prefer that. Linux, Mac, Windows, whatever. Let developers choose their own machine setup and they'll thank you for it. I can't even say how happy I was that I wasn't forced into a particular setup at my current job.
- the developer gets the hardware he wants to work with
- the developer feels a sense of 'ownership'
- the developer respects you for allowing him to choose
Mandate laptops because you super-awesome-change-the-world startup is going to inspire your developers to work hours outside of the office, even if you do mandate 8-5 office day.
Every developer gets two monitors, no exception.
You can't encourage a person to be an Olympic rower by simply providing a stool and a stick to paddle with.
The two screens sounds like it would help the immediate task, but I personally would not buy dell of anything. Samsung screens are great.
If you are a startup, I would not buy the macs, but I do buy the motherboards, cases, memory and disks and assemble them. Takes about an hour. You can put together a kick-ass development system for $500 not including monitors. Laptops are about half as cost effective or worse compared to desktops.
Definitely agree on the latter. From personal experience, having a cordial editor war in the office is a great way for coders to bounce ideas off each other, improve their skills, and build friendship and respect.
You are right, and my point was not to say the hardware setup is the be-all and end-all. But the scope of my question for HN in this instance was hardware setup.
I actually very much disagree with your idea of building your own computer... the time it takes to order all the components, receive it, put it together, tinker with the setup, etc is going to be longer than an hour. And if something breaks/goes wrong with one of the components then it's a nightmare trying to get it fixed. With an iMac (for example) it's just a case of getting AppleCare and then if something goes wrong they come by the office the next day and repair it or replace it. It doesn't matter what is wrong with it, or which part is at fault
My team's velocity is important and making sure I can be certain their rigs are stable and can be quickly fixed/repaired is important. (Not every developer likes to put computers together either, some may not have even done it before)
I also disagree about the $500 idea - two screens would probably be $500 alone and then conceivably the developer might want to have windows on there, which is an extra $200 now (windows, {shudder}).
The price I pay for the hardware is actually $300 retail quantity one, and the displays are about $200 each. I said $500 in case you want more beef in the system, say quad cores or such--I use dual. I load these up with ubuntu and off we go. I would rather spend larger dollars on the chairs (not a joel joke).
I order from tiger direct and have it the next day.
EDIT: I understand your point about giving them macs instead of windows. My situation is not web-based, so we are developing for linux servers.
If the developers you're bringing on board are any good, they'll have a favourite OS / IDE / byzantine .vimrc / etc. By letting them use it, you'll gain in productivity, and - particularly if they've previously worked for BigCos with silly tools restrictions - you'll gain a lot in morale. In my experience the thrill of "my employer bought me a shiny new Mac" wears off after a month, whereas "my employer encourages me to use the tools I'm best with" provides ongoing job satisfaction.
Regarding the work/personal split, it sounds like what you're worried about is people wasting time at work, getting distracted, or otherwise being less productive. IMHO that's a motivation issue, not a hardware issue. Good developers with interesting problems to work on need to be reminded to eat, not trained to work harder.
My two thoughts are:
Software Granted, the most important software is probably the IDE and those tend to be cross-OS (you can get eclipse or VIM to run on any OS) but you get issues on other software like Word. Suddenly that 5-seat license of Office for Mac doesn't accommodate my windows 7 developer so now I have to buy more licenses for him cos he uses Windows. And my Linux developer can't open the document in OpenOffice because it's using change tracking that his version doesn't support, etc.
We also can't use stuff like SubEtherEdit or Coda for join-development,
2) Scaling a dev team's needs - if we're designing for scale then we might have 10 developers by the end of 2010. It becomes a nightmare when half of your dev team is on mac, thee on windows, one on debian/ubuntu, one on fedora, etc.
But maybe these are not good enough reasons...
There are nearly always ways to work around compatibility differences. Sure you need word to talk to banks/accountants but most developers will be more then happy to work within a wiki. They have no need for Office (although sometimes Excel is worth having as a developer but open office will suffice for that)
The cost of finding these alternative routes is minimal especially if you find good developers who will no doubt have experience in this sort of thing. In fact you might create a more nimble work space if developers are used to accommodating others and are more open to change.
Good luck and be sure to let us all know how it goes :)
2) Standardising on anything that requires Mac OS means that you're pretty much stuck with people that are happy with Mac OS, and while admittedly that is not a small number of capable devs, others really hate it, and with very good reason.
3) Virtualisation can offset "essential" items in the standard operating environment, as long as they can run on platforms that can actually be virtualised, which is my Mac OS is such anathema here.
4) Having virtualised environments that are self contained working images of everything required to "be productive" takes the guess work out of "Does employee X have everything necessary" and drastically alleviates any crippling hardware issues, if all it takes to keep going is a virtualisation image and a new machine, disaster recovery becomes very trivial.
5) If you're really insistent on the whole "having everyone at the office" idea, you could even try trading out virtualisation for remote access to various environments. Once again, this is an Everything But Mac OS solution as OS X remote access is terribly bad compared to Windows or Linux based solutions (RDP / NX vs VNC)
6) That said, I think tying your team to their desks is a good way to annoy some people, long term if you decouple your team from the requirement to remain physically present you are a much more attractive opportunity than otherwise. Go distributed whenever possible, this means dev environments that have full deployments of whatever is necessary to work 100% offline. Git over subversion, make sure they have copies of databases that are required to actually run the code they're writing, etc etc etc. Long term goal should be that they can work from absolutely anywhere any time regardless of network access.
I would recommend letting your people check personal e-mail, IM, etc..., from the work machines. It really won’t hurt anything and it will make for a happier employee. I would also not want personal laptops on the company LAN because of the chance of spreading viruses or stealing IP.
As far as software, any e-mail client that downloads a copy of the email to the employee’s machine as well as leaves a copy on the server would be my recommendation. If the person wants to use the client for personal mail too, split the mailbox inbox folders based on xxx@personal.com and xxx@company.com. I would also add MS Word and MS One-Note which a lot of people seem to like.
Personally I like Windows Live Messenger because it can send and receive free SMS (personally I use it a lot). Also if you’re not backing up in-house add a backup client like Mozy.com and your all set.
You might also want to put a policy in place that the employee cannot self install any software without your approval. Basically, if someone wants to add Trillion, or their favorite development workbench they must ask because the hardware does not belong to them and you will know what’s on the machine if it fails and must be restored.
If you really want to make developers happy, give them a budget and let them buy a computer. Several people in the comments said they like Mac laptops. I personally love my Linux desktop machine with a good keyboard. Which is the point: we are all different, and have different preferences.
If you don't trust your developers that much, at the very least let them configure their software the way they like. I'm sure your startup needs the coders to be productive. Don't prevent that.