Rethinking the Basics of Software Design with MIT CSAIL Professor Daniel Jackson

Audrey Woods, MIT CSAIL Alliances | September 8, 2025

MIT CSAIL Professor Daniel Jackson didn’t start out as a computer scientist. When he got his undergraduate degree in physics, he was excited to use his skills to make sense of the world, characterizing very big, complicated phenomena with succinct equations. But when he graduated, he was more excited by the job options in computer science than physics and ended up applying that same excitement and fascination to building better code, making the world come alive with software and language.  

Now Professor Jackson has become a passionate advocate for a broad rethinking of software design. Through his research, collaborations, teaching, and revolutionary book The Essence of Software, Professor Jackson argues that the computer science community should go back to basics and build better programs from the ground up, ensuring that the technology increasingly impacting all of our lives is safer, better, and more functional.

THE CORE IDEA: MODULAR CONCEPTS, BETTER FUNCTIONALITY
As a young software engineer, Professor Jackson was focused on the question: how can you analyze a piece of critical software to make sure it won’t fail catastrophically? Over time, as he dug into this question, he realized that it linked to a deeper problem in computer science: that software in general needed better design principles. “When you build software, you have to design the code and the architecture, but more fundamentally, you have to decide what the software is going to do and structure that behavior that you come up with. Amazingly, that was something that was largely neglected.” Traditionally, software engineers wrote computer code and UI/UX designers conceptualized the interface, but the central question of what the software was meant to do “seemed to be almost implicit. Nobody was really focusing on that, even though it was ultimately what people cared about.”

The Essence of Software was a countercultural book because it challenged the norms of computer science, “telling the people in human-computer interaction that it’s not just about the user interface and telling the software engineers that it’s not just about the code.” Referencing a manifesto written in 1996 by Mitchell Kapor, founder of Lotus Software, Professor Jackson explains, “when you want a new house, you don’t go to an engineer. You go to an architect, because it’s the architect who deals with the things you care about as the person who’s going to live in the house.” Almost 30 years after Kapor created this analogy, such a role has still not emerged in computer science. “In a way, my book is a plea to reconsider that.” 

Professor Jackson’s argument is that good software design stems from concepts—abstract, high-level ideas that define what the system is about and how users understand and interact with it. A concept is not just an idea but a coherent unit of function that fulfills some practical purpose. He argues that every piece of software embodies a set of concepts, whether intentionally or not, and that clarifying and shaping those concepts deliberately is critical for good design, and will only become more so as AI agents begin to make real-world decisions that shape the lives of everyday users. For example, when building a social media app, there might be one concept for posting, another for commenting, and another for logging in. These are all separable, which means they can be designed, built, and realized independently, offering a way to create robust software from the beginning.  

RESEARCH, CONSULTING, AND TEACHING
In his academic life, Professor Jackson and his students are studying how to leverage concept design as a way to make it easier to generate code with Large Language Models (LLMs). “LLMs are pretty amazing at generating code, and they’ve been getting better at an incredible rate.” But most people don’t realize how, over the course of long projects, an LLM tends to make a mess of things or, as Professor Jackson jokes, “get its knickers in a twist.” As an LLM adds new functions, it often begins to break old functions or cause issues with the rest of the program.

Using concept design, where the pieces are fully independent and modular, the components of software can be generated one at a time without the LLM needing to know about the other concepts. Recently, Professor Jackson and his group have been focusing on the “magical step of putting them together.” Using the social media app example, he describes the complex interactions between concepts, where a user would need to be logged in to create a post (an interaction between the login concept and the posting concept), or restrictions like if a post is deleted then all the comments on that post should be deleted as well. “All these rules and interactions between concepts can be described by things we call synchronizations, which are basically little bits of glue that connect the concepts together.” His research group has developed a way to describe these and have the LLM generate them so they can be built separately from the concepts and allow the concepts to interact in whatever way the designer chooses. “ The idea is that you could use this to assemble an app, essentially interacting only at the level of the behavior.”

This work has exciting implications across various industries. In the context of the CSAIL Alliances Research Initiative FinTech@CSAIL (recently evolved into FinTechAI@CSAIL), Professor Jackson has collaborated closely with Senior Research Scientist Daniel Weitzner on using concept design for data traceability, where users would have access to and control over how their data is being used. “When you build something like traceability, you want to build it using plug and play pieces. You don’t want to have a whole elaborate infrastructure where maybe some company would only want to use some piece of it but wouldn’t be able to do that.” Concept design in this context would allow financial companies to use different pieces of traceability software, depending on their own needs and priorities.

Professor Jackson is also working with industry as a consultant, helping companies incorporate concept design to improve their products. He has a “very exciting ongoing engagement with Autodesk infusing concept design into many teams internationally,” and is always open to speak with businesses about his ideas. He appreciates CSAIL Alliances for helping connect him with industry problems and questions because “the opportunity to engage with Alliances members at annual events and talk to them has been very helpful in forcing me to find ways to articulate these ideas so they’re as relevant as possible to contemporary practice.” His group has also benefited from funding through CSAIL Alliances via programs like MachineLearningApplications@CSAIL, which has helped them move this work forward.

As with his book, Professor Jackson is exploring radical ideas in his teaching. In a senior level software design class which he co-instructs with Assistant Professor Mitchell Gordon—who spent a year at Open AI before coming to CSAIL—Professor Jackson is excited to “not just let students use LLMs but actually encourage them to use AI agents to build code and even help with design work.” This will be a very different educational experience, but critical for a group of students who are entering a software design landscape entirely transformed by AI. “We can’t really wait any longer, can we?”

LOOKING AHEAD: CODING DEMOCRATIZATION AND A RENEWED FOCUS ON THE BASICS
LLMs capable of creating code and connecting concepts will dramatically broaden access to software creation, empowering people from all backgrounds to build applications and programs. This offers exciting potential for human creativity and innovation, but also presents risks. “If we encourage people to adopt this idea of vibe coding, where you generate software that only mostly works, it's going to be a catastrophe.  If we have all this unreliable software acting as agents on our behalf, making decisions for us, buying things, taking actions in the world that aren't the actions we want to be taken, we're going to be in a very bad place.” Ironically, he believes that the “advent of this hot new technology will force us to revisit all the big themes of software engineering and focus on fundamental questions,” a rich potential area for researchers.   

In this way, academic institutions and industry leaders working together will be critical. “One of the exciting things about being in academia is that we can afford to take a deep breath and think carefully. Maybe you can't do that if you are a company with a lot of commercial pressure to deliver quarterly results. We have a great opportunity for a symbiotic relationship in which our industry collaborators can offer scale and short-term relevance, and we can offer long-term thinking and fundamentals.” In these challenging times when academic funding is at risk, Professor Jackson hopes businesses will remember what academia has accomplished in the past and continue to support such opportunities for the next generation.

Personally, Professor Jackson seeks clarity in code the way he once did in physics. “The prospect of coming to a simple and clear understanding of fundamental issues in software design motivates me every day.” Along with “great students and collaborators and industry members,” he will keep spreading awareness and working toward improving the basics of software design.  

Learn more about Professor Jackson on his website or CSAIL page.