2011-11-21

Why Programmers are Egotistical

I'm reading through The Design of Everyday Things right now. There's a small section in the second chapter about learned helplessness and taught helplessness, where the basic idea presented is that when people fail repeatedly on a seemingly easy task, they come to believe that it's impossible (for them) and just stop trying.

This violently reminded me of a number of incidents I've seen while a student in a CS department - students try something, it doesn't do what they expect, and they give up in frustration ("I can't do this!"). Those students tend to believe that successful programmers don't encounter these issues, which is laughable to any professional programmer. We very rarely do things correctly the first time, but we just keep going.

Now, why do we keep going? I believe it's because we're all egotistical bastards. Well, egotistical somethings, at least.

I've heard a number of non-CS friends describe us as arrogant. I notice that my CS courses tend towards a higher ratio of narcissism than GEs. Hell, Larry Wall told us that one of the three great virtues of a programmer is hubris.

I think this is what keeps us going in the face of difficulties - we believe we're smart enough to do anything, despite any evidence to the contrary.

So...?

What implications does this have on CS education?

My school has traditionally had a 50% fail rate in our introductory series (101, 102, 103), with 101 being taught in C. To address this, they've recently prepended an additional course that uses ActionScript, Racket or Java to teach basic CS concepts in various domains (games, music, mobile, etc.). This isn't a particularly innovative idea, but it is a good one, and I think it helps with this problem.

By using an easier introductory course, students will (hopefully!) become convinced that they can, in fact, program, and this knowledge should help them persevere when faced with C, a language that is simple but not particularly intuitive to those new to a low-level of computer abstraction.

Beyond this... I don't know. The rockstar programmer movement is doing a good job for intermediate programmers, so I guess we should invite DHH to give a talk to all our first-year students, or plaster the halls with the awesome puppy. ;)

Who's awesome?  You're awesome!