12. DELIBERATION, n. The act of examining one's bread to determine
which side it is buttered on.
REASON, v.t. To weight probabilities in the scales of desire.
DISCUSSION, n. A method of confirming others in their errors.
DECIDE, v.i. To succumb to the preponderance of one set of
influences over another set.
RECONSIDER, v. To seek a justification for a decision already made.
— Ambrose Bierce, The Devil's Dictionary
Well, now I am
14. @RuthMalan
#OReillySACon
Where We’re Headed:
• some clues: design
principles, heuristics, tips,
… and hints
• organizing clues: mapping
the clue landscape
• getting clues: where and how
to look
21. — Ambrose Bierce, Devil’s Dictionary
ABATIS, n. [1.] Rubbish in front of a
fort, to prevent the rubbish outside
from molesting the rubbish inside.
Image: Engineering and the Mind’s Eye
22. — Ambrose Bierce, Devil’s Dictionary
ABATIS, n. [1.] Rubbish in front of a
fort, to prevent the rubbish outside
from molesting the rubbish inside.
Image: Engineering and the Mind’s Eye
“Design things to make their
performance as insensitive to the
unknown or uncontrollable external
influence as practical.” — Eb
Rechtin
26. “There was a wall. It did not look important. It was
built of uncut rocks roughly mortared. An adult
could look right over it, and even a child could climb
it. Where it crossed the roadway, instead of having
a gate it degenerated into mere geometry, a line,
an idea of boundary. But the idea was real. It was
important. For seven generations there had been
nothing in the world more important than that wall.
Like all walls it was ambiguous, two-faced. What
was inside it and what was outside it depended
upon which side of it you were on.”
— Ursula K. Le Guin, The Dispossessed
Image: welshwaller.files.wordpress.com/2013/01/llwest-and-elan-valley-017.jpg
27. Boundaries: Conway’s Law
“Any organization that designs a
system (defined broadly) will
produce a design whose structure
is a copy of the organization's
communication structure.”
—Melvyn Conway (in 1968!)
SCARS: Separation of Concerns
28. As programmers we deal with
abstractions all the time and
we have to invent them in
order to solve our problems
— Michael Feathers
SCARS: crisp and resilient Abstractions
SCARS: crisp and resilient Abstractions
29. “The purpose of abstraction is not to be
vague, but to create a new semantic
level in which one can be absolutely
precise.”
— Dijkstra
SCARS: crisp and resilient Abstractions
32. Crisp and Resilient Abstractions
“We propose instead that one begins with a
list of difficult design decisions or design
decisions which are likely to change. Each
module is then designed to hide such a
decision from the others.” — David Parnas
SCARS: crisp and resilient Abstractions
33. Resilient Abstractions
Resilient under change
SRP: each software module should have one and
only one reason to change (Uncle Bob Martin)
Retrospective (Feathers)
Prospective (thought experiments)
SCARS: crisp and resilient Abstractions
37. “Do the simplest thing that could possibly
work”
Occam’s Razor: the simplest solution is
usually the correct one
YAGNI
SCARS: strive to Simplify
38. Chad Fowler: “The older I get, the more I realize
the biggest problem to solve in
tech is to get people to stop
making things harder than they
have to be.”
Michael Feathers: “It's not that easy.”
SCARS: strive to Simplify
41. “old code doesn’t die; you have to kill
it”
— Grady Booch
SCARS: strive to Simplify
42. How to kill code
StranglerApplication: “An alternative route is
to gradually create a new system around the
edges of the old, letting it grow slowly over
several years until the old system is
strangled.”
— Martin Fowler
SCARS: strive to Simplify
43. “disorder is easier and more
permanent than order, which is difficult
and temporary”
— Jeremy Campbell
SCARS: strive to Simplify
44. “One bad programmer can easily
create two new jobs a year.”
— David Parnas
SCARS: strive to Simplify
47. @RuthMalan
#OReillySACon
Essence of systems is:
• Relationships
• Interfaces
• Form
• Fit
• Function
— Eberhardt Rechtin
“Relationships among the elements are what
give systems their added value”
“Don’t partition by slicing through regions
where high rates of information exchange
are required””
49. “dependencies are a
tradeoff between the
cost of maintaining the
code yourself (and
implementing it) & the
cost of the risk of
breakage”
— Kent Beck
Balance: Tradeoffs/Compromise
50. Kent Beck’s 4 Rules of Simple Design
• passes its tests
• minimises
duplication
• reveals its intent
• has fewer
classes/modules/
packages…
51. More Clues
Systemantics by John Gall
• New systems mean new problems
• A complex system that works is invariably
found to have evolved from a simple system
that worked
• a complex system designed from scratch
never works and cannot be made to work
• Systems develop goals the minute they come
into being
54. 101 Things
“Architecture is the thoughtful making of space."
-LOUIS KAHN”
“Science works with chunks and bits and
pieces of things with the continuity
presumed, and [the artist] works only with the
continuities of things with the chunks and bits
and pieces presumed."
-ROBERT PIRSIG, ZEN AND THE ART OF
MOTORCYCLE MAINTENANCE”
“Just because an interesting idea occurs to
you doesn't mean it belongs in the building
you are designing. Subject every idea,
brainstorm, random musing, and helpful
suggestion to careful, critical consideration.”
― Matthew Frederick
55.
56. “If you’re waiting on me to come to a conclusion where I give you
a score from one through ten on the NDUF to BDUF scale (and it’s
obviously five, right?), you’re going to be disappointed with this
post. How much design should you do up front? Dude, I have no
idea. Are you building a lunar rover? Probably a lot, then,
because the Sea of Tranquility is a pretty unresponsive product
owner. Are you cobbling together a minimum viable product and
your hardware and business requirements may pivot at any
moment? Well, probably not much. I can’t settle your design
decisions and timing for you with acronyms or aphorisms.”
Erik Dietrich, Designs Don’t Emerge
http://www.daedtech.com/designs-dont-emerge/
57. Is this the part where we get to talk
about Technical Wisdom?!
59. @RuthMalan
#OReillySACon
Next:
• some clues: design
principles, heuristics, tips,
… and hints
• organizing clues: mapping
the clue landscape
• getting clues: where and how
to look
62. Context System-in-Context
(use, dev, ops)
System
(Ecosystem)
Architecture
structure and
mechanisms
“Requirements”
design of system
capabilities
Strategy
ecosystem interventions
"Always design a thing by considering it in its next larger context" -- Eliel Saarinen
63. What
ARCHITECTURE
STRUCTURE
Software architecture refers to the
high level structures of a software
system, [..] It is the set of structures
needed to reason about the
software system. Each structure
comprises software elements,
relations among them, and
properties of both elements and
relations.
—wikipedia/Clements et al
64. “Good design doesn’t ’emerge’
like a welcome ray of sunshine
on a cloudy day.
—Erik Dietrich
Erik Dietrich, Designs Don’t Emerge
http://www.daedtech.com/designs-dont-emerge/
65. “It comes coughing, sputtering,
screaming and grunting from
the mud, like a drowning man
being pulled from quicksand,
and the effort of dragging it
laboriously out leaves you
exhausted.”
Erik Dietrich, Designs Don’t Emerge
http://www.daedtech.com/designs-dont-emerge/
Art by Amanda Muledy (@EEKitsabug)
67. Factor and Refactor
Posit responsibilities
Refine as explore behavior
and different views
Patterns
Metaphors
Experience
Existing stuff
“The responsibility of architecture is the
architecture of responsibility.”
-- Jan van Til
74. Source: Martin Fowler
http://martinfowler.com/articles/lmax.html
LMAX Disruptor Mechanism
Challenges:
A trading platform
needs very low latency -
trades have to be
processed quickly
because the market is
moving rapidly.
A retail platform adds
complexity because it
has to do this for lots of
people.
75. Context System-in-Context
(use, dev, ops)
System
(Ecosystem)
Architecture
structure and
mechanisms
“Requirements”
design of system
capabilities
Strategy
ecosystem interventions
82. Tell you a story… it was Alan
Kay’s idea!
“the Constitution itself is a set
of principles for building a
very complex dynamic
structure that should last for
centuries”
– Alan Kay
85. “I confess that there are several parts of this
constitution which I do not at present
approve, but I am not sure I shall never
approve them: For having lived long, I have
experienced many instances of being
obliged by better information, or fuller
consideration, to change opinions even on
important subjects, which I once thought
right, but found to be otherwise. It is
therefore that the older I grow, the more
apt I am to doubt my own judgment, and to
pay more respect to the judgment of
others.”
— Benjamin Franklin
86. “The Federalist Papers are
arguments that support
different parts of the design
of the Constitution. And the
Constitution itself is a set of
principles for building a very
complex dynamic structure
that should last for centuries”
– Alan Kay
87. “it seems to have been reserved to the
people of this country, [..], to decide the
important question, whether societies of
men are really capable or not, of
establishing good government from
reflection and choice, or whether they
are forever destined to depend, for their
political constitutions, on accident and
force.”
Federalist No.1
90. Areas like
• creativity and imagination
• empathy, listening and observation
• problem framing and solving
• perception and bias
• experimentation
Personal Effectiveness
91. Areas like
• Leadership
• Collaboration
• Communication and influence
• getting things done in organizations
• Coach/consultant
Organizational Effectiveness
“All problems are people
problems” — Jerry
Weinberg
92. Areas like
• Situational awareness
• context mapping
• Differentiation and value definition
• Direction setting
Strategic Effectiveness
93. @RuthMalan
#OReillySACon
Next:
• some clues: design
principles, heuristics, tips,
… and hints
• organizing clues: mapping
the clue landscape
• getting clues: where and how
to look
94. Getting Clues: Steal
“Experience keeps a dear school,
but fools will learn in no other.”
Benjamin Franklin
Steal: Stand on Shoulders
108. Observe Orient Decide Act
“All architecture is design but not
all design is architecture.
Architecture represents the
significant design decisions that
shape a system, where significant
is measured by cost of change.”
— Grady Booch, blog post,
March 2, 2006
109. Observe Orient Decide Act
Getting Clues: Look/Observe
Title: short noun phrase
Context: describes the forces at play;
probably in tension, and should be called
out as such
Decision: describes our response to these
forces
Status: proposed, accepted, deprecated or
superseded
Consequences: describes the resulting
context, after applying the decision
— Michael Nygard, Documenting
Architecture Decisions, Nov 2011
111. Getting Clues: Look/Change PoV
Move to different PoV/vantage point
• view system through different “lenses” — models (incl. instrumented
code), perspectives
Also, a matter of discipline
• self-discipline, and
• discipline of engineering: probe, model, reason, open criticism, come
up with counter arguments, come up with alternatives
112. Getting Clues: Look/Change PoV
“You don't understand
something until you
understand it more
than one way”
— Marvin Minsky
Image:
en.wikipedia.org/wiki/Marvin_Minsky#/media/File:Marvin_Minsky_at_OLPCb
jpg
113. “If you haven’t thought of
three possibilities, you
haven’t thought enough.”
— Jerry Weinberg
Rule of Three