Emergent design: cakes, showers and electricians.

R
c a k e s , s h o w e r s a n d e l e c t r i c i a n s
EMERGENT DESIGN
Rouan Wilsenach
@rouanw
rouanw.github.io
thoughtworks.com
2
It is not enough for code
to work.
- Robert Martin
3
4
WHY DESIGN ?
5
6
7
8
9ANDY GREENBERG/WIRED
10Steve Jurvetson
11
Easy to learn Fast to changeFewer bugs
WHY EMERGENT ?
12
13https://www.flickr.com/photos/jshj/4619958228
14https://www.flickr.com/photos/chrisny2/4637837938
15
Build. Measure. Learn.
16
emerge
verb • become apparent
https://www.flickr.com/photos/schnappi/2321628609
17
not
become well-designed
https://www.flickr.com/photos/evaysucamara/5438832695
18
a change made in analysis
for $1 would cost thousands
to fix in production
- The change curve
19
a change made in analysis
for $1 would cost thousands
to fix in production
- The change curve
SIMPLICITY
What is good design?
20
21
Why is this so hard?
- Every developer, ever
22
a system made out of genuinely
simple parts, is going to be able to
affect the greatest change with
the least work
- Rich Hickey
23http://martinfowler.com/bliki/BeckDesignRules.html
AWAY FROM
!
THE CODE
24
25
Talk about it
26
Draw something
27
Know your challenges
28
Where are we going?
29
IN FRONT OF
!
THE CODE
30
31
refactoring
noun • a change made to the
internal structure of software to
make it easier to understand and
cheaper to modify without
changing its observable behaviour
http://martinfowler.com/bliki/DefinitionOfRefactoring.html
BEFORE
Preparatory refactoring
32
33
Make the change easy
(warning: this may be hard),
then make the easy change
- Kent Beck
34
You must kill all your
darlings
- William Faulkner
DURING
Continuous refactoring
35
36
Don’t forget the last step
37
Talk through it
AFTER
Take a step back
38
39
When writing code we
should always be
thinking of the reader
- Martin Fowler
40
Always leave the campground
cleaner than you found it.
- The boy scout rule, Robert Martin
41
Perfect is the
enemy of good.
- Voltaire
RECAP
Again! Again!
42
43
Build. Measure. Learn.
Working code is not enough
change the change curve
44
Simplicity
45
In front of
the code
Away from
the code
SOME RESOURCES
Articles
• http://martinfowler.com/articles/designDead.html
• http://martinfowler.com/bliki/BeckDesignRules.html
• bit.ly/nf-ead-all (Neal Ford)
Videos
• http://www.infoq.com/presentations/Simple-Made-Easy (Rich Hickey)
• https://vimeo.com/16955608 (Neal Ford)
Books
• http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882
(Uncle Bob)
• http://www.amazon.com/Extreme-Programming-Explained-Embrace-Edition/dp/0321278658
(Kent Beck)
News
• http://www.wired.com/2015/07/hackers-remotely-kill-jeep-highway/
• http://motherboard.vice.com/en_uk/read/how-is-critical-life-or-death-software-tested
46
a m e t a p h o r m a s h - u p
EMERGENT DESIGN
Rouan Wilsenach
@rouanw
rouanw.github.io
thoughtworks.com
1 of 47

Recommended

Let's release it - an intro to Continuous Delivery by
Let's release it - an intro to Continuous DeliveryLet's release it - an intro to Continuous Delivery
Let's release it - an intro to Continuous Deliveryrouanw
2.6K views44 slides
Microservices by
MicroservicesMicroservices
Microservicesrouanw
893 views40 slides
Be a polyglot programmer by
Be a polyglot programmerBe a polyglot programmer
Be a polyglot programmerrouanw
551 views24 slides
How to write a blog post by
How to write a blog postHow to write a blog post
How to write a blog postrouanw
399 views19 slides
Dashboards: Using data to find out what's really going on by
Dashboards: Using data to find out what's really going onDashboards: Using data to find out what's really going on
Dashboards: Using data to find out what's really going onrouanw
4.8K views30 slides
Techniques for stress free software releases by
Techniques for stress free software releasesTechniques for stress free software releases
Techniques for stress free software releasesrouanw
768 views37 slides

More Related Content

More from rouanw

NDC Security 2023 by
NDC Security 2023NDC Security 2023
NDC Security 2023rouanw
8 views24 slides
Is this okay!? DevSecCon ⚡ 2022 by
Is this okay!? DevSecCon ⚡ 2022Is this okay!? DevSecCon ⚡ 2022
Is this okay!? DevSecCon ⚡ 2022rouanw
8 views19 slides
Fail better with QA in Production by
Fail better with QA in ProductionFail better with QA in Production
Fail better with QA in Productionrouanw
738 views37 slides
Qa in production singular 2019 by
Qa in production   singular 2019Qa in production   singular 2019
Qa in production singular 2019rouanw
108 views37 slides
How to review a pull request by
How to review a pull requestHow to review a pull request
How to review a pull requestrouanw
447 views31 slides
Rouan's design principles by
Rouan's design principlesRouan's design principles
Rouan's design principlesrouanw
79 views19 slides

More from rouanw(20)

NDC Security 2023 by rouanw
NDC Security 2023NDC Security 2023
NDC Security 2023
rouanw8 views
Is this okay!? DevSecCon ⚡ 2022 by rouanw
Is this okay!? DevSecCon ⚡ 2022Is this okay!? DevSecCon ⚡ 2022
Is this okay!? DevSecCon ⚡ 2022
rouanw8 views
Fail better with QA in Production by rouanw
Fail better with QA in ProductionFail better with QA in Production
Fail better with QA in Production
rouanw738 views
Qa in production singular 2019 by rouanw
Qa in production   singular 2019Qa in production   singular 2019
Qa in production singular 2019
rouanw108 views
How to review a pull request by rouanw
How to review a pull requestHow to review a pull request
How to review a pull request
rouanw447 views
Rouan's design principles by rouanw
Rouan's design principlesRouan's design principles
Rouan's design principles
rouanw79 views
The curious case of the production incident by rouanw
The curious case of the production incidentThe curious case of the production incident
The curious case of the production incident
rouanw351 views
QA in Production: The tests we never wrote and the production monitoring we u... by rouanw
QA in Production: The tests we never wrote and the production monitoring we u...QA in Production: The tests we never wrote and the production monitoring we u...
QA in Production: The tests we never wrote and the production monitoring we u...
rouanw509 views
Organised chaos: real-world JavaScript microservices by rouanw
Organised chaos: real-world JavaScript microservicesOrganised chaos: real-world JavaScript microservices
Organised chaos: real-world JavaScript microservices
rouanw684 views
Contributing to open source is easier than you think by rouanw
Contributing to open source is easier than you thinkContributing to open source is easier than you think
Contributing to open source is easier than you think
rouanw428 views
QA in Production by rouanw
QA in ProductionQA in Production
QA in Production
rouanw720 views
Tech lead tips by rouanw
Tech lead tipsTech lead tips
Tech lead tips
rouanw780 views
DevOps Culture by rouanw
DevOps CultureDevOps Culture
DevOps Culture
rouanw1.8K views
Emergent design - PHP Jo'burg 2015 by rouanw
Emergent design - PHP Jo'burg 2015Emergent design - PHP Jo'burg 2015
Emergent design - PHP Jo'burg 2015
rouanw839 views
Continuous Integration by rouanw
Continuous IntegrationContinuous Integration
Continuous Integration
rouanw387 views
May 2013 ThoughtWorks Tech radar by rouanw
May 2013 ThoughtWorks Tech radar May 2013 ThoughtWorks Tech radar
May 2013 ThoughtWorks Tech radar
rouanw550 views
Mobile publishing bringing the book to SA teens by rouanw
Mobile publishing   bringing the book to SA teensMobile publishing   bringing the book to SA teens
Mobile publishing bringing the book to SA teens
rouanw608 views
Why should we automate tests? by rouanw
Why should we automate tests?Why should we automate tests?
Why should we automate tests?
rouanw502 views
How to make your css not suck by rouanw
How to make your css not suckHow to make your css not suck
How to make your css not suck
rouanw635 views
An introduction to pair programming by rouanw
An introduction to pair programmingAn introduction to pair programming
An introduction to pair programming
rouanw618 views

Recently uploaded

How to Make the Most of Regression and Unit Testing.pdf by
How to Make the Most of Regression and Unit Testing.pdfHow to Make the Most of Regression and Unit Testing.pdf
How to Make the Most of Regression and Unit Testing.pdfAbhay Kumar
10 views9 slides
Cycleops - Automate deployments on top of bare metal.pptx by
Cycleops - Automate deployments on top of bare metal.pptxCycleops - Automate deployments on top of bare metal.pptx
Cycleops - Automate deployments on top of bare metal.pptxThanassis Parathyras
30 views12 slides
A first look at MariaDB 11.x features and ideas on how to use them by
A first look at MariaDB 11.x features and ideas on how to use themA first look at MariaDB 11.x features and ideas on how to use them
A first look at MariaDB 11.x features and ideas on how to use themFederico Razzoli
44 views36 slides
Winter '24 Release Chat.pdf by
Winter '24 Release Chat.pdfWinter '24 Release Chat.pdf
Winter '24 Release Chat.pdfmelbourneauuser
9 views20 slides
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan... by
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...Deltares
10 views30 slides
Neo4j : Graphes de Connaissance, IA et LLMs by
Neo4j : Graphes de Connaissance, IA et LLMsNeo4j : Graphes de Connaissance, IA et LLMs
Neo4j : Graphes de Connaissance, IA et LLMsNeo4j
46 views20 slides

Recently uploaded(20)

How to Make the Most of Regression and Unit Testing.pdf by Abhay Kumar
How to Make the Most of Regression and Unit Testing.pdfHow to Make the Most of Regression and Unit Testing.pdf
How to Make the Most of Regression and Unit Testing.pdf
Abhay Kumar10 views
Cycleops - Automate deployments on top of bare metal.pptx by Thanassis Parathyras
Cycleops - Automate deployments on top of bare metal.pptxCycleops - Automate deployments on top of bare metal.pptx
Cycleops - Automate deployments on top of bare metal.pptx
A first look at MariaDB 11.x features and ideas on how to use them by Federico Razzoli
A first look at MariaDB 11.x features and ideas on how to use themA first look at MariaDB 11.x features and ideas on how to use them
A first look at MariaDB 11.x features and ideas on how to use them
Federico Razzoli44 views
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan... by Deltares
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
DSD-INT 2023 Baseline studies for Strategic Coastal protection for Long Islan...
Deltares10 views
Neo4j : Graphes de Connaissance, IA et LLMs by Neo4j
Neo4j : Graphes de Connaissance, IA et LLMsNeo4j : Graphes de Connaissance, IA et LLMs
Neo4j : Graphes de Connaissance, IA et LLMs
Neo4j46 views
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)... by Deltares
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...
DSD-INT 2023 Modelling litter in the Yarra and Maribyrnong Rivers (Australia)...
Deltares9 views
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023 by Icinga
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Upgrading Incident Management with Icinga - Icinga Camp Milan 2023
Icinga36 views
DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove... by Deltares
DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...
DSD-INT 2023 HydroMT model building and river-coast coupling in Python - Bove...
Deltares15 views
Elevate your SAP landscape's efficiency and performance with HCL Workload Aut... by HCLSoftware
Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...
Elevate your SAP landscape's efficiency and performance with HCL Workload Aut...
HCLSoftware6 views
DSD-INT 2023 SFINCS Modelling in the U.S. Pacific Northwest - Parker by Deltares
DSD-INT 2023 SFINCS Modelling in the U.S. Pacific Northwest - ParkerDSD-INT 2023 SFINCS Modelling in the U.S. Pacific Northwest - Parker
DSD-INT 2023 SFINCS Modelling in the U.S. Pacific Northwest - Parker
Deltares8 views
How to Install and Activate Email-Researcher by eGrabber
How to Install and Activate Email-ResearcherHow to Install and Activate Email-Researcher
How to Install and Activate Email-Researcher
eGrabber19 views
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge... by Deltares
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
DSD-INT 2023 Delft3D FM Suite 2024.01 2D3D - New features + Improvements - Ge...
Deltares16 views
Software testing company in India.pptx by SakshiPatel82
Software testing company in India.pptxSoftware testing company in India.pptx
Software testing company in India.pptx
SakshiPatel827 views
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM... by Deltares
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...
DSD-INT 2023 Next-Generation Flood Inundation Mapping for Taiwan - Delft3D FM...
Deltares7 views
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ... by Donato Onofri
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Unmasking the Dark Art of Vectored Exception Handling: Bypassing XDR and EDR ...
Donato Onofri643 views
Neo4j y GenAI by Neo4j
Neo4j y GenAI Neo4j y GenAI
Neo4j y GenAI
Neo4j35 views

Emergent design: cakes, showers and electricians.