SlideShare a Scribd company logo
The Uncertainty Principle

       Kevlin Henney
       kevlin@curbralan.com
          @KevlinHenney
See http://programmer.97things.oreilly.com
                  (also http://tr.im/97tepsk)
                     and follow @97TEPSK
_
Δx Δp ≥ h
        2
The more precisely the position is determined,
the less precisely the momentum is known in
this instant, and vice versa.
                             Werner Heisenberg
The Uncertainty Principle
Development and Learning
Software development is essentially
a learning process
 Moving from the unknown to the known
We know more at the end of a
development than at the beginning
 It is important not to let early decisions
 dominate subsequent development,
 i.e., the period of greatest ignorance
 should not hold the critical decisions
Graphic by Sebastian Hermida
http://sbastn.com/2009/06/typing-is-not-the-bottleneck/
Uncertainty and Risk
Uncertainty often leads to arbitrary
point decisions
  Rather than taking the uncertainty as
  an indication of something deeper
Risk is exposure to uncertainty, not
just the presence of uncertainty
  Something may be uncertain but not
  necessarily risky
The Uncertainty Principle
Confronted with two options, most
people think that the most
important thing to do is make a
choice between them. In design
(software or otherwise) it is not.
The presence of two options is an
indicator that you need to consider
uncertainty in the design. Use the
uncertainty as a driver to determine
where you can defer commitment
to details and where you can
partition and abstract to reduce the
significance of design decisions.
                    Kevlin Henney
      "Use Uncertainty as a Driver"
Speculative Generality
Brian Foote suggested this name for a smell to which we
are very sensitive. You get it when people say, "Oh, I think
we need the ability to do this kind of thing someday" and
thus want all sorts of hooks and special cases to handle
things that aren't required. The result often is harder to
understand and maintain. If all this machinery were being
used, it would be worth it. But if it isn't, it isn't. The
machinery just gets in the way, so get rid of it.
                                     Martin Fowler, Refactoring
The best route to generality is through
understanding known, specific examples
and focusing on their essence to find an
essential common solution. Simplicity
through experience rather than generality
through guesswork. [...]
We can find generality and flexibility in
trying to deliver specific solutions, but if we
weigh anchor and forget the specifics too
soon, we end up adrift in a sea of nebulous
possibilities, a world of tricky configuration
options, long-winded interfaces, and not-
quite-right abstractions.
                                Kevlin Henney
 "Simplicity before Generality, Use before Reuse"
The Uncertainty Principle
Five Orders of Ignorance

0.   Lack of Ignorance
1.   Lack of Knowledge
2.   Lack of Awareness
3.   Lack of Process
4.   Meta-Ignorance
                Phillip G Armour
Options Thinking
Defer commitment until there is a
concrete need
  Favour just in time over just in case
  Options thinking encourages an honest
  appraisal of the effect of uncertainty on
  development, mitigating the effect of
  making the wrong decision
But including all options is not the
same as keeping options open
The Last Responsible Moment
Deferral is neither vagueness nor
abrogation of responsibility
  Before the last responsible moment (or
  optimal exercise point) making a
  commitment offers no additional value,
  and after it can result in loss of value
  The moment(s) offering the greatest
  possible knowledge for the greatest
  possible opportunity
ambiguous, a.
1. Doubtful, questionable; indistinct, obscure, not clearly defined.
2. Of words or other significant indications: Admitting more than
   one interpretation, or explanation; of double meaning, or of
   several possible meanings; equivocal. (The commonest use.)
3. Of doubtful position or classification, as partaking of two
   characters or being on the boundary line between.
4. Of persons: Wavering or uncertain as to course or conduct;
   hesitating, doubtful. Obs.
5. Of things: Wavering or uncertain in direction or tendency; of
   doubtful or uncertain issue.
6. Hence, Insecure in its indications; not to be relied upon.
7. Of persons, oracles, etc.: Using words of doubtful or double
   meaning.

                                      Oxford English Dictionary
Partitioning for Uncertainty

           Client                         Client




                                          Feature




Option A            Option B   Option A             Option B
Information Hiding

We have tried to demonstrate by these examples that it
is almost always incorrect to begin the decomposition of
a system into modules on the basis of a flowchart. 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 L Parnas
 "On the Criteria to Be Used in Decomposing Systems into Modules"
Stability and Certainty
Stability can be used an indication
of certainty
 Uncertainty is reflected in the rate at
 which knowledge and understanding
 change
 Changes may be with respect to
 correctness or completeness or caused
 by other sources of change
If you have a procedure with
ten parameters, you probably
missed some.
                        Alan Perlis
Shearing Layers
Thomas Ball and Stephen G Eick
"Software Visualization in the Large"
Scenario Buffering
Speculation can also be used to
envision constructively
 Alternative future scenarios offer
 feedback on likely points of change
 and instability
 However, the goal is to work out how to
 partition a system and how to evaluate
 alternatives, not what extra features
 and hooks need to be added
Dot-Voting Change

          •
              •




          •
       • • ••
           •


Consider a number of possible   Dependency inversion allows a design's
change scenarios and mark       dependencies to be reversed, loosened
affected components.            and manipulated at will, which means
                                that dependencies can be aligned with
                                known or anticipated stability.
The Uncertainty Principle
Interpreting Defects
                     B
A
                     ⊗
                         ⊗   C
        ⊗
                                 ⊗
                             ⊗



            D

            ⊗⊗⊗⊗             E

            ⊗ ⊗ ⊗⊗               ⊗


    F

            ⊗
The Uncertainty Principle

More Related Content

PPTX
UX & The Heisenberg Uncertainty Principle - SXSW 2015
Amy Dickson
 
PDF
Heisenberg's Uncertainty Principle !
Manmohan Dash
 
PDF
харилцааны хэлбэрүүд 8
ajaa97
 
PPTX
Validation practical definition
Johan Hoberg
 
ODP
хэрэглэгдэхүүн
khandmaa79
 
PPTX
Ez uhaan edugeechlegdsn_zamnal
Baasansuren Naranbaatar
 
PPTX
SCHRODINGER; HEISENBERG; MAYER (Female Physicist)
chininaperez
 
PPT
Tau 09 - Uncertainty Principle!
Jessica Kabigting
 
UX & The Heisenberg Uncertainty Principle - SXSW 2015
Amy Dickson
 
Heisenberg's Uncertainty Principle !
Manmohan Dash
 
харилцааны хэлбэрүүд 8
ajaa97
 
Validation practical definition
Johan Hoberg
 
хэрэглэгдэхүүн
khandmaa79
 
Ez uhaan edugeechlegdsn_zamnal
Baasansuren Naranbaatar
 
SCHRODINGER; HEISENBERG; MAYER (Female Physicist)
chininaperez
 
Tau 09 - Uncertainty Principle!
Jessica Kabigting
 

Viewers also liked (12)

PPT
The Heisenberg Uncertainty Principle[1]
guestea12c43
 
DOC
Photo electric effect and compton
American International University-Bangladesh
 
PPTX
Bragg's law
Gulfam Hussain
 
PPTX
Zeeman Effect
Zeeshan Khalid
 
PPTX
The uncertainty principle
farman53
 
PPTX
5 s surgalt ambuk
Amgalanbayar Gongorbayar
 
PPT
History of the atom
laburkett
 
PPTX
Social cognitive perspective
sherrymariani
 
PPTX
Photoelectric effect ppt
Santosh Jadhav
 
PPTX
Bragg’s law
Sharda University
 
PDF
UX, ethnography and possibilities: for Libraries, Museums and Archives
Ned Potter
 
PDF
Designing Teams for Emerging Challenges
Aaron Irizarry
 
The Heisenberg Uncertainty Principle[1]
guestea12c43
 
Photo electric effect and compton
American International University-Bangladesh
 
Bragg's law
Gulfam Hussain
 
Zeeman Effect
Zeeshan Khalid
 
The uncertainty principle
farman53
 
5 s surgalt ambuk
Amgalanbayar Gongorbayar
 
History of the atom
laburkett
 
Social cognitive perspective
sherrymariani
 
Photoelectric effect ppt
Santosh Jadhav
 
Bragg’s law
Sharda University
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
Ned Potter
 
Designing Teams for Emerging Challenges
Aaron Irizarry
 
Ad

Similar to The Uncertainty Principle (20)

PPTX
Decision Making for the Project Leader
razausman
 
PPTX
Designing Alternate Solutions: How to Find Solutions That Meet Your Requirements
BA-EXPERTS
 
PPTX
My presentation erin da802
nida19
 
PPTX
Intersection18: From a "Simple" App Challenge for Astronauts to an Enterprise...
Intersection Conference
 
PPTX
Making Decisions Presentation
andyped
 
PPT
Perception and decision making
Dr.P. KARTHIKEYAN
 
PPTX
I 4 scenarioplanning
Russ Coff
 
PDF
Trauma Informed Design: Learning and Applying the Trauma Heuristic
Theresa Slate
 
PPT
Project Rescue Operations
bdonaldson
 
PPTX
Broyhill - Investing by Design, CFA Society Buffalo
Christopher Pavese
 
PPTX
Leaving you.v3
Treehouse Agency
 
PDF
The Babel of Strategy
Malcolm Ryder
 
PDF
Evolving Cynefin
Malcolm Ryder
 
PDF
The Hidden Traps in Decision Making
Ankit Saxena
 
PDF
Organizational Behavior Emerging Knowledge Global Reality 8th Edition McShane...
sooneyanney
 
PDF
IDENTIFYING REASONS AND CONCLUSION JUNE 10 2022.pdf
SyedhussinJaafar1
 
PDF
Pair Programming in Theory and Practice By Garrick West
XP Conference India
 
PPTX
QA is Broken, Fix it!
Ffrees Family Finance
 
PPT
Ch05
Rahul Jha
 
Decision Making for the Project Leader
razausman
 
Designing Alternate Solutions: How to Find Solutions That Meet Your Requirements
BA-EXPERTS
 
My presentation erin da802
nida19
 
Intersection18: From a "Simple" App Challenge for Astronauts to an Enterprise...
Intersection Conference
 
Making Decisions Presentation
andyped
 
Perception and decision making
Dr.P. KARTHIKEYAN
 
I 4 scenarioplanning
Russ Coff
 
Trauma Informed Design: Learning and Applying the Trauma Heuristic
Theresa Slate
 
Project Rescue Operations
bdonaldson
 
Broyhill - Investing by Design, CFA Society Buffalo
Christopher Pavese
 
Leaving you.v3
Treehouse Agency
 
The Babel of Strategy
Malcolm Ryder
 
Evolving Cynefin
Malcolm Ryder
 
The Hidden Traps in Decision Making
Ankit Saxena
 
Organizational Behavior Emerging Knowledge Global Reality 8th Edition McShane...
sooneyanney
 
IDENTIFYING REASONS AND CONCLUSION JUNE 10 2022.pdf
SyedhussinJaafar1
 
Pair Programming in Theory and Practice By Garrick West
XP Conference India
 
QA is Broken, Fix it!
Ffrees Family Finance
 
Ch05
Rahul Jha
 
Ad

More from Jeremy Coates (17)

PPTX
Cyber Security and GDPR
Jeremy Coates
 
PPTX
Aspect Oriented Programming
Jeremy Coates
 
PDF
Why is PHP Awesome
Jeremy Coates
 
PDF
Testing with Codeception
Jeremy Coates
 
KEY
An introduction to Phing the PHP build system (PHPDay, May 2012)
Jeremy Coates
 
KEY
An introduction to Phing the PHP build system
Jeremy Coates
 
KEY
Insects in your mind
Jeremy Coates
 
KEY
Phing
Jeremy Coates
 
KEY
Hudson Continuous Integration for PHP
Jeremy Coates
 
PPT
Exploiting Php With Php
Jeremy Coates
 
ODP
What's new, what's hot in PHP 5.3
Jeremy Coates
 
PDF
Kiss Phpnw08
Jeremy Coates
 
PPT
Regex Basics
Jeremy Coates
 
ODP
Search Lucene
Jeremy Coates
 
PDF
Mysql Explain Explained
Jeremy Coates
 
ODP
Introduction to Version Control
Jeremy Coates
 
ODP
PHPNW Conference Update
Jeremy Coates
 
Cyber Security and GDPR
Jeremy Coates
 
Aspect Oriented Programming
Jeremy Coates
 
Why is PHP Awesome
Jeremy Coates
 
Testing with Codeception
Jeremy Coates
 
An introduction to Phing the PHP build system (PHPDay, May 2012)
Jeremy Coates
 
An introduction to Phing the PHP build system
Jeremy Coates
 
Insects in your mind
Jeremy Coates
 
Hudson Continuous Integration for PHP
Jeremy Coates
 
Exploiting Php With Php
Jeremy Coates
 
What's new, what's hot in PHP 5.3
Jeremy Coates
 
Kiss Phpnw08
Jeremy Coates
 
Regex Basics
Jeremy Coates
 
Search Lucene
Jeremy Coates
 
Mysql Explain Explained
Jeremy Coates
 
Introduction to Version Control
Jeremy Coates
 
PHPNW Conference Update
Jeremy Coates
 

Recently uploaded (20)

PPTX
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
The Future of Artificial Intelligence (AI)
Mukul
 
PDF
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
PPTX
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
PPTX
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
PDF
Brief History of Internet - Early Days of Internet
sutharharshit158
 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 
IT Runs Better with ThousandEyes AI-driven Assurance
ThousandEyes
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
The Future of Artificial Intelligence (AI)
Mukul
 
Oracle AI Vector Search- Getting Started and what's new in 2025- AIOUG Yatra ...
Sandesh Rao
 
Agile Chennai 18-19 July 2025 | Emerging patterns in Agentic AI by Bharani Su...
AgileNetwork
 
Simple and concise overview about Quantum computing..pptx
mughal641
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
 
Agile Chennai 18-19 July 2025 Ideathon | AI Powered Microfinance Literacy Gui...
AgileNetwork
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
GDG Cloud Munich - Intro - Luiz Carneiro - #BuildWithAI - July - Abdel.pdf
Luiz Carneiro
 
Brief History of Internet - Early Days of Internet
sutharharshit158
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
How Open Source Changed My Career by abdelrahman ismail
a0m0rajab1
 

The Uncertainty Principle

  • 1. The Uncertainty Principle Kevlin Henney [email protected] @KevlinHenney
  • 2. See http://programmer.97things.oreilly.com (also http://tr.im/97tepsk) and follow @97TEPSK
  • 4. The more precisely the position is determined, the less precisely the momentum is known in this instant, and vice versa. Werner Heisenberg
  • 6. Development and Learning Software development is essentially a learning process Moving from the unknown to the known We know more at the end of a development than at the beginning It is important not to let early decisions dominate subsequent development, i.e., the period of greatest ignorance should not hold the critical decisions
  • 7. Graphic by Sebastian Hermida http://sbastn.com/2009/06/typing-is-not-the-bottleneck/
  • 8. Uncertainty and Risk Uncertainty often leads to arbitrary point decisions Rather than taking the uncertainty as an indication of something deeper Risk is exposure to uncertainty, not just the presence of uncertainty Something may be uncertain but not necessarily risky
  • 10. Confronted with two options, most people think that the most important thing to do is make a choice between them. In design (software or otherwise) it is not. The presence of two options is an indicator that you need to consider uncertainty in the design. Use the uncertainty as a driver to determine where you can defer commitment to details and where you can partition and abstract to reduce the significance of design decisions. Kevlin Henney "Use Uncertainty as a Driver"
  • 11. Speculative Generality Brian Foote suggested this name for a smell to which we are very sensitive. You get it when people say, "Oh, I think we need the ability to do this kind of thing someday" and thus want all sorts of hooks and special cases to handle things that aren't required. The result often is harder to understand and maintain. If all this machinery were being used, it would be worth it. But if it isn't, it isn't. The machinery just gets in the way, so get rid of it. Martin Fowler, Refactoring
  • 12. The best route to generality is through understanding known, specific examples and focusing on their essence to find an essential common solution. Simplicity through experience rather than generality through guesswork. [...] We can find generality and flexibility in trying to deliver specific solutions, but if we weigh anchor and forget the specifics too soon, we end up adrift in a sea of nebulous possibilities, a world of tricky configuration options, long-winded interfaces, and not- quite-right abstractions. Kevlin Henney "Simplicity before Generality, Use before Reuse"
  • 14. Five Orders of Ignorance 0. Lack of Ignorance 1. Lack of Knowledge 2. Lack of Awareness 3. Lack of Process 4. Meta-Ignorance Phillip G Armour
  • 15. Options Thinking Defer commitment until there is a concrete need Favour just in time over just in case Options thinking encourages an honest appraisal of the effect of uncertainty on development, mitigating the effect of making the wrong decision But including all options is not the same as keeping options open
  • 16. The Last Responsible Moment Deferral is neither vagueness nor abrogation of responsibility Before the last responsible moment (or optimal exercise point) making a commitment offers no additional value, and after it can result in loss of value The moment(s) offering the greatest possible knowledge for the greatest possible opportunity
  • 17. ambiguous, a. 1. Doubtful, questionable; indistinct, obscure, not clearly defined. 2. Of words or other significant indications: Admitting more than one interpretation, or explanation; of double meaning, or of several possible meanings; equivocal. (The commonest use.) 3. Of doubtful position or classification, as partaking of two characters or being on the boundary line between. 4. Of persons: Wavering or uncertain as to course or conduct; hesitating, doubtful. Obs. 5. Of things: Wavering or uncertain in direction or tendency; of doubtful or uncertain issue. 6. Hence, Insecure in its indications; not to be relied upon. 7. Of persons, oracles, etc.: Using words of doubtful or double meaning. Oxford English Dictionary
  • 18. Partitioning for Uncertainty Client Client Feature Option A Option B Option A Option B
  • 19. Information Hiding We have tried to demonstrate by these examples that it is almost always incorrect to begin the decomposition of a system into modules on the basis of a flowchart. 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 L Parnas "On the Criteria to Be Used in Decomposing Systems into Modules"
  • 20. Stability and Certainty Stability can be used an indication of certainty Uncertainty is reflected in the rate at which knowledge and understanding change Changes may be with respect to correctness or completeness or caused by other sources of change
  • 21. If you have a procedure with ten parameters, you probably missed some. Alan Perlis
  • 23. Thomas Ball and Stephen G Eick "Software Visualization in the Large"
  • 24. Scenario Buffering Speculation can also be used to envision constructively Alternative future scenarios offer feedback on likely points of change and instability However, the goal is to work out how to partition a system and how to evaluate alternatives, not what extra features and hooks need to be added
  • 25. Dot-Voting Change • • • • • •• • Consider a number of possible Dependency inversion allows a design's change scenarios and mark dependencies to be reversed, loosened affected components. and manipulated at will, which means that dependencies can be aligned with known or anticipated stability.
  • 27. Interpreting Defects B A ⊗ ⊗ C ⊗ ⊗ ⊗ D ⊗⊗⊗⊗ E ⊗ ⊗ ⊗⊗ ⊗ F ⊗