Welcome to my micro-blog, where I slowly accumulate nuggets of useful knowledge.
2025-08-05
As computer science students, we are trained primarily as engineers, learning how to build products that deliver value to the world in some way. However, performing research in computer science is a very different kind of endeavor, with both a science component and an engineering component. If you do not distinguish between effort put towards science and effort put towards engineering, it is all too easy to waste an enormous amount of time without pushing your research forward.
With this potential pitfall in mind, how do you distinguish between science work and engineering work? Additionally, how should you allocate your time between these distinct modes of research?
The main differentiator between science and engineering is that science requires posing a concrete question and then answering that question with evidence. This stems directly from the fact that as a researcher, the end goal of your work is ultimately a paper that poses an important question and then describes in excruciating detail how you answered that question. This goal is in contrast to that of engineers. When you wear an engineering hat, your end goal is a deliverable product that fulfills a need that you or your users have.
If you are doing research, make sure that each experiment that you run has a concrete question behind it. Perform only as much engineering as is required to make progress on answering that question. Importantly, do not let yourself get caught up in engineering details that do not push the science forward. Finally, remember that in the world of research, the software you create is not an end in itself, but a mere testbed for generating data, validating ideas, and answering important questions.
This page is designed to last.