I’m not sure any post here has ever needed an epigram, but this one does:
Normal people don’t see exceptions to rules as a big deal, so they forget to mention them. This is why programmers drink so much. — Rob Norris
Rob is one of my oldest friends. I’ve known him for 30 years at least. He’s also a programmer by trade. This quote — which I pulled from a conversation we had about customers and requirements and the difficulty in building the thing the client needs, but doesn’t know how to ask for — could have come from any of a hundred or more conversations he and I have had about the issue over the years, or a thousand or more conversations I’ve had with other colleagues about precisely the same issue.
More than anything else, this is the crux of the thing that programmers and other software development professionals complain about when they go to lunch or happy hours. Not coincidentally, it’s probably also the basis for what noncoders complain about when they talk about programmers. It’s the key issue that separates a coder of any level from the rest of the planet: the ability to understand what the actual rules are, and why exceptions matter. You can’t get to the next level of technical literacy — which things are hard and which things are easy — without this. Taken together, a customer who understands enough about these two basic computing truths is (first) a way better customer to work with. There will be much less drinking! And second, he’s going to be a much happier customer, because communication with him will be easier. But without either, you almost can’t communicate at all.
In my entire 20+ year career of managing projects and writing code, I’ve had maybe one or two customers who actually understood these points. This is because, to a first approximation, nearly everyone outside the programming trade is technologically illiterate when it comes to software development. They don’t get it, and they have never tried to understand it at all. Their computers are mysteries to them. I’ve seen very, very smart people flail utterly when Excel did something they didn’t understand, and you have, too. This failure is because, in part, the machine is a mystery, and they have no idea how the underlying parts work.
So now, this year, there’s a movement called CodeYear whose goal is to teach anyone who’s curious the basics of programming. This is a GREAT idea. It’s not about making everyone a programmer, and it’s certainly not about trying to recruit more professionals. A year isn’t going to make anyone a wunderkind, or really even hirable most likely. What a year of spare time development tutorials will do, though, is make you more conversant in the concepts that, every day, drive an increasingly large proportion of the world around you.
Damn, you must be thinking, that’s a good idea! And it is. It’s a very, very good idea. Spreading understanding — about anything — is never a bad plan.
Unless, apparently, you’re Jeff Atwood over at Coding Horror, who has missed the point of this exercise so much that I really think he might be trolling. Atwood has been, up to now, a fairly well regarded development blogger. I read him from time to time. But he could NOT be more off base here. He comes off as a weird tech-priesthood elitist, and totally ignores the very basic points I note above.
In his misbegotten essay, he even suggests that swapping “coding” with “plumbing” shows everyone how ridiculous the idea is — except, well, normal people already understand way more about plumbing than they do about programming, and a good chunk of them can fix a leaky faucet or clear out a sink trap on their own. Not only is it a good idea for folks to learn a bit about plumbing, in other words, it’s already happened — and there’s entire libraries worth of DIY books to help you expand that knowledge as a layperson. Atwood is too in love with his metaphor to notice, I guess.
He runs on to whine that the effort will result in more bad code in the world, while “real” programmers strive to write at little as possible. While true, this is like saying children shouldn’t learn the basics of grammar because it’ll interfere with the work of poets.
Like I said, it’s almost like he’s trolling, and maybe he is. I’m sure Coding Horror is getting a massive influx of traffic because of the (nearly universal) condemnation of his reactionary rant. It’s more likely, though, that his tantrum is more due to the sort of knee-jerk contrarianism that runs through a great chunk of the technical world (why else do you think so many developers worship Ron Paul?), but that’s not really an excuse.
My hope is that most people will ignore Atwood’s rant, and instead avail themselves of the excellent resources that CodeAcademy has made available for this project. They are, I should note, free.
Finally, I’ll just offer this:
Exactly. FWIW, Jeffrey also shared a couple more links on Twitter that are worth your time if this dialog interests you:
Read ’em both.