The Twentieth(!) OOP: January 26, 2011

The
Collaborative
Design Imperative
The Twentieth(!) OOP: January 26, 2011
Copyright © 2011 by Tom DeMarco, The Atlantic Systems Guild
What do they have in common?
the telephone system
the digestive system
the monetary system
the health care system
Linux
the electoral system
MacOS
the global weather system
Microsoft Word
the political system at work
Photoshop
your respiratory system
your car’s entertainment system
your system for winning at blackjack
What is a system?
Aristotle to the Rescue
Aristotle invented:
biology
logic (epistemology)
taxonomy
definition
and gave names to:
metaphysics
ethics
philosophy
Aristotle
-384 to -322
Definition of definition
“Man”
Definition is a t wo-step process that first establishes a
class that contains the word to be defined, and then
differentiates it from all other members of that class.
Defining . . .
Definition = genus + differentia
EG:
Man is the animal possessed of
the capacity for articulate speech.
Definition of “system”
System
A system is a complex interconnected set of components
that act together to achieve some end.
Two things that qualify . . .
as systems:
the soft ware product that your team is building
the project that builds it
Why are systems so
hard to understand?
Code is a message . . .
Project
Message
Computer
More messages:
Project
Message
Computer
Scary Observation:
Every bit that is in any of these
messages has to have been inside a
human brain at one time or another.
How much can you know?
Specifically, how much accessible memory is there in the
human computer?
How much can you know?
Specifically, how much accessible memory is there in the
human computer?
20
Human Memory = 10 bits
–John von Neumann [1930s]
Meet Thomas Landauer
Professor Thomas K. Landauer
Institute of Cognitive Sciences, University of Colorado
A few approximations:
(Almost) everything we know came in through our
input channels
We are so visual that our total input capacity is
more or less what we can receive through the eyes
Bandwidth of the eye is about 10 Mbps
No input while sleeping
There are approximately π x 10 to the 7th seconds in
a year
So do the math:
You’re awake about 20 million seconds per year
By the time you’re 50 years old, you’ve been awake
about one billion seconds
16
one billion seconds times 10 mbps =
10 bits
(And that assumes you remember everything you’ve ever seen.)
Read it and weep:
Landauer concluded that the human mind absorbs
approximately 2 bits per second while awake
2 bps x 1 billion seconds =
less than 1 gigabyte
Well then, how do we
deal with complex
systems at all?
Natural vs. Man-Made:
Man-made systems are composed of:
small pieces loosely joined
Natural systems, on the other hand, are composed of:
large pieces tightly joined
System Design in Two Parts:
Conceptual Design: How a proposed system fits into,
interacts with, and alters the reality that surrounds
it.
Internal Design: Derivation of an optimal piece
structure to achieve the chosen conceptual design
System Design in Two Parts:
Conceptual Design: How a proposed system fits into,
interacts with, and alters the reality that surrounds
it.
Internal Design: Derivation of an optimal piece
structure to achieve the chosen conceptual design
The optimal piece structure is always
Small Pieces Loosely Joined
Aside: New from Fred Brooks
The Design of Design:
Addison-Wesley Professional
(April 1, 2010)
System Design in Two Parts:
Conceptual Design: How a proposed system fits into,
interacts with, and alters the reality that surrounds
it.
Internal Design: Derivation of an optimal piece
structure to achieve the chosen conceptual design
The optimal piece structure is always
Small Pieces Loosely Joined
A System:
α
β
The Story So Far:
Digital systems are large compared to our capacity to
know them.
We’re building ever larger systems.
So, the amount of collaboration is ever increasing.
The optimal SPLJ piece structure divides the product
into human-sized pieces.
Ownership of the piece structure has to be
collaborative.
Partitioning of human effort is isomorphic to the
piece structure of the product.
How Much Collaboration?
The basic quantum of collaboration is:
one bit passed from one mind to another
Total Project Collaboration >> Message Size of Project
What are the key
skills of system
building?
In order of importance:
1. Collaboration
2. Design
.
.
.
.
Karl-EriK Sveiby
“Trust is the bandwidth
of communication.”
Recap:
Your system may be bigger than you
Small Pieces Loosely Joined
Collaboration and Design
“Trust is the bandwidth of communication.”
Recap:
Your system may be bigger than you
Small Pieces Loosely Joined
Collaboration and Design
“Trust is the bandwidth of communication.”
Give trust before demonstrated trust worthiness.