Monday, October 29, 2007


I enjoy consulting, for several reasons:
  1. It fulfills a need to be more directly relevant to the real world.
  2. It gives me a chance to work with different sets of people.
  3. It allows me to learn new things and exercise skills that I don't necessarily use as a professor.
  4. It pays well.
I’ve consulted for research labs, startups, and larger companies, doing research, development, and expert witness work. I’ve been consulting since graduate school, and it’s an activity I’d recommend for most graduate students, once they’re comfortable in their research. I view the flexibility of being able to do research while still being able to take on consulting projects as one of the major benefits of being a professor.

Although I do know several algorithmists that consult at times, my impression is that the consulting culture is surprisingly small in computer science theory, even among algorithmists, and that it is much more prevalent in networking and EE theory. (The exceptional case I can recall is around the time of Akamai, where once it seemed like a sure bet, a lot of theorists hopped on the bandwagon for at least a short stint.) I generally hear people talk about consulting much more at networking and EE conferences than I do at theory conferences. Maybe it's just impolite to talk about it. Or maybe theorists don't consult much because most don’t have the skills people are looking for in consultants. Or maybe most theorists just aren’t that interested in consulting, and that's part of why they ended up being theorists.

Do you consult? (I'm particularly curious -- do complexity theorists consult?) If not, why not? Are my impressions about theory+consulting just way off base?


Anonymous said...

I'm curious: how did you end up consulting as a graduate student. Did you actively search for organizations to consult for or did organizations get in touch with you?


Michael Mitzenmacher said...

For me, it came by friends or friends of friends. It was mostly a matter of keeping my ears open and not being shy about expressing an interest if something came up. Come to think of it, that's still mostly the way it works, though I do get cold-called from time to time.

Also, it wasn't like I was constantly consulting as a graduate student. Just a few times the opportunity arose, and I had fun with it.

Anonymous said...

I think consulting is great, and I consulted a few times. But the answer to your question is obvious... Most people I know would consult in a heartbeat precisely for the reasons you stated. The problem is that nobody asks them, once again primarily for the reasons you stated.

In other words, in the rare cases when theory consulting is needed (and such cases ARE extremely rare), I would imagine that either a really famous theory person (like Papadimitriu or Karp) gets asked, or some non-theory person who is well connected and pretends to do some theory (like Bruce Schneier or some networking guy who used an equation in his paper). Finally, if a good theory person decides to LOOK for consulting, I believe he/she will have no clue how to even start looking.

Let's face it, we do very cool stuff, but most of this stuff is not needed for current companies. Notice, there are exceptions (like Akamai). Also notice that I'm not saying that what we do is useless. I think many things could get used. The problem is convincing people who make decisions to hire from within our community :).

So I don't think it's really "our choice" not to consult, but the choice of people who do not think what we do is useful.

Anonymous said...

I am in Math, not CS, but a lot of what anonymous said applies to me. I've had a handful of consulting gigs fall on my lap and I enjoyed them a lot and wish I could do more, but I have no idea how to generate the opportunities and have the feeling that most companies are not even aware that they could use my skills.

Anonymous said...

Doesn't the time for this come out of your research? (It isn't service or teaching.) In view of this opportunity cost, do you find it worthwhile then? I suspect that you maybe find it as a source of new problems? Or is it just fun?---not everything one does has to be justified by calculus.

Anonymous said...

I'll second and third the previous comments -- consulting is great, but every time I have consulted it was pure serendipity that I was asked. Any active steps I have taken to find consulting jobs have not (yet?) panned out.

Maybe systems people are better connected? That begs the question -- why is that the case?

Anonymous said...

Also, since you asked about complexity theorists who do consulting...I have heard from at least one person who was hired to prove that a particular problem of interest to the company was NP-complete.

Michael Mitzenmacher said...

Random responses to the comments:

Jonathan: I'm sure serendipity is the norm in academic consulting, since consulting is by nature an extracurricular activity. I think listening and talking to people about what we can do, though, will help serendipity along. Systems people probably are better connected -- more "company people" show up to their conferences, for instance. But there are still probably plenty of opportunities for self-promotion. (Blogging, maybe.)

Anonymous 3: I would agree that the number of consulting opportunities that are truly theory-specific (prove something is NP-complete, design an algorithm) are more limited. Usually one has to stretch oneself -- do an implementation, say -- and do things that aren't necessarily novel -- in the sense that analyzing a patent is not the same as writing one's own. Again, one thing I've found is that consulting exercises different skills than my professor skills, or pushes me to exercise them in different ways.

Anonymous 5: Consulting does take time away from research sometimes, and yes, that can be a drag. It's a tradeoff. I think it's perfectly reasonable for people to say they'd just rather do research. I personally find spending a fraction of my time consulting interesting and challenging. And sometimes it leads to new research problems. (This is somewhat rare, unless you arrange to consult with a research lab, which is also great fun.)

Anonymous said...

I've done some consulting work here and there. As Michael points out, you need to be ready to get your hands dirty. Companies do not need an algorithm, period. They need an implementation of an algorithm. Lastly forget about proofs of NP-completeness. For one I've encountered very few honest to god NP-complete problems in industry. Often the input size is bounded, or after digging long enough one finds that actual inputs do not include hard instances. In the few cases where the problem seemed truly NP-complete, then the proof is useful only so you know to settle for an approximation algorithm or a heuristic.

In one case, we gave them a heuristic that only worked sometimes, but it was still way better than what the competition had, so they were perfectly happy.

Anonymous said...

To the third anonymous poster,
"...or some networking guy who used an equation in his paper..."

What's with the attitude, dude? Though I don't work in networking myself, I find this snobbish attitude (that runs through much of your post) quite disappointing. Like "we are theory" and everybody else is so inferior. This does not help anybody, rather alienates the community from other folks.

Personally, I have interacted with many theory and very-theory professors over the years. Most of them are very modest despite having made major contributions to the field. The snobbishness seems to afflict grad students of a certain age. I wonder if it has to do with some hormonal imbalance after clearing the quals...

Anonymous said...


Indeed modern cryptography is the area of computer science where the distance between theory and practice is the least: one finds theoreticians who spend most of their time on impractical constructions designed to be "plausibility results" but who also sit on standards bodies and help create and assess widely used systems, whereas one is less likely to see the algorist preoccupied with O(logn) approximation algorithms also working on commercial optimization packages.


Do complexity theorists consult?

Seems to me like we don't talk much about consulting, and thus the algorithmists (resp. complexity theorists) only know about others amongst them consulting.