神刀安全网

Why It's Not Academia's Job to Produce Code That Ships

My scientist friends often scoff at crime show writers’ creative interpretation of technology’s limits.

Why It's Not Academia's Job to Produce Code That Ships
The technology shiny world of CSI: Cyber .

"Let’s zoom in here," a character says in an investigation room with floor-to-ceiling screens showing high-definition maps of the show’s major metropolitan area. A flick of the fingers reveals an image of the suspect at mouth-watering resolution.

In another scene, the characters listen to a voice mail from the suspect. "What’s that in the background?" one investigator asks. Using an interface that deadmau5 would kill to have, the hacker of the bunch strips out the the talking, the other sounds. They say some words like "triangulation" and, eureka, they deduce the suspect’s exact location.

Yes, real police technology is nowhere near this sophisticated. Yes, nobody (except maybe the government, secretly) has technology like this. But those who criticize the lack of realism are missing the point.

The realities that art constructs take us out of our existing frames of perception–not only for fun, but also for profit. Many important technological advances, from the submarine from the cell phone, appeared in fiction well before they appeared in real life . Correlation does not imply causation, but many dare say that fiction inspires science.

Why It's Not Academia's Job to Produce Code That Ships
Some complaints against academic Computer Science.

This brings us to the relationship between academic Computer Science and the tech industry. Recently, people in industry have made similar criticisms of academic computer science . Mike Hoye of Mozilla started the conversation by saying he was "extremely angry" with academics for making it difficult for industry to access the research results. This unleashed a stream of Internet frustration against academics about everything from lack of Open Access ( not our faults ) to squandering government funding ( not entirely true ) to not caring about reproducibility or sharing our code ( addressed in an earlier blog post ).

At the heart of the frustration is a legitimate accusation*: that academics care more about producing papers than about producing anything immediately (or close to immediately) useful for the real world. I have been hearing some variation of this criticism, from academics as well as industry people, for longer than I have been doing research. But these criticisms are equivalent to saying that TV writers care more about making a good show than being technically realistic. While both are correct observations, they should not be complaints. The real problem here is not that academics don’t care about relevance or that industry does not care about principles, but that there is a mismatch in expectations.

It makes sense that people expect academic research results to work in companies right away. Research that makes tangible, measurable contributions is often what ends up being most popular with funding sources (including industry), media outlets, and other academics reviewing papers, faculty applications, and promotion cases. As a result, academic researchers are increasingly under pressure to do research that can be described as "realistic" and "practical," to explicitly make connections between academic work and the real, practical work that goes on in industry.

In reality, most research–and much of the research worth doing–is far from being immediately practical. For very applied research, the connections are natural and the claims of practicality may be a summer internship or startup away from being true. Everything else is a career bet. Academics bet years, sometimes the entirety, of their careers on visions of what the world will be like in five, ten, twenty years. Many, many academics spend many years doing what others consider "irrelevant," "crazy," or "impossible" so that the ideas are ready by the time the time the other factors–physical hardware, society–are in place.

Why It's Not Academia's Job to Produce Code That Ships
The paths to becoming billion-dollar industries.

In Computer Science, it is especially easy to forget that longer-term research is important when we can already do so much with existing ideas. But even if we look at what ends up making  money, evidence shows that career bets are responsible for much of the technology we have today. The book Innovation in Information Technology talks about how ideas in computer science turned into billion-dollar ideas. A graphic from the book (on right) shows that the Internet started as a university project in the sixties. Another graphic shows there were similarly long tech transfer trajectories for ideas such as relational databases, the World Wide Web, speech recognition, and broadband in the last mile.

The story of slow transfer is true across Computer Science. People often ask me why I do research in programming languages if most of the mainstream programming languages were created by regular programmers. It we look closely, however, most of the features in mainstream languages came out of decades of research. Yes, Guido Van Rossum was a programmer and not a researcher before he became the Benevolent Dictator of Python. But Python’s contribution is not in innovating in terms of any particular paradigm, but in combining well features like object orientation (Smalltalk, 1972, and Clu, 1975), anonymous lambda functions (the lambda calculus, 1937), and garbage collection ( 1959 ) with an interactive feel ( 1960s ). As programming languages researchers, we’re looking at what’s next: how to address problems now that people without formal training are programming, now that we have all these security and privacy concerns. In a media interview about my Jeeves language for automatically enforcing security and privacy policies, I explained the purpose of creating research languages as follows: "We’re taking a crazy idea, showing that it can work at all, and then fleshing it out so that it can work in the real world."

Some may believe that all of the deep, difficult work has already been done in Computer Science–and now we should simply capitalize on the efforts of researchers past. History has shown that progress has always gone beyond people’s imaginations. Henry Leavitt Ellsworth , the first Commissioner of the US Patent Office, is known to have made fun of the notion that progress is ending, saying, "The advancement of the arts, from year to year, taxes our credulity and seems to presage the arrival of that period when human improvement must end." And common sense tell us otherwise. All of our data is becoming digitized and we have no clue how to make sure we’re not leaking too much information. We’re using software to design drugs and diagnose illness without really understanding what the software is doing. To say we have finished making progress is to be satisfied with an unsatisfying status quo.

The challenge, then, is not to get academics to be more relevant, but to preserve the separate roles of industry and academia while promoting transfer of ideas. As academics, we can do better in communicating the expectations of academic research (an outreach problem) and developing more concrete standards of expectations for "practical" research (something that Artifact Evaluation Committees have been doing, but that could benefit from more input from industry). As a society, we also need to work towards having more patience with the pace of research–and with scientists taking career bets that don’t pay off. Part of the onus is on scientists for better communicating the actual implications of the work. But everyone else also has a responsibility to understand that if we’re in the business of developing tools for an unpredictable future–as academics are–it is unreasonable to expect that we can fill in all the details right away, or that we’re always right.

It is exciting that we live in a time when it is possible to see technical ideas go from abstract formulations to billion-dollar industries in the course of a single lifetime. It is clear we need to rethink how academia and industry should coexist under these new circumstances. Asking academics to conform to the standards of industry, however, is like asking TV writers to conform to the standards of scientists–unnecessary and stifling to creativity. I invite you to think with me about how we can do better.

With thanks to Rob Miller and Emery Berger for helping with references.

* Note that this post does not address @mhoye’s main complaint about reproducibility, for which the response is that, at least in Programming Languages and Software Engineering, we recognize this can be a problem ( though not as big of a problem as some may think ) and have been working on it through the formation of Artifact Evaluation Committees . This post addresses the more general "what are academics even doing?!" frustration that arose from the thread.

Addendum: Many have pointed out that nobody is asking for academics to produce production-level code, but for better code sharing. I completely agree with @mhoye’s point that academics should be sharing code and data. It is precisely to promote the sharing of usable artifacts that I’m co-chairing the Artifact Evaluation Committee for Principles of Programming Languages (POPL) 2017 . I also agree that academics should keep eventual relevance in mind and work to bridge gaps with industry when possible. This is why I co-founded Cybersecurity Factory , an accelerator aimed at commercializing security research.

What I’m addressing in this post is a deeper underlying sentiment that arose from the recent conversation, the sentiment that academia creates an environment that enables people to work on useless ideas. I should clarify that I’m using "shippable code" to describe ideas that are close to being commercializable. Over the years, I’ve seen people evaluate research by how closely the paper translates into a startup idea. I’ve seen people evaluate research by how easily the work can get media attention. People also often ask what the point is of working on ideas that aren’t going to make their way into companies in the next five years. (To me personally, people also ask why work on programming languages if companies aren’t going to use them right away and why not work on fixing problems companies have more directly.) Much of our technology today–laptops; mobile devices–were considered out-there pipe dreams when people started working on them. A professor of mine who had worked at Bell Labs said that when people first started saying they wanted to take their computers to the beach with them, computers were huge and people wondered why those people weren’t using their time better. The importance of the ideas are only obvious now in retrospect.

What I’m asking is for us to support–or at least, not oppose–some more bets on basic science when it comes to computing. It’s a sad state of affairs when would-be Nobel laureates end up driving car dealership shuttles because they were not able to meet requirements of immediate relevance. We’re in danger of missing out on great discoveries if we subject computer science to constraints of immediate relevance.

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » Why It's Not Academia's Job to Produce Code That Ships

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址