I'm James Hague, a recovering programmer who has been designing video games since the 1980s. Programming Without Being Obsessed With Programming and Organizational Skills Beat Algorithmic Wizardry are good starting points. For the older stuff, try the 2012 Retrospective.
Where are the comments?
I Am Not a Corporation
In 2009, when I exclusively used a fancy Nikon DSLR, my photographic work flow was this: take pictures during the day, transfer them to a PC in the evening, fiddle with the raw version of each shot in an image editor, save out a full-res copy, make a smaller version and upload it to Flickr.
Once I started using an iPhone and the Hipstamatic app, my work flow was this: take a picture, immediately upload it to Flickr.
Pick any criteria for comparing the absolute quality of the Nikon vs the iPhone, and the Nikon wins every time: sharpness, resolution, low-light ability, you name it. It's not even close. And yet I'm willing to trade that for the simplicity and fun of using the iPhone.
That's because I'm not a professional photographer who gets paid to put up with the inconveniences that come with the higher-end equipment. If I can avoid daily image transfers, that's a win for me. If I don't have to tweak around with contrast settings and color curves, that's huge.
I also work on projects in my spare time that involve writing code, but I don't have the luxury of a corporate IT department that keeps everything up to date and running smoothly. I don't want to be maintaining my own Linux installation. I would prefer not to wait forty-five minutes to build the latest bug-fix release of some tool. I don't think most developers want to either; that kind of self-justified technical noise feels very 1990s.
When I'm trying out an idea at home, I'm not getting paid to deal with what a professional software engineer would. If I've got thirty minutes to make progress, I don't want to spend that puzzling out why precompiled headers aren't working. I don't want to spend it debugging a makefile quirk. I don't want to decipher an opaque error message because I got something wrong in a C++ template. I don't want to wait for a project to compile at all. I'm willing to make significant trades to avoid these things. If I can get zero or close to zero compilation speed, that's worth a 100x performance hit in the resulting code. Seriously.
If I were a full-time programmer paid to eke out every last bit of performance, then there's no way I'd consider making such a trade. But I'm not, and if I pretended otherwise and insisted on using the same tools and techniques as the full-time pros, I'd end up frustrated and go all Clifford Stoll and move to an internet-free commune in Tennessee.
Fun and simplicity are only optional if you're paid to ignore them.
(If you liked this, you might enjoy Recovering From a Computer Science Education.)
permalink July 3, 2012
previouslyThe Silent Majority of Experts
Your Coding Philosophies are Irrelevant
Another Programming Idiom You've Never Heard Of
The Pace of Technology is Slower than You Think
We Who Value Simplicity Have Built Incomprehensible Machines