The brief. The Mill Street stop is a pole in the pavement. Riders stand at the kerb in the rain because they cannot see the bus coming from anywhere else. Design a shelter, and its arrival display, for under 25 thousand.
Each method below is applied to that same brief. The first nine are the design methods lineage, in the order they appeared. The next thirteen are later arrivals, some descended from it and some not. The examples are invented for illustration; the formats are the real ones.
Fritz Zwicky's method, brought to design at the first Design Methods conference
What it believes. A design is one choice per function. List the functions, list the options, and the whole space of designs is laid out in front of you.
Where it breaks. The chart assumes the rows are independent. A hedge windbreak and a mains-powered display are not independent of the roof, and nothing in the chart tells you which of the hundreds of combinations is any good.
Bruce Archer, Royal College of Art
What it believes. Design is a sequence of stages with a checkable output at each one. Analysis comes before ideas, and a written performance specification is the contract.
Analytical phase
Creative phase
Executive phase
| Ref | Requirement | Test |
|---|---|---|
| P1 | Seated rider sees a bus 150 m upstream | Sightline survey |
| P2 | Dry seat in rain driven from the south-west | Hose test at 30° |
| P3 | 1.8 m clear pavement behind the shelter | Tape measure |
| P4 | Installed cost under 25 thousand | Tender price |
Where it breaks. You cannot write P1 until someone has already half-imagined a shelter with a seat in it. The specification smuggles in a solution, which is what Archer himself later conceded.
Christopher Alexander, Notes on the Synthesis of Form
What it believes. List every way the form could fail to fit its context. Link the requirements that interact. Then cut the graph where the links are fewest, and solve each piece with its own diagram.
Nine requirements, twelve interactions.
Where it breaks. The three dashed links are the ones the method throws away, and the first of them, seeing against sheltering, is the entire brief. Alexander made this objection himself a year later in "A City Is Not a Tree".
Herbert Simon, The Sciences of the Artificial
What it believes. Design is search through a space of alternatives. You cannot look at them all, so set aspiration levels and stop at the first candidate that clears every one.
Where it breaks. Everything interesting happened before the search started: someone chose these three measures and this order of generation. Sightlines are not a column, so no setting of the sliders can find the answer to the brief.
Werner Kunz and Horst Rittel
What it believes. There is no correct shelter, only positions that people argue for. Record the issues, the positions taken on them, and the arguments, and the design is whatever survives.
Where it breaks. The map grows faster than anyone can read it, and the third issue shows why: every problem turns out to be a symptom of another one. Keeping it tidy takes a trained facilitator, and the people who pay that cost are not the ones who benefit later.
Christopher Alexander and colleagues, A Pattern Language; then the software version, 1994
What it believes. Good places resolve recurring conflicts between human forces. Name the conflict, state the resolving arrangement loosely enough that it never comes out the same way twice, and link it to the patterns above and below it.
This pattern helps complete a neighbourhood stop and gives shape to the small public places along a street.
A person waiting for a bus wants two things that pull apart: to get out of the weather, and to keep watching the road. A shelter that serves only one makes the wait anxious or miserable.
Watch any walled shelter in the rain. Half the riders stand outside it, at the kerb, looking upstream. The walls that keep them dry are the walls that hide the bus.
Therefore:
Open the shelter toward oncoming traffic. Put the solid wall behind the seat and on the windward side only. Turn the seat so that someone sitting down can see two blocks up the road without standing.
Then give the seat a back, put a light at the open edge, and place something worth reading where the eye rests between buses.
Same section headings, different subject. The forces here belong to the code and the programmer. No rider appears, nothing says what to do next, and the entry sits in a catalogue rather than a language.
Where it breaks. A pattern is only as good as the claim that the conflict is real and recurring, and Alexander's test for that was whether the place feels alive. Architects found the test unscientific. Programmers dropped it.
Donald Schön, The Reflective Practitioner
What it believes. Designers do not solve a given problem. They make a move, the situation talks back, and the problem gets renamed. The method is that conversation.
Where it breaks. It describes what skilled designers do and gives a beginner nothing to follow. It cannot be audited, scheduled, or handed to a committee.
UK Design Council; the house diagram of design thinking
What it believes. Diverge before you converge, twice: once to find the right problem, once to find the right answer. Anyone can do it with real users and a wall of notes.
| Discover | Ride the route for a week. Riders stand at the kerb in the rain, next to an empty shelter two stops down. |
|---|---|
| Define | How might we let a rider stop watching the road? |
| Develop | Countdown display. Angled seat. A light that tells the driver someone is waiting. A chime at two minutes. |
| Deliver | Cardboard bay and a tablet taped to a post. Test for five mornings. Keep the countdown and the angled seat. |
Where it breaks. The diagram is true of nearly any project in hindsight and tells you little in advance. Run as a workshop, it produces a wall of notes and a prototype nobody has budget to build.
Michael Nygard's architecture decision records; IBIS, shrunk until it stuck
What it believes. Nobody will maintain a map of the whole argument. One short note per decision, written by the person who decided, kept beside the thing it describes, will actually get written.
Where it breaks. It records the winning position and its consequences, and loses the positions that lost. Rittel would say the argument is the part worth keeping.
Thirteen more, from 1988 to now. Some descend from the methods above. Others came in from manufacturing, safety engineering and economics, and never heard of Rittel or Alexander.
Bendsøe and Kikuchi's topology optimisation; now routine in photonics and protein design
What it believes. Do not draw the form. State the loads, the limits and the objective, and let an optimiser remove every bit of material that is not doing work.
| Design space | A 2.4 m by 1.1 m box where the roof bracket may exist |
|---|---|
| Fixed | Bolted to the post along the left edge |
| Loads | Snow at 1.5 kN/m² along the top; wind uplift as a second case |
| Limits | Tip deflection under 12 mm; at most 30% of the box filled |
| Objective | Maximum stiffness for the steel used |
Where it breaks. The result is optimal for the two load cases in the table and for nothing else. A child swinging on the tip is not a load case. Neither is the fabricator, who has to cut that shape, unless you add manufacturability as a limit. And nothing here asks whether a cantilever was the right roof.
Toyota's practice, described by Ward, Liker, Cristiano and Sobek
What it believes. Picking one design early and iterating on it is the slow way. Carry whole sets of options forward. Let each specialty strike out only what it cannot live with. Decide at the last responsible gate, and never reopen a gate.
The point-based alternative would have chosen a steel cantilever with an LED sign in week one, and met the December power problem in week nine with the steelwork already ordered.
Where it breaks. Carrying several options costs real money until the last gate, so it needs an organisation patient enough to pay for prototypes it will throw away. It also only narrows the sets you started with. An option nobody listed in week one never appears.
Goal Structuring Notation, Tim Kelly, University of York
What it believes. A design is acceptable when you can lay out the argument for it, from top claim down to evidence someone can inspect. Every goal is either broken into sub-goals by a stated strategy, or closed by a piece of evidence. Anything else is marked as undeveloped.
Where it breaks. You build the case for the conclusion you already want, so it invites confirmation bias. The whole structure also hangs from assumption A1. If a hazard is missing from the log, the argument is complete, well evidenced, and wrong.
Leslie Lamport's TLA+; property-based testing from QuickCheck, 2000
What it believes. Before building, write down what must always be true. Then let a machine try every sequence of events it can find to break that statement. The bugs worth finding live in orderings no person would think to try.
VARIABLES clock, fetchedAt, mode, trueAge
FetchOk == /\ fetchedAt' = clock
/\ trueAge' = 0
/\ mode' = "live"
/\ UNCHANGED clock
Tick == /\ clock' = clock + 1
/\ trueAge' = trueAge + 1
/\ mode' = IF clock' - fetchedAt > 90
THEN "timetable" ELSE mode
/\ UNCHANGED fetchedAt
Brownout == /\ clock' = 0 \* the panel loses power at dusk
/\ UNCHANGED <<fetchedAt, mode, trueAge>>
NeverLie == mode = "live" => trueAge <= 90
| Step | Action | clock | fetchedAt | trueAge | mode |
|---|---|---|---|---|---|
| 1 | FetchOk | 500 | 500 | 0 | live |
| 2 | Brownout | 0 | 500 | 0 | live |
| 3 to 93 | Tick, 91 times | 91 | 500 | 91 | live |
NeverLie is violated. After a power dip the clock restarts at zero, so the age works out as 91 minus 500. That is never greater than 90, and the display shows stale times as live until the link returns.
@given(lists(one_of(tick(), fetch_ok(), fetch_fail(), brownout())))
def test_never_shows_stale_as_live(events):
d = Display()
for e in events:
d.apply(e)
assert not (d.mode == "live" and d.true_age() > 90)
# Falsifying example, shrunk:
# [fetch_ok(), brownout(), tick(91)]
Where it breaks. The checker proves things about the model, and the model is whatever you thought to write down. Brownout is in this one only because somebody had seen a panel fail at dusk. And the property that matters most on Mill Street, that a seated rider can see the bus, cannot be stated in this language at all.
Nancy Leveson, MIT; hazard analysis from systems theory
What it believes. Accidents are rarely a broken part. They are a control problem: someone issued the wrong action, or the right one at the wrong time, because their picture of the situation was wrong. So draw who controls what, then interrogate every control action four ways.
| Unsafe when | Scenario |
|---|---|
| Not provided | A rider is waiting but the bus drives past. The rider is seated behind the solid wall and the driver never saw them. |
| Provided wrongly | The bus stops while people sheltering from rain are standing in the kerb lane. |
| Too late | The rider stands only when the bus is level with the shelter. The driver brakes hard; standing passengers fall. |
| Ended too soon | The doors close before a rider who was seated has reached them. |
R1. A seated rider is visible to a driver from 60 m upstream, day and night.
R2. The display gives two minutes' warning, so that riders stand before the bus is in view.
R3. Standing room under cover lies behind the kerb line.
Where it breaks. It is slow and it is thorough, and the output is a long flat list of requirements with no ranking and no budget attached. It also takes the control structure as given. If the diagram leaves out the dispatcher who tells drivers to skip stops when running late, so does the analysis.
Glen Weyl and colleagues; mechanism design applied to group choice
What it believes. Design the rule for choosing, and good choices follow. One person, one vote hides how much each person cares. Give everyone the same budget of credits and charge the square of the votes cast on any one item, so that caring a lot is allowed but expensive.
You are one resident with 25 credits. Spend them.
Where it breaks. Two neighbours who split their votes between them pay less than one person casting the same total, so the rule is only as strong as the check that each ballot is one real person. And someone still wrote the four items on the ballot. Moving the route off Mill Street is not among them.
Pol.is; used in Taiwan's vTaiwan consultations
What it believes. A thousand people cannot hold a debate, but they can each write a sentence and tap agree, disagree or pass on other people's sentences. Group people by how they voted. Then look for the statements that every group supports, and start there.
104 residents, 37 statements. Two groups emerge from the votes: group A, 41 people, mostly clinic users; group B, 63 people, mostly commuters and shopkeepers. Share agreeing:
Where it breaks. It tells you where agreement lies and stops there. Somebody still has to turn "I would sit down if I knew" into a shelter, and somebody with a budget has to have promised in advance to act on the result. Without that promise it is a survey.
Alberto Brandolini; Event Modeling, Adam Dymitruk, 2018
What it believes. The people who understand a business never share one room or one vocabulary. Put them at a long wall with sticky notes. Start with events only, written in the past tense, in time order. Arguments about wording are the point, and each unresolved one gets a red note.
| Given | Trip scheduled; Vehicle position reported, 1.2 km from Mill Street |
|---|---|
| When | Recalculate arrival |
| Then | Arrival time predicted: route 14, Mill Street, 4 minutes |
The session is run in passes: events first, then the commands and actors that cause them, then policies, then boundaries drawn around clusters that share a vocabulary. Those clusters become the candidate services.
Where it breaks. The wall records one afternoon and the people who came. A dispatcher, an engineer and a planner produced this one, and no rider did, so the timeline ends when the bus departs and says nothing about the person left on the bench. It is also tempting to treat the notes as a design and code them directly.
Teresa Torres, continuous discovery
What it believes. Teams jump from a target straight to a feature. Force a layer in between: the needs you heard in interviews, in the customer's words. Compare several solutions under one need, and test the assumption each one rests on before building any of them.
The working rhythm is a weekly interview, one opportunity chosen at a time, three solutions compared, and the riskiest assumption tested first.
Where it breaks. The outcome at the root came from the transit authority and the tree has no way to question it. The opportunities come only from people you could interview, which means people still standing at the stop. Those who gave up and now drive are not on the tree.
Ryan Singer, Basecamp; draws openly on Alexander's Notes
What it believes. Estimates are fiction. Fix the time you are willing to spend, called the appetite, and let the scope move. A senior person shapes the work first: rough enough to leave room, solved enough that the known traps are marked. Then a small team gets six uninterrupted weeks.
Arrivals screen
- next three buses, minutes only
- age of data, shown when over 30 s
|
| no fetch for 90 s
v
Timetable screen
- scheduled times from the printed table
- "Live times unavailable"
|
| fetch succeeds
v
Arrivals screen
A dot that stays on the left for two weeks is the signal to cut that scope, not to extend the cycle.
Where it breaks. Everything depends on the shaper, who must already understand the problem well enough to mark the traps. The method says little about how they got there. It also assumes you own your roadmap. A contractor with a signed specification cannot let scope move.
Common practice with generative models; Simon's search with the cost of generation removed
What it believes. When a model can produce forty candidate designs in a minute, drawing one carefully is the wrong use of a person. Write the checks a good design must pass. The checks are the specification, and the design is whatever survives them.
task: display layout, 800 x 480, one colour
generate: 40 candidates
checks:
- glyph_height_mm >= 40 # legible from the seat
- arrivals_shown >= 3
- shows_data_age == true
- contrast_ratio >= 7
- render_ms <= 50 # on the shelter's own hardware
- judge: "Would a first-time rider know when the
next bus to the clinic comes? Answer yes or no."
| After check | Left | |
|---|---|---|
| Generated | 40 | |
| Glyph height | 26 | |
| Three arrivals | 19 | |
| Data age, contrast | 11 | |
| Render time | 9 | |
| Model judge | 4 |
A person looks at the last four and picks one. When a bad layout gets through, the fix is a new check, and all forty run again.
Where it breaks. Candidates drift toward whatever the checks reward: forty-millimetre numerals with everything else unreadable. The model judge is a stand-in for a rider and has never waited in the rain. And the old question returns in a new place. Whoever writes the checks is the designer, and holds the authority.
Language models applied to the capture problem that sank IBIS
What it believes. Nobody would keep the argument map because keeping it was a job. Let a model listen to the meeting, file each remark as an issue, position or argument, link it to the line where it was said, and point out what is missing.
| 1 | Planner | So are we agreed it goes outside the clinic? |
| 2 | Clinic manager | A third of your riders are our patients. Half of them use sticks. |
| 3 | Engineer | It's 2.1 metres there. With a shelter a wheelchair can't get past. |
| 4 | Shop owner | The corner's safer anyway. |
| 5 | Clinic manager | We could lose the planter. I'd have to ask the board. |
Where it breaks. The model files what was said. The person who sat silent through the meeting, and the objection made afterwards in the car park, are not in the map. A map that cost nobody any effort is also a map nobody feels they own, and its errors are plausible enough to go unread.
Ink & Switch and others; end-user programming with a model as the builder
What it believes. The people who live with a tool know what is wrong with it and have never been able to change it. Keep a fixed core that must not break. Let everything else be reshaped by its users, in plain words, with a model doing the construction.
Requests from the street. Tap to apply or remove.
| Fixed core | The arrival feed. The fall-back to the timetable when data is stale. Minimum numeral size. |
|---|---|
| Open to change | Layout, which lines appear, extra local information, wording. |
Where it breaks. It reopens the oldest question on this page. A display on a public street has many users, and the method does not say which of them may change it, or who removes the shop owner's line when the shop closes. The line between core and open is also drawn by whoever built it.