Code by Refactoring to Fix Legacy Code

You know your legacy code is a weight around your neck. But how can you fix it?

Traditional refactoring requires tests for safety. Unit testing requires that the code be factored into clean units. Integration testing doesn’t provide enough safety for refactoring. A rewrite would solve it, but it will take a long time to regenerate all the important corner cases, and you’d likely end up with similar code as a result. An incremental rewrite sounds like the only option, but that blocks feature delivery for quarters at a time. You company needs a way out, but no existing strategy works.

Code by Refactoring is a different strategy. We provide specific technical habits that unwind the legacy code snarl safely and incrementally, whether it has tests or not.

Tier 1: Make Changes Safely

Learn the Techniques

Fundamentals Workshop
Establish baseline skills to change code without introducing bugs.
6 virtual weeks

Strategy Workshop
Match your legacy recovery strategy to your market.
2 virtual weeks

Tier 2: Enable Simultaneous Development

Learn the Techniques

Optional: Enable Automation Workshop
Automate even the ugly parts of your build and tests.
8 virtual weeks

Dual System Workshop
Create system to share code between old and new systems and ship both at will.
4 virtual weeks

Technical Roadmap Workshop
Coordinate multiple teams, allowing each to take locally-correct actions that align globally.
4 virtual weeks

Independent Change Workshop
Fix your part without disrupting others.
6 virtual weeks

Optional Tier: Escape the Monolith

Learn the Techniques

Components Workshop
Isolate the code your team changes into independent components.
4 virtual weeks

Coupling Workshop
Address remotely coupled code.
4 virtual weeks

Optional: Library Workshop
Transform your components into libraries that you build and verify independently.
4 virtual weeks

Tier 3: Solve Architectural Flaws

Pick Techniques to Match Your Situation

Optional: Database Collaboration Workshop
Share databases with other teams without conflict.
8 virtual weeks

Optional: Database Refactoring Workshop
Change the schema of a database without disrupting any application using it — even apps you don’t know about.
4 virtual weeks

Optional: God Class Workshop
Eliminate God classes incrementally without disrupting current behavior.
8 virtual weeks

Optional: Untestable Code Workshop
Transform hard-to-test code patterns into easy to test alternatives with identical behavior.
4 virtual weeks

Optional: Architecture Repair Workshop
Change architecture choices which are no longer serving you. Provides better alternatives to 3-tier, extend by interface, or infinite plugins.
4 virtual weeks

Optional: Isolate Challenging Dependencies Workshop
Isolate and test databases, service interactions, UIs, clocks, and other challenging collaborators while still creating fast-running microtests.
4 virtual weeks

Optional: Libraries to Microservices Workshop
Incrementally change a library into a stand-alone service.
4 virtual weeks

Optional: Switch Persistence Mechanisms
Incrementally change between SQL databases, or even to NoSQL or other persistence mechanisms.
4 virtual weeks

Optional: Transform Complex Procedures into Object Graphs
Safely decompose an untestable, large method into a set of easily-tested, collaborating objects — without introducing errors along the way.
4 virtual weeks

Need a Strategy?

Proof of Concept:
Identify 3 teams for Deep Roots to virtually and simultaneously coach in their codebase. We will work with your leadership to define success measures, then track team outcomes to ensure you get the results you expect.

Direct Coaching:
Identify up to 10 teams for Deep Roots to virtually and simultaneously coach in their codebase.

Train the Trainer:
Identify up to 10 individual technical contributors in your organization to be trained and supported by Deep Roots so that they become your Center of Excellence.