As a consultant, I have the opportunity to work at a wide range of clients. I get a lot of variety this way, and it keeps things interesting. It also gives me a chance to see patterns across different companies. Occasionally, one of them hits me as being particularly interesting. I’ve noticed that the allocation of new computers is nearly always a huge political mess, in which IT has to decide who gets the new gear. There’s lots of whining, and posturing, and a lot of hurt feelings as those who feel that they “deserve” the shiny new computer fight over it.
Occasionally, I get to work at a client that gets it right, but the vast majority of the time, I walk in to find the computer they’ve assigned me to work on is underpowered for the task. Sometimes I get a “standard” computer… whatever it is that they happen to buy in bulk from Dell. There’s actually a good reason for this, since it’s error-prone and inefficient for their IT department to maintain a random assortment of different machines. Sometimes, though, I walk in and sit down at the hand-me-down that no-one wanted any more.
My current client isn’t like this at all, they order fresh new machines for the new developers coming onto the project. A new one came in yesterday and I started setting it up with the tools we need to do our jobs. It made me think about the situation at other clients, though, and I decided that it’s a matter of perception.
When Joe, the full-time employee who’s been with the client since the dawn of time hears that new machines are coming in. This is how Joe sees things.
To a certain extent, this is fair. The newer computers are faster. They are shinier. They generally have fewer problems. There’s more to it than that, though. Let me show you how a software developer sees things. When I look at a typical user’s machine. I don’t see a rusting, broken down Fiat 126. I see a Ford Taurus, specifically the station wagon version… white, with no pinstripes.
It’s not broken down, but it’s certainly not sexy, either. It’s functional, and everything your average user needs for hauling the kids back and forth to soccer practice or a weekend camping trip. It is, in every important respect, perfectly adequate for the average user’s needs. Now here’s I see when we look at the new quad-core machines with 8 gigs of RAM and dual 20” widescreen, flat-panel monitors.
Is it shiny? Sure it is; It’s brand new, right? Is it sexy? Uh… no, not really. Here’s the important part of the metaphor, though. I might need the backhoe to build a house, but I don’t need one to live in it. I’m a consultant, and people bring me into their business to build things, not use them. Developers have a completely different set of requirements.
If we developers do our jobs well, the users double-click on an icon for the thing we’ve been building, the program loads up, and it runs. As developers, we don’t spend our days clicking on icons for finished things, though. We click on a “run” button, and the whole program and all of its supporting parts get rebuilt from scratch. This happens every single time we run the program. If we’re doing things correctly, we also run an exhaustive set of unit tests several times a day. Furthermore, if we’re following a test or behavior-driven design methodology, we run the tests even more often than we run the actual program. The longer the build and test process takes, the longer we are literally being paid to watch an hourglass.
A co-worker of mine, Jon Kruger, did some math which illustrates the cost savings of upgrading developer machines. You can read it here: Why your company should buy you a new dev machine today. That’s not really the point of my post today, though. My point is that too often, the allocation of hardware is not based on who actually needs, or could make the best use of it. Allocation is more often than not driven by politics, or by some arbitrary perception of who “deserves” the new computer. I think changing how we look at the situation could make a huge difference. Maybe it’s just a matter of phrasing.
The new machine is not a Maserati, it’s a backhoe.