What is a Bug?: Imagination and Failure in Complex Systems*
When working in complex systems, bugs become more than just one-line errors: they become stories and histories, manifestations of time and space. How do you deal with failure - not as an unanticipated event - but as a natural and expected outcome?
When you’re new to programming, your programs are small, and your bugs are small. Perhaps other programmers can spot them simply by reading your code. When you start working in different, larger systems, bugs change. So does debugging. Bugs become more than just one-line errors in self-contained files. Bugs become stories and histories: manifestations of time and space. They involve more than just your code; they emerge from the interaction of your code, other people’s code, user input, and the vagaries of chance.
We’ll walk through different kinds of bugs, from the simple to the fiendishly complex, and discuss how these kinds of bugs arise. Drawing on real-life examples from production incidents, I argue that bugs aren’t an aberration, or even a failure of the programmer – they’re usually the result of the gap between the world-as-expected and the world-as-it-is or the world-as-it-may-become. We’ll go over the different approaches demanded by different types of bugs, and explore ways to deal with failure as a natural, rather than unanticipated, event.
bugs, debugging, software engineering, systems
I haven't given this talk before. I've spoken at other conferences before (Strange Loop, React Conf, Joy of Coding, etc).
Previous talks, including videos, at: http://blog.bonnieeisenman.com/speaking/
Software engineer working on distributed systems in Scala @twitter, @nycresistor member, Learning React Native author.