Admittedly, I didn’t read what he links to, but phrases like this one in quoted this post always really bother me:
Through the years, despite our best efforts to articulate that CS is more than "just programming,"
Trying to take the programming out of the perception of what computing practitioners do, on account of the perception that programming is boring, meaningless cubicle drudgery, is just plain wrong. Firstly because, programming is crucial to computing. Without programs, computers as we know them would do nothing but suck up electricity. And secondly, because the perception that they’re trying to shake off, that programming is boring, meaningless cubicle drudgery is also just plain wrong. Yes, you’ll probably end up spending most of your days at a keyboard in a cubicle. If you can’t handle that, go major in Archaeology or something. But boring? Meaningless? Hardly. Programming is what gives meaning to computers.
For that reason, I’m still not sure about this:
I'd like for people to understand what CS is and for potential majors who end up not wanting to program for a living to know that there is room for them in our discipline.
I’ll admit that you don’t have to program all day to do meaningful work with computers. But to think that you can avoid any programming whatsoever and be doing anything in computing other than some really basic sysadmin work (for which you shouldn’t need a 4-year CS degree anyway) is delusional. Even the guys I know who work as server admins for a hosting company have cause to do no trivial amount of scripting. Which is why the next sentence:
But pitching programming to the aside altogether is the wrong way to do that, and will do more harm than good -- even for non-computer scientists.
seems to me right-on, yet somewhat at odds with what comes directly before. Whither the “programming for everyone” meme that Gene often espouses? How do you reconcile “being able to do some simple programming is a useful skill for everyone, not just programmers” with “oh, programming? No, don’t concern yourself too much with that unpleasantness.”
You can’t have Computer Science without programming. Even if you don’t write programs yourself, I don’t think you can do much with computers if you don’t at least understand what programs are and how they work. The problem isn’t that people perceive CS as “just programming.” It’s that we’re not showing them all that programming is.
Programming, as a profession, doesn’t live in a vacuum. We don’t write programs just for programs’ sake. Nobody would be paying people to write programs if they were just blobs of symbols and expressions and statements that weren’t relevant to something outside themselves. Programs are supposed to be about something. You can’t write embedded control software for an airplane without learning something about the parts of an airplane, their purpose, how they function, and a little bit of aeronautics along the way. Right now, I know more about the licensing requirements for plumbers in the state of Iowa than I ever thought I’d care to, and I’ve come away from past projects with whole new understandings of the photography business and sports uniforms. The famous Micheal A. Jackson had an interesting piece in a recent CACM in which he articulated his belief that software development will specialize into different application domains. This makes a certain amount of sense to me, especially in very complex domains. I’m pretty sure Donald Knuth ended up being something of an expert in typography in the course of developing TEX. Knowing “just programming” isn’t enough to build a meaningful program. It’s possible that, if you’re ever really interested in learning a topic inside and out, the best thing you could possibly do is to write software about it. This ought to excite the hell out of potential students, especially the type of student I was, the type of student whose interests are so wide-ranging that they have a hard time reconciling themselves with the expectation to specialize in just one kind of thing for the rest of their lives.
The point is, even programming isn’t “just programming.” Programming is always about something else other than programming. To program is to understand something well enough to be able to explain it to a machine, and that can be endlessly fascinating.