End-to-end research
Computer Science research is broadly divided into Theory and Practice, owing to the historical roots of this field in both mathematics and engineering. While early computer scientists had to understand computers in a holistic sense—electronics, components, architecture, algorithms, programs—today we are afforded the luxury of specialization which brought great progress in the various sub-areas of CS research.
However, this means that theoretical research lives now comfortably untethered from real-world problems and intricacies: we can revolve around artificial problems with increasingly complex solutions without ever having to stop and think whether anyone actually needs them.
That is not to say that this type of research does not have any merit: researching difficult, if artificial, questions can reveal deep insights into the mathematics of algorithms. This type of research is worthwhile and rewarding (to the researcher) but we should acknowledge that it is fundamentally impractical.
I personally do not subscribe to a utilitarian of research, similar to art it is a human activity worth pursuing because it satisfies a human desire. Yet, the almost hermetic enclosure of theoretical results in the sphere of Theory irks me, precisely because I do believe that some of our beautiful results could be made practical, even useful.
Back in my student days, I used to believe that since theory provides the foundation for practice, that surely some theoretical results would be picked up by practical researchers and turned into software. In reality, at least from my position, no recent development in Theory is actually picked up by Practice. This is in large part our own fault: Theory speaks its own, complicated language and it speaks it exclusively to other members of Theory. This is not, I want to stress, because a lack of desire to do otherwise; many researchers I know are very keen on trying out their ideas for real-world problems. It is rather a systemic issue which disincentivises cross-disciplinary work. Career-wise, staying inside one’s silo is simply the easier option.
Yet, if we want to see our ideas have any kind of impact on the real world, then we as theoreticians are the only ones that can do so. This is precisely our goal here at the Algo Lab, to apply an end-to-end approach to research: Design algorithms, analyse them, implement and engineer them, make them available in public repositories. This already bridges large portions of the Theory-to-Application pipeline (though I suspect there is a lot of additional work to be done to convince people to use our software), but it does more. The act of turning a theoretical algorithm into software creates points of friction and feedback loops which help us interrogate and re-interpret the theoretical result, ask questions which we would probably not ask from a theoretical viewpoint.
Finally, I view research as a fundamentally social activity. The end-to-end approach naturally allows for much more diverse interactions and collaborations.