Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rescuing Legacy Software from Impending Doom. Refactoring Stories from the Trenches

Rescuing Legacy Software from Impending Doom. Refactoring Stories from the Trenches

Dealing with an ageing code base is one of the hardest software engineering problems we face today. It is critical to solve this problem on the road to agility. In the past, software rewrites was standard practice when a company wanted to get rid of legacy software. Modern development practices and techniques has made refactoring a very popular first choice for software teams. In our experience we’ve seen how different teams attempted to systemically refactor their code with varying levels of success.

We will share the experiences of two software start-ups and a mid-size organisation. The speaker will explore case studies to guide attendees towards successful refactoring.

Topics covered in this talk will include
- effective refactoring methods (checklists),
- using test-driven development to support refactoring,
- when to do aggressive refactoring,
- common pitfalls and,
- classifications of technical debt to manage recovery.

We will also look at refactoring beyond the context of code, such as redesigning solutions and teams to improve agility.

Martin Cronjé

November 04, 2014
Tweet

More Decks by Martin Cronjé

Other Decks in Programming

Transcript

  1. Typically they say… Not enough time We cannot afford it

    Business will close-down Just one more feature
  2. New code Code changes Solution wide TDD Refactoring Litter-Pickup Refactoring

    Comprehension Refactoring Preparatory Refactoring Planned Refactoring Long-Term Refactoring Refactoring workflows
  3. Problems in a real system •  Hardcoding everywhere •  Half-baked

    refactoring •  Unused code •  Duplication of code •  Code rewritten due to fear of extension •  No separation of concerns •  Namespaces not controlled •  Inconsistent external dependencies •  … and many more
  4. Backlog •  Consolidate repositories •  Standards •  Clean-code across solution

    •  Create scaffolding packages •  Get things that change together to live together •  Undo partial refactoring attempts •  Breaking up the silo
  5. Activities •  Initiatives added to product backlog •  Public legacy

    code reviews •  Refactoring simulations on extreme messes •  20-40% allocation to fix the code •  Hack days to address specific problems