Unqualified Reservations: What’s wrong with CS research: “So here’s the first thing that’s wrong with CS research: there’s no such thing as CS research. First, there is no such thing as ‘computer science.’ Except for a few performance tests and the occasional usability study, nothing any CS researcher does has anything to do with the Scientific Method. Second, there is no such thing as ‘research.’ Any activity which is not obviously productive can be described as ‘research.’ The word is entirely meaningless. All just semantics, of course, but it’s hardly a good sign that even the name is fraudulent. When we look at what ‘CS researchers’ actually do, we see three kinds of people. We can describe them roughly as creative programmers, mathematicians, and bureaucrats.”
To excerpt from this post does it a great disservice, and, like most other things I post to my blog, is highly recommended reading.
From my time in undergraduate CS studies at a prestigious university (attached to the programming languages team, for good measure!), I can both accept and amend the author’s central claim: CS research sucks.
I worked on a team working on an optimizing compiler for the Java language that could detect when known transforms could be applied yielding a semantically equivalent, but faster, set of bytecodes. The platform gets marginally faster for everyone, should the research yield meaningful fruit and get adopted upstream. A noble goal, undertaken by earnest and intelligent men and women, but ultimately doomed.
One note the author does not strike is of the commercial nature of programming languages. Over and over, we see the pattern: evangelism, adoption, glut of choice, everything starts to suck and get vendor dependent, death. After its acquisition by Oracle, to the author’s “creative programmers”, Java is now in its final stage, destined to live as a zombie whose musculature (the JVM) is kept alive only by newer languages (e.g. Scala, Clojure, JRuby, Groovy, etc.) that target the platform. This fact should not be lost on the judgement of quality of CS research.
On the other side of the equation, programming an IDE that supported an alternative implementation of the generics which became part of the Java language in JDK 1.5 introduced me to basically all of the concepts I use still today as a successful programmer. It wasn’t because of the work I
did faked on writing the grammar for this extended language, it was because of the techniques we used as a team in writing the IDE. Pair programming, test driven development, The Pragmatic Programmer, etc. It’s hard for me to think of that being a failure. I love programming, and it’s because of my time with the PLT team at Rice University. Thanks, Dr. Cartwright!
(Original via @puredanger.)