Our Noble Defense

Collected Data

Yesterday, a blogger wrote about a topic dear to the hearts of many programmers. The community at large came together to shout about it, and the spectacle has been a pleasure to watch. I’ve collected what (qualitative) data I can, in the hopes of distilling useful things.

The original post, by Jeff Atwood:

Some of the flood of responses:

..and I’ve certainly missed some. (each (hn) link leads to the hackernews submission/discussion for that article)

A Brief Summary of Atwood’s article, list form:

  • Atwood is annoyed by the “learn to code” craze
  • he jokes? about why the mayor of new york might want to learn
  • Suggests that coding is like plumbing; not vital know-how for everyone
  • Agrees that a little bit of programming could be useful
  • Ends by saying that basic computer skills, how the internet works, curiosity, reading, and interpersonal communication skills are ultimately more important

Typical response formats / focuses:

  • Comments on the flaws or virtues of the overall premise
  • Attack (or applaud) Jeff’s choice of analogy (plumbing)
  • Attack Jeff’s equation of “knowing how to code” to “knowing functions, pointers, and recursion”
  • Clarify the distinction between “coding” and “programming” in this context
  • Tell an anecdote about programming being useful to non-coders (lots of these)
  • Tell an anecdote about non-coders doing harm by programming (fewer of these)
  • Interpret “What Jeff Really Meant”
  • Express anger at the post’s obviously-bait title
  • Zed Shaw being brash and over-the-top
  • People naively thinking that replying to Zed will minimize that problem
  • People pointing out misconceptions or errors raised in other people’s responses

Analysis

This article is eerily well crafted for virality. I wish I could credit Jeff with adding minor logical foibles like non-sequiturs, hasty generalizations and strawmen on purpose. Or subtly drawing a brand new distinction between synonyms, then using that distinction to appear to call for war while actually calling for supper. It super-effectively gets under people’s skin and drives them to want to respond, but they’re unlikely to disagree on the whole. Unfortunately, to actually give that credit feels like breaking Hanlon’s razor. Cock-up before conspiracy: these are probably just errors.

Jeff clearly has a good sense for how to deliver a topic to be read and talked about, because here we are, but his suggestion for people to learn to communicate effectively felt … hypocritical in its conext. Much of the surrounding discussion has been a consequence of misunderstandings of his post, and most responses are in fact along the same lines as the points Jeff makes.

After hours of reading, I will join the throng of interpreters and attempt to reflect the collected opinion of the masses, imperfect lense that I am:

“People shouldn’t plan to dive into this field and come out overnight as experts, making hot social app startups or being paid top dollar for their skills, nor should people encourage others to dive into it for those reasons.

But it would probably be good for people who aren’t career-programmers to learn a bit about how computers work, and how to automate simple stuff, and if they’re curious after that, they should keep at it. Oh, and people should still learn other stuff, too.”

I feel that this adequately sums up the spirit of Atwood’s original post. I also feel that this is pretty much a representative average of what has been said in response, back and forth, for the past 12-20 hours.

Action Items

I’m reminded that many programmers sense something special and important about our discipline. Some responses glazed over the distinction between programming itself and the virtue it brings, but it is clear that people perceive some mix of problem solving, recognizing cause and effect, strategic thought, comfort with trial and error, raw utility, and more in the writing of programs.

I think that what they’re feeling is related to what Harold Abelson spoke about in the first SICP lecture, that we’re just beginning to learn to “formalize notions about process” as Egyptian surveyors founding geometry (and all modern math) were just beginning to formalize notions about space. There’s something truly special, even magical here, and I think that people perceived Jeff Atwood’s post as an attack on the special nature that we sense. I believe that specialness is what so many people have really been defending.

My chief takeaway is to think about better ways to identify, express, and know that thing. Whatever it is. Before we finish, I’ve got to quote the SICP again. This time the opening quote:

“I think that it’s extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don’t think we are. I think we’re responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don’t become missionaries. Don’t feel as if you’re Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don’t feel as if the key to successful computing is only in your hands. What’s in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.”

Alan J. Perlis (April 1, 1922-February 7, 1990)

No matter how great we perceive the virtue of programming to be; even if we think of it as a literacy, Perlis has it right. Like reading, and like math, the best thing to do is to make it fun first, and then the knowledge will flow. If we become a bunch of missionaries, or Bible salesmen, I’m certain we’ll have lost the best part.

Leave a Reply

Your email address will not be published.