This talk (on YouTube) by Daniel Jackson, Design by Concept: A New Way to Think About Software, was recommended to me by Michael Feathers. I just thought I’d take a few notes on it while I watch ๐
Alright, let’s go!
The following is a mix of notes and my thoughts as I watched (numbered for reference only):
- “I am more convince than ever. Conceptual integrity is central to product quality,” Fred Brooks, 1995
- BUT Fred never provided a definition of what he meant by this concept …
- A “conceptual model” has been proven to be very useful in UI design, going back to work at Xerox PARC
- From there came the insight that the user comes to a system with a mental model and the design ought to help them align their model to the one intended by the designer and against which the system works … and should be consistent with
- We’ve developed a field of conceptual modelling, which ought to help with conceptual integrity, but it isn’t clear on what “concepts” are
- An interesting thing that comes to my mind with the Dropbox example Daniel provides (beyond illustrating that having the wrong conceptual model can surprise users in an unpleasant way), is how some allowable uses of a system by users introduces semantic relationships about which its designers have not considered at all
- Also, shocking, the UNIX filesystem conventions are subtle and non-intuitive: and this causes all kinds of pain for Dropbox users – even those who self-identify as having “good knowledge” of Dropbox still only predict the actual behavior of a deletion about 60% of the time!
- To help provide clarity and formality about the concept behind how Dropbox folders work, Daniel represents as a state machine … presumably we’ll learn more about the power of this later in the talk
- The concepts link the understanding of the user, the design of the interface, and the implementation in the code; yes there are relationships between those three things, but getting the concept right gives you a common lens to look at all three and better reason about each one and the system as a whole
- Things that a concept needs:
- Name: essential for knowledge capture
- Purpose: why the concept exists
- Structure: localized data model
- Actions: observable & atomic
- Operational Principle: justifies and explains the design and how the behavior fulfills the Purpose
- Key properties of a concept:
- It is inventive: someone created the concept (and perhaps it has been refined over time); it wasn’t “just there”
- It is purposeful, otherwise it wouldn’t persist over time … interesting: if you have a concept that doesn’t have a purpose that to a system’s user, see the next point too, then perhaps you just have a feature for a checklist?
- It is primarily behavioral: informal explanation is most naturally made with a story about a desire and the outcome (I don’t think that I get this point just yet)
- It is self-contained, and explainable in the abstract, which implies that it is also …
- Reusable across domains and applications
- Things that concepts are NOT:
- Domain entries that are “just there”
- Arbitrary fragments of functionality (like features in a checklist :success-kid:)
- Data models or ontologies (although these play a critical role)
- Data types or modules
- Not domain-specific
- Design rules for concepts:
- The Specificity Rule: make Purposes and Concepts 1:1; all kinds of trouble arises from redundancy (multiple concepts for a single purpose) and overloading (multiple purposes mapping to a single concept)
- The Familiarity Rule: steal, don’t invent; where the purpose is the same, use the same concept
- The Integrity Rule: when you use two (or more) concepts at the same time, they compose as expected and continue to work as they do independently, without any side-effects
A couple thoughts before were done. 1) I enjoyed the talk and especially found the stories Daniel used to be good illustrations of his points. 2) I value having a clearer definition of what makes a concept and three rules for designing and applying them. I expect to re-reference this post at some time to refresh myself on concepts and the rules for applying them well.
5 Comments