Philosophy of Science for Software Engineers

A few weeks ago, I gave two guest lectures on philosophy of science for software engineers at the university of Stuttgart. I gave these lectures to MSc students (but also PhD students) in context of a course research methods of software engineering by Stefan Wagner and Daniel Graziotin.

Why is this topic important for software engineers? For the same reason it is important to any researcher of any discipline.

Too often, we follow certain routines and apply certain research methods the way we have been told without reflecting on their place in a bigger picture and whether the methods are appropriate to answer the questions we have. We struggle with questions on novelty and relevance without reflecting on the actual meaning of relevance and the implications these characteristics have. We discuss issues like how to achieve relevance without reflecting on the symbiotic relationship between theoretical relevance, practical relevance, and rigour (in fact, we often tend to believe there is a trade-off rather than seeing the symbiotic relation). We talk about theories without reflecting on what theories really are. We publish papers without discussing the relation of our results to existing evidence while this, in fact, is how we can only achieve scientific progress in our field. We tend to think there is such thing as “absolute truth” and that this sort of “truth” can only be obtained by applying certain research methods or working with a specific set of data (like quantitative data).

In fact, the work in our discipline is too often confronted with misconceptions on research methods, and I believe setting these methods in context of a bigger picture is important. I myself came to understand this quite late which is the reason I appreciated seeing this topic placed in a MSc course.

Long story short, the slides can be found here:


Please feel free to share and reuse them. Sharing is caring and reuse is the purest form of complimenting. 🙂