SlideShare a Scribd company logo
MANFREDI GIORDANO, 09/04/2020
SoftwareCraftsmanship
Raising the bar of professional software development[citation needed]
1
Writingsoftwareisa(modern)craft
2
Disclaimers
I am by no means expert in this field
I am not implying we are not already doing this
3
4
MANFREDI GIORDANO, 09/04/2020
• Change in focus: industrial -> engineering -> craft
• Emphasis on coding skills and on the journey
• Takes ideas from some influential books
• The Pragmatic Programmer (Andrew Hunt, David Thomas, 2009)
• Clean Code (Robert C. Martin, 2009)
• Originates from a "fork" of the Agile movement
• As old as writing software
SoftwareCraftsmanship
5
Craftsmanshipinpractice?
6
7
© Ryan McGilchrist
https://flic.kr/p/53shT6
Code refactoring
8
MANFREDI GIORDANO, 09/04/2020
• Changing (improving) existing code while preserving the external behaviour of the system
• No new code should be added
• Small changes at once
• Influential books:
• Refactoring: Improving the Design of Existing Code (Martin Fowler, 1999)
• Working Effectively with Legacy Code (Michael Feathers, 2004)
Whatisrefactoring?
9
Robert C. Martin
Boy Scout Rule:
"Always leave the code in a better state
than you found it"
10
MANFREDI GIORDANO, 09/04/2020
• Broken window theory
Whyisrefactoringneeded?
11
12
© Monkey User
https://www.monkeyuser.com/2019/code-entropy/
MANFREDI GIORDANO, 09/04/2020
• Broken window theory
• Hard to get design & implementation right at first attempt
• Even if we do, any software will need to evolve
• It lowers the cost of future enhancements and product evolutions
• Foundation for rapid delivery – not only "the code looks cleaner"
• Never-ending journey, i.e. always room for improvement
Whyisrefactoringneeded?
13
14
Refactoring in practice
• Many ways of refactoring existing code
• Rename Variable is underrated!
• Linked to both Agile and Extreme
Programming
• Technical debt management
• Test automation, test coverage,
Continuous Integration, Test-Driven
Development, pair programming, code
review
15
Criticisms
16
MANFREDI GIORDANO, 09/04/2020
• "If it ain't broke, don't fix it"
• What if a seemingly harmless change breaks something?
Criticisms
17
18
© Monkey User
https://www.monkeyuser.com/2019/cleanup/
MANFREDI GIORDANO, 09/04/2020
• "If it ain't broke, don't fix it"
• What if a seemingly harmless change breaks something?
• Never rewrite software from scratch – "the single worst strategic mistake that any software
company can make" (Joel Spolsky)
• No universally accepted definition of well-written code
• Makes feature branching more difficult
• Should we plan / allocate time for it?
• No! "Opportunistic refactoring" (Martin Fowler)
Criticisms
19
Joshua Kerievsky
"By continuously improving the design of code, we make
it easier and easier to work with."
"If you get into the hygienic habit of refactoring
continuously, you'll find that it is easier to extend and
maintain code."
20
MANFREDI GIORDANO, 09/04/2020
• Manifesto for Software Craftsmanship (2009)

http://manifesto.softwarecraftsmanship.org
• The Pragmatic Programmer: From Journeyman to Master (Andrew Hunt, David Thomas, 2009)

https://pragprog.com/book/tpp/the-pragmatic-programmer
• Refactoring: Improving the Design of Existing Code (Martin Fowler, 1999)

https://martinfowler.com/books/refactoring.html
• Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin, 2009)

http://cleancoder.com/files/cleanCodeCourse.md
• Working Effectively with Legacy Code (Michael Feathers, 2004)

https://www.oreilly.com/library/view/working-effectively-with/0131177052/
• Refactoring to Patterns (Joshua Kerievsky, 2004)

https://www.industriallogic.com/xp/refactoring/
References(1/3)
21
MANFREDI GIORDANO, 09/04/2020
• Broken windows theory (James Q. Wilson, George L. Kelling, 1982)

https://www.theatlantic.com/ideastour/archive/windows.html
• Online catalog of refactorings (Martin Fowler)

https://www.refactoring.com/catalog/
• Scala's coding standard

https://github.com/scala/scala/blob/2.13.x/CONTRIBUTING.md#coding-standards
• Things You Should Never Do, Part I (Joel Spolski, 2000)

https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/
• OpportunisticRefactoring (Martin Fowler, 2011)

https://martinfowler.com/bliki/OpportunisticRefactoring.html
• Refactoring -- Not on the backlog! (Ron Jeffries, 2014)

https://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog//
References(2/3)
22
MANFREDI GIORDANO, 09/04/2020
• Workflows of Refactoring (Martin Fowler, 2014)

https://martinfowler.com/articles/workflowsOfRefactoring/
• What is Software Craftsmanship? (David Max, 2016)

https://www.linkedin.com/pulse/what-software-craftsmanship-david-max/
• How we work efficiently with legacy code (2020)

https://inside.getyourguide.com/blog/2020/1/24/how-we-work-efficiently-with-legacy-code
• What makes for readable code?

https://dev.to/ben/what-makes-for-readable-code-34o7
• Boolean parameters are wrong (havoc, 2011)

https://blog.ometer.com/2011/01/20/boolean-parameters-are-wrong/
• https://en.wikipedia.org/wiki/Software_craftsmanship
• https://en.wikipedia.org/wiki/Code_refactoring
• https://en.wikipedia.org/wiki/Broken_windows_theory
References(3/3)
23
MANFREDI GIORDANO, 09/04/2020
• London Software Craftsmanship Community (LSCC)

https://www.meetup.com/london-software-craftsmanship/
• SC London

https://sc-london.com
• French Riviera Software Craftsmanship Community

https://www.meetup.com/Riviera-SCC/
• Software Crafters Barcelona

https://softwarecrafters.barcelona
• Software Craftsmanship North America (SCNA)

https://scna.softwarecraftsmanship.org
• Many others...
Communities&Conferences
24
"Thanks for coming to my TED talk"
25
Bonusmemes
26
27
https://www.reddit.com/r/
ProgrammerHumor/
comments/cpqtes/
its_always_like_this
28
https://www.reddit.com/r/
ProgrammerHumor/comments/
fpd1lx/
quarantine_has_me_refactoring
29
© Monkey User
https://www.monkeyuser.com/2019/
end-of-the-line/
Alan Key
"Most software today is very much like an Egyptian
pyramid with millions of bricks piled on top of
each other, with no structural integrity, but just
done by brute force and thousands of slaves."
30
Gerald Weinberg
"If builders built buildings the way programmers
wrote programs, then the first woodpecker
that came along wound destroy civilisation."
31

More Related Content

What's hot

10 Faulty Behaviors of Code Review - Developer Summit Istanbul 2018
10 Faulty Behaviors of Code Review - Developer Summit Istanbul 201810 Faulty Behaviors of Code Review - Developer Summit Istanbul 2018
10 Faulty Behaviors of Code Review - Developer Summit Istanbul 2018
Lemi Orhan Ergin
 
Specification by example and agile acceptance testing
Specification by example and agile acceptance testingSpecification by example and agile acceptance testing
Specification by example and agile acceptance testing
gojkoadzic
 
Influence of Tester in DevOps World
Influence of Tester in DevOps WorldInfluence of Tester in DevOps World
Influence of Tester in DevOps World
Jaco Marais
 
Testing in the Dark
Testing in the DarkTesting in the Dark
Testing in the Dark
TechWell
 
Continuous code quality_in_java
Continuous code quality_in_javaContinuous code quality_in_java
Continuous code quality_in_java
Manimekalai48
 
Mobile & Tablet UX | NYU School of Professional Studies | Week 1 (Intro)
Mobile & Tablet UX | NYU School of Professional Studies | Week 1 (Intro)Mobile & Tablet UX | NYU School of Professional Studies | Week 1 (Intro)
Mobile & Tablet UX | NYU School of Professional Studies | Week 1 (Intro)
Liz Filardi
 
Spec by-example
Spec by-exampleSpec by-example
Spec by-example
David Navarro Alvarez
 
Rapid prototyping 2.0
Rapid prototyping 2.0Rapid prototyping 2.0
Rapid prototyping 2.0
Devbridge Group
 
Improving the Quality of Incoming Code
Improving the Quality of Incoming CodeImproving the Quality of Incoming Code
Improving the Quality of Incoming Code
Naresh Jain
 
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
agil8 Ltd
 
Measure DevOps for Objective Continuous Improvement Practices
Measure DevOps for Objective Continuous Improvement PracticesMeasure DevOps for Objective Continuous Improvement Practices
Measure DevOps for Objective Continuous Improvement Practices
TechWell
 

What's hot (11)

10 Faulty Behaviors of Code Review - Developer Summit Istanbul 2018
10 Faulty Behaviors of Code Review - Developer Summit Istanbul 201810 Faulty Behaviors of Code Review - Developer Summit Istanbul 2018
10 Faulty Behaviors of Code Review - Developer Summit Istanbul 2018
 
Specification by example and agile acceptance testing
Specification by example and agile acceptance testingSpecification by example and agile acceptance testing
Specification by example and agile acceptance testing
 
Influence of Tester in DevOps World
Influence of Tester in DevOps WorldInfluence of Tester in DevOps World
Influence of Tester in DevOps World
 
Testing in the Dark
Testing in the DarkTesting in the Dark
Testing in the Dark
 
Continuous code quality_in_java
Continuous code quality_in_javaContinuous code quality_in_java
Continuous code quality_in_java
 
Mobile & Tablet UX | NYU School of Professional Studies | Week 1 (Intro)
Mobile & Tablet UX | NYU School of Professional Studies | Week 1 (Intro)Mobile & Tablet UX | NYU School of Professional Studies | Week 1 (Intro)
Mobile & Tablet UX | NYU School of Professional Studies | Week 1 (Intro)
 
Spec by-example
Spec by-exampleSpec by-example
Spec by-example
 
Rapid prototyping 2.0
Rapid prototyping 2.0Rapid prototyping 2.0
Rapid prototyping 2.0
 
Improving the Quality of Incoming Code
Improving the Quality of Incoming CodeImproving the Quality of Incoming Code
Improving the Quality of Incoming Code
 
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
Agile Software Development and Test Driven Development: Agil8's Dave Putman 3...
 
Measure DevOps for Objective Continuous Improvement Practices
Measure DevOps for Objective Continuous Improvement PracticesMeasure DevOps for Objective Continuous Improvement Practices
Measure DevOps for Objective Continuous Improvement Practices
 

Similar to Software Craftsmanship

Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategies
Raquel Pau
 
Introduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agileIntroduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agile
Stefano Valle
 
Sonar
Sonar Sonar
It is a sunny day
It is a sunny dayIt is a sunny day
It is a sunny day
bcoder
 
Friday final test
Friday final testFriday final test
Friday final test
bcoder
 
Managing and evolving JavaScript Code
Managing and evolving JavaScript CodeManaging and evolving JavaScript Code
Managing and evolving JavaScript Code
Jean Carlo Emer
 
What's new in the latest source{d} releases!
What's new in the latest source{d} releases!What's new in the latest source{d} releases!
What's new in the latest source{d} releases!
source{d}
 
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Fabrice Bernhard
 
Shaping the Future of Automatic Programming
Shaping the Future of Automatic ProgrammingShaping the Future of Automatic Programming
Shaping the Future of Automatic Programming
Christos Tsakostas
 
Best practices for structuring Machine Learning code
Best practices for structuring Machine Learning codeBest practices for structuring Machine Learning code
Best practices for structuring Machine Learning code
Erlangen Artificial Intelligence & Machine Learning Meetup
 
TDD - Cultivating a Beginner's Mind
TDD -  Cultivating a Beginner's MindTDD -  Cultivating a Beginner's Mind
TDD - Cultivating a Beginner's Mind
Shai Yallin
 
The Power of Feedback Loops
The Power of Feedback LoopsThe Power of Feedback Loops
The Power of Feedback Loops
AgileCymru
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening
Maven Logix
 
10Pro Code Injector
10Pro Code Injector10Pro Code Injector
10Pro Code Injector
10pro
 
How to Embed Codeless Test Automation Into DevOps
How to Embed Codeless Test Automation Into DevOpsHow to Embed Codeless Test Automation Into DevOps
How to Embed Codeless Test Automation Into DevOps
Perfecto by Perforce
 
Conway's transformation
Conway's transformationConway's transformation
Conway's transformation
Alexey Tokar
 
technical debt management strategies
technical debt management strategiestechnical debt management strategies
technical debt management strategies
Raquel Pau
 
Slides for Houston iPhone Developers' Meetup (April 2012)
Slides for Houston iPhone Developers' Meetup (April 2012)Slides for Houston iPhone Developers' Meetup (April 2012)
Slides for Houston iPhone Developers' Meetup (April 2012)lqi
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
Boris Dominic
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
Atish Narlawar
 

Similar to Software Craftsmanship (20)

Technical debt management strategies
Technical debt management strategiesTechnical debt management strategies
Technical debt management strategies
 
Introduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agileIntroduzione alle metodologie di sviluppo agile
Introduzione alle metodologie di sviluppo agile
 
Sonar
Sonar Sonar
Sonar
 
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
 
Managing and evolving JavaScript Code
Managing and evolving JavaScript CodeManaging and evolving JavaScript Code
Managing and evolving JavaScript Code
 
What's new in the latest source{d} releases!
What's new in the latest source{d} releases!What's new in the latest source{d} releases!
What's new in the latest source{d} releases!
 
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
Modernisation of legacy PHP applications using Symfony2 - PHP Northeast Confe...
 
Shaping the Future of Automatic Programming
Shaping the Future of Automatic ProgrammingShaping the Future of Automatic Programming
Shaping the Future of Automatic Programming
 
Best practices for structuring Machine Learning code
Best practices for structuring Machine Learning codeBest practices for structuring Machine Learning code
Best practices for structuring Machine Learning code
 
TDD - Cultivating a Beginner's Mind
TDD -  Cultivating a Beginner's MindTDD -  Cultivating a Beginner's Mind
TDD - Cultivating a Beginner's Mind
 
The Power of Feedback Loops
The Power of Feedback LoopsThe Power of Feedback Loops
The Power of Feedback Loops
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening
 
10Pro Code Injector
10Pro Code Injector10Pro Code Injector
10Pro Code Injector
 
How to Embed Codeless Test Automation Into DevOps
How to Embed Codeless Test Automation Into DevOpsHow to Embed Codeless Test Automation Into DevOps
How to Embed Codeless Test Automation Into DevOps
 
Conway's transformation
Conway's transformationConway's transformation
Conway's transformation
 
technical debt management strategies
technical debt management strategiestechnical debt management strategies
technical debt management strategies
 
Slides for Houston iPhone Developers' Meetup (April 2012)
Slides for Houston iPhone Developers' Meetup (April 2012)Slides for Houston iPhone Developers' Meetup (April 2012)
Slides for Houston iPhone Developers' Meetup (April 2012)
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Technical Debt.pptx
Technical Debt.pptxTechnical Debt.pptx
Technical Debt.pptx
 

Recently uploaded

English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
BrazilAccount1
 
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
ssuser7dcef0
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
Vijay Dialani, PhD
 
Unbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptxUnbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptx
ChristineTorrepenida1
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
Kamal Acharya
 
Basic Industrial Engineering terms for apparel
Basic Industrial Engineering terms for apparelBasic Industrial Engineering terms for apparel
Basic Industrial Engineering terms for apparel
top1002
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
VENKATESHvenky89705
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Teleport Manpower Consultant
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Dr.Costas Sachpazis
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
gerogepatton
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
Intella Parts
 
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&BDesign and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Sreedhar Chowdam
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
BrazilAccount1
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
fxintegritypublishin
 
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERSCW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
veerababupersonal22
 
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTSHeap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Soumen Santra
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
bakpo1
 
14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application
SyedAbiiAzazi1
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
WENKENLI1
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
FluxPrime1
 

Recently uploaded (20)

English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
 
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
NUMERICAL SIMULATIONS OF HEAT AND MASS TRANSFER IN CONDENSING HEAT EXCHANGERS...
 
ML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptxML for identifying fraud using open blockchain data.pptx
ML for identifying fraud using open blockchain data.pptx
 
Unbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptxUnbalanced Three Phase Systems and circuits.pptx
Unbalanced Three Phase Systems and circuits.pptx
 
Final project report on grocery store management system..pdf
Final project report on grocery store management system..pdfFinal project report on grocery store management system..pdf
Final project report on grocery store management system..pdf
 
Basic Industrial Engineering terms for apparel
Basic Industrial Engineering terms for apparelBasic Industrial Engineering terms for apparel
Basic Industrial Engineering terms for apparel
 
road safety engineering r s e unit 3.pdf
road safety engineering  r s e unit 3.pdfroad safety engineering  r s e unit 3.pdf
road safety engineering r s e unit 3.pdf
 
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdfTop 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
Top 10 Oil and Gas Projects in Saudi Arabia 2024.pdf
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
 
Forklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella PartsForklift Classes Overview by Intella Parts
Forklift Classes Overview by Intella Parts
 
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&BDesign and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
Design and Analysis of Algorithms-DP,Backtracking,Graphs,B&B
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
 
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERSCW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
CW RADAR, FMCW RADAR, FMCW ALTIMETER, AND THEIR PARAMETERS
 
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTSHeap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
Heap Sort (SS).ppt FOR ENGINEERING GRADUATES, BCA, MCA, MTECH, BSC STUDENTS
 
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
一比一原版(SFU毕业证)西蒙菲莎大学毕业证成绩单如何办理
 
14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application14 Template Contractual Notice - EOT Application
14 Template Contractual Notice - EOT Application
 
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdfGoverning Equations for Fundamental Aerodynamics_Anderson2010.pdf
Governing Equations for Fundamental Aerodynamics_Anderson2010.pdf
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
 

Software Craftsmanship

  • 1. MANFREDI GIORDANO, 09/04/2020 SoftwareCraftsmanship Raising the bar of professional software development[citation needed] 1
  • 3. Disclaimers I am by no means expert in this field I am not implying we are not already doing this 3
  • 4. 4
  • 5. MANFREDI GIORDANO, 09/04/2020 • Change in focus: industrial -> engineering -> craft • Emphasis on coding skills and on the journey • Takes ideas from some influential books • The Pragmatic Programmer (Andrew Hunt, David Thomas, 2009) • Clean Code (Robert C. Martin, 2009) • Originates from a "fork" of the Agile movement • As old as writing software SoftwareCraftsmanship 5
  • 9. MANFREDI GIORDANO, 09/04/2020 • Changing (improving) existing code while preserving the external behaviour of the system • No new code should be added • Small changes at once • Influential books: • Refactoring: Improving the Design of Existing Code (Martin Fowler, 1999) • Working Effectively with Legacy Code (Michael Feathers, 2004) Whatisrefactoring? 9
  • 10. Robert C. Martin Boy Scout Rule: "Always leave the code in a better state than you found it" 10
  • 11. MANFREDI GIORDANO, 09/04/2020 • Broken window theory Whyisrefactoringneeded? 11
  • 13. MANFREDI GIORDANO, 09/04/2020 • Broken window theory • Hard to get design & implementation right at first attempt • Even if we do, any software will need to evolve • It lowers the cost of future enhancements and product evolutions • Foundation for rapid delivery – not only "the code looks cleaner" • Never-ending journey, i.e. always room for improvement Whyisrefactoringneeded? 13
  • 14. 14
  • 15. Refactoring in practice • Many ways of refactoring existing code • Rename Variable is underrated! • Linked to both Agile and Extreme Programming • Technical debt management • Test automation, test coverage, Continuous Integration, Test-Driven Development, pair programming, code review 15
  • 17. MANFREDI GIORDANO, 09/04/2020 • "If it ain't broke, don't fix it" • What if a seemingly harmless change breaks something? Criticisms 17
  • 19. MANFREDI GIORDANO, 09/04/2020 • "If it ain't broke, don't fix it" • What if a seemingly harmless change breaks something? • Never rewrite software from scratch – "the single worst strategic mistake that any software company can make" (Joel Spolsky) • No universally accepted definition of well-written code • Makes feature branching more difficult • Should we plan / allocate time for it? • No! "Opportunistic refactoring" (Martin Fowler) Criticisms 19
  • 20. Joshua Kerievsky "By continuously improving the design of code, we make it easier and easier to work with." "If you get into the hygienic habit of refactoring continuously, you'll find that it is easier to extend and maintain code." 20
  • 21. MANFREDI GIORDANO, 09/04/2020 • Manifesto for Software Craftsmanship (2009)
 http://manifesto.softwarecraftsmanship.org • The Pragmatic Programmer: From Journeyman to Master (Andrew Hunt, David Thomas, 2009)
 https://pragprog.com/book/tpp/the-pragmatic-programmer • Refactoring: Improving the Design of Existing Code (Martin Fowler, 1999)
 https://martinfowler.com/books/refactoring.html • Clean Code: A Handbook of Agile Software Craftsmanship (Robert C. Martin, 2009)
 http://cleancoder.com/files/cleanCodeCourse.md • Working Effectively with Legacy Code (Michael Feathers, 2004)
 https://www.oreilly.com/library/view/working-effectively-with/0131177052/ • Refactoring to Patterns (Joshua Kerievsky, 2004)
 https://www.industriallogic.com/xp/refactoring/ References(1/3) 21
  • 22. MANFREDI GIORDANO, 09/04/2020 • Broken windows theory (James Q. Wilson, George L. Kelling, 1982)
 https://www.theatlantic.com/ideastour/archive/windows.html • Online catalog of refactorings (Martin Fowler)
 https://www.refactoring.com/catalog/ • Scala's coding standard
 https://github.com/scala/scala/blob/2.13.x/CONTRIBUTING.md#coding-standards • Things You Should Never Do, Part I (Joel Spolski, 2000)
 https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/ • OpportunisticRefactoring (Martin Fowler, 2011)
 https://martinfowler.com/bliki/OpportunisticRefactoring.html • Refactoring -- Not on the backlog! (Ron Jeffries, 2014)
 https://ronjeffries.com/xprog/articles/refactoring-not-on-the-backlog// References(2/3) 22
  • 23. MANFREDI GIORDANO, 09/04/2020 • Workflows of Refactoring (Martin Fowler, 2014)
 https://martinfowler.com/articles/workflowsOfRefactoring/ • What is Software Craftsmanship? (David Max, 2016)
 https://www.linkedin.com/pulse/what-software-craftsmanship-david-max/ • How we work efficiently with legacy code (2020)
 https://inside.getyourguide.com/blog/2020/1/24/how-we-work-efficiently-with-legacy-code • What makes for readable code?
 https://dev.to/ben/what-makes-for-readable-code-34o7 • Boolean parameters are wrong (havoc, 2011)
 https://blog.ometer.com/2011/01/20/boolean-parameters-are-wrong/ • https://en.wikipedia.org/wiki/Software_craftsmanship • https://en.wikipedia.org/wiki/Code_refactoring • https://en.wikipedia.org/wiki/Broken_windows_theory References(3/3) 23
  • 24. MANFREDI GIORDANO, 09/04/2020 • London Software Craftsmanship Community (LSCC)
 https://www.meetup.com/london-software-craftsmanship/ • SC London
 https://sc-london.com • French Riviera Software Craftsmanship Community
 https://www.meetup.com/Riviera-SCC/ • Software Crafters Barcelona
 https://softwarecrafters.barcelona • Software Craftsmanship North America (SCNA)
 https://scna.softwarecraftsmanship.org • Many others... Communities&Conferences 24
  • 25. "Thanks for coming to my TED talk" 25
  • 30. Alan Key "Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves." 30
  • 31. Gerald Weinberg "If builders built buildings the way programmers wrote programs, then the first woodpecker that came along wound destroy civilisation." 31