The Rings of Legacy Code

Christian Emmer
Christian Emmer
Nov 28, 2025 · 2 min read

It's easy to see the growth of a tree in hindsight by cutting it down and measuring its rings. Software at your company has growth rings, too.

I write a lot about countering negativity in software engineering, especially when it comes to complaints about inherited situations. Really, the only options available in these situations are to take action yourself and to change your mindset.

sittin people beside table inside room
Avoiding Blanket Statements
May 6, 2022 · 6 min read

One part of emotional intelligence is understanding how our words impact others.

a yellow and black sign sitting on the side of a road
Being Critical of Past Developers
May 14, 2020 · 2 min read

How were those past developers of this project so very wrong?

I've been thinking about the mindset option a lot this year, in the context of inherited code that wouldn't pass current standards. I've developed a metaphor that has kept me empathetic, and it has been landing with my colleagues:

Software is like a tree. When you cut it open, you're going to find some growth rings. You'll see when various patterns got popularized across the company, when new libraries were adopted, and other positive changes. And in an old enough piece of code that has developed quite a few rings, you may find some parts that aren't as healthy as others.

You and I are both better developers than we were a couple of years ago. We've worked with new people who have brought new ideas, have experience with more design patterns, and have worked with code long enough to understand the pitfalls of past decisions. And everyone else in the company has grown, too, and is likely making decisions that you'd agree with now.

And who knows, maybe you'll both disagree with those decisions in another couple of years.