SlideShare a Scribd company logo
1 of 30
Download to read offline
(My Journey to)
Working Effectively with
Legacy Code
Daniel Brown
About Me
Software Engineer for 6 years
Currently at: BBC (5 months)
Previously: eBay (5.5 years)
Usual disclaimer:
Views and opinions are my own…
@_dlpb
Let me take you on a Journey
Let me take you back in time
How do I feel when I come to work?
And then one day...
How do I feel coming to work?
Why did I feel like that?
So what is Legacy Code
So what is Legacy Code
Legacy Code is … code from the past, maintained because it works
Michael Feathers
http://bit.ly/30PJ6s3
You can’t escape it
So, you’re working on a legacy project?
So, you’re working on a legacy project?
That’s all very negative
So what can you do about it?
It can affect your mental state
If you only look at it as something bad, it will only ever be something bad
*Not an expert
You could switch jobs
You could switch jobs
Negatives to Positives
Gain Control
Perseverance is key
Back to School
Retrospect regularly
Learn the System
Refactor Safely
Create a Safety Net
Talk to others
Get Investment from the Business
Learn your IDE
Learn where to invest and draw the line
Form a plan
A story of how
A story of how
A story of how
Get Investment
Learn your IDE
Learn Where to Draw the Line
A story of how
Learn the System
Form a Plan
Talk to Others
Create a Safety Net
Refactor Safely
A story of how
Congratulations!
But it doesn't stop
there
Continuous Improvement
Continuous Improvement
Tests
Plan
Documentation
Retrospect
Continuous Improvement
It’s not as bad as you think
Fin
Links
●  Michael Feathers, Working Effectively with Legacy Code (Paper), http://bit.ly/30PJ6s3
●  Dan Pink, Ted Talk on Incentives, http://bit.ly/1Ba8st
●  Martin Fowler, Refactoring Techniques, https://refactoring.com/
●  Michael Feathers, Working Effectively with Legacy Code (Book) http://bit.ly/2LgOzCM
●  Kevlin Henney, 97 Things Every Developer Should Know (Boy Scout Rule), http://bit.ly/2ZqMddv
@_dlpb

More Related Content

What's hot

5 Why Training Slides Oct 14, 2009
5 Why Training Slides Oct 14, 20095 Why Training Slides Oct 14, 2009
5 Why Training Slides Oct 14, 2009ExerciseLeanLLC
 
Tips for Product Management by Movile Product Coordinator
Tips for Product Management by Movile Product CoordinatorTips for Product Management by Movile Product Coordinator
Tips for Product Management by Movile Product CoordinatorProduct School
 
How can we understand the problem?
How can we understand the problem?How can we understand the problem?
How can we understand the problem?Frank Calberg
 
A Guide to the Five Whys Technique
A Guide to the Five Whys TechniqueA Guide to the Five Whys Technique
A Guide to the Five Whys TechniqueOlivier Serrat
 

What's hot (10)

5 Why Training Slides Oct 14, 2009
5 Why Training Slides Oct 14, 20095 Why Training Slides Oct 14, 2009
5 Why Training Slides Oct 14, 2009
 
Coding In Public
Coding In PublicCoding In Public
Coding In Public
 
Entrepreneur DNA - Does It Exist?
Entrepreneur DNA - Does It Exist?Entrepreneur DNA - Does It Exist?
Entrepreneur DNA - Does It Exist?
 
Tips for Product Management by Movile Product Coordinator
Tips for Product Management by Movile Product CoordinatorTips for Product Management by Movile Product Coordinator
Tips for Product Management by Movile Product Coordinator
 
5 why analysis
5 why analysis5 why analysis
5 why analysis
 
Startup and GO: First Steps
Startup and GO: First StepsStartup and GO: First Steps
Startup and GO: First Steps
 
Time Boxing
Time BoxingTime Boxing
Time Boxing
 
How can we understand the problem?
How can we understand the problem?How can we understand the problem?
How can we understand the problem?
 
Root causes by 5 whys
Root causes by 5 whysRoot causes by 5 whys
Root causes by 5 whys
 
A Guide to the Five Whys Technique
A Guide to the Five Whys TechniqueA Guide to the Five Whys Technique
A Guide to the Five Whys Technique
 

Similar to (My journey to) working effectively with legacy code

Building teams by reinforcing personal feedback loops
Building teams by reinforcing personal feedback loopsBuilding teams by reinforcing personal feedback loops
Building teams by reinforcing personal feedback loopscoaching4IT
 
Building teams by reinforcing personal feedback loops
Building teams by reinforcing personal feedback loopsBuilding teams by reinforcing personal feedback loops
Building teams by reinforcing personal feedback loopscoaching4IT
 
Becoming a professional software developer
Becoming a professional software developerBecoming a professional software developer
Becoming a professional software developerYakov Fain
 
Hayden Shaw - Transforming Your Generational Sticking Points
Hayden Shaw - Transforming Your Generational Sticking PointsHayden Shaw - Transforming Your Generational Sticking Points
Hayden Shaw - Transforming Your Generational Sticking PointsJohn Blue
 
E4IT STARTER - MODULE 13.pdf
E4IT STARTER - MODULE 13.pdfE4IT STARTER - MODULE 13.pdf
E4IT STARTER - MODULE 13.pdfAnna Gandrabura
 
Rebooting the Team - Surge 2013
Rebooting the Team - Surge 2013Rebooting the Team - Surge 2013
Rebooting the Team - Surge 2013Fran Fabrizio
 
Mindset by Ryan Jones
Mindset by Ryan JonesMindset by Ryan Jones
Mindset by Ryan JonesRyan Jones
 
Career Design-Entrepreneur VS Employee
Career Design-Entrepreneur VS EmployeeCareer Design-Entrepreneur VS Employee
Career Design-Entrepreneur VS EmployeePin Kasemsiri
 
A/B testing, optimization and results analysis by Mariia Bocheva, ATD'18
A/B testing, optimization and results analysis by Mariia Bocheva, ATD'18A/B testing, optimization and results analysis by Mariia Bocheva, ATD'18
A/B testing, optimization and results analysis by Mariia Bocheva, ATD'18Mariia Bocheva
 
Google Forms And Quizlet
Google Forms And QuizletGoogle Forms And Quizlet
Google Forms And QuizletJon Corippo
 
7 Things Your First Boss Wants You to Know On Day One
7 Things Your First Boss Wants You to Know On Day One7 Things Your First Boss Wants You to Know On Day One
7 Things Your First Boss Wants You to Know On Day OneEmilyBennington
 
Portfolio Kanban - Low-Friction Method to Improve Organization's Effectiveness
Portfolio Kanban - Low-Friction Method to Improve Organization's EffectivenessPortfolio Kanban - Low-Friction Method to Improve Organization's Effectiveness
Portfolio Kanban - Low-Friction Method to Improve Organization's EffectivenessPawel Brodzinski
 
Software engineering 101 - The basics you should hear about at least once
Software engineering 101 - The basics you should hear about at least onceSoftware engineering 101 - The basics you should hear about at least once
Software engineering 101 - The basics you should hear about at least onceAlexey (Mr_Mig) Migutsky
 
1. communication methods pro forma(1)
1. communication methods pro forma(1)1. communication methods pro forma(1)
1. communication methods pro forma(1)JamesCooperAbel
 
Boosting the skills of your managers - tips and tricks from real life example...
Boosting the skills of your managers - tips and tricks from real life example...Boosting the skills of your managers - tips and tricks from real life example...
Boosting the skills of your managers - tips and tricks from real life example...Cornel FATULESCU
 
Removing Uncertainty in your Decision Making
Removing Uncertainty in your Decision MakingRemoving Uncertainty in your Decision Making
Removing Uncertainty in your Decision MakingBusiness901
 
Productivity tools for students
Productivity tools for studentsProductivity tools for students
Productivity tools for studentsDYPCET
 
The Online vs. Offline Life: Etiquette, Exposure, Privacy, Barriers (Bgimgt56...
The Online vs. Offline Life: Etiquette, Exposure, Privacy, Barriers (Bgimgt56...The Online vs. Offline Life: Etiquette, Exposure, Privacy, Barriers (Bgimgt56...
The Online vs. Offline Life: Etiquette, Exposure, Privacy, Barriers (Bgimgt56...Christopher Allen
 

Similar to (My journey to) working effectively with legacy code (20)

Building teams by reinforcing personal feedback loops
Building teams by reinforcing personal feedback loopsBuilding teams by reinforcing personal feedback loops
Building teams by reinforcing personal feedback loops
 
Building teams by reinforcing personal feedback loops
Building teams by reinforcing personal feedback loopsBuilding teams by reinforcing personal feedback loops
Building teams by reinforcing personal feedback loops
 
Becoming a professional software developer
Becoming a professional software developerBecoming a professional software developer
Becoming a professional software developer
 
Hayden Shaw - Transforming Your Generational Sticking Points
Hayden Shaw - Transforming Your Generational Sticking PointsHayden Shaw - Transforming Your Generational Sticking Points
Hayden Shaw - Transforming Your Generational Sticking Points
 
E4IT STARTER - MODULE 13.pdf
E4IT STARTER - MODULE 13.pdfE4IT STARTER - MODULE 13.pdf
E4IT STARTER - MODULE 13.pdf
 
Rebooting the Team - Surge 2013
Rebooting the Team - Surge 2013Rebooting the Team - Surge 2013
Rebooting the Team - Surge 2013
 
Mindset by Ryan Jones
Mindset by Ryan JonesMindset by Ryan Jones
Mindset by Ryan Jones
 
Career Design-Entrepreneur VS Employee
Career Design-Entrepreneur VS EmployeeCareer Design-Entrepreneur VS Employee
Career Design-Entrepreneur VS Employee
 
Leading agile teams
Leading agile teamsLeading agile teams
Leading agile teams
 
A/B testing, optimization and results analysis by Mariia Bocheva, ATD'18
A/B testing, optimization and results analysis by Mariia Bocheva, ATD'18A/B testing, optimization and results analysis by Mariia Bocheva, ATD'18
A/B testing, optimization and results analysis by Mariia Bocheva, ATD'18
 
Google Forms And Quizlet
Google Forms And QuizletGoogle Forms And Quizlet
Google Forms And Quizlet
 
7 Things Your First Boss Wants You to Know On Day One
7 Things Your First Boss Wants You to Know On Day One7 Things Your First Boss Wants You to Know On Day One
7 Things Your First Boss Wants You to Know On Day One
 
Portfolio Kanban - Low-Friction Method to Improve Organization's Effectiveness
Portfolio Kanban - Low-Friction Method to Improve Organization's EffectivenessPortfolio Kanban - Low-Friction Method to Improve Organization's Effectiveness
Portfolio Kanban - Low-Friction Method to Improve Organization's Effectiveness
 
Software engineering 101 - The basics you should hear about at least once
Software engineering 101 - The basics you should hear about at least onceSoftware engineering 101 - The basics you should hear about at least once
Software engineering 101 - The basics you should hear about at least once
 
1. communication methods pro forma(1)
1. communication methods pro forma(1)1. communication methods pro forma(1)
1. communication methods pro forma(1)
 
Boosting the skills of your managers - tips and tricks from real life example...
Boosting the skills of your managers - tips and tricks from real life example...Boosting the skills of your managers - tips and tricks from real life example...
Boosting the skills of your managers - tips and tricks from real life example...
 
Removing Uncertainty in your Decision Making
Removing Uncertainty in your Decision MakingRemoving Uncertainty in your Decision Making
Removing Uncertainty in your Decision Making
 
Productivity tools for students
Productivity tools for studentsProductivity tools for students
Productivity tools for students
 
Motivation[1]
Motivation[1]Motivation[1]
Motivation[1]
 
The Online vs. Offline Life: Etiquette, Exposure, Privacy, Barriers (Bgimgt56...
The Online vs. Offline Life: Etiquette, Exposure, Privacy, Barriers (Bgimgt56...The Online vs. Offline Life: Etiquette, Exposure, Privacy, Barriers (Bgimgt56...
The Online vs. Offline Life: Etiquette, Exposure, Privacy, Barriers (Bgimgt56...
 

Recently uploaded

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
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
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
 
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
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
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
 
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
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 

Recently uploaded (20)

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
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
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
 
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)
 
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
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
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...
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 

(My journey to) working effectively with legacy code