Archive for February 2008

Teach yourself programming in 10 years

I got pointed to this post about how to learn programming. My favourite section was where he talked about programming languages:

Learn at least a half dozen programming languages. Include one language that supports class abstractions (like Java or C++), one that supports functional abstraction (like Lisp or ML), one that supports syntactic abstraction (like Lisp), one that supports declarative specifications (like Prolog or C++ templates), one that supports coroutines (like Icon or Scheme), and one that supports parallelism (like Sisal).

I’ve got some stuff to learn.

And by the way, I was referred to this by this essay by Eric S. Raymond. Which says a few neat things – but like most people I find that ESR just bugs the heck out of me half the time.

Not Safe for CS Education Conferences

Should I want to get into a big argument at CIGCSE this year and cement my reputation as a frothing nerd code freak, I need only reference this blogpost which makes the provocative claim that Computer Science is about programming. I’m pretty sure most of the BuffaloBlog audience is inclined to agree with him – and myself too insofar as I think attempts to say “CS is not about programming” are essentially counterproductive (as the weeks go by, students are eventually going to notice they are writing an awful lot of C). But I want to just toss 2 counter-arguments out there for you to chew in the spirit of multiple perspectives:

  1. As someone who works in a giant HCI building, I’m more familiar with HCI than maybe this guy is. Some HCI is definitely more coding-oriented than he’s thinking: building gloves that allow recognition/translation of sign language for example. And some is completely not: finding out how religious organizations conceive of and use technology. One important factor in HCI’s presence in CS departments he’s likely not considering – if HCI is under design, designers don’t usually talk to computer scientists very much.

    Anyways, just a few slightly pragmatic thoughts that suggest that maybe it isn’t unreasonable for there to be some parts of computer science that do not immediately involve programming. Is P/NP programming? Circuit design? As much as I really do like programming, I don’t see that it somehow needs to be the gold standard for what’s in Computer Science as a field.

  2. Being a nerd is actually pretty cool in this century.

    Confession time: I am a big nerd. I know you’re all shocked. And I will freely admit than when I came to Georgia Tech, it wasn’t without some thought that maybe CS ought to return to its “roots” of being a haven for nerds like me and my friends. Nobody wants to code ’cause its nerdy? Who cares – we’ll just teach nerds and anyways nerds write better software. Nerds have their own little field. Society has awesome programs. Everybody is happy.

    What turned me around was maybe the only definitively good book on multicultural CS education. This book talked about CMU CS education back before they started to try and be more gender balanced – it was *really* nerdy back then.

    The conclusion I came to after reading this book is that in a lot of key ways, “nerd culture” is referring to a set of shared experiences that non-nerds really cannot go back and access. Yes, you can go watch The Princess Bride and Hackers. But you can’t watch it when you were 12. And you can’t retroactively be dateless at promtime or ostracized for you coding skills or install OS/2 on your 486 with 16 megs of RAM. And if we make being a computer programmer about these things, we’re basically talking about playing golf at the country club to a black student in 1960. We’re referencing a shared experience that some people won’t ever be able to be part of no matter how hard they work. And that seemed very inappropriate to me, so I’ve been a little down on the “CS is for nerds” angle ever since.


This started as post in response to the wise and talented Josh , but eventually got so unwieldy I split it off into this post. Josh’s post – and the post he was responding to – are worth reading but all the context you actually need to know is that somebody made the claim that the top 5% of programmers are more 20x more productive than the other 95%.

1. So as to this 5% business, I’ve actually heard a ton of various numbers along these lines. Now that I’m a honest-to-goodness academic who is supposed to know about this kind of stuff, I feel pretty confident in saying that these numbers are made up. Though if anybody has actual references to studies or something, I would really seriously appreciate if you’d post them up here because I could really use them.

But from an academic perspective, just having some semi-viable metric of evaluating 1 programmer against another basically doesn’t exist. There is someone in my lab who’s currently working on a test to compare CS1 students against one another, and if that works out it’ll be a Ph.D. for her. And if you think about how you would try and compare a CS1 student trained in Java to one trained in Scheme, it ain’t easy.

2. So whether it’s 10x or 100x, I agree that the numbers we hear kicking around are talking about a phenomenon that people really do see out there in the real world. And I wouldn’t say that it’s likely unique to programming – programming is just an obvious example because it has something to do with quantity as well as quality. That is, maybe the best writer can crank out a screenplay that’s 100x better than a average writer but it’d be pretty hard to know that. With a programmer you might be able to really write something in 3 days that would take someone else a year.

So I’m not disputing the 5% thing, except to say that 5% is just a catchy way somebody came up with to describe “some programmers are waaaaay better than others”.

3. The real million dollar question in my mind, Josh, is what are these super-programmers doing that others are not? Even if there’s just something irreproducible in their genes – shouldn’t this be the sort of thing we could detect somehow? Or if there are strategies involved, could we use them to make the 90 percentile 5x better than everybody else?

Because I think that all of us serious programmers, on our darker nights, think about those 5%ers and wonder if we are really making the cut. And we shake it off in the morning and say well “I got thus-and-such on my SATs, and I went to this school, and didn’t I get a 5 on my last performance review?” “Surely,” we think, “surely that must mean I’m on the list.” It’s a lot like Calvinism, when you think about it.

But I think those doubts afflict students most of all, and especially those who are not white male with a lifetime of hacking experience and tons of free time. I think it’s likely (though unproven) that once you decide you can’t make the 5%, you’re likely not going to put in the time and effort to get there even if it was possible.

Which of course brings me around to my research – say you had a group of the 50 cs students who enter an average program around the country. And say your goal was to get absolutely as many of them as possible into that 5% and screw everything else. What would you say to them? What would you do with them?

Comment, you slackers!

The Evil Robotic Nun Post

This post has no particular purpose…I just ended up writing a few paragraphs about being a grad student in an email and thought you might be amused:

Once the whole pirate/ninja internet meme plays itself, I think graduate student positioned to be the next sexy job of the decade. A graduate student is like ninjas and pirates all mixed together. We’re the hard-drinking hard-fighting lords of the night and we never sleep. We look snappy in longcoats, black long underwear and oversized hats, though it is difficult to tell because we are indeed masters of disguise. We know tons of secrets man was not meant to know, a fact which we will drukenly brag about when we have even the tiniest amount of rum. We sail the high seas of academe, seeking whores and honor and grant money (which for various grant accountancy laws must be buried on deserted islands).

The only thing that grad students really lack in an enemy. But technology will soon enter the stage when we can again build evil robotic nuns, the ancient sacred prey of the graduate student. How do I know this? Indisputable paleontological evidence proves that what we think of as “dinosaurs” were actually a race of evil robotic nuns created and subsequently destroyed by insect graduate students who started their degrees in the late-Paleozoic. And you can be sure that when the nuns come back they will itching for a rematch.