Daniel Lemire's blog

, 2 min read

A taxonomy of Computer Science researchers

As a kid, you are told that scientists follow the scientific method. They come up with an hypothesis, and they try to falsify it. You also learn about engineers who solve practical problems using science. Later, you learn about induction and deduction. Some researchers collect evidence and derive general rules (induction); other researchers start from the laws of nature and compute models to explain specific phenomena (deduction). Both of these dichotomies (science/engineering, induction/deduction) fall short of classifying the researchers I know.

Apparently, I am not alone. According to Julian Togelius, Machine Learning is neither science nor engineering:

Most of what I do is pretty far from being useful or even reliable. Instead I think of myself as an inventor, practicing blue-sky invention of algorithms and toy applications without direct economic pressure. (Julian Togelius)

There are many research models and no satisfying taxonomy. Nevertheless, I made one up:

  • The specialist: he has invented or perfected one method.
  • The perfectionnist: he improves existing methods.
  • The practioner: he solves real problems.
  • The algorithm designer: he invents a new and better algorithm.
  • The system designer: he builds new prototypes.
  • The hardcore theoretician: he solves hard mathematical problems, for their own sake.
  • The practical theoretician: he picks up on what is found useful and analyzes it.
  • The advocate: he promotes a particular technology.
  • The politician: he networks.
  • The educator: he writes readable research papers.
  • The librarian: he writes reviews, citing 150 papers.

What do you think? Which researcher are you?

I am a practical theoretician. When I come up with a new algorithm, it is almost always by accident. I also do not care to solve problems for their own sake. I also hate to build systems for their own sake. I am not even interested in coming up with something new! But I am interested in understanding why things work. I build prototypes, I study them, try to find interesting and strange patterns.