Skip to main content

Working for The Google

I am about to take a one-year sabbatical from Harvard to join Google. If you haven't heard of them, Google is this little startup company with this really neat website that lets you search for just about anything on the Internet. It is very cool.

I'm going to be at the Google office here in Cambridge (since I can't move my family right now) but expect to work with folks at the Seattle and Mountain View offices. This way I can also keep tabs on my research group at Harvard and hopefully keep things moving along here. But largely I am going to be stepping back from my academic responsibilities -- I intend to fully dive into the Google job and immerse myself in that environment.

A lot of people have asked me what I'll be doing at Google. I can't say much, but I will hint that it has to do with using high-energy lasers to digitize real objects into a computer system called the MCP. I am sure nothing can possibly go wrong with this project.

Seriously, I only have a vague idea of what I will be working on, but the high order bit is that my job title is simply "software engineer." Essentially, I'll be writing code. Not leading a project or doing "research" or anything like that. To be honest, this makes me extremely happy -- I miss hacking on a daily basis and look forward to being a grunt in the trenches, so to speak. As far as I can tell, this is how most people come into Google, regardless of their level of experience. Craig Chambers, who left a tenured position at University of Washington to join Google, told me that he came in as a software engineer, hacking on someone else's project, and it wasn't until he had been at it for a while that he started defining his own projects and leading his own teams.

The way I think of it, being in academia is a lot like building toy boats and playing with them in your bathtub.

Of course, this has many advantages -- you get to completely define the experimental environment, don't need to worry about aspects of the boat design that don't interest you, and can explore radically new designs without much concern for legacy approaches or "making money." At the same time it can get pretty disconnected from reality, depending on how you approach it.

Whereas being at Google is like working on an aircraft carrier at sea.


In my case, my job will be to polish the portholes on the poop deck, and I won't have much influence on the overall design or direction of the ship -- but hey, I'll learn a lot in the process. There is also something very attractive about writing code that will actually be part of a running system and potentially used by millions of people every day. Of course, I'll have to get used to things like writing tests and doing code reviews, and working under a vast number of constraints that we tend to ignore in academic settings.

Keep in mind I've never really worked as a software engineer. In a lot of ways I feel totally unqualified to teach my students about writing good code or building reliable systems since I've never actually had to do it myself. (That's not quite true -- the research systems I build are subjected to rigorous stress testing, but certainly aren't mission-critical the way Google's code has to be.) A stint at Google will hopefully make me a better programmer, system designer, and researcher.

I'm not yet sure whether Google is going to let me continue blogging while I'm there -- hopefully they will let me blog about non-Google-related topics, but we'll see. Maybe I just need a pseudonym -- if you see a blog pop up called "Final and Centralized" you'll know it's me...


  1. I am curious about professors who go to sabbaticals - how would your students manage? Do they also write code for goog?

  2. Fortunately my students are pretty independent and I have a couple of great postdocs to help keep them in line. My students will have nothing to do with the stint at Google - this is completely separate from my Harvard group.

  3. Welcome aboard! It's great to see academics doing stints in the real world. The place takes a bit of getting used to, but once you've figured out the ropes, you can do all sorts of interesting things. I look forward to hearing what you accomplish.

  4. You have to wear that hat the whole time.

  5. This sounds like a great opportunity. I find myself in a similar position, teaching many practice-oriented courses but without having significant non-academic project experience. I hope that, even if you cannot blog about your specific projects, that you will continue sharing your experiences.

  6. As a faculty member who has thought about doing exactly this, how did you go about it? Did they ask you? or did you make the first contact?

    How would you recommend one approach getting a 1 year sabbatical at Google?

  7. Quick, someone set up the Fake Matt Welsh blog before Matt does!

    Plenty of Google employees are active bloggers.

  8. I approached them - helps to know some people inside the company. To be clear, I don't think they do "sabbaticals" in the conventional sense - I'm actually hired as a full time software engineer and had to go through the whole interview process and everything.

  9. Wow!!!
    Will you shed some light on the hiring process too??

  10. Great news Matt.. did you applied there as a fallback just in case the tenure thing doesn't work out? :)

  11. Re: "Fallback". I think it's safe to assume that having a job at Google is a great backup plan, even if tenure **does** work out!!

  12. How will this affect your recently announced decision to become the editor in chief of ACM tosn? I assume that a regular software engineer at Google is not allowed to work on such things at company time (even the famous "20% projects" at Google need to be in line with what the Google management feels is appropriate, from what I gather). Will you carry out this work on weekends only, or have you negotiated a deal where you will be able to work on ACM tosn as paid Google work?

  13. I don't know what Google's policy is with respect to outside activities, but I imagine they will treat it like any other external service. Plenty of Googlers serve on conference program committees, for example. Being the TOSN editor-in-chief is not a paid position and frankly is not that much work, so I can do it in my "spare time" if need be. I'd be surprised if this were a problem.

  14. Very nice!

    Hope you like our prespective of the world :)

    Enjoy it!

  15. Do you see a possibility of staying at Google after the sabbatical and not returning to academia?

  16. In my other life, I worked at a university for almost a decade. Your description, "academia is a lot like building toy boats and playing with them in your bathtub", is spot on. Your future students stand to gain a great deal by your tour of duty.

    Enjoyed the post. Wish you the best.


  17. A professor working in Google? At a glance, it's like adding new heavy artillery weapon in that aircraft carrier.

    Is there really a big gap between being an academia and working in a real world, in case as you are a professor?

  18. I had Craig Chambers for my compilers course @ UW! Nothing like grammar trees...

  19. There are no portholes on the poop deck :-)

  20. Nice employer :-) and we know what we are Talking about !


Post a Comment

Popular posts from this blog

Why I'm leaving Harvard

The word is out that I have decided to resign my tenured faculty job at Harvard to remain at Google. Obviously this will be a big change in my career, and one that I have spent a tremendous amount of time mulling over the last few months.

Rather than let rumors spread about the reasons for my move, I think I should be pretty direct in explaining my thinking here.

I should say first of all that I'm not leaving because of any problems with Harvard. On the contrary, I love Harvard, and will miss it a lot. The computer science faculty are absolutely top-notch, and the students are the best a professor could ever hope to work with. It is a fantastic environment, very supportive, and full of great people. They were crazy enough to give me tenure, and I feel no small pang of guilt for leaving now. I joined Harvard because it offered the opportunity to make a big impact on a great department at an important school, and I have no regrets about my decision to go there eight years ago. But m…

Rewriting a large production system in Go

My team at Google is wrapping up an effort to rewrite a large production system (almost) entirely in Go. I say "almost" because one component of the system -- a library for transcoding between image formats -- works perfectly well in C++, so we decided to leave it as-is. But the rest of the system is 100% Go, not just wrappers to existing modules in C++ or another language. It's been a fun experience and I thought I'd share some lessons learned.

Why rewrite?

The first question we must answer is why we considered a rewrite in the first place. When we started this project, we adopted an existing C++ based system, which had been developed over the course of a couple of years by two of our sister teams at Google. It's a good system and does its job remarkably well. However, it has been used in several different projects with vastly different goals, leading to a nontrivial accretion of cruft. Over time, it became apparent that for us to continue to innovate rapidly wo…

Running a software team at Google

I'm often asked what my job is like at Google since I left academia. I guess going from tenured professor to software engineer sounds like a big step down. Job titles aside, I'm much happier and more productive in my new role than I was in the 8 years at Harvard, though there are actually a lot of similarities between being a professor and running a software team.

I lead a team at Google's Seattle office which is responsible for a range of projects in the mobile web performance area (for more background on my team's work see my earlier blog post on the topic). One of our projects is the recently-announced data compression proxy support in Chrome Mobile. We also work on the PageSpeed suite of technologies, specifically focusing on mobile web optimization, as well as a bunch of other cool stuff that I can't talk about just yet.

My official job title is just "software engineer," which is the most common (and coveted) role at Google. (I say "coveted&quo…