This is a series about problems that fascinate me and which I think are important and interesting. The series draws on important work from the fields of safety critical systems and from the study of complexity, specifically complex socio-technical systems. The issues raised here will become increasingly important in coming years as systems become more complex, and the problems that people encounter as a result become more serious and intractable. This was the theme of my keynote at EuroSTAR in The Hague (November 12th-15th 2018). My paper, based on the talk, won the award for Best Paper at the conference. The paper was issued as an e-book. This series of blog posts is an expanded version of that paper.
The first post is a reflection, based on personal experience, on the corporate preference for building bureaucracy rather than dealing with complex reality, “The dragons of the unknown; part 1 – corporate bureaucracies”.
The second post is about the nature of complex systems, “Crucial features of complex systems”, and argues that the response of software testers to the problems arising from complexity has been too limited.
The third follows on from part 2, and talks about the impossibility of knowing exactly how complex socio-technical systems will behave with the result that it is impossible to specify them precisely, “I don’t know what’s going on”.
The fourth post, “A brief history of accident models”, looks at accident models, i.e. the way that safety experts mentally frame accidents when they try to work out what caused them.
The fifth post, “Accident investigations and treating people fairly”, looks at weaknesses in the way that we have traditionally investigated accidents and failures; we have assumed neat linearity with clear cause and effect. In particular, our use of root cause analysis, and willingness to blame people for accidents is hard to justify on practical and ethical grounds.
The sixth post, “Safety II, a new way of looking at safety”, looks at the response of the safety critical systems community to these problems.
In “part 7 – resilience requires people” I discuss some of the implications for software testing of the issues I have raised in the earlier posts, in particular how people keep systems going, and dealing with the inevitability of failure. That will lead us to resilience engineering.
The eighth post, “How we look at complex systems”, is about the way we choose to look at complex systems, the mental models that we build to try and understand them, and the relevance of Devops.
In the final part of the series, “part 9 – learning to live with the unknowable”, I try to draw all these strands together and present some thoughts about the future of testing as we are increasingly confronted with complex systems that are beyond our ability to comprehend.