SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
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
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
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"
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.
Interpreting Defects
                     B
A
                     ⊗
                         ⊗   C
        ⊗
                                 ⊗
                             ⊗



            D

            ⊗⊗⊗⊗             E

            ⊗ ⊗ ⊗⊗               ⊗


    F

            ⊗
The Uncertainty Principle and Software Development

Contenu connexe

En vedette

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 principlefarman53
 
History of the atom
History of the atomHistory of the atom
History of the atomlaburkett
 
Social cognitive perspective
Social cognitive perspectiveSocial cognitive perspective
Social cognitive perspectivesherrymariani
 
Photoelectric effect ppt
Photoelectric effect pptPhotoelectric effect ppt
Photoelectric effect pptSantosh 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 ArchivesNed Potter
 
Designing Teams for Emerging Challenges
Designing Teams for Emerging ChallengesDesigning Teams for Emerging Challenges
Designing Teams for Emerging ChallengesAaron Irizarry
 

En vedette (12)

The Heisenberg Uncertainty Principle[1]
The Heisenberg Uncertainty Principle[1]The Heisenberg Uncertainty Principle[1]
The Heisenberg Uncertainty Principle[1]
 
Photo electric effect and compton
Photo electric effect and comptonPhoto electric effect and compton
Photo electric effect and compton
 
Bragg's law
Bragg's lawBragg's law
Bragg's law
 
Zeeman Effect
Zeeman EffectZeeman Effect
Zeeman Effect
 
The uncertainty principle
The uncertainty principleThe uncertainty principle
The uncertainty principle
 
5 s surgalt ambuk
5 s surgalt ambuk5 s surgalt ambuk
5 s surgalt ambuk
 
History of the atom
History of the atomHistory of the atom
History of the atom
 
Social cognitive perspective
Social cognitive perspectiveSocial cognitive perspective
Social cognitive perspective
 
Photoelectric effect ppt
Photoelectric effect pptPhotoelectric effect ppt
Photoelectric effect ppt
 
Bragg’s law
Bragg’s lawBragg’s law
Bragg’s law
 
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
 
Designing Teams for Emerging Challenges
Designing Teams for Emerging ChallengesDesigning Teams for Emerging Challenges
Designing Teams for Emerging Challenges
 

Similaire à The Uncertainty Principle and Software Development

Decision Making for the Project Leader
Decision Making for the Project LeaderDecision Making for the Project Leader
Decision Making for the Project Leaderrazausman
 
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 RequirementsBA-EXPERTS
 
My presentation erin da802
My presentation   erin da802My presentation   erin da802
My presentation erin da802nida19
 
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 Presentationandyped
 
Perception and decision making
Perception and decision makingPerception and decision making
Perception and decision makingDr.P. KARTHIKEYAN
 
I 4 scenarioplanning
I 4 scenarioplanningI 4 scenarioplanning
I 4 scenarioplanningRuss 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 HeuristicTheresa Slate
 
Project Rescue Operations
Project Rescue OperationsProject Rescue Operations
Project Rescue Operationsbdonaldson
 
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 BuffaloChristopher Pavese
 
The Babel of Strategy
The Babel of StrategyThe Babel of Strategy
The Babel of StrategyMalcolm Ryder
 
The Hidden Traps in Decision Making
The Hidden Traps in Decision MakingThe Hidden Traps in Decision Making
The Hidden Traps in Decision MakingAnkit Saxena
 
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.pdfSyedhussinJaafar1
 
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 WestXP Conference India
 
Facilitating Complexity: A Pervert's Guide to Exploration
Facilitating Complexity: A Pervert's Guide to ExplorationFacilitating Complexity: A Pervert's Guide to Exploration
Facilitating Complexity: A Pervert's Guide to ExplorationWilliam Evans
 

Similaire à The Uncertainty Principle and Software Development (20)

Decision Making for the Project Leader
Decision Making for the Project LeaderDecision Making for the Project Leader
Decision Making for the Project Leader
 
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
 
My presentation erin da802
My presentation   erin da802My presentation   erin da802
My presentation erin da802
 
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...
 
Making Decisions Presentation
Making Decisions PresentationMaking Decisions Presentation
Making Decisions Presentation
 
Relationship Forecasting
Relationship ForecastingRelationship Forecasting
Relationship Forecasting
 
Perception and decision making
Perception and decision makingPerception and decision making
Perception and decision making
 
I 4 scenarioplanning
I 4 scenarioplanningI 4 scenarioplanning
I 4 scenarioplanning
 
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
 
Project Rescue Operations
Project Rescue OperationsProject Rescue Operations
Project Rescue Operations
 
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
 
Leaving you.v3
Leaving you.v3Leaving you.v3
Leaving you.v3
 
The Babel of Strategy
The Babel of StrategyThe Babel of Strategy
The Babel of Strategy
 
Evolving Cynefin
Evolving CynefinEvolving Cynefin
Evolving Cynefin
 
The Hidden Traps in Decision Making
The Hidden Traps in Decision MakingThe Hidden Traps in Decision Making
The Hidden Traps in Decision Making
 
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
 
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
 
QA is Broken, Fix it!
QA is Broken, Fix it!QA is Broken, Fix it!
QA is Broken, Fix it!
 
Ch05
Ch05Ch05
Ch05
 
Facilitating Complexity: A Pervert's Guide to Exploration
Facilitating Complexity: A Pervert's Guide to ExplorationFacilitating Complexity: A Pervert's Guide to Exploration
Facilitating Complexity: A Pervert's Guide to Exploration
 

Plus de Jeremy Coates

Cyber Security and GDPR
Cyber Security and GDPRCyber Security and GDPR
Cyber Security and GDPRJeremy Coates
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented ProgrammingJeremy Coates
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with CodeceptionJeremy 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 systemJeremy Coates
 
Insects in your mind
Insects in your mindInsects in your mind
Insects in your mindJeremy Coates
 
Hudson Continuous Integration for PHP
Hudson Continuous Integration for PHPHudson Continuous Integration for PHP
Hudson Continuous Integration for PHPJeremy Coates
 
Exploiting Php With Php
Exploiting Php With PhpExploiting Php With Php
Exploiting Php With PhpJeremy 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.3Jeremy Coates
 
Mysql Explain Explained
Mysql Explain ExplainedMysql Explain Explained
Mysql Explain ExplainedJeremy Coates
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version ControlJeremy Coates
 
PHPNW Conference Update
PHPNW Conference UpdatePHPNW Conference Update
PHPNW Conference UpdateJeremy Coates
 

Plus de Jeremy Coates (17)

Cyber Security and GDPR
Cyber Security and GDPRCyber Security and GDPR
Cyber Security and GDPR
 
Aspect Oriented Programming
Aspect Oriented ProgrammingAspect Oriented Programming
Aspect Oriented Programming
 
Why is PHP Awesome
Why is PHP AwesomeWhy is PHP Awesome
Why is PHP Awesome
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with Codeception
 
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)
 
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
 
Insects in your mind
Insects in your mindInsects in your mind
Insects in your mind
 
Phing
PhingPhing
Phing
 
Hudson Continuous Integration for PHP
Hudson Continuous Integration for PHPHudson Continuous Integration for PHP
Hudson Continuous Integration for PHP
 
Exploiting Php With Php
Exploiting Php With PhpExploiting Php With Php
Exploiting Php With Php
 
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
 
Kiss Phpnw08
Kiss Phpnw08Kiss Phpnw08
Kiss Phpnw08
 
Regex Basics
Regex BasicsRegex Basics
Regex Basics
 
Search Lucene
Search LuceneSearch Lucene
Search Lucene
 
Mysql Explain Explained
Mysql Explain ExplainedMysql Explain Explained
Mysql Explain Explained
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 
PHPNW Conference Update
PHPNW Conference UpdatePHPNW Conference Update
PHPNW Conference Update
 

Dernier

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 

Dernier (20)

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 

The Uncertainty Principle and Software Development

  • 1. The Uncertainty Principle Kevlin Henney kevlin@curbralan.com @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
  • 5.
  • 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
  • 9.
  • 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"
  • 13.
  • 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.
  • 26.
  • 27. Interpreting Defects B A ⊗ ⊗ C ⊗ ⊗ ⊗ D ⊗⊗⊗⊗ E ⊗ ⊗ ⊗⊗ ⊗ F ⊗