This document discusses challenges with applying agile practices to legacy applications and proposes solutions. It identifies issues such as legacy code being difficult to timebox in sprints, lack of unit testing, defects reoccurring between builds, long build times, and technical debt. The proposed solutions include evaluating methodologies like Kanban that better suit legacy work, creating unit test frameworks, automating regression testing, customizing builds for speed, prioritizing technical debt reduction, standardizing tools, focusing on outcome metrics, pairing developers and testers, and retaining skilled legacy resources.
2. What are Legacy Applications?
Why Agile doesn’t work with Legacy
Applications?
Issues and Solutions from
Dev, Test, Tools, Resources and
program perspective
3. Issue # 1: Scrum Doesn’t work for Sustenance and
Legacy projects.
• Product being old, difficult to timebox the tickets in two
week sprints.
• More uncertainty on product behaviour
• One fix breaks others.
• Adhoc and production tickets make it difficult to plan for
release.
Solution: Evaluate other Agile
Methodologies like Kanban and Lean.
• They can work well with Sustenance and Legacy
applications.
4. Issue # 2: Unstable system because of lack of Unit
Testing
• Limited availability of Unit test tools for Legacy products.
• Where to start? Code base is big.
Solution: Automation Unit Test Tools.
• If not available then create one. It is quite simple.
• Start with the current work and keep on expanding.
5. Issue # 3: Defects fixed in one build are broken again in
future builds.
• Lack of regression test suites.
• Unavailability of automation tools for legacy applications.
• Record and Play tools may not capture Legacy screens.
Solution: Regression Suite is a must.
• If a good tool is not available then start with creating
small utilities for critical areas.
• Batch processing for testing.
• Evaluate to automate functionality existing in the
application.
6. Issue # 4: Builds take too much of time.
• This may run into days.
Solution: Custom Automation of builds.
• Identify the slow spots and automate.
• Finally target for nightly builds.
• CI Tools: Very easy to integrate.
7. Issue # 5: Big Technical Debt.
• No Time to fix old defects and they come back quite
often.
Solution: Prioritize Technical Debt.
• Decrease the Technical Debt with each Sprint.
• Get buyin from Stakeholders for dedicated time towards
fixing technical debt.
• Dedicate time to improve architecture.
8. Issue # 6: Different tools between Engineering, Business,
Services and Customers.
• Product being old, lot of tools are getting used for defect
tracking and requirement.
• Adds confusion and risk of data loss.
Solution: Standardize as much as you can.
• Initiate discussion between different groups and come to
a consensus. This is difficult but not impossible.
9. Issue # 7: Velocity is not working for us..
Solution: Evaluate different metrics based
on value they provide. Measure outcome.
• Cycle TIme
• # of automation unit/regression test cases added.
• Builds Health
• # of Pass Vs Fail test cases
• Burndown Charts
• Technical Debt removed and added
10. Issue # 8: Developers and Testers Disconnect
Solution: Pair Developer and tester
• Helps a lot in closing Dev and Test within a Sprint or
time period.
11. Issue # 9: Resource issues.
• Lack of availability of Legacy technology resources.
• High dependency on existing resources.
• Reluctance to change
Solution: Retain good resources.
• Through Awards, Recognitions, Trainings and Team
building.
• Show them the carrier path.
• Add new fresh talent.
12. Summary
• Evaluate suitable Agile Methodologies
• Strengthen on Unit Test Framework
• Automate as much as possible. If right tools are not
available then develop in pieces.
• Stabilize and Automate Builds
• Reduce Technical Debt
• Standardize tools between different organizations
• Choose right Metrics to measure
• Pair Developers and Testers
• Manage Resources