SlideShare a Scribd company logo
Being effective
with legacy projects
Konstantin Kudryashov | @everzet
What are the two
hardest problems in
software
development?
What are the two hardest problems
in software development?
1. Order of arguments in string and array
functions
2. Which line do you put an opening bracket
on
What is a good
software design?
A software design is
contextual to the
people that use and
produce it
A good design is a
design that supports
people interacting
with it
Any design is a good
design in a system
that nobody uses or
develops
What are the two hardest problems
in software development?
1. Making sure users keep using it
2. Making sure developers keep developing it
Legacy
Technical debt
3 analogies
Restaurant kitchen
Tetris
Broken windows
theory
How do we get a
legacy problem?
How do we get a legacy problem?
1. Users want the software to change
2. Developers want to change the software
3. Constantly
Legacy is a side-effect
of a constant use and
adaptation
In other words...
Being effective with legacy projects
Being effective with legacy projects
Being effective with legacy projects
The system without a
legacy problem is the
system that is not
actively used
Every mature business
has a legacy problem
Greenfield does not
exist in universes
where Excel is
invented
1
paraphrasing Alberto Brandolini
Taking control of
legacy
A technical problem
How do we get a legacy problem?
1. Users want the software to change
2. Developers want to change the software
3. Constantly
People want change
A technical problem
Legacy is a human,
not a technology
problem
You don't deal with
legacy by rewriting
your software
You deal with legacy
by rewriting your
collaboration
Deliberate Discovery
Dealing with legacy in 6 steps
1. Technology Context
2. Business Context
3. Constraints
4. Risk Areas
5. Changing the way we change the software
6. Separating commodity logic from domain
logic
Step 1
Technology Context
Visualise the insight
Being effective with legacy projects
Step 2
Business Context
Get access to
analytics and business
monitoring tools
People controlling
data are the people
controlling the
direction of change
Get access to
stakeholders
Being effective with legacy projects
Step 3
Constraints
Sit with operators
Analyse customers
and their journeys
Research the bug
tracker
Step 4
Map Risk Areas
Highlight risk areas on the map
using discovered
4 Real Data
4 Business Objectives
4 Usage Constraints
4 Technical Constraints
4 Bugs
Step 5
Change the way we change the
software
"We must return
products back to
stock during refund"
5.1: Categorise the change
1. Is it a mission-critical change?
2. Is it a change in a mission-critical area?
3. Will this change affect any area of risk?
5.2: Discover the current behaviour
1. What does this thing do?
2. What if it suddenly stops doing it?
3. How would you know if it doesn't work?
4. How would you know if it does?
Feature: Returned items go back to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Scenario: Refunded items are returned to stock
Scenario: Replaced items are not returned to stock
Feature: Returned items go back to stock
In order to keep track of stock
As a store owner
I want to add items back to stock when they are returned
Scenario: Refunded items are returned to stock
Scenario: Replaced items are not returned to stock
@legacy
Scenario: Item refunded with in-shop credits
@legacy
Scenario: Item refunded to bank account
@legacy
Scenario: Item refunded to PayPal account
5.3: Protect the current behaviour
1. Cover @legacy behaviour in an end-to-end
fashion
2. Make sure that scenarios are green
3. Refactor code to make isolated system-
testing possible
4. Convert scenarios to isolated system-
tests
5. Remove @legacy tag
5.4: Make the change
1. Automate the new scenarios as isolated
system-tests
2. Push the logic down to the unit level with
unit-tests
3. Make unit-tests green
4. Make scenarios green
Being effective with legacy projects
Step 6
Separate commodity logic from
domain logic
Separate commodity logic from
domain logic
4 Not every sub-system needs to change
4 Different sub-systems will change at
different cadence
4 The more aligned our changes are to our
objectives, the smaller they would be
Rewrites are rarely
effective, because
businesses rarely
want to change the
entire system
A full-system rewrite
is an admission of
defeat
We're not stuck with
unsustainable
codebase
We're stuck with
unsustainable
approach to it
If we stop running
from legacy as if it
was a plague...
... and start looking
at it as a normal
phase in a system life
Everything that is
possible in greenfield
becomes possible in
legacy
Being effective with legacy projects
Behaviour Driven
Development
Behaviour Driven
Development
in legacy
Being effective
with legacy projects
Delivering outcomes,
not software
4 Rate talk: https://joind.in/talk/6b377
4 Join us: http://bit.ly/inviqa-careers
4 Get help: http://bit.ly/inviqa-contact

More Related Content

PDF
Moving away from legacy code with BDD
PPTX
Agile testingandautomation
PDF
Modern Agile for Agencies
PDF
Rex Sprint 0 - how build the data model with 2 BA and 3 IT architects
PDF
The Agile Agency
PDF
Specification by example - course summary
PDF
Modern Project Toolbox
PDF
Enabling agile devliery through enabling BDD in PHP projects
Moving away from legacy code with BDD
Agile testingandautomation
Modern Agile for Agencies
Rex Sprint 0 - how build the data model with 2 BA and 3 IT architects
The Agile Agency
Specification by example - course summary
Modern Project Toolbox
Enabling agile devliery through enabling BDD in PHP projects

Viewers also liked (10)

PDF
Min-Maxing Software Costs
PDF
BDD в PHP с Behat и Mink
PDF
BDD для PHP проектов
PDF
Modern Agile Project Toolbox
PDF
Decoupling with Design Patterns and Symfony2 DIC
PDF
Bridging The Communication Gap, Fast
PDF
Moving away from legacy code (AgileCymru)
PDF
Taking back BDD
PDF
Moving away from legacy code with BDD
PDF
Design how your objects talk through mocking
Min-Maxing Software Costs
BDD в PHP с Behat и Mink
BDD для PHP проектов
Modern Agile Project Toolbox
Decoupling with Design Patterns and Symfony2 DIC
Bridging The Communication Gap, Fast
Moving away from legacy code (AgileCymru)
Taking back BDD
Moving away from legacy code with BDD
Design how your objects talk through mocking
Ad

Similar to Being effective with legacy projects (20)

PPTX
Software evolution and maintenance basic concepts and preliminaries
PPT
Software Evolution_Se lect3 btech
PPTX
Підтримка легасі-платформи. Погляд менеджера
PPT
Getting Unstuck: Working with Legacy Code and Data
PPTX
Week 2 SREE.pptx Software reengieering ucp sllides
PDF
Devnology back toschool software reengineering
PDF
Towards preventing software from becoming legacy a road map
PDF
Software modernization
PDF
Managing Software Debt in Practice 2011
PDF
Checklist For Modernizing Your Legacy Application.pdf
PDF
Future Research Challenges in Software Evolution
PDF
Everware cbdi opposites attract 04-12-11
PDF
Old Tech to Shiny New Tech: Strategies on Upgrading Your Code Without a Big Bang
PPT
Legacy Systems in Software Engineering SE26
PPTX
Novelty in Non-Greenfield
PDF
How to Tackle Legacy System Modernization – A Business Owner’s Guide
PPT
SOFTWARE MAINTENANCE -1
PDF
Release your refactoring superpower
PPTX
Technology in financial services
PPTX
Technology in financial services
Software evolution and maintenance basic concepts and preliminaries
Software Evolution_Se lect3 btech
Підтримка легасі-платформи. Погляд менеджера
Getting Unstuck: Working with Legacy Code and Data
Week 2 SREE.pptx Software reengieering ucp sllides
Devnology back toschool software reengineering
Towards preventing software from becoming legacy a road map
Software modernization
Managing Software Debt in Practice 2011
Checklist For Modernizing Your Legacy Application.pdf
Future Research Challenges in Software Evolution
Everware cbdi opposites attract 04-12-11
Old Tech to Shiny New Tech: Strategies on Upgrading Your Code Without a Big Bang
Legacy Systems in Software Engineering SE26
Novelty in Non-Greenfield
How to Tackle Legacy System Modernization – A Business Owner’s Guide
SOFTWARE MAINTENANCE -1
Release your refactoring superpower
Technology in financial services
Technology in financial services
Ad

Recently uploaded (20)

PPT
Teaching material agriculture food technology
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Electronic commerce courselecture one. Pdf
PPTX
Cloud computing and distributed systems.
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Encapsulation theory and applications.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
KodekX | Application Modernization Development
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
Spectroscopy.pptx food analysis technology
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Teaching material agriculture food technology
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Digital-Transformation-Roadmap-for-Companies.pptx
Electronic commerce courselecture one. Pdf
Cloud computing and distributed systems.
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Encapsulation_ Review paper, used for researhc scholars
The Rise and Fall of 3GPP – Time for a Sabbatical?
Encapsulation theory and applications.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
KodekX | Application Modernization Development
Reach Out and Touch Someone: Haptics and Empathic Computing
20250228 LYD VKU AI Blended-Learning.pptx
“AI and Expert System Decision Support & Business Intelligence Systems”
Agricultural_Statistics_at_a_Glance_2022_0.pdf
NewMind AI Weekly Chronicles - August'25 Week I
Building Integrated photovoltaic BIPV_UPV.pdf
Spectroscopy.pptx food analysis technology
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows

Being effective with legacy projects