Development Abstraction Layer
Once again, Joel shows us that he’s the man. I was actually going to write about this topic, because it keeps popping up. Besides my time at 3M, I would always find myself asking for new hardware. It seems like such an easy decision – if you’re developing software, you need good hardware. Or maybe I should say, if you’re developing software and you care about how your time is spent, you need good hardware.
A programmer is most productive with a quiet private office, a great computer, unlimited beverages, an ambient temperature between 68 and 72 degrees (F), no glare on the screen, a chair that’s so comfortable you don’t feel it, an administrator that brings them their mail and orders manuals and books, a system administrator who makes the Internet as available as oxygen, a tester to find the bugs they just can’t see, a graphic designer to make their screens beautiful, a team of marketing people to make the masses want their products, a team of sales people to make sure the masses can get these products, some patient tech support saints who help customers get the product working and help the programmers understand what problems are generating the tech support calls, and about a dozen other support and administrative functions which, in a typical company, add up to about 80% of the payroll. It is not a coincidence that the Roman army had a ratio of four servants for every soldier. This was not decadence. Modern armies probably run 7:1. (Here’s something Pradeep Singh taught me today: if only 20% of your staff is programmers, and you can save 50% on salary by outsourcing programmers to India, well, how much of a competitive advantage are you really going to get out of that 10% savings?)
I’m actually not even as picky as Joel. Besides a fast computer, I need a flexible schedule (or free childcare – your choice ;) ). Having my own office and being able to get the supplies I need (books, software) in less than a month would both be bonuses.
When I work for companies that don’t even come close to what Joel describes I find myself ready to leave after a few months. I’m starting to think that Joel is in his own little world – I’ve never worked for or even seen a company that treats their developers like this.