Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Legacy Code is Fear
www.mozaicworks.com
Me
Adi Bolboacă
Programmer
Organizational & Technical
Trainer & Coach www.mozaicworks.com
Legacy code scenario
Current situation vs Better situation
Not knowing what the actual code does
Vs
Gradually understandin...
Legacy code scenario
Reasons why to change existing code:
Fix a bug
Add a feature
Have automated tests for the system core...
Legacy code scenario
Reasons why not to change existing
code:
It looks ugly
I would like to see nicer code
I want to updat...
Current situation
You need to add some features
to an existing old projectwww.mozaicworks.com
Current situation
They tell you that you have a very
short time to do it www.mozaicworks.com
Current situation
You are afraid to change the
system www.mozaicworks.com
Current situation
The time feels waaaaay to short
www.mozaicworks.com
Current situation
And you tell your manager: I
cannot do it
www.mozaicworks.com
Current situation
But the manager says...
www.mozaicworks.com
Current situation
It takes double the time you said
www.mozaicworks.com
Current situation
Your company loses money.
Your customer loses money.
www.mozaicworks.com
Current situation
Everyone is stressed
www.mozaicworks.com
Better situation
Someone signs a contract to add
some features to an existing old
project www.mozaicworks.com
Better situation
Your team starts writing
characterization tests to
understand the change www.mozaicworks.com
Better situation
Your team writes end-to-end
tests to understand the external
dependencies
www.mozaicworks.com
Better situation
Your team splits the end-to-end
tests into integration tests and
unit tests
www.mozaicworks.com
Better situation
Your team starts adding more unit
tests around the area that needs
to be modified
www.mozaicworks.com
Better situation
Every member of the team is using
the refactoring skills to improve
the design
www.mozaicworks.com
Better situation
Your team adds the new feature.
It is fully test automated.
www.mozaicworks.com
Better situation
Your testers make the final
exploratory and manual tests
www.mozaicworks.com
www.mozaicworks.com
Better situation
The team delivers on time.
www.mozaicworks.com
Better situation
Your company wins money and
respect from your customer.
Your customer wins money and has
trust in you.
ww...
The problem: Legacy code is fear
Our unknowns are making us afraid
Automating tests minimizes the unknowns
By automating t...
Very nice
But how to do this?
www.mozaicworks.com
Find the known unknowns of the
team
Talk with the team
Find what they do not know: domain
knowledge, programming languages...
Make small scale experiments
Use a smaller problem at first
Learn how to write charaterization tests
for that problem
Use ...
The littany against fear
I must not fear.
Fear is the mind-killer.
Fear is the little-death that brings total obliteration...
Solve the legacy code fear: invest
Invest in the future business agility of your
company
www.mozaicworks.com
Solve the legacy code fear: learn
Find the unknowns of the team
Make a medium-term learning program
Make small scale exper...
What's next?
Read the Working Effectively with Legacy code
book by Michael Feathers
Find a good trainer to help the team l...
Questions?
www.mozaicworks.com
Thank you!
Check my work on
blog.adrianbolboaca.ro
(articles and code casts)
www.mozaicworks.com
See the slides at
http://...
Extend your mentoring & training
capacity
Accelerate learning through
communities of practice
Grow your functional leaders...
References
http://upload.wikimedia.org/wikipedia/commons/7/7f/Snake_warning_sign.jpg
http://upload.wikimedia.org/wikipedia...
Upcoming SlideShare
Loading in …5
×

Legacy Code is Fear @Swanseacon 08 09 2015

893 views

Published on

My talk "Legacy Code is Fear" at Swansea Conference http://swancon.co.uk in 2015

Published in: Software
  • Be the first to comment

Legacy Code is Fear @Swanseacon 08 09 2015

  1. 1. Legacy Code is Fear www.mozaicworks.com
  2. 2. Me Adi Bolboacă Programmer Organizational & Technical Trainer & Coach www.mozaicworks.com
  3. 3. Legacy code scenario Current situation vs Better situation Not knowing what the actual code does Vs Gradually understanding the code and changing it to the minimum www.mozaicworks.com
  4. 4. Legacy code scenario Reasons why to change existing code: Fix a bug Add a feature Have automated tests for the system core www.mozaicworks.com
  5. 5. Legacy code scenario Reasons why not to change existing code: It looks ugly I would like to see nicer code I want to update to newest framework ... www.mozaicworks.com
  6. 6. Current situation You need to add some features to an existing old projectwww.mozaicworks.com
  7. 7. Current situation They tell you that you have a very short time to do it www.mozaicworks.com
  8. 8. Current situation You are afraid to change the system www.mozaicworks.com
  9. 9. Current situation The time feels waaaaay to short www.mozaicworks.com
  10. 10. Current situation And you tell your manager: I cannot do it www.mozaicworks.com
  11. 11. Current situation But the manager says... www.mozaicworks.com
  12. 12. Current situation It takes double the time you said www.mozaicworks.com
  13. 13. Current situation Your company loses money. Your customer loses money. www.mozaicworks.com
  14. 14. Current situation Everyone is stressed www.mozaicworks.com
  15. 15. Better situation Someone signs a contract to add some features to an existing old project www.mozaicworks.com
  16. 16. Better situation Your team starts writing characterization tests to understand the change www.mozaicworks.com
  17. 17. Better situation Your team writes end-to-end tests to understand the external dependencies www.mozaicworks.com
  18. 18. Better situation Your team splits the end-to-end tests into integration tests and unit tests www.mozaicworks.com
  19. 19. Better situation Your team starts adding more unit tests around the area that needs to be modified www.mozaicworks.com
  20. 20. Better situation Every member of the team is using the refactoring skills to improve the design www.mozaicworks.com
  21. 21. Better situation Your team adds the new feature. It is fully test automated. www.mozaicworks.com
  22. 22. Better situation Your testers make the final exploratory and manual tests www.mozaicworks.com
  23. 23. www.mozaicworks.com
  24. 24. Better situation The team delivers on time. www.mozaicworks.com
  25. 25. Better situation Your company wins money and respect from your customer. Your customer wins money and has trust in you. www.mozaicworks.com
  26. 26. The problem: Legacy code is fear Our unknowns are making us afraid Automating tests minimizes the unknowns By automating tests we can increase confidence www.mozaicworks.com
  27. 27. Very nice But how to do this? www.mozaicworks.com
  28. 28. Find the known unknowns of the team Talk with the team Find what they do not know: domain knowledge, programming languages, unit testing, acceptance testing, frameworks, etc www.mozaicworks.com
  29. 29. Make small scale experiments Use a smaller problem at first Learn how to write charaterization tests for that problem Use coding dojos and mob programming to practice together www.mozaicworks.com
  30. 30. The littany against fear I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. And when it has gone past I will turn the inner eye to see its path. Where the fear has gone there will be nothing.... only I will remain Dune by Frank Herbert www.mozaicworks.com
  31. 31. Solve the legacy code fear: invest Invest in the future business agility of your company www.mozaicworks.com
  32. 32. Solve the legacy code fear: learn Find the unknowns of the team Make a medium-term learning program Make small scale experiments Learn Extend to bigger scale experiments Learn Do a small change request in production Learn www.mozaicworks.com
  33. 33. What's next? Read the Working Effectively with Legacy code book by Michael Feathers Find a good trainer to help the team learn Build learning program with team&trainer Learn from each experience Check blog.adrianbolboaca.ro www.mozaicworks.com
  34. 34. Questions? www.mozaicworks.com
  35. 35. Thank you! Check my work on blog.adrianbolboaca.ro (articles and code casts) www.mozaicworks.com See the slides at http://www.slideshare.net/adibolb
  36. 36. Extend your mentoring & training capacity Accelerate learning through communities of practice Grow your functional leaders and top talents http://www.mozaicworks.com adrian.bolboaca@mozaicworks.com @adibolb
  37. 37. References http://upload.wikimedia.org/wikipedia/commons/7/7f/Snake_warning_sign.jpg http://upload.wikimedia.org/wikipedia/commons/4/44/CatLolCatExample.jpg http://upload.wikimedia.org/wikipedia/commons/8/88/I_IZ_SERIUS_ADMNIM_THIZ_IZ_SERIUS_BIZNIS_lolcat.jpg http://pixabay.com/p-160097/?no_redirect http://www.damemagazine.com/sites/default/files/styles/feature_wide/public/field/image/biological-clock.jpg?ito http://fc01.deviantart.net/fs71/i/2012/149/6/9/no__9gag__by_hujikari-d51hu4l.jpg http://upload.wikimedia.org/wikipedia/commons/1/12/We_Can_Do_It!.jpg http://upload.wikimedia.org/wikipedia/commons/2/25/Dive_hand_signal_Descend.png http://pixabay.com/go/?t=/static/uploads/photo/2012/04/18/13/01/sign-36968_150.png%3Fattachment http://pixabay.com/static/uploads/photo/2014/06/03/19/38/plate-361516_640.jpg http://upload.wikimedia.org/wikipedia/commons/0/0c/Dive_hand_signal_OK_1.png www.mozaicworks.com

×