Ask HN: Would you work at a startup that requires you to use Linux?
All of our systems (development, live, etc.) run Linux with a relatively complex configuration. We're thinking of issuing our first new hires (all software devs) pre-configured Thinkpad T Series (http://shop.lenovo.com/us/notebooks/thinkpad/t-series) and only allowing local development on those machines.
We suspect it is possible to get our development system running in other operating systems (OSX/windows), but we have no idea how long set up will take and prefer model and OS standardization.
I realize some 2/3 of you use OSX. Are you particularly attached to the Mac and/or its OS - or would you willing to work with a Thinkpad/Linux development environment?
Note: We're cool with anyone choosing their IDE, GUI, etc. We'd just rather not deal with A) buying and managing radically different laptop models, B) getting packages our system requires working in other operating systems, C) insecure systems (e.g. HD encryption is a must).
Extra question: A more general question is how often do startups mandate using their issued equipment for work? I've seen this done at every place I've worked thus far but am not sure if it is generally true.
98 comments
[ 3.9 ms ] story [ 164 ms ] threadI haven't worked at a place yet that didn't budget a little time up front for me to get up and running, but it's mainly the feeling of restriction that gets to me. What if the coders get upset enough that they start developing remotely, pushing all their code back and forth over ssh/rsync/whatever, and using their laptops as thin clients? Do you block ssh traffic? Ouch. Lots of coders are brilliant and love subverting restrictions. It seems keeping everything locked up could turn demoralizing for both sides to say nothing of the huge time sink.
From this: http://superuser.com/questions/146623/performance-impact-of-... it seems like it'd be noticeable (20% I/O hit).
VMs are fast enough these days. So fast, in fact, that I'm regularly blown away by them even though I use them so much.
We're not concerned about disk I/O but the app does have heavy network I/O. (though latency rather than bandwidth is the main concern).
Also, I assume for virtualization you are talking about the worst case (perf-wise): running Linux in a VM inside another operating system? Rather than the better one of having a hypervisor directly manage both the user's main OS (win/osx) and linux?
Yes. I usually run Linux and WinXP on top of OS X and WinXP on top of Linux. Works great!
EDIT: I use VirtualBox OSE. VMWare works even better if you can afford it. Sometimes I use Qemu for trying out toy operating systems, but I find it too slow for actual work.
Our local deploy process is mostly scripted so it's not much of a pain point to have to redeploy new changes.
I'm liking the VM ideas people have been talking about here; is it possible to just mount the guest OS' file system on the host (perhaps by running an NFS server in the VM) and develop directly on it?
I think there are more Linux users on HN than you realize. I found this poll: http://news.ycombinator.com/item?id=687267 which seems to indicate that there are roughly the same number of linux users as OSX users.
And OS X works well enough (and does things in just a Unix-y enough fashion) that there's no really compelling reason to use Linux on the Apple hardware. Not to mention those of us that do iPhone dev...
On the hardware, is not receiving Apple's a dealbreaker? Apples is definitely quite nice - and if we issued someone some low-end netbook I would definitely see a morale issue that could occur. But a Thinkpad T-series is very high end (imo, better than a macbook when using linux)
I was more responding negatively to the idea that other machines wouldn't be allowed to be used in development at all (personal machines, for instance, which almost every person worth hiring will have at least one of, and in many cases, which they'll vastly prefer to use), but I re-read, and realize that you mentioned security concerns. That changes matters quite a bit, assuming the security issues are really important (having an internally-perceived killer app and worrying about it getting out -> not necessarily very important; working in an industry where competitors regularly steal trade secrets [finance and gambling, for instance], or where regulations/investors demand tight security, -> important!); I would usually be annoyed if I was not allowed to use my personal machine for dev, but if there are legit security requirements, it's a lot more understandable, and I wouldn't have any problems at all using a standardized stack.
Honestly, from my point of view I'd be fine with any OS restriction that's not Windows. It sounds like OS X is not a real option for the work that you need people to do, so it's perfectly reasonable to insist on Linux, and the Thinkpads are very nice machines (I actually quite like the "nub" for mouse control), so I don't think you'll hear too many complaints if you offer them.
It wouldn't bother me, but I agree with others who suggested that a VM approach would be preferable if available. Or, what about a Macbook Pro in dual boot config with vmware to boot up the other partition from OSX for non performance critical stuff?
I've worked previously at companies that required development environment standardization on a Windows XP machine in the same way you're discussing. That was a little difficult for me. I'd never developed on XP before, I grew up on Mac and switched to Linux in college. But with some help from my coworkers I got used to it. And the standard configuration made sense. It was the configuration our app was intended to run in. The one our fairly small customer base all used. It wouldn't have made any sense to develop in my preferred environment because the application wouldn't have even run in my preferred environment!
If your program runs live only on a system with your particular configuration, such as with web applications, then it makes perfect sense to have the development environment mimic it. In fact, I would want the development environments to minic it as closely as humanly possible. The testing environments on the other hand - are a different story. But I'll assume you have that ironed out too.
That said, give'em a VM, let them use anything they want, and if they want they can attempt to replicate the VM onto their machine. It's us to them to become competant, not you to say "Well you're probably NOT, so no soup for you!"
It kinda sucks, but for front-end devs/designers like me it's a necessary evil.
So my answer would be: If your potential employee refuses to work on Linux, or Windows, or OSX or NeXT or whatever... you probably don't want them.
Depends on said complexity.
You listed three notes above. (A) is odd. For (B), similar packages should be obtainable unless it's a proprietary package for your startup. (C) Encryption is pretty well supported on OS X and Linux. Scratch Windows.
I'm sure some devs would welcome a new laptop. However, being restricted to just that without good reason will strike most as odd. Trust your devs to be able to setup their own dev environment. Allow other environments if they can make it work.
At the end of the day, it seems like the underlying message is what counts. Does it appear that you are encouraging or dictating ?
On the points: A: This may be less necessary than I believe admittedly. I've only worked at companies with 100+ people before, all who gave similar hardware. The advantages were in the ability to swap computers. If your computer dies, you get a spare immediately (you can even swap the HD!) as repairs occur. If someone leaves, the computer can be given to the next hire (or an intern). B: Our dependencies are all open source. The full system though (needed for testing) uses kernel modules which don't have a (fully working) mac port. C: That's good to know. (hopefully easy on OS X -- no one currently in the company uses it).
Finally, again in the companies I worked, it was pretty much expected that company development stayed on company equipment, mostly for security issues. Is it pretty common in companies with < 20 people for devs to bring their own machines?
With A: Standardization is good but it probably takes at most a day to setup a new computer. It takes weeks to learn and master a new environment though. Productivity is probably paramount in a small company more than standardization.
B: Ah, but if your dev could get it working on a mac, would it be ok? If not why? How about BSD, or some other linux distro different from your intended setup?
C: As someone else mentioned elsewhere, enforcing restrictions is easier said than done. The key question to a dev is why? In some ways that just discourages devs away from working on the project as much as they like.
The key point here is that in a small <20 company, you want to attract the best talent that's out there. Someone who's at the top of their game. Most likely they will have their own machine with their own setup. A % of them will likely stick to their own setup instead of using two computers.
You may employ contractors too. That makes it even more likely they prefer their own machine.
Being offered a choice, i.e. You can use your own computer, and here are some things you need to do too (encryption, etc) or here's a brand new one all setup is infinitely better than You must use this only
I've come across this same question from a different angle before, when applying for jobs, at the interview stage i always ask if i'm free to chose my dev environment, the majority of companies are fine with it. I've come across a few that require a windows environment and even some that require eclipse or zend IDE (i prefer gedit) and because of this I have passed on the job whether i have been offered it or not.
While the main reason is because i'm a million times more productive on my setup of choice but its not the only reason, its also a red flag that the company's culture is rigid and probably a shitty place to work.
Obviously there are exceptions, but i think the best rule of thumb is to let the developer choose their own tools, set them a task and get out their way.
Seriously, as long as the development environment allows me to get things done, I'm not sure I care too much about the underlying OS.
Here everyone is free to pick the laptop OS they want. For the moment it's 100 % Windows 7 + VMWare. Our software is multiplatform (Windows/Linux/FreeBSD).
I submit Windows 7 will keep the high ground for developers because of VS2010.
...oh, wait, I get it. You're one of those, aren't you? :P
Editor holy wars aside, on OS X it doesn't appear that you're even able to remap caps lock to escape, at least without some additional add-ons installed. So you might be out of luck.
Mandating that all dev must be done on a particular Thinkpad model, though, is a bit of a company smell. I can't think of many good reasons to prohibit other machines from being used.
I'd suggest the Thinkpads, by all means, but I wouldn't ban everything else; unless the hardware requirements are very specific, different hardware should make no difference at all, as long as people have the same software running.
Even as far as OS goes, if someone's able to get everything going on their own time on their own Macbook, is that really a problem worth worrying about? Provide the standard config, but if someone wants to go above and beyond, who cares? They've always got the standard rig to fall back on...
The distros have killed Python
Just a counterpoint to "If your stuff runs in Linux, your stuff runs in Linux"
Not only that, but in many distros if you "upgrade" you can actually destroy base systems needed to manage the OS. Because upgrading Python is either painful or nearly impossible...
Point being that it is not unreasonable for companies to expect homogeneity and focus on innovating on features, rather than supporting dev environments.
In most cases, it isnt a problem, but often it turns out to be. For example, my linux machine has vm.overcommit_memory set to 0, which Redis aint comfortable with.
What I notice, however, is that people dont mind when they are "forced" to work on OSX (and given free Macbooks). I wonder if it is truly standards "Nazi-ism" that people are concerned with or is it simply a case of teh shineeyy.
It's not actually that difficult. You need not upgrade your python. You just need one more python. I have been successfully using this setup on RHEL 5 and Ubuntu. And you can couple it with virtualenv and pip to have a sandbox. I would say it has become standard practice in the python dev community.
The author specifically mentioned the need for a complicated setup including hard disk encryption. I take that as meaning the development environment includes some company secret that should be protected as if they were nuclear launch codes. Which, in turn, is difficult to do at all and hideously difficult to do on your own.
I've always been both a happy Linux user and a happy Thinkpad user, but I guess it'd be a productivity boost if you let people choose between different models (e.g., a 15", a 14" and a 12" model, because people have different tradeoffs between mobility and primary screen size).
And if the contents of your development environment has vaguely less security impact than nuclear launch codes, you should consider how much productivity exactly you're willing to forego for reasons of paranoia. (Using a different development environment is pretty much bound to lead to distractions because you need to actively think about key combinations etc., especially when switching between the braindead-but-largely-consistent Mac key combos and the more-standard-but-sometimes-less-so Linux app key combos).
"only allowing local development on those machines" "insecure systems (e.g. HD encryption is a must)"
That kind of restriction had better come with laws mandating it. I would not work for a company that doesn't trust me to use my own machines to do work. I think that you're worrying about "managing radically different laptop models" shows that you aren't trusting your devs to be competent enough to manage their own machines.
That said, I'd be hesitant to work for a company that demanded I use specific software for no apparent reason. There are plenty of good reasons, of course, though it's not clear whether any apply in this case. Either way, I don't think I'd tolerate not being root on my development box.
I can manage my own Linux machine and have been doing it for the last 7 years, but it would be nice to have someone competent enough in the company to which I can delegate such tasks.
Considering the shit you have to do to get some hardware working properly on Linux, having a standard selection of hardware is actually pretty good (I have been giving this advice for years), and if that means the company "doesn't trust" me, then I could do without that trust.
Also any company will also have administrative personnel or sales/marketing people, i.e. not everyone is a Linux-guru. And going Linux (instead of OS X / Windows) makes sense for a startup since it reduces the costs involved, but that's only if you can fix your employees problems with their setup, otherwise it becomes a serious time-sink.
I would say have a configuration in place, but if a developer wants a different setup, let them be the ultimate decision maker in the tools they use, even if the management thinks that they have something better.
The only company I've ever worked for (out of 4 web design jobs) that insisted certain hardware/software was an ad agency where the owner had no knowledge of web development but liked apples because they thought they were cool. I had to put up with the first-gen intel macs on OSX for about 9 months before I left.