Survivorship Thinking

The survivorship bias is one of the most interesting cognitive biases to know about (cliché XKCD link).

It’s the idea that our impression of a given set of things is biased towards those that have survived some selection pressure. The classic example is when people say “they don’t make ‘em like they used to”. With a moment’s thought, you realise that of course all the old things we see today are well made. The poorly-made things of the past don’t survive through to the present.

Another example is the idea that music, art or architecture were better in the past. Again, the bad material simply doesn’t survive the generations to still be around in the present day. Time is a good filter. This must be a factor in a lot of “Golden Age” thinking.

Here’s a quote from Ambrose Bierce’s Devil’s Dictionary about the survivorship bias:

DAWN, n. The time when men of reason go to bed. Certain old men prefer to rise at about that time, taking a cold bath and a long walk with an empty stomach, and otherwise mortifying the flesh. They then point with pride to these practices as the cause of their sturdy health and ripe years; the truth being that they are hearty and old, not because of their habits, but in spite of them. The reason we find only robust persons doing this thing is that it has killed all the others who have tried it.

— Ambrose Bierce

This type of thinking seems to be quite common in the business world, especially in technology. “Companies A, B and C use these languages / technologies / development methodologies, and they’re doing great.” Those languages, technologies and methodologies could be neutral at best, and it is some other factor that has caused companies A, B and C to survive. No mention is made of companies X, Y and Z who failed with the same choices, because they’re now invisible.

There are more examples in the Wikipedia article linked above.

Another idea that springs to mind is a type of scam that works via the survivorship bias. The scammer gets 10000 email addresses, and sends 5000 an email predicting a stock will go up, and the other 5000 an email predicting the stock will go down. Once the result is out, they discard whichever half happened to get a wrong answer, and do it again. 2500 get an email saying a particular stock will go up, and 2500 see a predicition it will go down.

After doing this 10 times, the scammer has whittled down the 10000 email addresses into a handful of people who have now received a series of 10 miraculously accurate stock predictions. They are prime targets to fall victim to some fraudulent financial product.

A simpler version of the scam is to offer a service predicting the gender of unborn babies, with a money back guarantee if the prediction is wrong. You can legitimately keep 50% of all the money you receive.

Useful survivorship thinking

The survivorship effect explains why index trackers tend to outperform manual stock picking in the long term. The index naturally prunes off the less valuable stocks and brings on rising new ones. It’s a view of the highest value stocks at any one time. Going further, the market can be seen as a set of recursive selection pressures that shape both the entities in it and the environment itself.

There are some useful implications of the survivorship effect for software development, in particular for testing and legacy software.

Manual and automated testing can both be seen as selection pressures that shape the development of software. The more pressures there are and the stronger they act, the more quickly the software will take on a desirable form.

Whilst legacy software is usually loathed by the developers who have to work on it, the business case for its continued use is clear. It’s been through a long survivorship process and demonstrated that it can do the job in an acceptable way. Replacing the legacy system with something new is not only immediately expensive in development costs. It also requires a fresh survivorship process to take place, not only to weed out weaknesses but also to produce a robust set of acceptance criteria (like bugs, these often only genuinely emerge from production use).

Intuitively, we know that software that has been in use for longer is likely to be more robust than newer software. This is because live use is the ultimate selection process for weeding out weaker parts of the system and keeping the stronger parts in check. This is a good argument for increasing the number of automated tests and emulating as much production work as possible in the tests: better to present only the survivors to real users, rather than let users select the survivors themselves.