Today my name is Cranky McFuckoff. Just so you know. The reasons have to do with my struggle with caffeine addiction. I was off caffeine for a year and a half. Then I needed to turn out a video to sell in a fucking hurry, so I went down to my neighborhood cafe, a lovely place just a block away, and got a hefty dose of caffeine served to me by a small squad of lovely tattooed hipster chicks. It was like Foxforce Five in plaid. These sultry bohemian drug dealers hooked me on their nefarious wares.
Then, just a few days ago I contracted an awful cold, and, figuring I'd have to deal with headaches and nausea anyway, figured I'd kick caffeine at the same time and kill two birds with one stone. EPIC FAIL. By the time the caffeine withdrawal kicked in, I had forgotten all about my malformed little scheme, and became convinced I had contracted the Ebola virus and was going to start puking blood all over innocent bus riders. In desperation I drank half a cup of coffee at 8pm. Not having had caffeine in a few days, the effect was more powerful than usual, and the coffee was damn strong. I got maybe two hours sleep last night, max, and I just want to apologize to Dan North right now for being in the kind of mood which relishes an easy target.
And boy is this an easy target. North wrote this ridiculous illogical ramble called Programming Is Not A Craft, which got retweeted and/or placed on Hacker Newspaper. I don't know why, exactly, but I've got at least two sources directing me to read this, and they're both wrong. Check this out:
So from a purely demographics perspective we can see that the vast majority of people in the IT industry are there because a) it’s a well paid alternative to other white collar office work or even manual labour, and b) there is no incentive to make it anything other than a commodity numbers game.
The first part, A, makes sense as a description of the vast majority of people in the field, but B is complete horseshit, by North's own logic. He states that what makes excellent programmers excellent is their passion, and then says:
The oft-quoted figures of tenfold increase in productivity of expert versus novice programmers are wrong by orders of magnitude in my experience. A really great programmer (and I’ve been lucky enough to work with a handful over the years) can out-perform a doing-it-for-the-money programmer by orders of literally hundreds, delivering in hours or days what would take an average developer weeks or months.
So seeing programming as a craft to love and master wins you epic productivity advantages, but there's no incentive to make it anything other than a commodity numbers game? Epic productivity advantages constitute "no incentive?" Have you noticed that there's a power law in the value of Internet startups? Most are worth nothing, a few are worth billions? And yet there's no financial incentive to a process which gains you an epic productivity advantage?
I admire the balls of anybody who can publish such illogical horseshit and blatant self-contradiction under his own verifiable identity, but other than that, North's argument should be taken out back behind the woodshed and shot point-blank in the cranium.
Maybe he doesn't mean financial incentives, and the incentive of becoming a billionaire is therefore inadmissible. Maybe he means there's no psychological or quality of life incentive to an attitude to your work which involves loving it and caring about every minute of it. If that's the case, he needs to read Flow. I'll never understand why motherfuckers prefer saying shit to making sense or doing research by such a wide motherfucking margin.
Undaunted, North continues babbling, like a demented schizophrenic at a bus stop with nothing but a can of soup and a shitload of free time:
With a craft, the product has intrinsic beauty in its own right. A cathedral is really a big hut for people to meet in and worship. Make it from stone by all means, so it lasts longer than a wooden hut, but why all the fancy decorative stuff? Of course it is there to engender a sense of majesty and wonder, and cause us to engage the part of ourselves that appreciates beauty and magnificence, so we enter the cathedral reverently and humbled, ready to worship. What makes it a craft is the work above and beyond its basic utility to give it intrinsic, aesthetic beauty.
This example is so fucking ridiculous as to be borderline illiterate. Architecture is not a craft, it's an art. That's why you can't take architecture in most high schools or community colleges, but you can take it at just about any art school on the planet. If you're going to write about semantics, your semantics should at least be on a level with what I can find in a fucking dictionary. This paragraph does not even fucking compile.
I should point out that both lack of sleep and caffeine usage increase aggressiveness. My bad.
This part, at least, is good:
How are [passionate, excellent programmers] supposed to differentiate themselves? And how can they help others in the industry who have a real love and appreciation for the software they write? We need some sort of apprenticeship model, and a way to identify masters, both to apprentices and other masters. That sounds like the sort of model that craftsmen use. And it also appeals to the average alpha geek’s romantic streak, possibly incorporating a system of secret signs and handshakes.
Good, but not great. We have a terrific apprenticeship model, it's called open source. But the idea of setting up a consulting business along these lines has indeed always applied to me on sentimental (rather than mercenary or even rational) grounds.
After this stuff North then proceeds to criticize programmers for indulging in romantic fantasies of programming as an art, and babbles endlessly about martial arts and drawing. I know for a fact that most programmers don't have my background or skills in drawing, so I'm sure it's worth reading for most people, but for me negative space was a tired, overrated concept when I was still in high school, before I even hit senior year and did AP art. Likewise, I learnt a little judo when I was still in elementary school -- just enough to get the basics -- so that part was a tired rehash for me as well. That might be worth reading for you, but it mostly depends on whether or not you've ever heard of Ruby koans or seen any anime ever in your life.
Calling programming a trade takes nothing away from the desire for professionalism, experience and expertise. In the same way I want an expert electrician wiring up my house rather than a cowboy, I want an expert programmer enabling my business. What I don’t want, however, is a prima donna plumber who insists on talking about the elegance, beauty or art of plumbing, or who insists that I appreciate the aesthetic beauty of his joinery, or will “only work with other rock star plumbers, who only practise copper-driven plumbing.” The best software should be understated and unobtrusive (as, maybe, should be the best programmers). I don’t want to hear the clanking of information as it rattles from one poorly-implemented system to another, through ill-conceived interfaces.
This is ridiculous. If you don't care about the workmanship when you buy or build a house, you're going to lose a fucking epic shit-ton of money. I hope North was just too scatter-brained to think of this, because if not, he could be in for some fucking trouble if he buys a house. It also doesn't make sense to criticize plumbers for having high standards:
What I don’t want, however, is a prima donna plumber who insists on talking about the elegance, beauty or art of plumbing, or who insists that I appreciate the aesthetic beauty of his joinery, or will “only work with other rock star plumbers, who only practise copper-driven plumbing.”
...right before complaining about code which uses bad plumbing:
I don’t want to hear the clanking of information as it rattles from one poorly-implemented system to another, through ill-conceived interfaces.
The only shred of sense in the above paragraph is North's repeated insistence that he doesn't want programmers who insist on things. I agree with him on that.
It's also very easy to agree with him when he says he doesn't want to hear what other programmers have to say about programming. He shouldn't listen to what other programmers have to say about the craft, because he doesn't think about the topic seriously enough to avoid contradicting himself from one sentence to the next. A guy who doesn't even listen to himself is never going to learn anything from listening to other people.
If you’ve read this far, then thank you.
You're fucking welcome, and you fucking owe me. I hope to God my experience will serve as a warning. Avoid coffee, and avoid Programming Is Not A Craft.
He finishes with a call to action:
I do think there should be a Software Craftsmanship Manifesto, but not the thing that’s currently out there. I think it should be a call-to-arms, feisty, opinionated, brash and everything that a good manifesto should be (I’m channelling Kevlin Henney here).
I have no idea what this Software Craftmanship Manifesto is, but I pity anybody who has an opinion about it one way or the other. It's obviously not the kind of thing any sensible person would give a shit about.
I also think there should be a way for passionate, skilled programmers to differentiate themselves from the mainstream commodity bodies, and also to recognise one another, and demonstrate their value to potential employers.
Open source, conference presentations, blogs not clogged with bad logic, and profitable, innovative businesses are all good ways for passionate, skilled programmers to differentiate themselves from the mainstream commodity yadda yadda. You can check follower count, fork count, and/or actual code on GitHub to identify good programmers, whether you're another programmer or an employer. This is the easiest call to action ever. All you have to do is realize everything North is asking for already exists.
My God, that was awful. I apologize for the negativity and I swear to God I'm getting un-addicted one way or another. It's going to take at least a couple days of 100% free time, though.