I’ve worked in a variety of positions over the years, including staffing up entire development departments.
One element I usually insist on in new hires is a reasonably solid foundation of knowledge of basic PC hardware and Windows setup (I’ve generally worked in Windows shops, hence the bias there). Things like hard drive setup, FDISK, formatting, all the way to assembling normal PC components (i.e. box of parts to a working PC).
Granted, these days, it’s not particularly cost effective to actually build out developer machines this way, but it seems to me that generally speaking, developers ought to know their way around under the hood, maybe not at the circuit level, but at least the component level.
Is this expecting too much? Not enough? I could always wimp out and say that it all “depends on the situation.” But I’m not talking about specialized hardware or device drivers. I’m talking about general business applications.
Or have computers become more like commercial airliners or helicopters, where the pilots fly, the mechanics fix, and never the twain shall meet?
2 Comments
The best developers I’ve met were also into the hardware side of things… if nothing else it cuts down on "blaming the hardware" when things go bad.
Simply knowing how your workstation works (as opposed to how to fix it) is a good thing. I once took the cover off a developer’s PC to show them around inside their box, and was confronted with DUST BUNNY HELL. We cleaned the insides out together while I pointed out the important bits ("…this is the fuel pump, and over here the heisenberg compensator… and oh! Your PC has an MGM bus which means you can watch movies."). Next week I noticed she’d bought her own can of compressed air, and had moved the PC off the floor and onto her desk.
Weeks later she came by to ask me if she could double her RAM, since she had two free sockets. Uh oh.
By the time I left, she was troubleshooting others’ minor hardware glitches, swapping out PCI boards, that sort of thing… but did it make her a better programmer? She was a better team member, and went from total shyness to interacting with everyone, and her confidence level went up simply by knowing more about hardware than her cube mates.
But was her code better / smarter / faster? Not immediately apparent.
I think the real issue is PASSION. Virtuoso developers who are ALSO virtuoso hardware engineers get that way from obsessing on the technology, about wanting to know everything there is to know on the topic. Read every page of the manuals and rewrite to fix the mistakes. SCREW waiting for Computer Repair Guy; I’m doing it myself, and while I’m in there I’ll trim the fuel rods and adjust the probability drive.
So Darin, to answer your question: MAYBE. *Requiring* knowledge of both disciplines can be dangerous… you might exclude a really star player because they just don’t "get" mechanical stuff. But I would certainly pay more attention to the developer applicant carrying a set of screwdrivers.
Definitely. You certainly wouldn’t want to toss someone ONLY because of a lack of basic hardware knowledge. I just wonder if that generally translates to lack of software know-how, or maybe it translates more to a lack of "passion" for the sport, so to speak.