Beginners and Hacks Pt. II

Jeff Atwood, of Coding Horror fame, recentlyrebutted my post “Beginners andHacks“, which itself was a reply to his post “C# and theCompilation Tax“.

Jeff makes some great points, but at the outset I have todisagree with his statement “The present model of softwaredevelopment is clearly monkeys all the way down. And if you’reoffended to be lumped in with the infinite monkey brigade, I’d saythat’s incontestable proof that you’re one of us.”

No, Jeff, I don’t develop via the Infinite Monkeys Model. Itdisturbs me that any professional in this industry would volunteerfor such a pejorative.

While humility is often a good thing, there is a limit. Everydeveloper can’t be Linus Torvalds or John Carmack, but every singledeveloper should still have professional self-respect, and a desireto do and be the best that they can.

As for my denial of membership in the worldwide IMB representing”incontestable proof” that I’m among that group, that comment hadme reminiscing about a shop I worked in about a decade ago: A newhire had proposed a questionable set of development changes, someof which I was passionately opposed to. He dismissed suchdisagreement via a hilarious bit of circular reasoning–

a) If you passionately disagree, you are being”defensive”

b) If you’re being defensive per the definition given in a),it must be because you are wrong.

It’s a simple, comforting way of dismissing opposing perspectives:Everyone who disagrees is just being defensive because they’rewrong. It was so remarkable that it has always stuck with me as anexample of self-delusional perception.

Jeff goes on to compare his apparent utter dependence oncontinuous compilation code checking with squiggle-linespell-checking. Even if I were to accept that simile, which I don’tat all, let’s humor that comparison for a moment.

I’ve written about the importance of correct spelling before, and have lauded theintegration of automatic, continuous spellchecking in Firefox.I’m typing this entry in Microsoft Word, which has helpfullyalerted me to several misspellings (mostly the result oftypos).

I greatly appreciate these tools, and how they help me with thecraft of writing.

Yet I’m not a professional writer. I am, in actuality, a hackand a beginner.

By noting that differentiation, am I then saying that aprofessional, dedicated-to-the-craft writer would actively abhorsuch a tool (see the Frank Navasky character from You’ve Got Mail as justsuch an anti-technology luddite)?

Of course not, and that is not and has never been the argumentI’m making. Those who jump to such a conclusion are just beingdefensive, and thus, we have learned, must be wrong. No I’m notcalling for editing in notepad, or making shoes like we made them150 years ago.

Instead I’d wager that you’d find the average professionalwriter, dedicated to the craft of putting words to print, hasdramatically less dependency on such accoutrements than “beginnersand hacks”: They have elevated their creations to the point wheresomething as rudimentary as spelling no longer represents asignificant part of their “problem”. They compose their creationsso carefully that they’re less likely to have such errors in thefirst place: When every line is a conscientious, careful,considered work of art, it’s less likely that a typo-detectionutility is as important.

For a blowhard blogger like me, vomiting paragraphs of rawthought into an editor, this sort of handholding is much moreimportant, and the use of spell-checking actually speaks directlyto my point. Writing is not my craft, and these literary creationsaren’t craftsmanship. I’ve even been known to mix up it’s and itson occasion, to the delight of my critics.

This brings us to the crux of the whole “debate”: It was neverabout the advanced functionality of tools, or even the useof said features or whether they “annoy” me or not, but instead I’mspeaking to a growing trend of laziness and carelessness in coding,where developers emit screens of code (probably gloating abouttheir remarkableLOC achievements), and after spending as much time fixing upthe many automatically detected errors they spend weeks trying todiagnose the much more insidious logic, design and usage errorsthat almost certainly permeate their creation.

If their work is so carelessly authored that they considercontinuous automated correctness checks a heavily leaned upon,necessary feature of their environment, then I wouldn’t put muchstock in the quality otherwise.

That is the problem that I argued against, simplystating that when you feel naked and abandoned without theseassistants, finding yourself automatically doing frequentcompilations to catch egregious mistakes, then you’ve probably losttouch of the craft, and one’s work isn’t getting the lovingattention it deserves.