SlideShare a Scribd company logo
Keeping Code Agile
Agile Manchester
11th
May 2016
#AgileManc
#KeepingCodeAgile
David Legge
@TheCodeCleaner
Working effectively with Legacy Code
Michael Feathers
“I never
wrote any
other
sort”
- my dad
Working Effectively with Legacy Code
Michael Feathers
Invaluable toolbox
● How to isolate for testing
● Create a test harness
● Baselines and documents
current behaviour
● Allows further development
with confidence
#KeepingCodeAgile
Why?
Entropy happens
Imagine yourself
3am on the day of release
Who?
Everyone
Needs support from business
When?
All the time
Small deferments possible
What?
Changable
Maintainable
Readable
No Dragons
What isn't Agile Code?
Greenfield to Legacy
In 6 months
Swimming in Treacle
Spaghetti Code
Weak groupings
Big Buckets
Scared to Commit
Code Wars
“Don't touch my code”
Here be Dragons
Here be Dragons
Well go slay them
Learn the code by changing it
Build momentum
It's
software
not
stoneware
Make it work
Then make it better
You're not 'Done'
Until you've refactored
Integrating more than a days work is risky
Work In Progress
=
Work At Risk
Small change
Smaller risk
“Software has diseconomies of scale”
@allenkellynet
Bank your work
Use git/hg's local repo
Minimal branching
Manage the risk
Evolve it
Manage the risk
Prototype it
Manage the risk
Frontload it
There's only
one
source of truth in the codebase
And its not the comments
Clean Code – 'Uncle Bob' Martin
My bible
Key concepts:
● Abstraction
● Don't repeat yourself
● Naming
● Commenting
Need tests you can be confident in
Don't be strangled by tests
Not enough
Too many
Too fragile
Too slow
Pyramid of Tests
Christmas Tree of Tests
UI
Rest API
Lean build
Art of Agile Development – Warden & Shore
Key Concepts:
● 10 minute build
● Collective Code
Ownership
Move analysis offline
It's a Learning Opportunity
Look after the
Goose that lays the Golden Egg
Be Proactive
Manual decision
Single-click deploy
#KeepingCodeAgile
David Legge
@TheCodeCleaner

More Related Content

What's hot

B leach
B leachB leach
B leach
NASAPMC
 
There's no such thing as DevSecOps
There's no such thing as DevSecOpsThere's no such thing as DevSecOps
There's no such thing as DevSecOps
Dave Mangot
 
GETTING THINGS DONE: WHAT I LEARNED FROM APPLYING GTD
GETTING THINGS DONE: WHAT I LEARNED FROM APPLYING GTDGETTING THINGS DONE: WHAT I LEARNED FROM APPLYING GTD
GETTING THINGS DONE: WHAT I LEARNED FROM APPLYING GTD
JacobRogers53
 
How to Avoid End-of-Life Software Pitfalls
How to Avoid End-of-Life Software PitfallsHow to Avoid End-of-Life Software Pitfalls
How to Avoid End-of-Life Software Pitfalls
Aventis Systems, Inc.
 
Stop multiplying by 4: Practical Software Estimation
Stop multiplying by 4: Practical Software EstimationStop multiplying by 4: Practical Software Estimation
Stop multiplying by 4: Practical Software Estimation
Chuck Reeves
 
Cyber Security Product Design w/ Symantec's Director of Product Management
Cyber Security Product Design w/ Symantec's Director of Product ManagementCyber Security Product Design w/ Symantec's Director of Product Management
Cyber Security Product Design w/ Symantec's Director of Product Management
Product School
 
Are You Building the Right Thing? - Janet G @ CMBAgileConf 2016
Are You Building the Right Thing? - Janet G @ CMBAgileConf 2016Are You Building the Right Thing? - Janet G @ CMBAgileConf 2016
Are You Building the Right Thing? - Janet G @ CMBAgileConf 2016
ColomboCampsCommunity
 
Top 10 construction safety slogans for 2013
Top 10 construction safety slogans for 2013Top 10 construction safety slogans for 2013
Top 10 construction safety slogans for 2013
Lukman Nulhakiem
 
What Testers Can Learn to Collaborate Effectively with Programmers, others
What Testers Can Learn to Collaborate Effectively with Programmers, othersWhat Testers Can Learn to Collaborate Effectively with Programmers, others
What Testers Can Learn to Collaborate Effectively with Programmers, others
lisacrispin
 
DevOps and IT security
DevOps and IT securityDevOps and IT security
DevOps and IT security
ch.osme
 
EER Modeling
EER ModelingEER Modeling
EER Modeling
RANVIJAY GAUR
 
Grammar of truth and lies
Grammar of truth and liesGrammar of truth and lies
Grammar of truth and lies
Peter Bleackley
 
How to drive growth to your early stage startup
How to drive growth to your early stage startupHow to drive growth to your early stage startup
How to drive growth to your early stage startup
Viral Loops
 

What's hot (13)

B leach
B leachB leach
B leach
 
There's no such thing as DevSecOps
There's no such thing as DevSecOpsThere's no such thing as DevSecOps
There's no such thing as DevSecOps
 
GETTING THINGS DONE: WHAT I LEARNED FROM APPLYING GTD
GETTING THINGS DONE: WHAT I LEARNED FROM APPLYING GTDGETTING THINGS DONE: WHAT I LEARNED FROM APPLYING GTD
GETTING THINGS DONE: WHAT I LEARNED FROM APPLYING GTD
 
How to Avoid End-of-Life Software Pitfalls
How to Avoid End-of-Life Software PitfallsHow to Avoid End-of-Life Software Pitfalls
How to Avoid End-of-Life Software Pitfalls
 
Stop multiplying by 4: Practical Software Estimation
Stop multiplying by 4: Practical Software EstimationStop multiplying by 4: Practical Software Estimation
Stop multiplying by 4: Practical Software Estimation
 
Cyber Security Product Design w/ Symantec's Director of Product Management
Cyber Security Product Design w/ Symantec's Director of Product ManagementCyber Security Product Design w/ Symantec's Director of Product Management
Cyber Security Product Design w/ Symantec's Director of Product Management
 
Are You Building the Right Thing? - Janet G @ CMBAgileConf 2016
Are You Building the Right Thing? - Janet G @ CMBAgileConf 2016Are You Building the Right Thing? - Janet G @ CMBAgileConf 2016
Are You Building the Right Thing? - Janet G @ CMBAgileConf 2016
 
Top 10 construction safety slogans for 2013
Top 10 construction safety slogans for 2013Top 10 construction safety slogans for 2013
Top 10 construction safety slogans for 2013
 
What Testers Can Learn to Collaborate Effectively with Programmers, others
What Testers Can Learn to Collaborate Effectively with Programmers, othersWhat Testers Can Learn to Collaborate Effectively with Programmers, others
What Testers Can Learn to Collaborate Effectively with Programmers, others
 
DevOps and IT security
DevOps and IT securityDevOps and IT security
DevOps and IT security
 
EER Modeling
EER ModelingEER Modeling
EER Modeling
 
Grammar of truth and lies
Grammar of truth and liesGrammar of truth and lies
Grammar of truth and lies
 
How to drive growth to your early stage startup
How to drive growth to your early stage startupHow to drive growth to your early stage startup
How to drive growth to your early stage startup
 

Similar to Keeping Code Agile

Introduction to react js
Introduction to react jsIntroduction to react js
Introduction to react js
MunirMahmud3
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPress
mtoppa
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential Skills
John Choi
 
We design orientation class
We design orientation classWe design orientation class
We design orientation class
MunirMahmud3
 
Collective ownership in agile teams
Collective ownership in agile teamsCollective ownership in agile teams
Collective ownership in agile teams
Jyaasa Technologies
 
While You Are Coding
While You Are CodingWhile You Are Coding
While You Are Coding
Zeynep Düzyurt
 
30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook
Gabriel Paunescu 🤖
 
Atlassian: The latest and greatest - May/June 2013
Atlassian: The latest and greatest - May/June 2013Atlassian: The latest and greatest - May/June 2013
Atlassian: The latest and greatest - May/June 2013
Sven Peters
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
Christian Heilmann
 
Developer Week
Developer WeekDeveloper Week
Developer Week
Docker, Inc.
 
Best pratice
Best praticeBest pratice
Best pratice
Eugenio Romano
 
Workshop fight legacy code write unit test
Workshop fight legacy code write unit testWorkshop fight legacy code write unit test
Workshop fight legacy code write unit test
Tung Nguyen Thanh
 
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015][XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
Agile đây Vietnam
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
Igor Moochnick
 
How to successfully grow a code review culture
How to successfully grow a code review cultureHow to successfully grow a code review culture
How to successfully grow a code review culture
Nina Zakharenko
 
Writing Clean Code
Writing Clean CodeWriting Clean Code
Writing Clean Code
Nascenia IT
 
Software quality
Software qualitySoftware quality
Software quality
5minpause
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021
DicodingEvent
 
Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?
Danny van Kasteel
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
Steven Smith
 

Similar to Keeping Code Agile (20)

Introduction to react js
Introduction to react jsIntroduction to react js
Introduction to react js
 
WordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPressWordCamp Nashville: Clean Code for WordPress
WordCamp Nashville: Clean Code for WordPress
 
Software Development Essential Skills
Software Development Essential SkillsSoftware Development Essential Skills
Software Development Essential Skills
 
We design orientation class
We design orientation classWe design orientation class
We design orientation class
 
Collective ownership in agile teams
Collective ownership in agile teamsCollective ownership in agile teams
Collective ownership in agile teams
 
While You Are Coding
While You Are CodingWhile You Are Coding
While You Are Coding
 
30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook30% faster coder on-boarding when you have a code cookbook
30% faster coder on-boarding when you have a code cookbook
 
Atlassian: The latest and greatest - May/June 2013
Atlassian: The latest and greatest - May/June 2013Atlassian: The latest and greatest - May/June 2013
Atlassian: The latest and greatest - May/June 2013
 
Planning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teamsPlanning JavaScript and Ajax for larger teams
Planning JavaScript and Ajax for larger teams
 
Developer Week
Developer WeekDeveloper Week
Developer Week
 
Best pratice
Best praticeBest pratice
Best pratice
 
Workshop fight legacy code write unit test
Workshop fight legacy code write unit testWorkshop fight legacy code write unit test
Workshop fight legacy code write unit test
 
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015][XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
[XPday.vn] Legacy code workshop (at) [XP Day Vietnam 2015]
 
Arch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best PracticesArch factory - Agile Design: Best Practices
Arch factory - Agile Design: Best Practices
 
How to successfully grow a code review culture
How to successfully grow a code review cultureHow to successfully grow a code review culture
How to successfully grow a code review culture
 
Writing Clean Code
Writing Clean CodeWriting Clean Code
Writing Clean Code
 
Software quality
Software qualitySoftware quality
Software quality
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021
 
Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?Unit Test Lab - Why Write Unit Tests?
Unit Test Lab - Why Write Unit Tests?
 
Cinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patternsCinci ug-january2011-anti-patterns
Cinci ug-january2011-anti-patterns
 

Recently uploaded

Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
fredae14
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
Zilliz
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
kumardaparthi1024
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
MichaelKnudsen27
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
Federico Razzoli
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 

Recently uploaded (20)

Recommendation System using RAG Architecture
Recommendation System using RAG ArchitectureRecommendation System using RAG Architecture
Recommendation System using RAG Architecture
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Generating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and MilvusGenerating privacy-protected synthetic data using Secludy and Milvus
Generating privacy-protected synthetic data using Secludy and Milvus
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
GenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizationsGenAI Pilot Implementation in the organizations
GenAI Pilot Implementation in the organizations
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Nordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptxNordic Marketo Engage User Group_June 13_ 2024.pptx
Nordic Marketo Engage User Group_June 13_ 2024.pptx
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
Webinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data WarehouseWebinar: Designing a schema for a Data Warehouse
Webinar: Designing a schema for a Data Warehouse
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 

Keeping Code Agile