News

Tools of the Trade

There are times when we all act like software is born out of pure thought, hurled on to CD-ROMs by the sheer Olympian effort of our finely-tuned minds. In reality, of course, there's a whole pile of silicon chips and other gizmos involved in the process. Too often I find developers (or their bosses) who have paid little attention to that part of the work, and who are struggling along with inferior hardware. This business is difficult enough without having poor tools to do battle with as well, so here are my thoughts on hardware circa 2004.

First off, if I'm ever in the position of managing a corporate development group again, I'm going to fight like mad to keep my people from being stuck with the one-size-fits-all computers that the beancounters want to stick us with. In an ideal world, I'll be able to get a budget cap and tell each developer to spend it wisely (perhaps with my benevolent supervision to make sure we don't end up with a bunch of gaming machines). In a less-than-ideal world, I'd seriously consider selling the corporate computers on eBay and hiding money in the morale budget to make up the difference to decent computers. I figure if I just move the asset tags, accounting will never notice. Because whatever else I know about computers, I know that different developers have different ideas about the perfect hardware. Better to encourage this than to fight it, I think.

Case in point: input devices. I personally prefer trackballs (I'm using a Microsoft Trackball Explorer right at the moment), but I realize to most of my peers this is a quaint affectation, as if I wore muttonchop whiskers. Still, the work for me, and if you try to stick a mouse on my desk, I'll whack it with a hammer if there's no other way to get rid of the darned thing. But mice and trackballs (or even trackpads or pointing sticks) are cheap enough that every developer ought to be able to buy what they prefer. In fact, if I end up in a corporate setting and they won't shell out for a trackball, I'll just buy my own. It's worth it.

The same goes for keyboards. Go down to your local PC store, pound on all the keyboards they have, figure out which one works for you, and buy it. Personally, I'm a fan of the original IBM PC keyboard, with the springy keys and the clickity-clack sound; I can type faster on them than on a modern mush-mechanism keyboard. Fortunately, Unicomp still makes that exact keyboard, though under their own name, so I'm happily typing on one right now.

Dual monitors are one of those things, like pair programming, that contribute more to productivity than you might think. I don't think I've seen a convincing explanation yet, but almost every developer seems to be more productive with two monitors hooked up to one machine than with one monitor each on two machines - and if you save the price of the second machine, you can buy decent monitors. Here again, "decent" is defined by the user; there seems to be a wide gulf between those of us who prefer CRTs and those who prefer LCDs. CRTs are cheaper and deal with multiple resolutions better; LCDs are smaller and lighter, use less power, and look sexier. Which one looks clearer is a metter of personal preference. But you're going to be staring at the darned thing at least 40 hours a week, so it's important to get something that you can live with. Of course, if you get dual monitors, you need a dual-head video card. There are ways to use two separate video cards but I've always found they require endles configuration sessions.

RAM: get all that the motherboard will hold, and if the motherboard won't hold at least 1GB, get a new motherboard. 1.5 or 2GB is better. Even if your primary tools don't fill that much, most developers will benefit from having a few virtual machines running from time to time, and those suck down RAM in big chunks.

Choice of motherboard and CPU strikes me as less important. For most of us, anything put out in the last couple of years will be fast enough. If you're dealing with software where your CPU is a serious bottleneck, you might want to look at a barebones system from one of the specialty gaming PC builders (like Falcon); gamers tend to be better at squeezing out the last bit of performance than those of us in the pocket protector set.

I want my hard drives to be fast and reliable. In my next system, this probably means SATA drives. Get enough to set up mirroring or RAID to protect you against drive failures. Drive sizes need not be excessive, but giving how cheap they are these days, they might as well be.

For a network card, I'll take wired over wireless. Same for mice and keyboards. Wireless is sexy. Wired is faster and reliable. Your mileage may vary.

There are a few other amenities that are worth thinking about. Front-panel USB connectors are nice, but if you're stuck with a PC without them, an extension cable and USB hub are trivial expenses. I like to have a tiny graphics tablet around for times when I'm brainstorming or sketching on screen; Wacom has some inexpensive starter models.

Personally, I've always believed that investing in decent hardware is one of the cheapest ways to increase developer productivity. Why this isn't the case in more organizations remains an eternal mystery.

About the Author

Mike Gunderloy has been developing software for a quarter-century now, and writing about it for nearly as long. He walked away from a .NET development career in 2006 and has been a happy Rails user ever since. Mike blogs at A Fresh Cup.