legacy code is fear @ale unconference 2014 krakow 2014 08 21
TRANSCRIPT
Legacy Code is Fear
www.mozaicworks.com
Me
Adi BolboacProgrammerOrganizational & TechnicalTrainer & Coach
www.mozaicworks.com
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
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
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
Current situation
You need to add some features to an existing old project
www.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
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.
www.mozaicworks.com
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
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, unit testing, acceptance testing, frameworks, etc
www.mozaicworks.com
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
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
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 experiments
Learn
Extend to bigger scale experiments
Learn
Do a small change request in production
Learn
www.mozaicworks.com
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
www.mozaicworks.com
Thank you!
www.mozaicworks.com
Contact Me
Working Fast and SAFE with Existing Code workshop
Product Inception
Code retreat
www.mozaicworks.com
See the slides at http://www.slideshare.net/adibolb
Extend your mentoring & training capacityAccelerate learning through communities of practiceGrow your functional leaders and top talents
http://www.mozaicworks.com
@adibolb
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?itok=WSI67yEZ
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