Exactly. Spot on.
As programmers, if we haven’t made our code base a little bit better (or a whole lot better) for every new feature we add, we have failed. If no one but us can understand what a piece of code is doing or modify it in meaningful ways without bringing down the house, we have failed. If we take a shortcut/hack under pressure of deadlines or whatever but don’t make it easy to spot/remove, we have failed.
As engineering management, if we don’t deeply understand what makes our components good or bad, we have failed. If we can’t set up processes and tools to monitor the health of our code, we have failed. If we can’t motivate our teams to love their code and to want to make it better, we have failed.
More words don’t make a better song. More brush strokes don’t make a better painting. More features/LoC don’t make a better product.
In his own (perhaps small) way, every good software engineer is a visionary. He pre-empts the future by building it today. When he can’t predict the future, he leaves room in the present to handle it tomorrow. Our legacy is not the code we write today, but the code others will write using it tomorrow.
So what did you improve today?