Three Directions in Design

Date: January 29, 2024 - January 29, 2024
Time: 3:15 pm - 5:15 pm
Presented by David Clark, Daniel Jackson, and Gerald Jay Sussman
The MIT authors of three recent books on design will talk about what design means in their domain, present examples of successful designs, and suggest prospects for the future of design in computing. Design of Socio-Technical Systems: In this talk I will talk about the design principles of the Internet. I will describe how our understanding of system requirements evolved in the first decades, and how our changing understanding influenced the evolving design. I will illustrate the space of system requirements and design options by looking at some alternative proposals for how to design an Internet, and the implications of some recent design proposals. Design of Software Products: I’ll explain how successful innovations in software can usually be traced to just one or two “concepts” that offer new scenarios that, with seemingly small shifts, radically change how an application is used. I’ll give examples from apps such as Zoom, WhatsApp and Photoshop. I’ll also mention how viewing apps through concepts enables use of LLMs for code generation. Design of Programs: It is hard to build systems that have acceptable behavior over a larger class of situations than was anticipated by their designers. The best systems are evolvable: they can be adapted to new situations with only minor modification. How can we design systems that are flexible in this way? We have often programmed ourselves into corners and had to expend great effort refactoring code to escape from those corners. We have now accumulated enough experience to feel that we can identify, isolate, and demonstrate strategies and techniques that we have found to be effective for building large systems that can be adapted for purposes that were not anticipated in the original design. I will illustrate such strategies with examples.