SlideShare une entreprise Scribd logo
1  sur  21
The Fundamentals of Continuous Software
Design
May 9th, 2020
About Me
• Senior Architect at Calavista Software
• (Mostly) Agile since 2003
• http://jeremydmiller.com
• shadetreedeveloper@gmail.com
• @jeremydmiller
Extreme Programming
Scrum
DeliveringValue
WORKING SOFTWARE BUILDING FEATURES BY
BUSINESS PRIORITY
CONTINUOUS
DELIVERY
Between Scylla and Charybdis
Big
Design
Upfront
(BDUF)
No
Upfront
Design
What is Continuous Design?
• Roots in Extreme
Programming
• “Evolutionary” or
“Emergent” Design
• Requires a High Degree of
Discipline
• Reacting to Feedback
Design Goals
• Don’t Repeat Yourself
• Explicit
• Simple
• Cohesive
• Decoupled
• Isolated
• In the present
Pull vs Push
• Build it and they will come
• “You aren’t going to need it” – YAGNI
• Do the Simplest Thing That Could Possibly Work
The Last Responsible Moment
Make decisions as late as you can responsibly wait
because that is the point at which you have the most
information on which to base the decision.
Reversibility
“If you can easily change your decisions, this
means it’s less important to get them right –
which makes your life much simpler. ”
Martin Fowler
Low Reversibility
Plumbing through a slab foundation of a house under construction
Examples of Low Reversibility
• Dependencies on External Organizations
• Choosing Client Technologies
• Basic Code Organization Strategies
• Programming Languages
• Architectural Patterns
Examples of High Reversibility
• ASP.Net Core Middleware (The Russian Doll Model)
• Document Databases
• Effective Automated Test Coverage
• Modular Code
Testability andTDD/BDD
• Enables Refactoring
• Feedback
• Improves Reversibility
• Heuristic to improve the low-level design of your code
“Jeremy’s Laws ofTDD Design”
• Isolate the Ugly Stuff
• Push, Don’t Pull
• Test Small Before Testing
Big
• Avoid a Long Tail
Refactoring
A disciplined technique for restructuring an
existing body of code, altering its internal
structure without changing its external behavior
Lies, damn lies, and “it’s just going to be some
refactoring”
Bottom Up vsTop Down Design
Avoid being frozen by the fear of what you don’t yet know
Bottom Up  start with individual tasks and assemble the coded
elements later as a structure presents itself
Top Down  start with the basic workflow, leave placeholders for
individual steps later
Spike
• “A very simple program to explore potential
solutions”
• Quick and dirty prototyping
• Throwaway the code
Process Stuff
• Constantly challenge the
design
• Always be thinking
• Socialize the design
• Every developer
contributes
Questions?

Contenu connexe

Tendances

Perspectives on salesforce architecture Forcelandia talk 2017
Perspectives on salesforce architecture   Forcelandia talk 2017Perspectives on salesforce architecture   Forcelandia talk 2017
Perspectives on salesforce architecture Forcelandia talk 2017Steven Herod
 
Better Software Through User Research
Better Software Through User ResearchBetter Software Through User Research
Better Software Through User ResearchAlexandra Leisse
 
Improve performance of developer - Khodak
Improve performance of developer  - KhodakImprove performance of developer  - Khodak
Improve performance of developer - KhodakIgor Bronovskyy
 
Incorporating UX into an Agile Methodology
Incorporating UX into an Agile MethodologyIncorporating UX into an Agile Methodology
Incorporating UX into an Agile MethodologyAmy Powell
 
Nailing Distributed Development With Effective Collaboration - Matt Ryall
Nailing Distributed Development With Effective Collaboration - Matt RyallNailing Distributed Development With Effective Collaboration - Matt Ryall
Nailing Distributed Development With Effective Collaboration - Matt RyallAtlassian
 
DevOps - Successful Patterns
DevOps - Successful PatternsDevOps - Successful Patterns
DevOps - Successful PatternsCreationline,inc.
 
Be More Salmon - Agile Manchester 2016
Be More Salmon - Agile Manchester 2016Be More Salmon - Agile Manchester 2016
Be More Salmon - Agile Manchester 2016Duncan Nisbet
 
Becoming a Salesforce.com Technical Architect
Becoming a Salesforce.com Technical ArchitectBecoming a Salesforce.com Technical Architect
Becoming a Salesforce.com Technical ArchitectSteven Herod
 
Devops in with the old, in with the new
Devops   in with the old, in with the newDevops   in with the old, in with the new
Devops in with the old, in with the newJan Collijs
 
Human Computer Interaction: The Design of Everyday Things (User Centered Des...
 Human Computer Interaction: The Design of Everyday Things (User Centered Des... Human Computer Interaction: The Design of Everyday Things (User Centered Des...
Human Computer Interaction: The Design of Everyday Things (User Centered Des...Shakil Mahmood
 
Getting started with dev tools (05 09-17, santa monica) upload
Getting started with dev tools (05 09-17, santa monica) uploadGetting started with dev tools (05 09-17, santa monica) upload
Getting started with dev tools (05 09-17, santa monica) uploadThinkful
 
Teaching Devs How to Love Independence and Own Their Environments
Teaching Devs How to Love Independence and Own Their EnvironmentsTeaching Devs How to Love Independence and Own Their Environments
Teaching Devs How to Love Independence and Own Their Environmentspeter-nealon
 
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a StartupMinimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a StartupRandy Shoup
 
Stuff I wish someone told me about being an engineer
Stuff I wish someone told me about being an engineerStuff I wish someone told me about being an engineer
Stuff I wish someone told me about being an engineerjwalter748
 
Building Better Products, June 2015
Building Better Products, June 2015Building Better Products, June 2015
Building Better Products, June 2015Jason Fraser
 
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...Randy Shoup
 
Community and Github: 7/27/2011
Community and Github: 7/27/2011Community and Github: 7/27/2011
Community and Github: 7/27/2011Andy Lester
 
A design system. A year in review.
A design system. A year in review.A design system. A year in review.
A design system. A year in review.James Ferguson
 

Tendances (20)

Perspectives on salesforce architecture Forcelandia talk 2017
Perspectives on salesforce architecture   Forcelandia talk 2017Perspectives on salesforce architecture   Forcelandia talk 2017
Perspectives on salesforce architecture Forcelandia talk 2017
 
Better Software Through User Research
Better Software Through User ResearchBetter Software Through User Research
Better Software Through User Research
 
Improve performance of developer - Khodak
Improve performance of developer  - KhodakImprove performance of developer  - Khodak
Improve performance of developer - Khodak
 
Incorporating UX into an Agile Methodology
Incorporating UX into an Agile MethodologyIncorporating UX into an Agile Methodology
Incorporating UX into an Agile Methodology
 
Nailing Distributed Development With Effective Collaboration - Matt Ryall
Nailing Distributed Development With Effective Collaboration - Matt RyallNailing Distributed Development With Effective Collaboration - Matt Ryall
Nailing Distributed Development With Effective Collaboration - Matt Ryall
 
DevOps - Successful Patterns
DevOps - Successful PatternsDevOps - Successful Patterns
DevOps - Successful Patterns
 
Be More Salmon - Agile Manchester 2016
Be More Salmon - Agile Manchester 2016Be More Salmon - Agile Manchester 2016
Be More Salmon - Agile Manchester 2016
 
Becoming a Salesforce.com Technical Architect
Becoming a Salesforce.com Technical ArchitectBecoming a Salesforce.com Technical Architect
Becoming a Salesforce.com Technical Architect
 
Devops in with the old, in with the new
Devops   in with the old, in with the newDevops   in with the old, in with the new
Devops in with the old, in with the new
 
Human Computer Interaction: The Design of Everyday Things (User Centered Des...
 Human Computer Interaction: The Design of Everyday Things (User Centered Des... Human Computer Interaction: The Design of Everyday Things (User Centered Des...
Human Computer Interaction: The Design of Everyday Things (User Centered Des...
 
Getting started with dev tools (05 09-17, santa monica) upload
Getting started with dev tools (05 09-17, santa monica) uploadGetting started with dev tools (05 09-17, santa monica) upload
Getting started with dev tools (05 09-17, santa monica) upload
 
Teaching Devs How to Love Independence and Own Their Environments
Teaching Devs How to Love Independence and Own Their EnvironmentsTeaching Devs How to Love Independence and Own Their Environments
Teaching Devs How to Love Independence and Own Their Environments
 
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a StartupMinimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
 
Stuff I wish someone told me about being an engineer
Stuff I wish someone told me about being an engineerStuff I wish someone told me about being an engineer
Stuff I wish someone told me about being an engineer
 
Time to Good DX
Time to Good DXTime to Good DX
Time to Good DX
 
Building Better Products, June 2015
Building Better Products, June 2015Building Better Products, June 2015
Building Better Products, June 2015
 
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...
Flowcon2013 - Virtuous Cycles of Velocity: What I Learned About Going Fast at...
 
Clean Code Talk (draft)
Clean Code Talk (draft)Clean Code Talk (draft)
Clean Code Talk (draft)
 
Community and Github: 7/27/2011
Community and Github: 7/27/2011Community and Github: 7/27/2011
Community and Github: 7/27/2011
 
A design system. A year in review.
A design system. A year in review.A design system. A year in review.
A design system. A year in review.
 

Similaire à The Fundamentals of Continuous Software Design

Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesIgor Moochnick
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for ArchitectsEberhard Wolff
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architektenadesso AG
 
It is a sunny day
It is a sunny dayIt is a sunny day
It is a sunny daybcoder
 
Friday final test
Friday final testFriday final test
Friday final testbcoder
 
Becoming A Technical Project Manager
Becoming A Technical Project ManagerBecoming A Technical Project Manager
Becoming A Technical Project ManagerScott Massey
 
Getting Started with Architecture Decision Records
Getting Started with Architecture Decision RecordsGetting Started with Architecture Decision Records
Getting Started with Architecture Decision RecordsMichael Keeling
 
Software design - Write solid software with the ideal chalk
Software design - Write solid software with the  ideal chalkSoftware design - Write solid software with the  ideal chalk
Software design - Write solid software with the ideal chalkAlejandro Claro Mosqueda
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersSPC Adriatics
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedAlexander Makarov
 
Production process presentation - drupalcamp Toronto 2010
Production process presentation - drupalcamp Toronto 2010Production process presentation - drupalcamp Toronto 2010
Production process presentation - drupalcamp Toronto 2010Aidan Foster
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile designIgor Moochnick
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)Mike Harris
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): RevistedMike Harris
 

Similaire à The Fundamentals of Continuous Software Design (20)

Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
Ten Advices for Architects
Ten Advices for ArchitectsTen Advices for Architects
Ten Advices for Architects
 
10 Hinweise für Architekten
10 Hinweise für Architekten10 Hinweise für Architekten
10 Hinweise für Architekten
 
It is a sunny day
It is a sunny dayIt is a sunny day
It is a sunny day
 
Friday final test
Friday final testFriday final test
Friday final test
 
How to do b tech be projects or any academic projects
How to do b tech be projects or any academic projectsHow to do b tech be projects or any academic projects
How to do b tech be projects or any academic projects
 
Becoming A Technical Project Manager
Becoming A Technical Project ManagerBecoming A Technical Project Manager
Becoming A Technical Project Manager
 
Introduction
IntroductionIntroduction
Introduction
 
Getting Started with Architecture Decision Records
Getting Started with Architecture Decision RecordsGetting Started with Architecture Decision Records
Getting Started with Architecture Decision Records
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
Agile engineering practices
Agile engineering practicesAgile engineering practices
Agile engineering practices
 
Software design - Write solid software with the ideal chalk
Software design - Write solid software with the  ideal chalkSoftware design - Write solid software with the  ideal chalk
Software design - Write solid software with the ideal chalk
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill Ayers
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
Production process presentation - drupalcamp Toronto 2010
Production process presentation - drupalcamp Toronto 2010Production process presentation - drupalcamp Toronto 2010
Production process presentation - drupalcamp Toronto 2010
 
Best practices for agile design
Best practices for agile designBest practices for agile design
Best practices for agile design
 
L21 Architecture and Agile
L21 Architecture and AgileL21 Architecture and Agile
L21 Architecture and Agile
 
Software Design
Software DesignSoftware Design
Software Design
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): Revisted
 

Dernier

Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commercemanigoyal112
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 

Dernier (20)

Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Cyber security and its impact on E commerce
Cyber security and its impact on E commerceCyber security and its impact on E commerce
Cyber security and its impact on E commerce
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 

The Fundamentals of Continuous Software Design

  • 1. The Fundamentals of Continuous Software Design May 9th, 2020
  • 2. About Me • Senior Architect at Calavista Software • (Mostly) Agile since 2003 • http://jeremydmiller.com • shadetreedeveloper@gmail.com • @jeremydmiller
  • 5. DeliveringValue WORKING SOFTWARE BUILDING FEATURES BY BUSINESS PRIORITY CONTINUOUS DELIVERY
  • 6. Between Scylla and Charybdis Big Design Upfront (BDUF) No Upfront Design
  • 7. What is Continuous Design? • Roots in Extreme Programming • “Evolutionary” or “Emergent” Design • Requires a High Degree of Discipline • Reacting to Feedback
  • 8. Design Goals • Don’t Repeat Yourself • Explicit • Simple • Cohesive • Decoupled • Isolated • In the present
  • 9. Pull vs Push • Build it and they will come • “You aren’t going to need it” – YAGNI • Do the Simplest Thing That Could Possibly Work
  • 10. The Last Responsible Moment Make decisions as late as you can responsibly wait because that is the point at which you have the most information on which to base the decision.
  • 11. Reversibility “If you can easily change your decisions, this means it’s less important to get them right – which makes your life much simpler. ” Martin Fowler
  • 12. Low Reversibility Plumbing through a slab foundation of a house under construction
  • 13. Examples of Low Reversibility • Dependencies on External Organizations • Choosing Client Technologies • Basic Code Organization Strategies • Programming Languages • Architectural Patterns
  • 14. Examples of High Reversibility • ASP.Net Core Middleware (The Russian Doll Model) • Document Databases • Effective Automated Test Coverage • Modular Code
  • 15. Testability andTDD/BDD • Enables Refactoring • Feedback • Improves Reversibility • Heuristic to improve the low-level design of your code
  • 16. “Jeremy’s Laws ofTDD Design” • Isolate the Ugly Stuff • Push, Don’t Pull • Test Small Before Testing Big • Avoid a Long Tail
  • 17. Refactoring A disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior Lies, damn lies, and “it’s just going to be some refactoring”
  • 18. Bottom Up vsTop Down Design Avoid being frozen by the fear of what you don’t yet know Bottom Up  start with individual tasks and assemble the coded elements later as a structure presents itself Top Down  start with the basic workflow, leave placeholders for individual steps later
  • 19. Spike • “A very simple program to explore potential solutions” • Quick and dirty prototyping • Throwaway the code
  • 20. Process Stuff • Constantly challenge the design • Always be thinking • Socialize the design • Every developer contributes

Notes de l'éditeur

  1. Heuristics, no prescriptive guidance. All about thinking through problems
  2. ”Get off my lawn!” Extreme Programming might have been a good thing going, but Scrum swept in. The potential problem with Scrum is that it focuses almost completely on projection management. “Agile” became associated with performative ceremonies like daily standup meetings, sprint reviews, and sprint planning
  3. ”Get off my lawn!” Extreme Programming might have been a good thing going, but Scrum swept in. The potential problem with Scrum is that it focuses almost completely on projection management. “Agile” became associated with performative ceremonies like daily standup meetings, sprint reviews, and sprint planning
  4. What’s important is your ability to continuously work on business priorities. Eliminates the possibility of upfront architecture phases or sprints. Puts a lot of stress on technical teams to deliver functionality and initial architectural work upfront. Requires us to put off structural elements for later. Puts an onus on the code structure to allow for later extension without too much rework. Talk about being late and having the entire database and data layer constructed, vs being late but having half the features completely deployable. Talk about the construction metaphor
  5. Worst failures
  6. Deciding when to decide, reacting to feedback. Requires a lot of feedback cycles, and there’s what XP really was