Programmer's time - part 1
I’ve dealt with a lot of tech companies over the course of my career and I’ve noticed something unique about the successful ones. There’s a strong correlation between being a successful company and several various traits like quick product development and attracting top talent. There’s several key elements of these companies’ cultures that just make them stand out. One of the biggest common denominators that I’ve witnessed is how the company treats its employees’ time, and more specifically for this post, its programmers’ time.
Ask anyone who’s working in a software company what’s the company’s most valuable resource, and if they know what they’re talking about they should always say the same - our developers’ time. I’ve yet to meet any manager to tell me that her programmers are just way too fast, flying through the backlog and sit around most of the day twiddling their thumbs with nothing to do.
So we’re all in agreement here right? I mean, if Jeff Atwood wrote a whole post on it almost 10 years ago, then it must be an industry standard by now. From now on, we should make sure that our developers time is utilized intelligently and anything that the company can do to make their lives a little easier, well frankly it should. Some companies take that to an extreme, take Google as an example. Onsite gym? Maid and laundry services? Meals taken care of? Yep, all those so that every single minute of every developer’s time while working is 100% utilized towards actual work.
This doesn’t necessarily mean that your company needs to do exactly the same as Google. I mean, taking care of your devs’ laundry is nice, but isn’t really necessary, especially if you’re running a startup. Sure, sticking to your budget is important, so it’s clearly valuable to identify areas which are low hanging fruit - cheap and beneficial. One particular area which can greatly aid developer time utilization, but which is often ignored, is surprisingly a very simple one - equipment. Putting great hardware at your devs’ fingertips is super important, and the company starts reaping the benefits right away.
Imagine a simple scenario - Sarah is a developer who starts working at your company. Her natural inclination is towards Linux, she just loves that OS. She has plenty of ready made scripts and aliases, and she knows how to get the work done well quickly and efficiently, provided that she’s allowed to use Linux and to customize it. But the company doesn’t have any developers that work with Linux, so that would require a bit of effort from both IT and finance departments. So, instead of a powerful Linux development machine, she gets a generic PC with Windows installed on it.
Let’s assume simple numbers here, and say that Sarah is 5% more efficient if she’s given her OS and hardware of choice. This means that in a regular 20 work day month, Sarah would be able to actually provide 21 work days. Annually this comes out to 12 additional work days, a little over two weeks (assuming 5 work days a week). Now, show me the product manager who wouldn’t jump at the opportunity to add an additional two week sprint a year (+ 2 days!) for the lowly price of a laptop with Linux on it. Of course we’re talking conservatively here, some developers after honing their skills for years with a given setup can be up to 20% more effective.
Does it truly make sense to hire a $90K a year developer only to turn around and hand them a $700 machine to work on? If your company is planning on spending $180K on that developer in the next two years, it makes perfect sense to get her a beast of a machine for $5K. This represents a measly 2.77% addition on top of her pay. Trust me on this one when I say the productivity boost is well above 2.77%.
This is why it still baffles me that there are companies out there which will force developers to work with a particular OS, a given set of tools and sometimes even low grade hardware. All that time spent sifting through CVs, interviewing and painstakingly going through references only to shoot your developer in the foot by forcing her to work on a crappy desktop computer solely because “that’s what IT said you should use”. I’m intentionally leaving out how the developer actually feels about all this and just looking at the cold hard numbers. It’s natural to assume that this type of situation would make most professional developers uncomfortable, but that’s beside the point (for now anyway).
So how does this keep happening? I’ve mostly witnessed this phenomenon in places where the company’s culture isn’t a technical one. It’s mostly true for places that aren’t the Valley or real tech hubs, but it’s still infuriating nonetheless. I assume that most of the time, management tries to save costs, I mean after all, developers are so expensive that sometimes other places need to have their spending cut. This is the root of the problem though, if developers are so expensive, you truly need to maximize their output.
Do yourself a favor, forget the laundry service, get your developers monstrous machines and for Pete’s sake let them configure them on their own. It’s truly one of the best investments any software company out there can make.