SlideShare a Scribd company logo
Patterns for the People 
Kevlin Henney 
kevlin@curbralan.com 
@KevlinHenney
Patterns for the People
firmitas 
utilitas 
venustas 
vitruvius
Patterns for the People
Habitability is the characteristic of source code that enables programmers, coders, bug-fixers, and people coming to the code later in its life to understand its construction and intentions and to change it comfortably and confidently.
Habitability makes a place livable, like home. And this is what we want in software — that developers feel at home, can place their hands on any item without having to think deeply about where it is.
Patterns for the People
I don't make stupid mistakes. Only very, very clever ones. 
John Peel
http://xkcd.com/612/
Failure is a far better teacher than success. 
Philip Delves Broughton 
http://www.ft.com/cms/s/0/f33f5508-f010-11e0-bc9d-00144feab49a.html
If you want to learn how to build a house, build a house. Don't ask anybody, just build a house. 
Christopher Walken
Patterns for the People
Programming is difficult business. It should never be undertaken in ignorance. 
Douglas Crockford JavaScript: The Good Parts
It has become commonplace to suggest that failure is good for entrepreneurs. In this view, failure that comes early in a founder's career can teach them important lessons about doing business and harden them up for the next start-up attempt. 
David Storey, "Lessons that are wasted on entrepreneurs"
In the UK, the evidence is that novices are neither more nor less likely to have a business that either grows or survives than experienced founders. In Germany, where much more extensive statistical work has been undertaken, it is clear that those whose business had failed had worse-performing businesses if they restarted than did novices. 
David Storey, "Lessons that are wasted on entrepreneurs"
In short, the assumption that entrepreneurs use the lessons of their own experience to improve their chances of creating a series of profitable businesses is not borne out by the evidence. Success in business remains, as in life, something of a lottery. 
David Storey, "Lessons that are wasted on entrepreneurs"
The assertion that we can learn something from every failure is often heard. This study by Earl Miller and his colleagues Mark Histed and Anitha Pasupathy of the Massachusetts Institute of Technology's Picower Institute for Learning and Memory tests that notion by looking at the learning process at the level of neurons. The study shows how brains learn more effectively from success than from failure. 
http://www.asfct.org/documents/journal/2009-11/Vol1-2-9.pdf
Brain cells keep track of whether recent behaviours were successful or not. When a certain behaviour was successful, cells became more finely tuned to what the animal was learning. After a failure, there was little or no change in the brain – nor was there any improvement in behaviour. http://www.asfct.org/documents/journal/2009-11/Vol1-2-9.pdf
Mark Pagel at the University of Reading, UK, doubts that hominins before Homo sapiens had what it takes to innovate and exchange ideas, even if they wanted to. He draws a comparison with chimps, which can make crude stone tools but lack technological progress. They mostly learn by trial and error, he says, whereas we learn by watching each other, and we know when something is worth copying. 
http://www.newscientist.com/article/mg21328571.400- puzzles-of-evolution-why-was-technological-development-so-slow.html
Anti-patterns don't provide a resolution of forces as patterns do, and they are dangerous as teaching tools: good pedagogy builds on positive examples that students can remember, rather than negative examples. Anti-patterns might be good diagnostic tools to understand system problems. 
James Coplien, Software Patterns
Wise men profit more from fools than fools from wise men; for the wise men shun the mistakes of fools, but fools do not imitate the successes of the wise. 
Cato the Elder
One of the hallmarks of architectural design is the use of idiomatic patterns of system organization. Many of these patterns — or architectural styles — have been developed over the years as system designers recognized the value of specific organizational principles and structures for certain classes of software.
Patterns for the People
We know that every pattern is an instruction of the general form: 
context  conflicting forces  configuration 
So we say that a pattern is good, whenever we can show that it meets the following two empirical conditions: 
1.The problem is real. This means that we can express the problem as a conflict among forces which really do occur within the stated context, and cannot normally be resolved within that context. This is an empirical question. 
2.The configuration solves the problem. This means that when the stated arrangement of parts is present in the stated context, the conflict can be resolved, without any side effects. This is an empirical question.
Patterns for the People
Patterns for the People
Style is the art of getting yourself out of the way, not putting yourself in it. 
David Hare
A pattern is more than just a solution structure, so its audience must also have a sense of the context, the forces, and the consequences that are associated with a solution.
A pattern’s audience is ultimately always human. Although a developer may support application of a software pattern solution through libraries and generators, it is the developer and not the technology that is aware of the pattern.
Patterns for the People
Patterns for the People
Patterns for the People
Patterns for the People
History rarely happens in the right order or at the right time, but the job of a historian is to make it appear as if it did. 
James Burke
Patterns for the People
Patterns for the People
James Siddle 
"Choose Your Own Architecture" – Interactive Pattern Storytelling
Patterns for the People
Patterns for the People

More Related Content

PDF
Global Complex Project - How to deliver efficiently.
Sunny Menon
 
PPTX
Collected Wisdom
Nitin Bhide
 
PPT
Bits of Evidence
Greg Wilson
 
PDF
9 Questions for Learning Professionals in 2011
Hans de Zwart
 
PPTX
PyCon UK 2014 Keynote
Rachel Sanders
 
PDF
Systems Thinking workshop @ Lean UX NYC 2014
johanna kollmann
 
PDF
Human Computer Interaction + User Experience
Jose Berengueres
 
PDF
AI Fables, Facts and Futures: Threat, Promise or Saviour
University of Hertfordshire
 
Global Complex Project - How to deliver efficiently.
Sunny Menon
 
Collected Wisdom
Nitin Bhide
 
Bits of Evidence
Greg Wilson
 
9 Questions for Learning Professionals in 2011
Hans de Zwart
 
PyCon UK 2014 Keynote
Rachel Sanders
 
Systems Thinking workshop @ Lean UX NYC 2014
johanna kollmann
 
Human Computer Interaction + User Experience
Jose Berengueres
 
AI Fables, Facts and Futures: Threat, Promise or Saviour
University of Hertfordshire
 

What's hot (20)

PDF
Sense-making for digital products - UX Lausanne
johanna kollmann
 
PDF
Making sense of messy problems - Systems thinking for interaction designers
johanna kollmann
 
PDF
Rapid video prototyping for connected products
Martin Charlier
 
PDF
Win#23 it
Olivier Marechal
 
PPT
Tech pres
Jason_Maxwell
 
PDF
Sacrificing the golden calf of "coding"
Christian Heilmann
 
PDF
Impactful SE Research: Some Do's and More Don'ts
Gail Murphy
 
PPT
How to get what you really want from Testing' with Michael Bolton
TEST Huddle
 
PDF
ADC-BSC EAST 2013 Keynote: Worse Is Better—For Better or for Worse
TechWell
 
PPTX
How To Fail In Public (and not get fired)
Paul Taylor
 
PPT
One hundred rules for nasa project managers
Andreea Mocanu
 
PDF
5 Things Biology Can Teach Us About Breakthrough Design
fresh tilled soil
 
PDF
Sex, Drugs and The Infinite Scroll: The biology behind engaging design.
fresh tilled soil
 
PDF
The Elusive Nature of Context: Why We Need It and Were We Might Find It
Gail Murphy
 
PDF
Why Software Drives Us Crazy
TechWell
 
PDF
Customer insights for product strategy
johanna kollmann
 
PDF
The Snail Entrepreneur: The 7-year-old kid every startup should learn from
Claudio Perrone
 
PDF
Rochester Creativity Part TWO
Brian Housand
 
PDF
JDD2014: Game of Throneware, or how not to get killed when a developer become...
PROIDEA
 
Sense-making for digital products - UX Lausanne
johanna kollmann
 
Making sense of messy problems - Systems thinking for interaction designers
johanna kollmann
 
Rapid video prototyping for connected products
Martin Charlier
 
Win#23 it
Olivier Marechal
 
Tech pres
Jason_Maxwell
 
Sacrificing the golden calf of "coding"
Christian Heilmann
 
Impactful SE Research: Some Do's and More Don'ts
Gail Murphy
 
How to get what you really want from Testing' with Michael Bolton
TEST Huddle
 
ADC-BSC EAST 2013 Keynote: Worse Is Better—For Better or for Worse
TechWell
 
How To Fail In Public (and not get fired)
Paul Taylor
 
One hundred rules for nasa project managers
Andreea Mocanu
 
5 Things Biology Can Teach Us About Breakthrough Design
fresh tilled soil
 
Sex, Drugs and The Infinite Scroll: The biology behind engaging design.
fresh tilled soil
 
The Elusive Nature of Context: Why We Need It and Were We Might Find It
Gail Murphy
 
Why Software Drives Us Crazy
TechWell
 
Customer insights for product strategy
johanna kollmann
 
The Snail Entrepreneur: The 7-year-old kid every startup should learn from
Claudio Perrone
 
Rochester Creativity Part TWO
Brian Housand
 
JDD2014: Game of Throneware, or how not to get killed when a developer become...
PROIDEA
 
Ad

Viewers also liked (6)

PDF
Patterns for the People
Kevlin Henney
 
PDF
KevlinHenney_PuttingThereIntoArchitecture
Kostas Mavridis
 
PDF
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Kevlin Henney
 
PDF
The Architecture of Uncertainty
Kevlin Henney
 
PDF
Put to the Test
Kevlin Henney
 
PDF
The Error of Our Ways
Kevlin Henney
 
Patterns for the People
Kevlin Henney
 
KevlinHenney_PuttingThereIntoArchitecture
Kostas Mavridis
 
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Kevlin Henney
 
The Architecture of Uncertainty
Kevlin Henney
 
Put to the Test
Kevlin Henney
 
The Error of Our Ways
Kevlin Henney
 
Ad

Similar to Patterns for the People (20)

PDF
Patterns for the People
Kevlin Henney
 
PDF
Incentives to Encourage Sharing Ideas
Arne Krueger
 
PDF
Patterns of fail
Gleicon Moraes
 
PPTX
The innovator’s dna
Vahid Shamekhi
 
PDF
Writing A Research Essay.pdf
Christina Morgan
 
PPTX
Mktg. 7 chapter 4
Scarlett Voughn
 
PDF
Facilitating Complexity: A Pervert's Guide to Exploration
William Evans
 
PDF
Not revolution but evolution. By Bernard Andrews and Ahmed Robleh. Caxton Col...
Caxton College
 
PDF
Broken Worldview of Experience Design
Thomas Wendt
 
PDF
The Convergence of Wills
Beyond20
 
PDF
Agile leadership practices for PIONEERS
Stefan Haas
 
PPT
Brisbane City Council Future Thinking Presentation May 2009
Paul Higgins
 
PPTX
PROMISE 2011: Seven Habits of High Impactful Empirical Software Engineers (La...
CS, NcState
 
PPT
Module2
cybernaut
 
PDF
#1NWebinar: Digital on the Runway
One North
 
PPTX
Machine creativity TED Talk 2.0
Cameron Aaron
 
PPTX
Machine creativity TED Talk 2.0
Cameron Aaron
 
DOCX
2820181Phil 2 Puzzles and ParadoxesProf. Sven B.docx
lorainedeserre
 
PDF
Interview Essay Sample
Shelly Lane
 
PDF
Foundations of Scalable Systems - Designing Distributed Architectures 1st Edi...
ameluzsekii
 
Patterns for the People
Kevlin Henney
 
Incentives to Encourage Sharing Ideas
Arne Krueger
 
Patterns of fail
Gleicon Moraes
 
The innovator’s dna
Vahid Shamekhi
 
Writing A Research Essay.pdf
Christina Morgan
 
Mktg. 7 chapter 4
Scarlett Voughn
 
Facilitating Complexity: A Pervert's Guide to Exploration
William Evans
 
Not revolution but evolution. By Bernard Andrews and Ahmed Robleh. Caxton Col...
Caxton College
 
Broken Worldview of Experience Design
Thomas Wendt
 
The Convergence of Wills
Beyond20
 
Agile leadership practices for PIONEERS
Stefan Haas
 
Brisbane City Council Future Thinking Presentation May 2009
Paul Higgins
 
PROMISE 2011: Seven Habits of High Impactful Empirical Software Engineers (La...
CS, NcState
 
Module2
cybernaut
 
#1NWebinar: Digital on the Runway
One North
 
Machine creativity TED Talk 2.0
Cameron Aaron
 
Machine creativity TED Talk 2.0
Cameron Aaron
 
2820181Phil 2 Puzzles and ParadoxesProf. Sven B.docx
lorainedeserre
 
Interview Essay Sample
Shelly Lane
 
Foundations of Scalable Systems - Designing Distributed Architectures 1st Edi...
ameluzsekii
 

More from Kevlin Henney (20)

PDF
Program with GUTs
Kevlin Henney
 
PDF
The Case for Technical Excellence
Kevlin Henney
 
PDF
Empirical Development
Kevlin Henney
 
PDF
Lambda? You Keep Using that Letter
Kevlin Henney
 
PDF
Lambda? You Keep Using that Letter
Kevlin Henney
 
PDF
Solid Deconstruction
Kevlin Henney
 
PDF
Get Kata
Kevlin Henney
 
PDF
Procedural Programming: It’s Back? It Never Went Away
Kevlin Henney
 
PDF
Structure and Interpretation of Test Cases
Kevlin Henney
 
PDF
Agility ≠ Speed
Kevlin Henney
 
PDF
Refactoring to Immutability
Kevlin Henney
 
PDF
Old Is the New New
Kevlin Henney
 
PDF
Turning Development Outside-In
Kevlin Henney
 
PDF
Giving Code a Good Name
Kevlin Henney
 
PDF
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Kevlin Henney
 
PDF
Thinking Outside the Synchronisation Quadrant
Kevlin Henney
 
PDF
Code as Risk
Kevlin Henney
 
PDF
Software Is Details
Kevlin Henney
 
PDF
Game of Sprints
Kevlin Henney
 
PDF
Good Code
Kevlin Henney
 
Program with GUTs
Kevlin Henney
 
The Case for Technical Excellence
Kevlin Henney
 
Empirical Development
Kevlin Henney
 
Lambda? You Keep Using that Letter
Kevlin Henney
 
Lambda? You Keep Using that Letter
Kevlin Henney
 
Solid Deconstruction
Kevlin Henney
 
Get Kata
Kevlin Henney
 
Procedural Programming: It’s Back? It Never Went Away
Kevlin Henney
 
Structure and Interpretation of Test Cases
Kevlin Henney
 
Agility ≠ Speed
Kevlin Henney
 
Refactoring to Immutability
Kevlin Henney
 
Old Is the New New
Kevlin Henney
 
Turning Development Outside-In
Kevlin Henney
 
Giving Code a Good Name
Kevlin Henney
 
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Kevlin Henney
 
Thinking Outside the Synchronisation Quadrant
Kevlin Henney
 
Code as Risk
Kevlin Henney
 
Software Is Details
Kevlin Henney
 
Game of Sprints
Kevlin Henney
 
Good Code
Kevlin Henney
 

Recently uploaded (20)

PPTX
ASSIGNMENT_1[1][1][1][1][1] (1) variables.pptx
kr2589474
 
PDF
Community & News Update Q2 Meet Up 2025
VictoriaMetrics
 
PDF
Multi-factor Authentication (MFA) requirement for Microsoft 365 Admin Center_...
Q-Advise
 
PPTX
Presentation of Computer CLASS 2 .pptx
darshilchaudhary558
 
PPTX
ConcordeApp: Engineering Global Impact & Unlocking Billions in Event ROI with AI
chastechaste14
 
PDF
Jenkins: An open-source automation server powering CI/CD Automation
SaikatBasu37
 
PDF
How to Seamlessly Integrate Salesforce Data Cloud with Marketing Cloud.pdf
NSIQINFOTECH
 
PPTX
AI-Ready Handoff: Auto-Summaries & Draft Emails from MQL to Slack in One Flow
bbedford2
 
PDF
Appium Automation Testing Tutorial PDF: Learn Mobile Testing in 7 Days
jamescantor38
 
PDF
IEEE-CS Tech Predictions, SWEBOK and Quantum Software: Towards Q-SWEBOK
Hironori Washizaki
 
PPTX
Explanation about Structures in C language.pptx
Veeral Rathod
 
PDF
Micromaid: A simple Mermaid-like chart generator for Pharo
ESUG
 
PDF
lesson-2-rules-of-netiquette.pdf.bshhsjdj
jasmenrojas249
 
PPTX
Role Of Python In Programing Language.pptx
jaykoshti048
 
PPTX
Odoo Integration Services by Candidroot Solutions
CandidRoot Solutions Private Limited
 
PDF
The Role of Automation and AI in EHS Management for Data Centers.pdf
TECH EHS Solution
 
PPTX
TestNG for Java Testing and Automation testing
ssuser0213cb
 
PDF
Become an Agentblazer Champion Challenge Kickoff
Dele Amefo
 
PDF
Solar Panel Installation Guide – Step By Step Process 2025.pdf
CRMLeaf
 
PPTX
Visualising Data with Scatterplots in IBM SPSS Statistics.pptx
Version 1 Analytics
 
ASSIGNMENT_1[1][1][1][1][1] (1) variables.pptx
kr2589474
 
Community & News Update Q2 Meet Up 2025
VictoriaMetrics
 
Multi-factor Authentication (MFA) requirement for Microsoft 365 Admin Center_...
Q-Advise
 
Presentation of Computer CLASS 2 .pptx
darshilchaudhary558
 
ConcordeApp: Engineering Global Impact & Unlocking Billions in Event ROI with AI
chastechaste14
 
Jenkins: An open-source automation server powering CI/CD Automation
SaikatBasu37
 
How to Seamlessly Integrate Salesforce Data Cloud with Marketing Cloud.pdf
NSIQINFOTECH
 
AI-Ready Handoff: Auto-Summaries & Draft Emails from MQL to Slack in One Flow
bbedford2
 
Appium Automation Testing Tutorial PDF: Learn Mobile Testing in 7 Days
jamescantor38
 
IEEE-CS Tech Predictions, SWEBOK and Quantum Software: Towards Q-SWEBOK
Hironori Washizaki
 
Explanation about Structures in C language.pptx
Veeral Rathod
 
Micromaid: A simple Mermaid-like chart generator for Pharo
ESUG
 
lesson-2-rules-of-netiquette.pdf.bshhsjdj
jasmenrojas249
 
Role Of Python In Programing Language.pptx
jaykoshti048
 
Odoo Integration Services by Candidroot Solutions
CandidRoot Solutions Private Limited
 
The Role of Automation and AI in EHS Management for Data Centers.pdf
TECH EHS Solution
 
TestNG for Java Testing and Automation testing
ssuser0213cb
 
Become an Agentblazer Champion Challenge Kickoff
Dele Amefo
 
Solar Panel Installation Guide – Step By Step Process 2025.pdf
CRMLeaf
 
Visualising Data with Scatterplots in IBM SPSS Statistics.pptx
Version 1 Analytics
 

Patterns for the People

  • 1. Patterns for the People Kevlin Henney [email protected] @KevlinHenney
  • 5. Habitability is the characteristic of source code that enables programmers, coders, bug-fixers, and people coming to the code later in its life to understand its construction and intentions and to change it comfortably and confidently.
  • 6. Habitability makes a place livable, like home. And this is what we want in software — that developers feel at home, can place their hands on any item without having to think deeply about where it is.
  • 8. I don't make stupid mistakes. Only very, very clever ones. John Peel
  • 10. Failure is a far better teacher than success. Philip Delves Broughton http://www.ft.com/cms/s/0/f33f5508-f010-11e0-bc9d-00144feab49a.html
  • 11. If you want to learn how to build a house, build a house. Don't ask anybody, just build a house. Christopher Walken
  • 13. Programming is difficult business. It should never be undertaken in ignorance. Douglas Crockford JavaScript: The Good Parts
  • 14. It has become commonplace to suggest that failure is good for entrepreneurs. In this view, failure that comes early in a founder's career can teach them important lessons about doing business and harden them up for the next start-up attempt. David Storey, "Lessons that are wasted on entrepreneurs"
  • 15. In the UK, the evidence is that novices are neither more nor less likely to have a business that either grows or survives than experienced founders. In Germany, where much more extensive statistical work has been undertaken, it is clear that those whose business had failed had worse-performing businesses if they restarted than did novices. David Storey, "Lessons that are wasted on entrepreneurs"
  • 16. In short, the assumption that entrepreneurs use the lessons of their own experience to improve their chances of creating a series of profitable businesses is not borne out by the evidence. Success in business remains, as in life, something of a lottery. David Storey, "Lessons that are wasted on entrepreneurs"
  • 17. The assertion that we can learn something from every failure is often heard. This study by Earl Miller and his colleagues Mark Histed and Anitha Pasupathy of the Massachusetts Institute of Technology's Picower Institute for Learning and Memory tests that notion by looking at the learning process at the level of neurons. The study shows how brains learn more effectively from success than from failure. http://www.asfct.org/documents/journal/2009-11/Vol1-2-9.pdf
  • 18. Brain cells keep track of whether recent behaviours were successful or not. When a certain behaviour was successful, cells became more finely tuned to what the animal was learning. After a failure, there was little or no change in the brain – nor was there any improvement in behaviour. http://www.asfct.org/documents/journal/2009-11/Vol1-2-9.pdf
  • 19. Mark Pagel at the University of Reading, UK, doubts that hominins before Homo sapiens had what it takes to innovate and exchange ideas, even if they wanted to. He draws a comparison with chimps, which can make crude stone tools but lack technological progress. They mostly learn by trial and error, he says, whereas we learn by watching each other, and we know when something is worth copying. http://www.newscientist.com/article/mg21328571.400- puzzles-of-evolution-why-was-technological-development-so-slow.html
  • 20. Anti-patterns don't provide a resolution of forces as patterns do, and they are dangerous as teaching tools: good pedagogy builds on positive examples that students can remember, rather than negative examples. Anti-patterns might be good diagnostic tools to understand system problems. James Coplien, Software Patterns
  • 21. Wise men profit more from fools than fools from wise men; for the wise men shun the mistakes of fools, but fools do not imitate the successes of the wise. Cato the Elder
  • 22. One of the hallmarks of architectural design is the use of idiomatic patterns of system organization. Many of these patterns — or architectural styles — have been developed over the years as system designers recognized the value of specific organizational principles and structures for certain classes of software.
  • 24. We know that every pattern is an instruction of the general form: context  conflicting forces  configuration So we say that a pattern is good, whenever we can show that it meets the following two empirical conditions: 1.The problem is real. This means that we can express the problem as a conflict among forces which really do occur within the stated context, and cannot normally be resolved within that context. This is an empirical question. 2.The configuration solves the problem. This means that when the stated arrangement of parts is present in the stated context, the conflict can be resolved, without any side effects. This is an empirical question.
  • 27. Style is the art of getting yourself out of the way, not putting yourself in it. David Hare
  • 28. A pattern is more than just a solution structure, so its audience must also have a sense of the context, the forces, and the consequences that are associated with a solution.
  • 29. A pattern’s audience is ultimately always human. Although a developer may support application of a software pattern solution through libraries and generators, it is the developer and not the technology that is aware of the pattern.
  • 34. History rarely happens in the right order or at the right time, but the job of a historian is to make it appear as if it did. James Burke
  • 37. James Siddle "Choose Your Own Architecture" – Interactive Pattern Storytelling