Hacker News new | ask | show | jobs
by superuser2 3482 days ago
Every minute of prerequisite to get someone new to the project to the point of "I edit code and see its influence on the program's behavior" is toxic waste. Minutes spent getting or recovering a working desktop shell are radioactive toxic waste.

Smart companies ruthlessly optimize and automate these things. IMO it's usually unconscionable not to. Maybe that means Puppet manifests for the laptop model and linux distro the company has chosen to issue developers. Maybe it means a handcrafted AMI for cloud dev VMs where everything already "just works" + a pointer to a decent code sync tool for local editing. Maybe it means shell scripts for OSX. Or some combination. It also usually means the ability to hand off your current "broken" computer and get a new one with minimal friction and in less than half an hour.

But it any case, throwing away the work that was done for you and lighting your own time on fire (or worse, expecting others to light their time on fire) to satisfy your personal taste in operating systems is almost certainly a bad idea, and something employers should not humor.

And if the automation work hasn't been done yet, the employer should insist that the next person to stumble through setup leave behind a script that will work for everyone else (i.e. in the environment that everyone else is using).

My company lets new hires choose to be issued Thinkpads with Ubuntu. Inevitably within the first few days of training or work something doesn't work as expected, and they are rightly told to go back to IT and exchange it for a Mac, because it isn't anyone else's job to help you make your nonstandard environment choices functional.

2 comments

Nonsense. Don't force employees into any particular environment. While a good developer will always be able to adapt to using a new set of equipment, I'd wager that the productivity gain from allowing them to customise it will exceed any costs involved in helping them set it up.

Anyway, I reckon the time spent writing automation scripts would be better spent fixing your application so that it's dev setup process is less broken :)

I'm with you. Besides, if someone asked me to run some puppet or whatever on my laptop at a client; I'm not sure I'd be able to stop myself from getting physical...

Docker is really found a sweet spot here though. You can pull in, move around, clone, bla bla whole working environments, or just skels which are ready to run/compile your code with a simple bunch of commands and it works pretty agnostically across almost all clients.

Doing a 'docker run someapp:prod' should be within grasp of anyone without the load of 'stuff'/config mgt that we had to deal with back in the vagrant dayz..

Exactly! Sure, I can use eclipse. But I'll probably write 10x code if you let me use vim, exactly as I've configured it on my own laptop. I did configure it that way for a reason.
Not so sure I really follow this.. I think you might be taking that to a bit of an extreme here. The problem you describe is the reason why we ended up with things like vagrant, and why docker is a good tool to get various setups to a 'common state' for work these days.

Even with those tools though -- there are probably a few setup things that will need to run before I can start using these things and forcing everyone to use something they might not like/know just to make that setup bit quicker seems like shooting yourself in the foot.

I'm a better developer when I'm working in my personalised environment (which I've been tweaking to my own and really specific requirements for over a decade, and that applies to most of us) than I am when being forced to adopt someone else's.

We're a pretty picky bunch, some of us will want intellij and others emacs. Maybe someone wants to use BSD or Gentoo or OSX. You consider it radioactive toxic waste for devs to have their own work environment instead of adopting what the first person on the project uses?

I'll conceed there might be a time saving in the first day on the project, but that barely counts in the bigger scheme.

As an employer, I want my devs to work in whatever way they're most comfortable (and thus, productive) doing so. Forcing tooling across the board produces the reverse effect.

edit: and not to be too harsh, but if your developers can't even run their code on their machines then perhaps you hired the wrong developers...