Chapter 1. Understanding the challenges of legacy projects

 

This chapter covers

  • What a legacy project is
  • Examples of legacy code and legacy infrastructure
  • Organizational factors that contribute to legacy projects
  • A plan for improvement

Hands up if this scene sounds familiar: You arrive at work, grab a coffee, and decide to catch up on the latest tech blogs. You start to read about how the hippest young startup in Silicon Valley is combining fashionable programming language X with exciting NoSQL datastore Y and big data tool Z to change the world, and your heart sinks as you realize that you’ll never find the time to even try any of these technologies in your own job, let alone use them to improve your product.

Why not? Because you’re tasked with maintaining a few zillion lines of untested, undocumented, incomprehensible legacy code. This code has been in production since before you wrote your first Hello World and has seen dozens of developers come and go. You spend half of your working day reviewing commits to make sure that they don’t cause any regressions, and the other half fighting fires when a bug inevitably slips through the cracks. And the most depressing part of it is that as time goes by, and more code is added to the increasingly fragile codebase, the problem gets worse.

1.1. Definition of a legacy project

1.2. Legacy code

1.3. Legacy infrastructure

1.4. Legacy culture

1.5. Summary