{"id":836,"date":"2009-12-23T17:02:53","date_gmt":"2009-12-23T17:02:53","guid":{"rendered":"http:\/\/scientopia.org\/blogs\/goodmath\/2009\/12\/23\/academia-vs-industry-an-updated-opinion\/"},"modified":"2009-12-23T17:02:53","modified_gmt":"2009-12-23T17:02:53","slug":"academia-vs-industry-an-updated-opinion","status":"publish","type":"post","link":"http:\/\/www.goodmath.org\/blog\/2009\/12\/23\/academia-vs-industry-an-updated-opinion\/","title":{"rendered":"Academia vs Industry: an Updated Opinion"},"content":{"rendered":"<p> One thing that continually amazes me is the amount of email I get from<br \/>\nreaders of this blog asking for career advice. I usually try to just politely<br \/>\ndecline; I don&#8217;t think I&#8217;m particularly qualified to give personal<br \/>\nadvice to people that I don&#8217;t know personally. <\/p>\n<p> But one thing that I have done before is shared a bit about my own<br \/>\nexperience, and what I&#8217;ve learned about the different career paths that you<br \/>\ncan follow as a computer science researher. About six months after I started<br \/>\nthis blog, I wrote a post about working in academia versus working in<br \/>\nindustry. I&#8217;ve been meaning to update it, because I&#8217;ve learned<br \/>\na bit more in the last few years. When I wrote the first version, I<br \/>\nwas a research staff member at IBM&#8217;s T. J. Watson research center. Since<br \/>\nthen, I left IBM, and I&#8217;ve been an engineer at Google for 2 1\/2 years.<br \/>\nHaving spent a couple of years as a real full-time developer has<br \/>\nbeen a seriously educational (and humbling) experience. If you&#8217;d like<br \/>\nto look at the original to see how my thinking has changed, you can find it<br \/>\n<a href=\"http:\/\/scientopia.org\/blogs\/goodmath\/2006\/08\/working-in-industry-vs-working-in-academia\">here<\/a>.<\/p>\n<p> At least as a computer scientist, there are basically three kinds of work<br \/>\nyou can do that take advantage of a strong academic background like a PhD. You<br \/>\ncan go into academia and do research; you can go into industry and do<br \/>\nresearch; or you can go into industry and do development. If you do<br \/>\nthe last, you&#8217;ll likely be doing what&#8217;s sometimes called <em>advanced<br \/>\ndevelopment<\/em>, which is building a system where you&#8217;ve got a specific<br \/>\ngoal, where you need to produce something real &#8211; but it&#8217;s out on the edge of<br \/>\nwhat people really know how to do. You&#8217;re not really doing research, but<br \/>\nyou&#8217;re not doing run-of-the-mill programming either: you&#8217;re doing full-scale<br \/>\ndevelopment of systems that require exploration and experimentation. <\/p>\n<p> I&#8217;m going to talk about what the differences are between<br \/>\nacademic research, industrial research, and advanced development in<br \/>\nterms of the basic tradeoffs. As I see it, there really five fundamental<br \/>\nareas where the three career paths differ:<\/p>\n<ol>\n<li><b>Freedom<\/b>: In academia, you&#8217;ve got a lot of freedom to do<br \/>\nwhat you want, to set your agenda. In industrial research, you&#8217;ve<br \/>\nstill got a lot of freedom, but you&#8217;re much more constrained: you<br \/>\nactually need to answer to the company for what you do. And in AD,<br \/>\nyou&#8217;re even more constrained: you&#8217;re expected to produce a particular<br \/>\nproduct. You generally have a decent amount of freedom to choose<br \/>\na product to work on, but once you&#8217;ve done that, you&#8217;re pretty much<br \/>\ntied down.<\/li>\n<li><b>Funding<\/b>: In academia, you frequently need to devote huge amounts<br \/>\nof your time to getting funding for your work. In industrial research,<br \/>\nthere&#8217;s still a serious amount of work involved in getting and<br \/>\nmaintaining your funding, but it&#8217;s not the same order of magnitude<br \/>\nas in academia. And in AD, you don&#8217;t really need to worry about funding<br \/>\nat all.<\/li>\n<li><b>Time and Scale<\/b>: Academic projects frequently have to be limited<br \/>\nin scale &#8211; you&#8217;ve got finite resources, but you can plan out<br \/>\na research agenda years in advance; in industrial<br \/>\nwork (whether research or AD), you&#8217;ve got access to resources that<br \/>\nan academic can only dream of, but you need to produce results<br \/>\n<em>now<\/em> &#8211; forget about planning what you&#8217;ll be doing five years<br \/>\nfrom now.<\/li>\n<li><b>Results<\/b>: What you produce in the end is very different<br \/>\ndepending on which path you&#8217;re on. In academic research, you&#8217;ve got<br \/>\nthree real goals: get money, publish papers, and graduate students.<br \/>\nIn industry, you&#8217;re expected to produce something of value to<br \/>\nthe company &#8211; whether that&#8217;s a product, patents, reputation, depends<br \/>\non your circumstances &#8211; but you need to convince the company that<br \/>\nyou&#8217;re worth what they&#8217;re paying to have you. And in AD, you&#8217;re<br \/>\ncreating a product. You can publish papers along the way, and that&#8217;s<br \/>\ngreat, but if you don&#8217;t have a valuable product at the end, no number<br \/>\nof papers is going to convince anyone that your project wasn&#8217;t a failure.<\/li>\n<li><b>Impact<\/b>: what kind of affect your work will have on<br \/>\nthe world\/people\/computers\/software if it&#8217;s successful.<\/li>\n<\/ol>\n<p><!--more--><\/p>\n<h3>Freedom<\/h3>\n<p> To many people, this is the fundamental tradeoff between industry and<br \/>\nacademia. The short version is that academics have a lot more freedom<br \/>\nthan industry folks, but it comes at a serious price.<\/p>\n<p> When you&#8217;re a professor, you&#8217;ve got a huge amount of freedom. In an<br \/>\nimportant sense, you don&#8217;t really have a boss. You set your agenda, and you<br \/>\npursue it however you want. You can decide what to work on. You can decide<br \/>\nwhat your goals are, and you can decide when to change them. You&#8217;re in<br \/>\ncharge.<\/p>\n<p> In industry, you don&#8217;t have nearly so much freedom. You&#8217;re constrained by<br \/>\nthe needs of your company. Even in the most free-wheeling industrial<br \/>\nenvironment, you can&#8217;t just pick what you want to do; you&#8217;re expected to do<br \/>\nthings that are at least <em>potentially<\/em> beneficial to the company. (And<br \/>\nthat potential had better actually be a pretty high probability!)<\/p>\n<p> The biggest strike here against industry is politics. (Not that there<br \/>\naren&#8217;t politics in academia&#8230;) In an industrial setting, you&#8217;re stuck living<br \/>\nwith the outcome of political struggles in which you aren&#8217;t even a<br \/>\nparticipant. In my time in industry, I&#8217;ve seen very good projects be cancelled<br \/>\nin favor of garbage as the result of random turf wars between executives. Your<br \/>\nwork can be outstanding &#8211; but because of the outcome of some pointless<br \/>\npolitical struggle, you could have to completely change directions on<br \/>\nvirtually no notice. <\/p>\n<h3>Funding<\/h3>\n<p> This is the biggest problem with academia: as a professor, you need to<br \/>\nfind a way to raise money to provide the resources you need to do your work.<br \/>\nThat&#8217;s a huge problem: most of the academic folks I know spend at least half<br \/>\nof their time writing grant proposals, grant reports, work summaries,<br \/>\nattending status meetings, and so on &#8211; doing all of the things that are<br \/>\nnecessary to keep their work and their students funded. (And that means that<br \/>\nthey&#8217;re not nearly as free as the general statement above about being able to<br \/>\ndo what they want would imply: academics can do what they want provided they<br \/>\ncan get someone to pay for it; but getting someone to pay for work is very<br \/>\nhard; and getting someone to pay for something very different from what you&#8217;ve<br \/>\ndone before can be close to impossible.)<\/p>\n<p> In industry, your funding generally comes from product development groups<br \/>\nwithin your company. As an industrial researcher, you are indirectly working<br \/>\nfor the product groups. This tends to mean that you spend much less time going<br \/>\naround and begging for money; it also means that you have a lot fewer choices<br \/>\nabout who to send an application to. If the product group for your research<br \/>\narea isn&#8217;t interested in what you&#8217;re doing, you&#8217;re going to have to find a new<br \/>\nproject.<\/p>\n<p> In development, you&#8217;ve got some of the same problems as academic research<br \/>\n&#8211; but in practice, it tends to be a lot less burdensome. Before you can start<br \/>\na project, you need to get someone to agree to fund the project. But once you<br \/>\nget going, you don&#8217;t worry about budgets &#8211; it&#8217;s someone else&#8217;s problem. You<br \/>\njust get to focus on the work. (The <em>someone elses problem<\/em> is the key.<br \/>\nObviously, money is still an issue: someone needs to pay for the development.<br \/>\nBut in general, for product development, the money is allocated ahead of time<br \/>\n&#8211; so you don&#8217;t worry about it; some administrative person is responsible for<br \/>\nkeeping it flowing.) <\/p>\n<p> It&#8217;s a direct tradeoff with freedom: the more freedom you have, the more<br \/>\nyou&#8217;re stuck working to get resources; the more constrained you are, the more<br \/>\nsecure your funding situation is. Speaking as someone with development, this<br \/>\ntradeoff can cut both ways: sometimes, the fact that you don&#8217;t need to worry<br \/>\nabout funding is enough freedom in itself to make up for the limitations on<br \/>\nwhat you can do; at other times, it&#8217;s frustrating enough to make you want to<br \/>\nbang your head against a wall.<\/p>\n<h3>Time and Scale<\/h3>\n<p> This is the most direct tradeoff of any of these.<\/p>\n<p> In academia, you get to spend a lot of time working on something. Every<br \/>\nacademic researcher I know has <em>at least<\/em> the next five years of their<br \/>\nwork planned out &#8211; and usually considerably more than that. Academics get to<br \/>\nreally create an ambitious, long-term agenda, and follow it. In contrast, in<br \/>\nindustrial work, you rarely get to plan more than a year or two (if you&#8217;re<br \/>\nlucky) in advance. <\/p>\n<p> On the other hand, industrial researchers tend to work on a scale that&#8217;s<br \/>\nalmost unimaginable to academics. In my field (software engineering),<br \/>\nacademics talk about what they call <em>large<\/em> systems, which are<br \/>\ntypically a couple of thousand lines of code. (I can&#8217;t tell you how many<br \/>\npapers I&#8217;ve reviewed that talk about tools that work on &#8220;real-world large<br \/>\nscale systems&#8221;, but turn out to max out around 10,000 lines of code.) In<br \/>\ncontrast, one of my first projects at IBM involved doing static analysis of<br \/>\ntemplates in a C++ compiler. The code base that I ran my <em>initial<\/em><br \/>\ntests on was 1.5 million lines of code. At Google, I&#8217;ve got a<br \/>\n<em>configuration file<\/em> that specifies a set of source files to be spliced<br \/>\ntogether, and that configuration file is longer than the the entire code base<br \/>\nused by most academic research projects.<\/p>\n<p> My current project is building a system which processes terabytes of data<br \/>\nevery day. I don&#8217;t even know how many machines it&#8217;s currently running on &#8211; but<br \/>\nit&#8217;s in the thousands. And around here, that&#8217;s <em>routine<\/em>. <\/p>\n<p> If I were to get back into static program analysis, I could easily get<br \/>\ntens of millions of lines of code to test on &#8211; and I could use hundreds or<br \/>\neven thousands of machines to speed up the analysis if I wanted to! No<br \/>\nacademic gets to do anything on that scale!<\/p>\n<p> On the other hand: I never expected to wind up doing logs analysis. It&#8217;s<br \/>\na huge change from the stuff I&#8217;ve done before. It&#8217;s still within the<br \/>\ngeneral scope of things that I like to do, but it&#8217;s probably not an area that<br \/>\nI would have gravitated towards if I were free to choose anything I wanted.<\/p>\n<h3>Results<\/h3>\n<p> Results are the primary product of your work, and they&#8217;re hugely different depending<br \/>\non your career path.<\/p>\n<p> In academia, you produce two things: publications and students. And the students<br \/>\nmostly matter because they help you produce publications. Publications are pretty<br \/>\nmuch <em>the<\/em> thing that matters in academia, so producing papers is where<br \/>\nyou focus your effort. <\/p>\n<p> Industrial research produces three things: papers, patents, and products. The<br \/>\nlast two count for a whole lot more than the first. Patents are a big deal in industry.<br \/>\nPartly, that&#8217;s because they bring in a <em>lot<\/em> of money; and partly because<br \/>\nthey can <em>save<\/em> the company a lot of money. The way that patents end<br \/>\nup working in industry is sort of like the mutually assured destruction strategy of nuclear weapons in the real world. You want to have enough patents (bombs) to make sure that you can utterly obliterate your competition (opponents), so that they know that they<br \/>\ncan&#8217;t obliterate you without killing themselves.<\/p>\n<p> Products in industry research really means prototypes. In general, industry researchers don&#8217;t produce full-fledged products. What they do is create a new idea,<br \/>\nand build an implementation that demonstrates the idea. If it proves out, a product<br \/>\ndevelopment group will adopt the idea and implement it as a part of a product.<\/p>\n<p> Obviously, being an engineer working on a product, what you produce is<br \/>\nthe product.<\/p>\n<h3>Impact<\/h3>\n<p> That leads to a final tradeoff, which makes a huge difference to me:<br \/>\nimpact.  What I mean by that is what kind of affect your work has<br \/>\non other people.<\/p>\n<p> The primary output of most academic work is publications. When academic<br \/>\nwork is highly successful, it has an ideological impact &#8211; the ideas influence<br \/>\nother people. It&#8217;s a sort of indirect impact, but it shouldn&#8217;t be<br \/>\nunder-appreciated. Most of the really great things to come out of research<br \/>\nwere built on ideas that came from academic research. It can take a long time,<br \/>\nand it can be very indirect &#8211; but eventually, if it&#8217;s really good work, it can<br \/>\nhave an impact. (But to be honest, most of the time, it doesn&#8217;t. Most academic<br \/>\nwork produces papers that no more than a handful of people read, and which<br \/>\nnever influences anything.)<\/p>\n<p> Industry also produces ideas and papers, but they&#8217;re not the primary form<br \/>\nof impact. Most industrial research work produces two things: patents and<br \/>\nprototypes, which (if they&#8217;re successful), wind up influencing the company<br \/>\nand\/or its products. Like academia, most of it dies an unmourned death: very<br \/>\nfew research prototypes actually wind up making much difference. But when they<br \/>\ndo, it tends to be more tangible than what happens in academia. In industry,<br \/>\nwhen your work gets picked up, it gets picked up <em>right away<\/em>, and<br \/>\nyou&#8217;ll probably know the people doing it. Academic research tends to take<br \/>\nlonger, and be much more indirect. As an academic, you probably won&#8217;t even<br \/>\n<em>know<\/em> when someone is building on what you did until after they&#8217;re<br \/>\ndone.<\/p>\n<p> Industrial development is very different: you tend to have<br \/>\ndirect, immediate, tangible impact.  There&#8217;s a directness to it<br \/>\nwhich is very different from anything else. In general, in the short<br \/>\nterm, you get to see an immediate impact from your work, which is<br \/>\nextremely rewarding. But it&#8217;s likely to be short-lived: rarely does a<br \/>\ndevelopment project end up turning into an influential long-lived<br \/>\nproduct. But development tends to have a higher<br \/>\nsuccess rate than research, and when it&#8217;s successful, it&#8217;s wonderful &#8211;<br \/>\nyou get to see the product of your work helping other people.<\/p>\n<p> In my 11 years at IBM, my research never produced anything that really got<br \/>\nused. Selling something new to an IBM product development group is incredibly<br \/>\nhard &#8211; the way the company is put together, it&#8217;s really hard to produce a new<br \/>\nproduct, and even for existing products, the development teams are usually so<br \/>\noverworked that they just don&#8217;t have time to look at incorporating some new<br \/>\nresearch prototype into their system.  In my time there, there were two<br \/>\ntimes that I managed to get a development group to pick up my work; and both<br \/>\ntimes, the product never got released. (And both times, the reason that it<br \/>\ndidn&#8217;t get released was completely political.)<\/p>\n<p> In contrast, when I came to Google, my first project was a query language<br \/>\nfor component dependency graphs in our build system. Within one day of when I<br \/>\nchecked the first version of it into our code repository, I had people using<br \/>\nit. Within a week, I had over a hundred people actively using my in-progress<br \/>\ncode. Now, I&#8217;d be surprised if there&#8217;s a single engineer at Google who&#8217;s never<br \/>\nused it. <\/p>\n<p> Of course, the down-side of that is that my code got replaced. After<br \/>\npeople used it for a few months, we realized that the syntax really just<br \/>\nwasn&#8217;t right for the way it was going to be used. Since it was a query<br \/>\nlanguage, I&#8217;d tried to do something SQL-like, so that it would be familiar to<br \/>\npeople; it turned out that people wrote much more complicated queries than we<br \/>\nanticipated, and it was really hard to write complicated queries over a<br \/>\ndepedency graph using a SQL-like syntax. Since by then, my time was committed<br \/>\nto other things, someone else did a rewrite to change the syntax, and that&#8217;s<br \/>\nthe version that people use. That&#8217;s pretty typical of development in my<br \/>\nexperience: I got to do something really cool and exciting and useful,<br \/>\nand I got to put it into the hands of people who needed it?<\/p>\n<p> Now, in my current project, I&#8217;ve got a couple of hundred internal<br \/>\ncustomers. People who actively use the product of my work. People who<br \/>\nare affected by what I do: who have access to the information that they<br \/>\nneed to do their jobs, because of the tools that I produced.<br \/>\nMy work actually <em>matters<\/em> to people. The importance of that can&#8217;t be overstated. I&#8217;m a person whose research<br \/>\nwas always focused on how to build tools that help other people program. Now<br \/>\nI&#8217;m building tools that my coworkers <em>really<\/em> use to get their work<br \/>\ndone. I never managed to do that in industrial research; and I never would<br \/>\nhave been able to have such a direct impact on other people from academia.<\/p>\n<h3>So what do I do, and why?<\/h3>\n<p> These days, I&#8217;m a software engineer doing AD at Google. Doing AD at Google<br \/>\nisn&#8217;t something special or unusual the way it was when I was at IBM; the<br \/>\noverwhelming majority of engineers at Google are doing what I call advanced<br \/>\ndevelopment. It&#8217;s the nature of the company: most of what we do is on the edge<br \/>\nof what current technology can do. We&#8217;re working with quantities of data that<br \/>\nare almost incomprehensible, and it&#8217;s our job to <em>make them<\/em><br \/>\ncomprehensible. So almost everything we do winds up being on the edge.<\/p>\n<p> As you can probably guess from the description above, I&#8217;m pretty happy<br \/>\nin advanced development. I won&#8217;t pretend that it&#8217;s without its frustrations.<br \/>\nThere are definitely times when I miss the freedom that I had as a researcher.<br \/>\nBut on balance, I&#8217;m a lot happier being an engineer at Google than I ever<br \/>\nwas being a researcher at IBM &#8211; and my guess is that I&#8217;m happier than I would<br \/>\nbe in academia.<\/p>\n<p> Freedom is great, and I don&#8217;t mean to downplay it. I would like a bit more<br \/>\nfreedom than I have. But my experience has been that when I&#8217;ve had more<br \/>\nfreedom, I was <em>less<\/em> happy. That&#8217;s not because I like to have my work<br \/>\ndictated to me, or to be tied down to something specific and well-defined. I<br \/>\nknow people who like development for those reasons, but they&#8217;re not my<br \/>\nreasons. For me, it comes down to the way that the tradeoffs between freedom<br \/>\nand impact work out for the kind of work that I want to do. My area is tools:<br \/>\nI want to build tools that help other people write code. For a person who<br \/>\nwants to build tools, the inability to get those tools into the hands of<br \/>\npeople who would benefit from them is incredibly frustrating. The reality of<br \/>\nthings is that you&#8217;re always stuck with tradeoffs &#8211; and in this case, the<br \/>\ntradeoff is pretty clear. A typical academic can&#8217;t devote the time to<br \/>\nproducing tools that are solid enough to be used for real-world development &#8211;<br \/>\ndoing that takes a huge amount of time and effort, and that time and effort<br \/>\nwon&#8217;t generate any more publications or grants than a prototype. <\/p>\n<p> For my area, the difference between academic research and industrial<br \/>\nresearch and development was demonstrated to me by an experience at a<br \/>\nconference back in (I think) 2001. I had papers at two workshops &#8211; one was an<br \/>\nindustry-dominated workshop on software configuration management; the other<br \/>\nwas an academia-dominated workshop on aspect-oriented software development. I<br \/>\nspent the morning at the AOSD workshop, and the afternoon at the SCM. During<br \/>\nthe morning, I heard about 8 different academics describe their tools for<br \/>\n&#8220;large-scale software development&#8221;, but the largest system that<br \/>\n<em>anyone<\/em> had used as a test-case for their system was about 1,200 lines<br \/>\nof code. That afternoon, at the SCM conference, I saw someone present their<br \/>\nresults from analyzing a &#8220;moderate sized&#8221; development project &#8211; the software<br \/>\nfor the Paris Metro, which included 4 million lines of code developed by 4,000<br \/>\nengineers.<\/p>\n<p> I want to be in the second group &#8211; writing the tools that get used by<br \/>\n4,000 people to build a better system. And the way to do that is to be<br \/>\nan engineer at a company like Google. If I&#8217;d stayed at IBM, I would definitely have<br \/>\nstayed in research: IBM isn&#8217;t (in my opinion) a good place to be an engineer.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>One thing that continually amazes me is the amount of email I get from readers of this blog asking for career advice. I usually try to just politely decline; I don&#8217;t think I&#8217;m particularly qualified to give personal advice to people that I don&#8217;t know personally. But one thing that I have done before is [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[12,48],"tags":[],"class_list":["post-836","post","type-post","status-publish","format-standard","hentry","category-chatter","category-personal"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4lzZS-du","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts\/836","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/comments?post=836"}],"version-history":[{"count":0,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts\/836\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/media?parent=836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/categories?post=836"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/tags?post=836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}