As our dependence on technology increases, the design of software matters more than ever before. Why then is so much software flawed? Why hasn’t there been a systematic and scalable way to create software that is easy to use, robust, and secure?
Examining these issues in depth, The Essence of Software introduces a theory of software design that gives new answers to old questions. Daniel Jackson explains that a software system should be viewed as a collection of interacting concepts, breaking the functionality into manageable parts and providing a new framework for thinking about design. Through this radical and original perspective, Jackson lays out a practical and coherent path, accessible to anyone—from strategist and marketer to UX designer, architect, or programmer—for making software that is empowering, dependable, and a delight to use.
Jackson explores every aspect of concepts—what they are and aren’t, how to identify them, how to define them, and more—and offers prescriptive principles and practical tips that can be applied cost-effectively in a wide range of domains. He applies these ideas to contemporary software designs, drawing examples from leading software manufacturers such as Adobe, Apple, Dropbox, Facebook, Google, Microsoft, Twitter, and others. Jackson shows how concepts let designers preserve and reuse design knowledge, rather than starting from scratch in every project.
An argument against the status quo and a guide to improvement for both working designers and novices to the field, The Essence of Software brings a fresh approach to software and its creation.
Awards and Recognition
- Finalist for the PROSE Award in Computing and Information Sciences, Association of American Publishers
Daniel Jackson is professor of computer science at the Massachusetts Institute of Technology, and an associate director of the MIT Computer Science and Artificial Intelligence Laboratory. He is the author of Software Abstractions and Portraits of Resilience.
"This book gives new answers to old questions, offering a fresh perspective on software design, with examples from over 100 familiar apps. It’s accessible to anyone—strategist, marketer, manager, designer, or programmer—who wants software that is more empowering, dependable, and delightful to use."—MIT News
“Hard to contain my excitement about this book. Its ideas are fresh yet familiar, radical yet obvious, deep yet simple. I will be reading it repeatedly for years to come. A profound landmark in our discipline.”—Bashar Nuseibeh, University of Limerick, and Chief Scientist, Lero
“Daniel Jackson’s concepts are a breakthrough in computer system design, integrating software engineering with human computer interaction. This is a framework we should all be using that will be immediately valuable at all levels, from students to the most experienced.”—Hal Abelson, coauthor of Structure and Interpretation of Computer Programs
“A provocative rethinking of software development as a design discipline. Too often software embodies confusing and inconsistent mental models. Taking a truly human-centered approach, with many rich examples, Jackson offers us the tools to rethink how we design software to be more usable and useful.”—Elizabeth Churchill, Director of User Experience, Google
“Daniel Jackson’s The Essence of Software is a monumental work. It provides a new structure for thinking about software in terms of concepts. Wide-ranging, it uses modern examples the reader will know. And because the book (and its copious endnotes) is designed to be read along different paths, every software engineer will find something valuable in it.”—Frederick P. Brooks, Jr., author of The Mythical Man-Month: Essays on Software Engineering
“I cannot say enough good things about this book. The Essence of Software is essential reading for anyone concerned with making software that is responsive to human needs and purposes. Its profound, practical framework offers a broadly useful, enormously empowering way to think about and do software design.”—Mitchell Kapor, founder, Lotus Development Corporation
“Daniel Jackson’s The Essence of Software will join Fred Brooks’s The Mythical Man-Month as an influential guide to making great software products and tools. Designers will come to their work with more open minds, clearer thoughts, and the capacity to build excellent software.”—Ben Shneiderman, University of Maryland
“The Essence of Software won’t just give you new ideas: Daniel Jackson’s novel and thoroughly worked-out software concepts will transform how you think about design, software, and programming—whatever systems or languages you use, whether you are a new programmer, professional programmer, or researcher. This is a landmark book that will make the digital world a better place.”—Harold Thimbleby, author of Fix IT: See and Solve the Problems of Digital Healthcare