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
Ad

More Related Content

Viewers also liked (12)

The Heisenberg Uncertainty Principle[1]
The Heisenberg Uncertainty Principle[1]The Heisenberg Uncertainty Principle[1]
The Heisenberg Uncertainty Principle[1]
guestea12c43
 
Photo electric effect and compton
Photo electric effect and comptonPhoto electric effect and compton
Photo electric effect and compton
American International University-Bangladesh
 
Bragg's law
Bragg's lawBragg's law
Bragg's law
Gulfam Hussain
 
Zeeman Effect
Zeeman EffectZeeman Effect
Zeeman Effect
Zeeshan Khalid
 
The uncertainty principle
The uncertainty principleThe uncertainty principle
The uncertainty principle
farman53
 
History of the atom
History of the atomHistory of the atom
History of the atom
laburkett
 
Social cognitive perspective
Social cognitive perspectiveSocial cognitive perspective
Social cognitive perspective
sherrymariani
 
Photoelectric effect ppt
Photoelectric effect pptPhotoelectric effect ppt
Photoelectric effect ppt
Santosh Jadhav
 
Bragg’s law
Bragg’s lawBragg’s law
Bragg’s law
Sharda University
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and Archives
Ned Potter
 
Designing Teams for Emerging Challenges
Designing Teams for Emerging ChallengesDesigning Teams for Emerging Challenges
Designing Teams for Emerging Challenges
Aaron Irizarry
 
The Heisenberg Uncertainty Principle[1]
The Heisenberg Uncertainty Principle[1]The Heisenberg Uncertainty Principle[1]
The Heisenberg Uncertainty Principle[1]
guestea12c43
 
The uncertainty principle
The uncertainty principleThe uncertainty principle
The uncertainty principle
farman53
 
History of the atom
History of the atomHistory of the atom
History of the atom
laburkett
 
Social cognitive perspective
Social cognitive perspectiveSocial cognitive perspective
Social cognitive perspective
sherrymariani
 
Photoelectric effect ppt
Photoelectric effect pptPhotoelectric effect ppt
Photoelectric effect ppt
Santosh Jadhav
 
UX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and ArchivesUX, ethnography and possibilities: for Libraries, Museums and Archives
UX, ethnography and possibilities: for Libraries, Museums and Archives
Ned Potter
 
Designing Teams for Emerging Challenges
Designing Teams for Emerging ChallengesDesigning Teams for Emerging Challenges
Designing Teams for Emerging Challenges
Aaron Irizarry
 

Similar to The Uncertainty Principle (20)

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

More from Jeremy Coates (17)

Cyber Security and GDPR
Cyber Security and GDPRCyber Security and GDPR
Cyber Security and GDPR
Jeremy Coates
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
Jeremy Coates
 
Why is PHP Awesome
Why is PHP AwesomeWhy is PHP Awesome
Why is PHP Awesome
Jeremy Coates
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with Codeception
Jeremy Coates
 
An introduction to Phing the PHP build system (PHPDay, May 2012)
An introduction to Phing the PHP build system (PHPDay, May 2012)An introduction to Phing the PHP build system (PHPDay, May 2012)
An introduction to Phing the PHP build system (PHPDay, May 2012)
Jeremy Coates
 
An introduction to Phing the PHP build system
An introduction to Phing the PHP build systemAn introduction to Phing the PHP build system
An introduction to Phing the PHP build system
Jeremy Coates
 
Insects in your mind
Insects in your mindInsects in your mind
Insects in your mind
Jeremy Coates
 
Phing
PhingPhing
Phing
Jeremy Coates
 
Hudson Continuous Integration for PHP
Hudson Continuous Integration for PHPHudson Continuous Integration for PHP
Hudson Continuous Integration for PHP
Jeremy Coates
 
Exploiting Php With Php
Exploiting Php With PhpExploiting Php With Php
Exploiting Php With Php
Jeremy Coates
 
What's new, what's hot in PHP 5.3
What's new, what's hot in PHP 5.3What's new, what's hot in PHP 5.3
What's new, what's hot in PHP 5.3
Jeremy Coates
 
Kiss Phpnw08
Kiss Phpnw08Kiss Phpnw08
Kiss Phpnw08
Jeremy Coates
 
Regex Basics
Regex BasicsRegex Basics
Regex Basics
Jeremy Coates
 
Search Lucene
Search LuceneSearch Lucene
Search Lucene
Jeremy Coates
 
Mysql Explain Explained
Mysql Explain ExplainedMysql Explain Explained
Mysql Explain Explained
Jeremy Coates
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
Jeremy Coates
 
PHPNW Conference Update
PHPNW Conference UpdatePHPNW Conference Update
PHPNW Conference Update
Jeremy Coates
 
Cyber Security and GDPR
Cyber Security and GDPRCyber Security and GDPR
Cyber Security and GDPR
Jeremy Coates
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
Jeremy Coates
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with Codeception
Jeremy Coates
 
An introduction to Phing the PHP build system (PHPDay, May 2012)
An introduction to Phing the PHP build system (PHPDay, May 2012)An introduction to Phing the PHP build system (PHPDay, May 2012)
An introduction to Phing the PHP build system (PHPDay, May 2012)
Jeremy Coates
 
An introduction to Phing the PHP build system
An introduction to Phing the PHP build systemAn introduction to Phing the PHP build system
An introduction to Phing the PHP build system
Jeremy Coates
 
Insects in your mind
Insects in your mindInsects in your mind
Insects in your mind
Jeremy Coates
 
Hudson Continuous Integration for PHP
Hudson Continuous Integration for PHPHudson Continuous Integration for PHP
Hudson Continuous Integration for PHP
Jeremy Coates
 
Exploiting Php With Php
Exploiting Php With PhpExploiting Php With Php
Exploiting Php With Php
Jeremy Coates
 
What's new, what's hot in PHP 5.3
What's new, what's hot in PHP 5.3What's new, what's hot in PHP 5.3
What's new, what's hot in PHP 5.3
Jeremy Coates
 
Mysql Explain Explained
Mysql Explain ExplainedMysql Explain Explained
Mysql Explain Explained
Jeremy Coates
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
Jeremy Coates
 
PHPNW Conference Update
PHPNW Conference UpdatePHPNW Conference Update
PHPNW Conference Update
Jeremy Coates
 
Ad

Recently uploaded (20)

#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager API
UiPathCommunity
 
Technology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data AnalyticsTechnology Trends in 2025: AI and Big Data Analytics
Technology Trends in 2025: AI and Big Data Analytics
InData Labs
 
Big Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur MorganBig Data Analytics Quick Research Guide by Arthur Morgan
Big Data Analytics Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
Linux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdfLinux Professional Institute LPIC-1 Exam.pdf
Linux Professional Institute LPIC-1 Exam.pdf
RHCSA Guru
 
AI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global TrendsAI and Data Privacy in 2025: Global Trends
AI and Data Privacy in 2025: Global Trends
InData Labs
 
TrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business ConsultingTrsLabs - Fintech Product & Business Consulting
TrsLabs - Fintech Product & Business Consulting
Trs Labs
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
Drupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy ConsumptionDrupalcamp Finland – Measuring Front-end Energy Consumption
Drupalcamp Finland – Measuring Front-end Energy Consumption
Exove
 
Electronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploitElectronic_Mail_Attacks-1-35.pdf by xploit
Electronic_Mail_Attacks-1-35.pdf by xploit
niftliyevhuseyn
 
Rusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond SparkRusty Waters: Elevating Lakehouses Beyond Spark
Rusty Waters: Elevating Lakehouses Beyond Spark
carlyakerly1
 
What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...What is Model Context Protocol(MCP) - The new technology for communication bw...
What is Model Context Protocol(MCP) - The new technology for communication bw...
Vishnu Singh Chundawat
 
Heap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and DeletionHeap, Types of Heap, Insertion and Deletion
Heap, Types of Heap, Insertion and Deletion
Jaydeep Kale
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?How Can I use the AI Hype in my Business Context?
How Can I use the AI Hype in my Business Context?
Daniel Lehner
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
HCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser EnvironmentsHCL Nomad Web – Best Practices and Managing Multiuser Environments
HCL Nomad Web – Best Practices and Managing Multiuser Environments
panagenda
 

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 ⊗