1 February 2011

Research in software engineering

Researching software engineering is to study the artificial. Other engineering disciplines have "truths" that exist even if no humans are involved. The laws of physics that determine what is possible in mechanical and civil engineering are there regardless if applied when constructing a particular building.
Because of this I strongly believe that research in software engineering must be based on what practitioners do. I started to write professionals, but realised that a lot of important stuff in the world of software are actually made by amateurs (in the sense they are not getting paid to do it). And I also think research methods from the social sciences can provide great insights into software engineering.

A colleague of mine said that a good researcher in software engineering should have three base pillars to stand on:
  1. A good knowledge of real problems that practitioners have
  2. An interest in developing solutions to these problems
  3. Knowledge and experience in evaluating the solutions in practical (real) settings
I have previously written about why I don't like formal methods. I think this is an example of where researchers tend to focus on the appealing solutions without a strong foundation in practitioner's problems or a thorough evaluation in practical settings. The most interesting solutions to investigate from a researcher's perspective are not always related to the most critical problems.

A short litmus test to discern if a researcher has enough experience of practical problems:
Describe the difference between a software process and a software project.

No comments: