The Essence of Software (Or Why Systems Often Fail by Design, and How to Fix Them) with Daniel Jackson
We’ve made great strides in software, but many systems are still hard to use or behave badly. Traditionally, we’ve looked to bugs in code to explain why systems go wrong—or to flaws in the user interface that may lead to misuse. In this talk, I’ll argue that the real problem often lies elsewhere: in the very concepts of the design. I’ll present a variety of surprising snags with familiar applications, from Dropbox to Gmail, and I’ll show how concepts can diagnose them and suggest fixes. I’ll explain in concrete and actionable terms what concepts are—essentially free-standing “nano services” that factor the behavior of a system into independent and reusable parts—and how you can apply them in your work, whether you’re a coder, program manager, software architect, UX designer, or consultant. This talk is based on the book Essence of Software: Why Concepts Matter for Great Design, published by Princeton University Press in November 2021.
Daniel Jackson Bio
Daniel Jackson is Professor of Computer Science at MIT, a MacVicar teaching fellow, and an Associate Director of the Computer Science and Artificial Intelligence Laboratory. He was the lead designer of the Alloy modelling language, and author of Software Abstractions: Logic, Language, and Analysis (MIT Press; second ed. 2012). He was chair of the National Academies’ study Software for Dependable Systems: Sufficient Evidence? (2003-2007), served on the study Electronic Vehicle Controls and Unintended Acceleration (2010-2012), and is a National Associate of the National Academies (2011). He was a recipient of the 2016 ACM SIGSOFT Impact Award, the 2017 ACM SIGSOFT Outstanding Researcher Award, and is an ACM Fellow. He is also a photographer; his book Portraits of Resilience (MIT Press, 2017) addresses the campus epidemic of depression and anxiety with a collection of portraits and stories.