About

It might work in practice, but it will never work in theory.

People have been building complex software for over sixty years, but until recently, only a handful of researchers had studied how it was actually done. Many people had opinions—often very strong ones—but most of these were based on personal anecdotes or the kind of "it's obvious" reasoning that led Aristotle to conclude that heavy objects fall faster than light ones.

Over the last twenty years, a growing number of researchers have been looking to real life for both questions and answers. Unfortunately, most people in industry still don't know what researchers have found out, or even what kinds of questions they could answer. One reason is their belief that software engineering research is divorced from real-world problems (an impression that is reinforced by how irrelevant most popular software engineering textbooks seem to the undergraduates who are forced to wade through them). Another is that many research results are hidden behind academic paywalls, which makes them inaccessible to practitioners who aren't willing to gamble $40 on the off-chance that a paper might contain something useful.

The aim of this blog is to be a bridge between researchers and practitioners. Each post highlights some useful results from studies past and present in the hope that this will encourage discussion of what we know, what we think we know that ain't actually so, why we believe some things but not others, and what questions should be tackled next. In order to be reviewed, a paper must be available under a Creative Commons license (or something equivalent), must present the results of some kind of empirical study, and must be of potential interest to people building actual software systems. If you would like to contribute a paper or a review, please mail the site editor.

You may also enjoy:

Research Software Engineering with Python  ·  Teaching Tech Together

JavaScript for Data Science  ·  Software Tools in JavaScript  ·  Building Software Together