How to become a great software designer

Thursday, March 24, 2022 - 7:00pm
This seminar will be webcast on Zoom
Daniel Jackson, MIT
Lecturer Photo

Why are some apps so much better than others, and some designers so much more successful? For the last decade or so, I’ve been trying to answer this question. My approach has been to study hundreds of popular apps, identifying good and bad parts, and then looking for a way to codify this knowledge so that anyone can use it to become a better designer.

In this talk, I’ll explain what I came up with: (1) a way to structure the functionality of an app into “concepts” (which are essentially little behavioral protocols); (2) a composition strategy that lets you put concepts together without coupling them; (3) criteria for good and bad concept design; and (4) the beginnings of a catalog of reusable concepts.

Most of the examples and ideas will be drawn from my recently published book, Essence of Software (

Daniel Jackson is Professor of Computer Science at MIT, a MacVicar teaching fellow, and Associate Director of the Computer Science and Artificial Intelligence Laboratory (CSAIL). He was the lead designer of the Alloy modeling language, author of "Software Abstractions: Logic, Language, and Analysis" (MIT Press; second ed. 2012) and most recently of "Essence of Software" ( He was chair of the National Academies’ study Software for Dependable Systems: Sufficient Evidence? (2003-2007), and served on the study Electronic Vehicle Controls and Unintended Acceleration (2010-2012). He received the 2016 ACM SIGSOFT Impact Paper Award for his research method for finding bugs in code and the 2017 ACM SIGSOFT Outstanding Research Award for "foundational contributions to software modeling, the creation of the modeling language Alloy, and the development of a widely used tool supporting model verification" 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.

Register in advance for this webinar at
After registering, you will receive a confirmation email containing information about joining the webinar.

This joint meeting of the Boston Chapter of the IEEE Computer Society and GBC/ACM will be online only due to the COVID-19 lockdown.

You can sign up to receive updated status information about this talk and informational emails about future talks at, our self-administered mailing list.