SlideShare a Scribd company logo
1 of 32
Download to read offline
Clean Code
5
A Handbook of Agile Software Craftsmanship
Robert C. Martin
Note by waegaein@github.com
Clean Code
The Total Cost of Owning a Mess
• Over the span of a year or two, teams that were moving very
fast at the beginning of a project can find themselves
moving at a snail’s pace.
The Total Cost of Owning a Mess
• Over the span of a year or two, teams that were moving very
fast at the beginning of a project can find themselves moving
at a snail’s pace.
• Every change they make to the code breaks two or three
other parts of the code.
The Total Cost of Owning a Mess
• Over the span of a year or two, teams that were moving very
fast at the beginning of a project can find themselves moving
at a snail’s pace.
• Every change they make to the code breaks two or three
other parts of the code.
• No change is trivial.
The Total Cost of Owning a Mess
• Over the span of a year or two, teams that were moving very
fast at the beginning of a project can find themselves moving
at a snail’s pace.
• Every change they make to the code breaks two or three
other parts of the code.
• No change is trivial.
• Every addition or modification to the system requires that the
tangles, twists, and knots be “understood” so that more
tangles, twists, and knots can be added.
The Total Cost of Owning a Mess
• As the mess build, the productivity of the team continues to
decrease.
The Total Cost of Owning a Mess
• As the mess build, the productivity of the team continues to
decrease.
• As productivity decreases, management does the only thing
they can; they add more staff to the project in hopes of
increasing productivity.
The Total Cost of Owning a Mess
• As the mess build, the productivity of the team continues to
decrease.
• As productivity decreases, management does the only thing
they can; they add more staff to the project in hopes of
increasing productivity.
• But that new staff is not versed in the design of the system.
The Total Cost of Owning a Mess
• Furthermore, they, and everyone else on the team, are under
horrific pressure to increase productivity.
The Total Cost of Owning a Mess
• Furthermore, they, and everyone else on the team, are under
horrific pressure to increase productivity.
• So they all make more and more messes, driving the
productivity ever further toward zero.
The Total Cost of Owning a Mess
Attitude
• Have you ever waded through a mess so grave that it took
weeks to do what should have taken hours?
Attitude
• Have you ever waded through a mess so grave that it took
weeks to do what should have taken hours?
• Have you seen what should have been a one-line change,
made instead in hundreds of different modules?
Attitude
• Have you ever waded through a mess so grave that it took
weeks to do what should have taken hours?
• Have you seen what should have been a one-line change,
made instead in hundreds of different modules?
• These symptoms are all too common.
Attitude
• Why does this happen to code?
Attitude
• Why does this happen to code?
• Why does good code rot so quickly into bad code?
Attitude
• We have lots of explanations for it.
Attitude
• We have lots of explanations for it.
• We complain that the requirements changed in ways that
thwart the original design.
Attitude
• We have lots of explanations for it.
• We complain that the requirements changed in ways that
thwart the original design.
• We bemoan the schedules that were too tight to do things
right.
Attitude
• We have lots of explanations for it.
• We complain that the requirements changed in ways that
thwart the original design.
• We bemoan the schedules that were too tight to do things
right.
• We blather about stupid managers and intolerant
customers and useless marketing types and telephone
sanitizers.
Attitude
• But the fault is not in our stars, but in ourselves.
Attitude
• But the fault is not in our stars, but in ourselves.
• We are unprofessional.
Attitude
“But wait!”
“If I don’t do what my manager says, I’ll be fired!”
Attitude
“But wait!”
“If I don’t do what my manager says, I’ll be fired!”
• Probably not.
Attitude
“But wait!”
“If I don’t do what my manager says, I’ll be fired!”
• Probably not.
• Most managers want the truth.
• Even when they don’t act like it.
Attitude
“But wait!”
“If I don’t do what my manager says, I’ll be fired!”
• Probably not.
• Most managers want the truth.
• Even when they don’t act like it.
• They may defend the schedule and requirements with
passion; but that’s their job.
Attitude
“But wait!”
“If I don’t do what my manager says, I’ll be fired!”
• Probably not.
• Most managers want the truth.
• Even when they don’t act like it.
• They may defend the schedule and requirements with
passion; but that’s their job.
• It’s your job to defend the code with equal passion.
Attitude
• A patient is complaining about doctor’s washing hands taking
too long.
Attitude
• A patient is complaining about doctor’s washing hands taking
too long.
• It would be unprofessional (never mind criminal) for the
doctor to comply with the patient and give up washing hands.
Attitude
• A patient is complaining about doctor’s washing hands taking
too long.
• It would be unprofessional (never mind criminal) for the
doctor to comply with the patient and give up washing hands.
• So too it is unprofessional for programmers to bend to the
will of managers who don’t understand the risks of making
messes.
The Boy Scout Rule
Leave the campground cleaner than you found it.

More Related Content

What's hot

Agile Anti-patterns
Agile Anti-patternsAgile Anti-patterns
Agile Anti-patternsAndrew Cox
 
15 Explosive Things You Should Try As An Agilist by Peter Gfader
15 Explosive Things You Should Try As An Agilist by Peter Gfader15 Explosive Things You Should Try As An Agilist by Peter Gfader
15 Explosive Things You Should Try As An Agilist by Peter GfaderBosnia Agile
 
Overcome the 6 Antipatterns of Agile Adoption
Overcome the 6 Antipatterns of Agile AdoptionOvercome the 6 Antipatterns of Agile Adoption
Overcome the 6 Antipatterns of Agile AdoptionAgile Velocity
 
How effective feedback can improve your software
How effective feedback can improve your softwareHow effective feedback can improve your software
How effective feedback can improve your softwareSven Peters
 
Fail Safe, Fail Smart, Succeed
Fail Safe, Fail Smart, SucceedFail Safe, Fail Smart, Succeed
Fail Safe, Fail Smart, SucceedKevin Goldsmith
 
To Estimate or #NoEstimate
To Estimate or #NoEstimateTo Estimate or #NoEstimate
To Estimate or #NoEstimateGil Zilberfeld
 
Making disaster routine
Making disaster routineMaking disaster routine
Making disaster routinePeter Varhol
 
How to make good teams great
How to make good teams greatHow to make good teams great
How to make good teams greatSven Peters
 
DevOps Picc12 Management Talk
DevOps Picc12 Management TalkDevOps Picc12 Management Talk
DevOps Picc12 Management TalkMichael Rembetsy
 
APIdays Paris 2019 - The (really) long journey to an API Community of Practic...
APIdays Paris 2019 - The (really) long journey to an API Community of Practic...APIdays Paris 2019 - The (really) long journey to an API Community of Practic...
APIdays Paris 2019 - The (really) long journey to an API Community of Practic...apidays
 
Real Life Test Maintenance
Real Life Test MaintenanceReal Life Test Maintenance
Real Life Test MaintenanceGil Zilberfeld
 
TDD for the rest of us
TDD for the rest of usTDD for the rest of us
TDD for the rest of usGil Zilberfeld
 
Creating A Unit Testing Strategy
Creating A Unit Testing StrategyCreating A Unit Testing Strategy
Creating A Unit Testing StrategyGil Zilberfeld
 
Root Cause Analysis: Fact and Fiction
Root Cause Analysis: Fact and FictionRoot Cause Analysis: Fact and Fiction
Root Cause Analysis: Fact and FictionDustin Collins
 
Welcome To Itteco
Welcome To IttecoWelcome To Itteco
Welcome To Ittecoi.paramonau
 
Confluence - From Wiki to Collaboration Platform
Confluence - From Wiki to Collaboration PlatformConfluence - From Wiki to Collaboration Platform
Confluence - From Wiki to Collaboration PlatformSven Peters
 

What's hot (18)

Agile Anti-patterns
Agile Anti-patternsAgile Anti-patterns
Agile Anti-patterns
 
TDD patterns
TDD patternsTDD patterns
TDD patterns
 
15 Explosive Things You Should Try As An Agilist by Peter Gfader
15 Explosive Things You Should Try As An Agilist by Peter Gfader15 Explosive Things You Should Try As An Agilist by Peter Gfader
15 Explosive Things You Should Try As An Agilist by Peter Gfader
 
Coaching Anti-Pattens and common smells
 Coaching Anti-Pattens and common smells Coaching Anti-Pattens and common smells
Coaching Anti-Pattens and common smells
 
Overcome the 6 Antipatterns of Agile Adoption
Overcome the 6 Antipatterns of Agile AdoptionOvercome the 6 Antipatterns of Agile Adoption
Overcome the 6 Antipatterns of Agile Adoption
 
How effective feedback can improve your software
How effective feedback can improve your softwareHow effective feedback can improve your software
How effective feedback can improve your software
 
Fail Safe, Fail Smart, Succeed
Fail Safe, Fail Smart, SucceedFail Safe, Fail Smart, Succeed
Fail Safe, Fail Smart, Succeed
 
To Estimate or #NoEstimate
To Estimate or #NoEstimateTo Estimate or #NoEstimate
To Estimate or #NoEstimate
 
Making disaster routine
Making disaster routineMaking disaster routine
Making disaster routine
 
How to make good teams great
How to make good teams greatHow to make good teams great
How to make good teams great
 
DevOps Picc12 Management Talk
DevOps Picc12 Management TalkDevOps Picc12 Management Talk
DevOps Picc12 Management Talk
 
APIdays Paris 2019 - The (really) long journey to an API Community of Practic...
APIdays Paris 2019 - The (really) long journey to an API Community of Practic...APIdays Paris 2019 - The (really) long journey to an API Community of Practic...
APIdays Paris 2019 - The (really) long journey to an API Community of Practic...
 
Real Life Test Maintenance
Real Life Test MaintenanceReal Life Test Maintenance
Real Life Test Maintenance
 
TDD for the rest of us
TDD for the rest of usTDD for the rest of us
TDD for the rest of us
 
Creating A Unit Testing Strategy
Creating A Unit Testing StrategyCreating A Unit Testing Strategy
Creating A Unit Testing Strategy
 
Root Cause Analysis: Fact and Fiction
Root Cause Analysis: Fact and FictionRoot Cause Analysis: Fact and Fiction
Root Cause Analysis: Fact and Fiction
 
Welcome To Itteco
Welcome To IttecoWelcome To Itteco
Welcome To Itteco
 
Confluence - From Wiki to Collaboration Platform
Confluence - From Wiki to Collaboration PlatformConfluence - From Wiki to Collaboration Platform
Confluence - From Wiki to Collaboration Platform
 

Similar to Clean Code Handbook Guide Agile Software Craftsmanship

The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing codeZivtech, LLC
 
Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012Adrian Carr
 
Software Developer Career Unplugged - GeeCon 2013
Software Developer Career Unplugged - GeeCon 2013Software Developer Career Unplugged - GeeCon 2013
Software Developer Career Unplugged - GeeCon 2013Wojciech Seliga
 
Velocity Conference NYC 2014 - Real World DevOps
Velocity Conference NYC 2014 - Real World DevOpsVelocity Conference NYC 2014 - Real World DevOps
Velocity Conference NYC 2014 - Real World DevOpsRodrigo Campos
 
ChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef RetrospectiveChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef Retrospectivegwaldo
 
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptxDataScienceConferenc1
 
Being agile while standing in a waterfall
Being agile while standing in a waterfallBeing agile while standing in a waterfall
Being agile while standing in a waterfallMike Edwards
 
Social dev camp_2011
Social dev camp_2011Social dev camp_2011
Social dev camp_2011Craig Ulliott
 
SRE for Everyone: Making Tomorrow Better Than Today
SRE for Everyone: Making Tomorrow Better Than Today SRE for Everyone: Making Tomorrow Better Than Today
SRE for Everyone: Making Tomorrow Better Than Today Rundeck
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....Mike Harris
 
Devops, The future is here, it's just not evenly distributed
Devops, The future is here, it's just not evenly distributedDevops, The future is here, it's just not evenly distributed
Devops, The future is here, it's just not evenly distributedKris Buytaert
 
SRE Lessons for the Enterprise
SRE Lessons for the Enterprise SRE Lessons for the Enterprise
SRE Lessons for the Enterprise Rundeck
 
Let's bring the teams back together
Let's bring the teams back togetherLet's bring the teams back together
Let's bring the teams back togetherKris Buytaert
 
Agile: the Good, the Bad and the Ugly - Webinar by Clarke Ching Agile - Septe...
Agile: the Good, the Bad and the Ugly - Webinar by Clarke Ching Agile - Septe...Agile: the Good, the Bad and the Ugly - Webinar by Clarke Ching Agile - Septe...
Agile: the Good, the Bad and the Ugly - Webinar by Clarke Ching Agile - Septe...MARRIS Consulting
 
Less 'Oh Shit' With GIT
Less 'Oh Shit' With GITLess 'Oh Shit' With GIT
Less 'Oh Shit' With GITRichard Tape
 
Community and Github: 7/27/2011
Community and Github: 7/27/2011Community and Github: 7/27/2011
Community and Github: 7/27/2011Andy Lester
 

Similar to Clean Code Handbook Guide Agile Software Craftsmanship (20)

The business case for contributing code
The business case for contributing codeThe business case for contributing code
The business case for contributing code
 
DevOps Year One
DevOps Year OneDevOps Year One
DevOps Year One
 
Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012Money, Process, and Culture- Tech 20/20 June, 2012
Money, Process, and Culture- Tech 20/20 June, 2012
 
Emperors new clothes_jab
Emperors new clothes_jabEmperors new clothes_jab
Emperors new clothes_jab
 
Software Developer Career Unplugged - GeeCon 2013
Software Developer Career Unplugged - GeeCon 2013Software Developer Career Unplugged - GeeCon 2013
Software Developer Career Unplugged - GeeCon 2013
 
Velocity Conference NYC 2014 - Real World DevOps
Velocity Conference NYC 2014 - Real World DevOpsVelocity Conference NYC 2014 - Real World DevOps
Velocity Conference NYC 2014 - Real World DevOps
 
ChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef RetrospectiveChefConf 2015 - Chef Retrospective
ChefConf 2015 - Chef Retrospective
 
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx
[DSC Adria 23] Radovan Bacovic Steal Our Knowledge Please.pptx
 
Cloud Security: Ten Things
Cloud Security: Ten ThingsCloud Security: Ten Things
Cloud Security: Ten Things
 
Being agile while standing in a waterfall
Being agile while standing in a waterfallBeing agile while standing in a waterfall
Being agile while standing in a waterfall
 
Social dev camp_2011
Social dev camp_2011Social dev camp_2011
Social dev camp_2011
 
SRE for Everyone: Making Tomorrow Better Than Today
SRE for Everyone: Making Tomorrow Better Than Today SRE for Everyone: Making Tomorrow Better Than Today
SRE for Everyone: Making Tomorrow Better Than Today
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
 
Devops, The future is here, it's just not evenly distributed
Devops, The future is here, it's just not evenly distributedDevops, The future is here, it's just not evenly distributed
Devops, The future is here, it's just not evenly distributed
 
SRE Lessons for the Enterprise
SRE Lessons for the Enterprise SRE Lessons for the Enterprise
SRE Lessons for the Enterprise
 
Let's bring the teams back together
Let's bring the teams back togetherLet's bring the teams back together
Let's bring the teams back together
 
Agile: the Good, the Bad and the Ugly - Webinar by Clarke Ching Agile - Septe...
Agile: the Good, the Bad and the Ugly - Webinar by Clarke Ching Agile - Septe...Agile: the Good, the Bad and the Ugly - Webinar by Clarke Ching Agile - Septe...
Agile: the Good, the Bad and the Ugly - Webinar by Clarke Ching Agile - Septe...
 
Less 'Oh Shit' With GIT
Less 'Oh Shit' With GITLess 'Oh Shit' With GIT
Less 'Oh Shit' With GIT
 
Tweakers Anonymous
Tweakers AnonymousTweakers Anonymous
Tweakers Anonymous
 
Community and Github: 7/27/2011
Community and Github: 7/27/2011Community and Github: 7/27/2011
Community and Github: 7/27/2011
 

More from Don Kim

Clean Code - 4
Clean Code - 4Clean Code - 4
Clean Code - 4Don Kim
 
Clean Code - 3
Clean Code - 3Clean Code - 3
Clean Code - 3Don Kim
 
Clean Code - 2
Clean Code - 2Clean Code - 2
Clean Code - 2Don Kim
 
Clean Code - 1
Clean Code - 1Clean Code - 1
Clean Code - 1Don Kim
 
Design and Analyze Secure Networked Systems - 7
Design and Analyze Secure Networked Systems - 7Design and Analyze Secure Networked Systems - 7
Design and Analyze Secure Networked Systems - 7Don Kim
 
Design and Analyze Secure Networked Systems - 6
Design and Analyze Secure Networked Systems - 6Design and Analyze Secure Networked Systems - 6
Design and Analyze Secure Networked Systems - 6Don Kim
 
Design and Analyze Secure Networked Systems - 5
Design and Analyze Secure Networked Systems - 5Design and Analyze Secure Networked Systems - 5
Design and Analyze Secure Networked Systems - 5Don Kim
 
Design and Analyze Secure Networked Systems - 4
Design and Analyze Secure Networked Systems - 4Design and Analyze Secure Networked Systems - 4
Design and Analyze Secure Networked Systems - 4Don Kim
 
Design and Analyze Secure Networked Systems - 3
Design and Analyze Secure Networked Systems - 3Design and Analyze Secure Networked Systems - 3
Design and Analyze Secure Networked Systems - 3Don Kim
 
Design and Analyze Secure Networked Systems - 2
Design and Analyze Secure Networked Systems - 2Design and Analyze Secure Networked Systems - 2
Design and Analyze Secure Networked Systems - 2Don Kim
 
Design and Analyze Secure Networked Systems - 1
Design and Analyze Secure Networked Systems - 1Design and Analyze Secure Networked Systems - 1
Design and Analyze Secure Networked Systems - 1Don Kim
 

More from Don Kim (11)

Clean Code - 4
Clean Code - 4Clean Code - 4
Clean Code - 4
 
Clean Code - 3
Clean Code - 3Clean Code - 3
Clean Code - 3
 
Clean Code - 2
Clean Code - 2Clean Code - 2
Clean Code - 2
 
Clean Code - 1
Clean Code - 1Clean Code - 1
Clean Code - 1
 
Design and Analyze Secure Networked Systems - 7
Design and Analyze Secure Networked Systems - 7Design and Analyze Secure Networked Systems - 7
Design and Analyze Secure Networked Systems - 7
 
Design and Analyze Secure Networked Systems - 6
Design and Analyze Secure Networked Systems - 6Design and Analyze Secure Networked Systems - 6
Design and Analyze Secure Networked Systems - 6
 
Design and Analyze Secure Networked Systems - 5
Design and Analyze Secure Networked Systems - 5Design and Analyze Secure Networked Systems - 5
Design and Analyze Secure Networked Systems - 5
 
Design and Analyze Secure Networked Systems - 4
Design and Analyze Secure Networked Systems - 4Design and Analyze Secure Networked Systems - 4
Design and Analyze Secure Networked Systems - 4
 
Design and Analyze Secure Networked Systems - 3
Design and Analyze Secure Networked Systems - 3Design and Analyze Secure Networked Systems - 3
Design and Analyze Secure Networked Systems - 3
 
Design and Analyze Secure Networked Systems - 2
Design and Analyze Secure Networked Systems - 2Design and Analyze Secure Networked Systems - 2
Design and Analyze Secure Networked Systems - 2
 
Design and Analyze Secure Networked Systems - 1
Design and Analyze Secure Networked Systems - 1Design and Analyze Secure Networked Systems - 1
Design and Analyze Secure Networked Systems - 1
 

Recently uploaded

办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
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
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....kzayra69
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
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
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
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
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
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
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 

Recently uploaded (20)

办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....What are the key points to focus on before starting to learn ETL Development....
What are the key points to focus on before starting to learn ETL Development....
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
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
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
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
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
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
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
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
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 

Clean Code Handbook Guide Agile Software Craftsmanship

  • 1. Clean Code 5 A Handbook of Agile Software Craftsmanship Robert C. Martin Note by waegaein@github.com
  • 3. The Total Cost of Owning a Mess • Over the span of a year or two, teams that were moving very fast at the beginning of a project can find themselves moving at a snail’s pace.
  • 4. The Total Cost of Owning a Mess • Over the span of a year or two, teams that were moving very fast at the beginning of a project can find themselves moving at a snail’s pace. • Every change they make to the code breaks two or three other parts of the code.
  • 5. The Total Cost of Owning a Mess • Over the span of a year or two, teams that were moving very fast at the beginning of a project can find themselves moving at a snail’s pace. • Every change they make to the code breaks two or three other parts of the code. • No change is trivial.
  • 6. The Total Cost of Owning a Mess • Over the span of a year or two, teams that were moving very fast at the beginning of a project can find themselves moving at a snail’s pace. • Every change they make to the code breaks two or three other parts of the code. • No change is trivial. • Every addition or modification to the system requires that the tangles, twists, and knots be “understood” so that more tangles, twists, and knots can be added.
  • 7. The Total Cost of Owning a Mess • As the mess build, the productivity of the team continues to decrease.
  • 8. The Total Cost of Owning a Mess • As the mess build, the productivity of the team continues to decrease. • As productivity decreases, management does the only thing they can; they add more staff to the project in hopes of increasing productivity.
  • 9. The Total Cost of Owning a Mess • As the mess build, the productivity of the team continues to decrease. • As productivity decreases, management does the only thing they can; they add more staff to the project in hopes of increasing productivity. • But that new staff is not versed in the design of the system.
  • 10. The Total Cost of Owning a Mess • Furthermore, they, and everyone else on the team, are under horrific pressure to increase productivity.
  • 11. The Total Cost of Owning a Mess • Furthermore, they, and everyone else on the team, are under horrific pressure to increase productivity. • So they all make more and more messes, driving the productivity ever further toward zero.
  • 12. The Total Cost of Owning a Mess
  • 13. Attitude • Have you ever waded through a mess so grave that it took weeks to do what should have taken hours?
  • 14. Attitude • Have you ever waded through a mess so grave that it took weeks to do what should have taken hours? • Have you seen what should have been a one-line change, made instead in hundreds of different modules?
  • 15. Attitude • Have you ever waded through a mess so grave that it took weeks to do what should have taken hours? • Have you seen what should have been a one-line change, made instead in hundreds of different modules? • These symptoms are all too common.
  • 16. Attitude • Why does this happen to code?
  • 17. Attitude • Why does this happen to code? • Why does good code rot so quickly into bad code?
  • 18. Attitude • We have lots of explanations for it.
  • 19. Attitude • We have lots of explanations for it. • We complain that the requirements changed in ways that thwart the original design.
  • 20. Attitude • We have lots of explanations for it. • We complain that the requirements changed in ways that thwart the original design. • We bemoan the schedules that were too tight to do things right.
  • 21. Attitude • We have lots of explanations for it. • We complain that the requirements changed in ways that thwart the original design. • We bemoan the schedules that were too tight to do things right. • We blather about stupid managers and intolerant customers and useless marketing types and telephone sanitizers.
  • 22. Attitude • But the fault is not in our stars, but in ourselves.
  • 23. Attitude • But the fault is not in our stars, but in ourselves. • We are unprofessional.
  • 24. Attitude “But wait!” “If I don’t do what my manager says, I’ll be fired!”
  • 25. Attitude “But wait!” “If I don’t do what my manager says, I’ll be fired!” • Probably not.
  • 26. Attitude “But wait!” “If I don’t do what my manager says, I’ll be fired!” • Probably not. • Most managers want the truth. • Even when they don’t act like it.
  • 27. Attitude “But wait!” “If I don’t do what my manager says, I’ll be fired!” • Probably not. • Most managers want the truth. • Even when they don’t act like it. • They may defend the schedule and requirements with passion; but that’s their job.
  • 28. Attitude “But wait!” “If I don’t do what my manager says, I’ll be fired!” • Probably not. • Most managers want the truth. • Even when they don’t act like it. • They may defend the schedule and requirements with passion; but that’s their job. • It’s your job to defend the code with equal passion.
  • 29. Attitude • A patient is complaining about doctor’s washing hands taking too long.
  • 30. Attitude • A patient is complaining about doctor’s washing hands taking too long. • It would be unprofessional (never mind criminal) for the doctor to comply with the patient and give up washing hands.
  • 31. Attitude • A patient is complaining about doctor’s washing hands taking too long. • It would be unprofessional (never mind criminal) for the doctor to comply with the patient and give up washing hands. • So too it is unprofessional for programmers to bend to the will of managers who don’t understand the risks of making messes.
  • 32. The Boy Scout Rule Leave the campground cleaner than you found it.