There’s a huge disconnect between what academic computer science researchers are investigating and what people in industry want. In this year’s International Conference on Software Engineering, Andrew Begel and Tom Zimmerman published a paper, Analyze This! 145 Questions for Data Scientists in Software Engineering. Andrew and Tom are from Microsoft Research. The paper reports the results of a survey of Microsoft employees concerning what questions they would like academic researchers to answer. The top three most essential questions were:

  1. How do users typically use my application?
  2. What parts of a software product are most used and/or loved by customers?
  3. How effective are the quality gates we run at checkin?

These are not exactly in the academic research wheelhouse. Should every computer scientist drop what they’re doing and focus on these questions? Of course not, but industrial impact lends crediblity to a research project, and lack of impact detracts credibility.

I do not under estimate the academic’s ability to turn up their nose at my argument.
To the stereotypical academic, the disconnect is not only not a problem, but a desired feature.

They might believe the disconnect is desired because unbridled from the concerns of the real world, academics elucidate the grander ideas. “If Henry Ford had asked people what they wanted, they’d have asked for a faster horse,” they might say, and hence not have invented the automobile. Well, if Henry Ford had taken that request 100% literally, sure. But, with the slightest abstraction “people want a faster horse” becomes “people want to travel faster” and there’s the car.

Another argument is that academic research pursues knowledge for knowledge’s sake; usefulness and practicality are irrelevant. This is a philosophical stance and I won’t be able to completely vanquish it, because it’s far too dependent on initial assumptions. Can something that is affirmatively useless be good? It depends on my definition of useless. I love this quote from A Mathematician’s Apology by G.H. Hardy

a science is said to be useful if its development tends to accentuate the existing inequalities in the distribution of wealth, or more directly promotes the destruction of human life

He was being facetious, and computer science is typically useful on both counts. Another great analogy pertaining to usefulness from the same book is chess problems. In a chess problem, the author gives some configuration of a chess board with instructions like, “white check-mate in 5 moves,” and the reader is supposed to find the moves that lead to check-mate for white. This type of chess problem is surely useful to a chess player, but there are chess problems that can never arise in a game of chess. For example, there are chess problems where white has 5 knights, which is impossible in a real game of chess because there are only two knights for each side. The solutions the second class of chess problems are useless, but they are knowledge. I’m setting up a strawman somewhat, but I hope you see my point. Most people won’t favor establishing, and more importantly funding, a Department of Chess Problems. Let me conclude this paragraph with the admission that I haven’t settled this argument, but I hope you’ll agree the knowledge or knowledge’s sake argument stands on shaky ground when applied to computer science.

Finally, I’ll address what is the most well-intentioned argument. It goes, “we’re trying to solve real problems (all we need is five more years of funding).” This is a stance I am sympathetic towards, and computer science in particular has history of its side. We’ve got plenty of good will left over from inventing the Internet and World Wide Web.

I’m advocating a gentle nudge towards applicability, not an extreme shift in priorities. Being too industry focused is a problem too. One of the great things about academia is it’s one of a vanishingly few places in our society isn’t overrun by a unquenchable lust for profit. The biggest pet peeve of mine is research about a specific industry technology (see the deluge of Android papers), but ignores that technology was designed under constraints and assumptions. The worst type of paper is, “We took this product that was optimized for X and re-optimized it for Y. Surprise! The benchmarks show improvement on Y. Turing award please.” The problem is they never show that Y is the better thing to optimize for.

Ultimately, computer science as a field is stronger for having a mix of ivory tower theorists, with no impact on industry whatsoever, and more industry-like systems people. A revolution isn’t called for, but personally it’s important to me for my research to have some kind of impact outside academia.