RSSAmplifier

Blog

Home on The Essence of Software

Recent content in Home on The Essence of Software

essenceofsoftware.comRSS feed ↗71 posts

Latest posts

CSAIL Alliances Concepts & AI Workshop

Boston, April 27, 2026

Autodesk Concept Design Tutorials

Short videos about concept design

Why concepts aren't objects

Object oriented modeling and its pitfalls.

WYSIWID: What you see is what it does

Rethinking software structure to enable LLM coding

Autodesk Concept Design Workshop

Oslo, August 25-26, 2025

Concept comparison exercise

Learning about concept design by comparing similar concepts

Concept reading exercise

Learning about concept design by reading a concept spec

Concept rubric

Criteria for reviewing concept definitions

Concept writing exercise

Learning about concept design by writing a concept spec

System design reading exercise

Learning about system design by reading concept specs and syncs

System design writing exercise

Learning about system design by writing concept specs and syncs

Autodesk Concept Design Workshop

Online, June 10, 12, 16, 24, 2025

Autodesk Concept Design Workshop

Boston, March 2025

Autodesk Concept Design Workshop

Workshop held in Woodinville, WA, in December 2024

Concept Architecture

A Proposal for a Concept-based App Architecture

Concept Configuration

Notes on the design of concept configurations

How software succeeds

The first step to great software: scenarios of success

Divergent and convergent design

Two modes of design thinking Design, whatever the domain, includes two different modes of thinking. In one, the designer generates ideas freely, often responding only loosely to any given need or problem. In the other, the designer takes some previously articulated design ideas, and attempts to improve them. The first mode is expansive, and most successful when critical judgment is suspended; the…

Tactics for divergent design

Tactics for divergence Let’s consider some tactics that you might find useful as a software designer to make divergent design more effective. To make these concrete, I’ll suppose that we’re developing an app to support architectural walking tours. Interviewing stakeholders Talking to potential users and other stakeholders is good not only for identifying needs but also for getting design ideas.…

Concept purposes

The role of purposes From what to why . The beginning of wisdom for a designer is to stop asking “what?” and start asking “why?”. This applies at every level. You can ask “what application shall I design?”. But a better question is “why would I design that?”. And at a finer grain, the question “what features should my app have?” gives way to “why should my app have these particular features?”.

Concept criteria: what's a concept?

Two sides of a coin The key to concept design is, perhaps not surprisingly, the idea of concepts . A concept is two things at once. On the one hand, a “concept” means you’d expect it to mean: a mental construct that you need to understand to be able to use an app effectively. So you might that to use Photoshop you need to understand the “concept of a layer”; to use Facebook you need to understand…

Concept dependencies and subsets

An idea you need to know One of the most important and useful ideas in software also happens to be one of the least well known. It was introduced in a paper that David Parnas wrote in 1979, entitled Designing Software for Ease of Extension and Contraction . Program families . Following on from an earlier paper that introduced the idea of “program families”—that when you design software you…

The End of Agile

Why agile no longer makes sense in the LLM era.

A GPT-powered tutor

Notes on designing a GPT-powered tutor using concepts

Android Camera API

Applying concept design to the camera rotation API

A Concept Experiment at Palantir

Lessons learned from deploying concepts at scale.

Concept state

Motivation: Defining Behavior The operational principle of a concept explains its archetypal behavior: how it’s typically used, and how it fulfills its purpose. But for a concept to be flexible and powerful, it should work in many different scenarios, so we need a way to pin down the behavior in detail. Using the notion of a state machine, we can define how a concept will behave in every possible…

Notes on design of a GPT-powered tutor

Notes on design of a GPT-powered tutor

Notes on design of a GPT-powered tutor

Notes on design of a GPT-powered tutor

Noosphere concepts

A Concept Exploration of Noosphere

Three Stages of Enlightenment

A brief intro to concept design in three parts.

Breaking Integrity: Three Examples

Integrity violations aren’t as common as I once expected. But when they happen, they’re bad.

Dark Concepts in Software Design

The building blocks that social media apps use to control us.

Conceptual models missed the point

Don Norman’s book helped improve interface design, but it also misled us.

The siloing of UX design

Why a new discipline of software design is needed.

Concept modularity

Why modularity matters To see why modularity is so critical in software design, consider what goes wrong when it’s missing. For the programmer, life becomes miserable. Whenever you need to understand or modify some piece of functionality, there’s no single place in the code to go to, and you may have to visit many widely separated locations (and just finding them can be a major challenge). Even…

Concepts are state machines

As I explained in another tutorial , the easiest and most effective way to define the behavior of an app precisely is to model it as a state machine. The app has a set of possible states, and actions that update and query the states. An execution of the app is just a sequence of actions (or more correctly, action instances that include particular action arguments), and the behavior as a whole is…

Concept composition and sync

In another tutorial , I showed a concept definition for Yellkey , a popular URL shortening service: concept Yellkey purpose shorten URLs to common words principle if you register a URL u for t seconds and obtaining a shortening s, looking up s will yield u until the shortening expires t seconds from now state used: set String shortFor: used -> one URL expiry: used -> one Date const shorthands: set…

Software = concepts

Any software app, service or system can be viewed as a collection of interacting concepts . Concepts are the building blocks of software Imagine explaining Twitter to someone who’s never used it. You might tell them about the Tweet and Follower concepts, then maybe Hashtag and Like (aka Upvote), and if they’re keen to know even more, you could explain VerifiedAccount or Bookmark . Each…

Zoom's Missing Concept

When critical concepts are missing

Design vs. engineering

What's the difference between design and engineering?

How great design happens

Think about your favorite product, whether it’s a photo-editing app or a toaster, and ask yourself: how did it get to be so good? With all the hype in the design world about creativity and brainstorming, it’s easy to imagine that great designs simply appear, out of the blue. Someone conjures up a new idea, and it just needs to be translated from sketch to product. Maybe many details need to be…

Form, context & misfits

What is a design problem? What exactly is a design problem? And why are design problems often hard to solve? The most compelling answer to this question, in my view, comes from Christopher Alexander in his influential book Notes on the Synthesis of Form (1964). Most of the book is about a way to structure goals into a tree, by noting alignments and conflicts between them, and grouping them to…

Generic fitness criteria

Seven criteria What makes a design fit for purpose depends—surprise!—on the purpose. But generic criteria are helpful for two reasons. First, they give you some basis for evaluation, however crude. Second, they can be used as a checklist to suggest more specific ones. A software product should be: Efficient : letting users accomplish their goals with no more steps or effort than needed; Flexible :…

Simplicity

Most of us* believe that simplicity is the key to design. I’m a sucker for the best quotes about it. Here are some of my favorites. First, Tony Hoare in his Turing Award lecture lamenting the complexity of Algol-68: I conclude that there are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies and the other way is to make it so…

Levels of design

When you’re diagnosing a usability snag, or coming up with a new design idea, it’s helpful to know what level you’re working at. Over the years, designers and researchers have defined various levels, reflecting their view of design and what they emphasize. I find the following scheme most helpful: Physical . If you want to think of levels as low and high, this one is at the bottom. It’s the level…

Beyond the user interface

In the 1980s, there was a revolution in software. The Apple Macintosh came out (building on the invention of the WIMP interface at PARC ), Don Norman wrote The Design of Everyday Things , and the first CHI conference was held. Now everyone knows how important user interface design is, and there’s no excuse for messing it up. You can find several collections of UI design heuristics (such as…

Operational principles

A compelling way to explain how something works is to tell a story. Not any story, but a kind of defining story that shows, through a typical scenario, why the thing is useful and fulfills its purpose. The Minuteman Library Network, for example, offers a wonderful service. If I request a book, then when it becomes available at my local library, I get an email notifying me that it’s ready to be…

Apps are state machines

If user experience runs deeper than the user interface, we need a way to talk about an app that isn’t just visual, and that captures behavior in a more fundamental way. Programmers think in terms of complicated things like objects, callbacks, streams, functionals, and so on. They’re essential for structuring code, but for behavior a much simpler model is effective. State machines That model is the…

Redesigning Zoom's Reaction Concept

A How-To Guide for Removing Irregularities in Your App