Hacker News new | ask | show | jobs
by chubot 4653 days ago
For Computer Science Ph.D.'s, I think you should get credit for writing code.

Either production-quality open source code, or pedagogical code. I'm looking at the Stanford Pintos kernel and MIT xv6 kernel. While there were minor papers from those projects, I think they were more like a labor of love. When you consider the coding effort, those projects probably took 10x the effort than a typical paper.

But yeah it would be better if a little more time was spent on code vs. papers.

I actually attended a talk from an Adobe researcher talking about software abstractions some years ago. He advocated that you should be able to get a Ph.D. for finding a good abstraction, e.g. for say modeling a paint brush or something. There are lots of bad ways to write code but only a few good ones. Even better would be to write it in a way so that other people can actually learn from it.

3 comments

Part of being a scientist is learning how to communicate your results. And anyway, writing is required for good thinking.

As a PhD student implementor, yes, my theory colleagues get way more publications than I hypothetically could even if I were a better student than I am. That makes it hard to get an academic job, but otherwise doesn't matter too much.

Sure, I didn't say you shouldn't write. There are plenty of people who write great code and then write about it. The author of Redis author has a great blog, where he explains various design and implementation issues. That kind of work may not qualify for most academic journals. But it is a lot more valuable than a lot of academic research and should be a valid way to get a Ph.D.
Is what he is doing scientific reesarch in computer science? Possibly, if he also writes up his results to that they can go into the scientific literature. If he does that, he can get a PhD.

A PhD in CS does not mean "extremely good software engineer," it means "scientist."

I'm not sure you can really write production quality code in a Ph.D., because that requires a production environment, which just isn't available in academia, and also because writing such code conflicts with research goals.
Sure you can. Plenty of 16 year olds have written say windows managers that thousands of people use -- that's production quality code.

Your second argument is circular -- I'm saying a valid research goal should be to write solid and useful code, and then explain it.

For example, you could write an OS kernel or kernel subsystem to fill some particular part of the design space. A great but rare example is what the authors of Lua have done.

All I mean is that fixing non-essential bugs, making your code pretty, worrying about small performance regressions, writing thorough documentation, polishing the user interface, porting your code to N platforms, dealing with copyrights and patents and trademarks, ensuring good distribution of your code either by selling it or making packages for major distros, and taking care of your users generally doesn't help you to get papers published.

Academia wants new ideas. Production (industry) generally revolves around making a new idea useful to a broad range of people, by which point it's an old idea. You can take something written in academia and put it into production, but if you do that in your Ph.D. it almost certainly isn't helping you to finish.

You're still arguing circularly. I know that what you mention is exactly the reason why academics don't write more code.

I'm saying it would be better for society if the academic culture emphasized the craft of coding, rather than solely "new ideas". The whole point of this article is that the emphasis on "new ideas" incentivizes fraud.

Academic culture changes faster than you think. I expect that the structural changes caused by online courses will have a big effect in the near future.

In my experience, it's already at the point where a focus on trade and craft actually hampers innovation in an academic context, because so much of the funding comes from industry. Most papers today are about safe, incremental improvements rather than bold new ideas, because there's no obvious money in significant breaks from tradition. I think we need to let academia and industry each do their job: academia can produce great, wild ideas and discover fundamental truths, and industry can refine them into something profitable.
Nah. You can write great code inside Racket for a PhD using tooling that's light years ahead of almost any development platform on the planet.
ImpactStory monitors github, which is pretty cool. Example: http://impactstory.org/CarlBoettiger