SlideShare ist ein Scribd-Unternehmen logo
1 von 56
Downloaden Sie, um offline zu lesen
The case for
technical
excellence
Kevlin Henney
@KevlinHenney
@kevlin@mastodon.social
@kevlin.bsky.social
threads.net/@kevlin.henney
instagram.com/kevlin.henney
about.me/kevlin
linkedin.com/in/kevlin
kevlinhenney.medium.com
kevlin@curbralan.com
agile, adjective
▪ able to move quickly and easily
Concise Oxford English Dictionary
agile, noun
▪ quick movement
The goal pursued by many organisations ‘doing’ agile
agile, noun
▪ busyness
The result of many organisations ‘doing’ agile
agile, noun
▪ prioritising business goals over
technical excellence
The practice of many organisations ‘doing’ agile
agile, noun
▪ undermining business goals by
ignoring technical excellence
The result of many organisations ‘doing’ agile
Continuous attention
to technical excellence
and good design
enhances agility.
feature work
⊕
technical work
feature work
is
technical work
features are
made of
software
business value
business value
for whom?
business value
time frame?
prioritise by
business value
prioritise by
business value
estimate
Architecture represents the
significant design decisions that
shape a system, where significant
is measured by cost of change.
Grady Booch
What effect does ignoring quality
have on feature development?
a. It has no effect
b. It reduces the cost
c. It increases the cost
What effect does ignoring quality
have in the short-term?
a. It has no effect
b. It reduces the cost
c. It increases the cost
What effect does ignoring quality
have in the long-term?
a. It has no effect
b. It reduces the cost
c. It increases the cost
technical
debt
technical
neglect
As an evolving program is continually
changed, its complexity, reflecting
deteriorating structure, increases unless
work is done to maintain or reduce it.
Meir M Lehman
“Programs, Life Cycles, and Laws of Software Evolution”
maintenance
metaphor
The figure of speech in which a name or
descriptive term is transferred to some
object different from, but analogous to,
that to which it is properly applicable.
µεταϕορα
The figure of speech in which a name or
descriptive term is transfer
Metaphor is pervasive in
everyday life, not just in
language but in thought
and action.
The essence of metaphor
is understanding and
experiencing one kind of
thing in terms of another.
TIME IS MONEY
ARGUMENT IS WAR
ARGUMENTS ARE BUILDINGS
HAPPY IS UP; SAD IS DOWN
LOVE IS A JOURNEY
The aphysical and
invisible domain of
software is more about
metaphor than matter.
To be considered good, a metaphor
has to offer a number of points of
useful correspondence with what is
being described.
Kevlin Henney
“On Exactitude in Technical Debt”
oreilly.com/radar/on-exactitude-in-technical-debt
Another quality of a good metaphor
is that it should not have too many
obvious points of conflict.
Kevlin Henney
“On Exactitude in Technical Debt”
oreilly.com/radar/on-exactitude-in-technical-debt
The third quality of a metaphor that
makes it effective is familiarity to its
audience.
Kevlin Henney
“On Exactitude in Technical Debt”
oreilly.com/radar/on-exactitude-in-technical-debt
Technical Debt is a wonderful metaphor
developed by Ward Cunningham.
In this metaphor, doing things the quick
and dirty way sets us up with a technical
debt, which is similar to a financial debt.
Martin Fowler
martinfowler.com/bliki/TechnicalDebt.html (2003)
Martin Fowler
martinfowler.com/bliki/TechnicalDebt.html (2003)
Technical Debt is a wonderful metaphor
developed by Ward Cunningham.
In this metaphor, doing things the quick
and dirty way sets us up with a technical
debt, which is similar to a financial debt.
Shipping first time code is like going into
debt. A little debt speeds development
so long as it is paid back promptly with a
rewrite.
Ward Cunningham
c2.com/doc/oopsla92.html
Ward Cunningham
c2.com/doc/oopsla92.html
The danger occurs when the debt is not
repaid. Every minute spent on not-quite-
right code counts as interest on that debt.
Although we know that by definition no metaphor
is perfect, there are two common ways in which
the metaphor is misapplied: assuming technical
debt is necessarily something bad; equating
technical debt with a financial debt value.
Kevlin Henney
“On Exactitude in Technical Debt”
oreilly.com/radar/on-exactitude-in-technical-debt
technical
debt
unmanaged
technical
debt
Technical debt is not the cost of repaying
the debt: it is the cost of owning the debt.
These are not the same.
Kevlin Henney
“On Exactitude in Technical Debt”
oreilly.com/radar/on-exactitude-in-technical-debt
That is the message of the technical debt metaphor:
it is not simply a measure of the specific work needed
to repay the debt; it is the additional time and effort
added to all past, present, and future work that comes
from having the debt in the first place.
Kevlin Henney
“On Exactitude in Technical Debt”
oreilly.com/radar/on-exactitude-in-technical-debt
twitter.com/yvonnezlam/status/1376628481878990852
maintenance
action
inaction
neglect
Want of attention to what ought
to be done; the fact of leaving
something undone or unattended
to; negligence.
John Seddon
Freedom from Command & Control — A better way to make work work
Value demand represents the demands customers
make for the things they want, things that are of
value to them. Failure demand is created by the
organisation not working properly.
Failure demand is demand caused by a failure to
do something or do something right.
The best architectures,
requirements, and
designs emerge from
self-organizing teams.

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Testing Strategy in Micro Frontend architecture
Testing Strategy in Micro Frontend architectureTesting Strategy in Micro Frontend architecture
Testing Strategy in Micro Frontend architecture
 
AppDynamics VS New Relic – The Complete Guide
AppDynamics VS New Relic – The Complete GuideAppDynamics VS New Relic – The Complete Guide
AppDynamics VS New Relic – The Complete Guide
 
Real Time Test Data with Grafana
Real Time Test Data with GrafanaReal Time Test Data with Grafana
Real Time Test Data with Grafana
 
Principles Of Chaos Engineering - Chaos Engineering Hamburg
Principles Of Chaos Engineering - Chaos Engineering HamburgPrinciples Of Chaos Engineering - Chaos Engineering Hamburg
Principles Of Chaos Engineering - Chaos Engineering Hamburg
 
BloodHound Unleashed.pdf
BloodHound Unleashed.pdfBloodHound Unleashed.pdf
BloodHound Unleashed.pdf
 
How to Move from Monitoring to Observability, On-Premises and in a Multi-Clou...
How to Move from Monitoring to Observability, On-Premises and in a Multi-Clou...How to Move from Monitoring to Observability, On-Premises and in a Multi-Clou...
How to Move from Monitoring to Observability, On-Premises and in a Multi-Clou...
 
Stances of Coaching - OOP2018
Stances of Coaching - OOP2018Stances of Coaching - OOP2018
Stances of Coaching - OOP2018
 
Hacked? Pray that the Attacker used PowerShell
Hacked? Pray that the Attacker used PowerShellHacked? Pray that the Attacker used PowerShell
Hacked? Pray that the Attacker used PowerShell
 
Monitoring and observability
Monitoring and observabilityMonitoring and observability
Monitoring and observability
 
Monitoring With Prometheus
Monitoring With PrometheusMonitoring With Prometheus
Monitoring With Prometheus
 
Run Jenkins as Managed Product on ECS - AWS Meetup
Run Jenkins as Managed Product on ECS - AWS MeetupRun Jenkins as Managed Product on ECS - AWS Meetup
Run Jenkins as Managed Product on ECS - AWS Meetup
 
Continuous Go Profiling & Observability
Continuous Go Profiling & ObservabilityContinuous Go Profiling & Observability
Continuous Go Profiling & Observability
 
Derbycon - Passing the Torch
Derbycon - Passing the TorchDerbycon - Passing the Torch
Derbycon - Passing the Torch
 
Airflow introduction
Airflow introductionAirflow introduction
Airflow introduction
 
Cloud Monitoring tool Grafana
Cloud Monitoring  tool Grafana Cloud Monitoring  tool Grafana
Cloud Monitoring tool Grafana
 
Reactive Applications with Apache Pulsar and Spring Boot
Reactive Applications with Apache Pulsar and Spring BootReactive Applications with Apache Pulsar and Spring Boot
Reactive Applications with Apache Pulsar and Spring Boot
 
Docker Networking | Container Network Model (CNM) | Docker Tutorial For Begin...
Docker Networking | Container Network Model (CNM) | Docker Tutorial For Begin...Docker Networking | Container Network Model (CNM) | Docker Tutorial For Begin...
Docker Networking | Container Network Model (CNM) | Docker Tutorial For Begin...
 
Troopers 19 - I am AD FS and So Can You
Troopers 19 - I am AD FS and So Can YouTroopers 19 - I am AD FS and So Can You
Troopers 19 - I am AD FS and So Can You
 
Grafana introduction
Grafana introductionGrafana introduction
Grafana introduction
 
Qa process
Qa processQa process
Qa process
 

Ähnlich wie The Case for Technical Excellence

Why Do Accidents Still Occur On Modern Day Construction...
Why Do Accidents Still Occur On Modern Day Construction...Why Do Accidents Still Occur On Modern Day Construction...
Why Do Accidents Still Occur On Modern Day Construction...
Stephanie Clark
 

Ähnlich wie The Case for Technical Excellence (20)

Technical Debt: Do Not Underestimate The Danger
Technical Debt: Do Not Underestimate The DangerTechnical Debt: Do Not Underestimate The Danger
Technical Debt: Do Not Underestimate The Danger
 
Delivering Technical Debt
Delivering Technical DebtDelivering Technical Debt
Delivering Technical Debt
 
Increasing The Probability Of Success For Your Project
Increasing The Probability Of Success For Your ProjectIncreasing The Probability Of Success For Your Project
Increasing The Probability Of Success For Your Project
 
From Technical Debt to Technical Health
From Technical Debt to Technical HealthFrom Technical Debt to Technical Health
From Technical Debt to Technical Health
 
Technical debt
Technical debtTechnical debt
Technical debt
 
Technical Debt 101
Technical Debt 101Technical Debt 101
Technical Debt 101
 
Technical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PMTechnical Debt for Product Managers by Square Sr PM
Technical Debt for Product Managers by Square Sr PM
 
Software Agility - Necessary...but not Sufficient
Software Agility - Necessary...but not SufficientSoftware Agility - Necessary...but not Sufficient
Software Agility - Necessary...but not Sufficient
 
Agile E Business Valtech Agile Edge London March 2010 Al Goerner
Agile  E Business Valtech Agile Edge London   March 2010   Al GoernerAgile  E Business Valtech Agile Edge London   March 2010   Al Goerner
Agile E Business Valtech Agile Edge London March 2010 Al Goerner
 
How to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teamsHow to deal with tech debt: Lessons learned from the best engineering teams
How to deal with tech debt: Lessons learned from the best engineering teams
 
Software economics: tradeoffs of decoupled softwre
Software economics: tradeoffs of decoupled softwreSoftware economics: tradeoffs of decoupled softwre
Software economics: tradeoffs of decoupled softwre
 
How To Right An Essay Outline. Guide To Write An
How To Right An Essay Outline. Guide To Write AnHow To Right An Essay Outline. Guide To Write An
How To Right An Essay Outline. Guide To Write An
 
Why Do Accidents Still Occur On Modern Day Construction...
Why Do Accidents Still Occur On Modern Day Construction...Why Do Accidents Still Occur On Modern Day Construction...
Why Do Accidents Still Occur On Modern Day Construction...
 
2014 Technical Communication Conference Program
2014 Technical Communication Conference Program2014 Technical Communication Conference Program
2014 Technical Communication Conference Program
 
Emergent Architecture - March 2011
Emergent Architecture - March 2011Emergent Architecture - March 2011
Emergent Architecture - March 2011
 
Working with Technical Debt
Working with Technical DebtWorking with Technical Debt
Working with Technical Debt
 
5 immutable principles of project success (v3)(notes)
5 immutable principles of project success (v3)(notes)5 immutable principles of project success (v3)(notes)
5 immutable principles of project success (v3)(notes)
 
5 immutable principles of project success (v2)(notes)
5 immutable principles of project success (v2)(notes)5 immutable principles of project success (v2)(notes)
5 immutable principles of project success (v2)(notes)
 
Earned Value + Agile = Success
Earned Value + Agile = SuccessEarned Value + Agile = Success
Earned Value + Agile = Success
 
Agile Requirements Agile Philly Handouts
Agile Requirements Agile Philly HandoutsAgile Requirements Agile Philly Handouts
Agile Requirements Agile Philly Handouts
 

Mehr von Kevlin Henney

Mehr von Kevlin Henney (20)

Program with GUTs
Program with GUTsProgram with GUTs
Program with GUTs
 
Empirical Development
Empirical DevelopmentEmpirical Development
Empirical Development
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that Letter
 
Lambda? You Keep Using that Letter
Lambda? You Keep Using that LetterLambda? You Keep Using that Letter
Lambda? You Keep Using that Letter
 
Solid Deconstruction
Solid DeconstructionSolid Deconstruction
Solid Deconstruction
 
Get Kata
Get KataGet Kata
Get Kata
 
Procedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went AwayProcedural Programming: It’s Back? It Never Went Away
Procedural Programming: It’s Back? It Never Went Away
 
Structure and Interpretation of Test Cases
Structure and Interpretation of Test CasesStructure and Interpretation of Test Cases
Structure and Interpretation of Test Cases
 
Agility ≠ Speed
Agility ≠ SpeedAgility ≠ Speed
Agility ≠ Speed
 
Refactoring to Immutability
Refactoring to ImmutabilityRefactoring to Immutability
Refactoring to Immutability
 
Old Is the New New
Old Is the New NewOld Is the New New
Old Is the New New
 
Turning Development Outside-In
Turning Development Outside-InTurning Development Outside-In
Turning Development Outside-In
 
Giving Code a Good Name
Giving Code a Good NameGiving Code a Good Name
Giving Code a Good Name
 
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
Clean Coders Hate What Happens To Your Code When You Use These Enterprise Pro...
 
Thinking Outside the Synchronisation Quadrant
Thinking Outside the Synchronisation QuadrantThinking Outside the Synchronisation Quadrant
Thinking Outside the Synchronisation Quadrant
 
Code as Risk
Code as RiskCode as Risk
Code as Risk
 
Software Is Details
Software Is DetailsSoftware Is Details
Software Is Details
 
Game of Sprints
Game of SprintsGame of Sprints
Game of Sprints
 
Good Code
Good CodeGood Code
Good Code
 
The Error of Our Ways
The Error of Our WaysThe Error of Our Ways
The Error of Our Ways
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

Transformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with LinksTransformer Neural Network Use Cases with Links
Transformer Neural Network Use Cases with Links
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
Your Ultimate Web Studio for Streaming Anywhere | Evmux
Your Ultimate Web Studio for Streaming Anywhere | EvmuxYour Ultimate Web Studio for Streaming Anywhere | Evmux
Your Ultimate Web Studio for Streaming Anywhere | Evmux
 
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
Auto Affiliate  AI Earns First Commission in 3 Hours..pdfAuto Affiliate  AI Earns First Commission in 3 Hours..pdf
Auto Affiliate AI Earns First Commission in 3 Hours..pdf
 
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
Abortion Clinic In Pretoria ](+27832195400*)[ 🏥 Safe Abortion Pills in Pretor...
 
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
Navigation in flutter – how to add stack, tab, and drawer navigators to your ...
 
Effective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeConEffective Strategies for Wix's Scaling challenges - GeeCon
Effective Strategies for Wix's Scaling challenges - GeeCon
 
Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024Food Delivery Business App Development Guide 2024
Food Delivery Business App Development Guide 2024
 
Software Engineering - Introduction + Process Models + Requirements Engineering
Software Engineering - Introduction + Process Models + Requirements EngineeringSoftware Engineering - Introduction + Process Models + Requirements Engineering
Software Engineering - Introduction + Process Models + Requirements Engineering
 
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
Anypoint Code Builder - Munich MuleSoft Meetup - 16th May 2024
 
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale IbridaUNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
UNI DI NAPOLI FEDERICO II - Il ruolo dei grafi nell'AI Conversazionale Ibrida
 
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMs
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdf
 
Abortion Clinic Pretoria ](+27832195400*)[ Abortion Clinic Near Me ● Abortion...
Abortion Clinic Pretoria ](+27832195400*)[ Abortion Clinic Near Me ● Abortion...Abortion Clinic Pretoria ](+27832195400*)[ Abortion Clinic Near Me ● Abortion...
Abortion Clinic Pretoria ](+27832195400*)[ Abortion Clinic Near Me ● Abortion...
 
From Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST APIFrom Theory to Practice: Utilizing SpiraPlan's REST API
From Theory to Practice: Utilizing SpiraPlan's REST API
 
Encryption Recap: A Refresher on Key Concepts
Encryption Recap: A Refresher on Key ConceptsEncryption Recap: A Refresher on Key Concepts
Encryption Recap: A Refresher on Key Concepts
 
Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?Prompt Engineering - an Art, a Science, or your next Job Title?
Prompt Engineering - an Art, a Science, or your next Job Title?
 
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
CERVED e Neo4j su una nuvola, migrazione ed evoluzione di un grafo mission cr...
 
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
Workshop -  Architecting Innovative Graph Applications- GraphSummit MilanWorkshop -  Architecting Innovative Graph Applications- GraphSummit Milan
Workshop - Architecting Innovative Graph Applications- GraphSummit Milan
 

The Case for Technical Excellence