Wednesday, September 08, 2010

Desktop specs for the entry level programmer

A friend recently asked for advice. His son is looking to become a professional computer programmer and wants specs for a new desktop computer. I'm no longer up to date on the subject, but that didn't stop me from writing a 900-word opinion on the matter, which I present to you know.

---

This is a tough question to answer in a specific sort of way, made more difficult since I hardly buy desktops anymore. You can get an idea for basic specs by looking at any development IDE package (e.g. Visual Studio.) Here are some overall suggestions, though:

Important items: CPU, Memory, 7200RPM disk (as opposed to 5400 RPM), expandability
Less important items: Video card, audio card, USB ports, Firewire, hard disk quantity.

CPU +

CPU is important, not necessarily because of clock speed, which has recently been topping out, but because of the "number of cores" or "number or processors". Cores and processors aren't the same thing, but for the sake of this conversation let's say they are. More processors means more things the computer do at the same time. This can sometimes be valuable when you're writing software. But don't let yourself get carried away, particularly with a starting computer. If there's only one processor, I'm sure your son will do fine.

Memory +

This is pretty important, particularly as you deal with larger pieces of software. Developer tools can take up lots of memory, it's certainly possible. That depends on how large the products are that your son plans to write. But don't let 'budding professional programmer' get in the way here. I think getting memory is good. And you don't need to max it out now. Memory always gets cheaper (In the as houses always increase in value, well, not really, the takeaway from that is I really mean "mostly always" instead of "always")

Disks +

Disk: Disks are cheap. I mean, wow I can't believe how cheap they get. Unless your son is planning on processing lots of video (in which case a better video card might be necessary, but only might.)  When it comes to disks, though, performance can matter a great deal. Think about how long it takes to load Microsoft Word, for instance. You could think about it for a looooong time. Disk drives operate like platters, which is why they're measured in RPM, just like LP records, but instead of 33 1/3, 45, 78 RPM, we're looking at 5400 and 7200 RPM. So drives that spin at 7200 RPM spin 33% faster than those that spin at 5400 RPM. That's useful.

Most desktop PCs will support 7200 RPM disks, shouldn't be a problem.

Expandability +


I hesitate to put this on the list, because sometimes you find that the idea of expandability is nice, but in reality, by the time you expand anything more than memory, you're out of room, and you need a new motherboard to keep up with new operating systems anyway. But at the same time, I've always appreciated the ability to make room for a second disk somewhere.

Video card -

High quality video cards are good for playing games, or writing games, writing complex graphics software (memory and more CPUs help here as well.) Even then, I'm sure you'll do fine for an entry level computer with almost any video card they give. I'd probably do some research personally on video card technology to supplement it, but honestly, he can do fine with almost any entry level video card.

Audio -

Take the standard, get something better if he's specializing in audio, which means games or music.

Ports, Firewire -

Most of that is expandable and can be after market purchases.

Disk Capacity -

Not critical for getting started. Nowadays, hard disk quantity is usually taken up my media files such as video and audio. If the upgrade for more hard disk space is small, then, sure, go for it, but don't stress about it.

---

And even after all of this, more questions linger: memory is more than just "How Many Gee Bees?" One computer advertises its memory as "8GB Dual Channel DDR3 SDRAM3at 1333MHz - 4 DIMMs." Which of that matters and why? Whooooo, I'm getting woozy just thinking about it. (Hint: a DIMM is what you might call a single memory "chip", the thing you stick into the computer. If the computer supports up to 4 slots, then 8GB taking up 4 DIMMs (at 2GB apiece) means you can't upgrade, well, at least, not without pulling out one of the 2GB DIMMs. But an 8GB DIMM taking up a single slot means you can add much more memory. But watch out: 1 8GB DIMM is more expensive than 4 2GB DIMMs, sometimes much more expensive.)

Of course, this is vanilla advice for programming. Your son may be interested in hard core video games, in which case you need much better graphics capabilities, and even more memory. Or just playing games, which requires less so, but still. And while I didn't give a concrete number, splurge on 8GB of memory, with room to expand. If you find yourself spending close to $1K you ... well I spend $3K on my last machine, but $1K for a starting development machine is probably more than enough. As a reference point, the Dell Studio XPS 8100 is a decent starting point.

So, that's my advice. It's all over the place, lacks a reference to current standards, yet somehow has the gall to pass itself off as authoritative. You should do fine.