Advice from G.K. Chesterton

Two common situations: an organization has all sorts of bureaucratic procedures, a legacy code base includes lots of ugly old code. Both seemingly serve no purpose.
The inclination is to streamline the process by getting rid of those procedures, and to improve the code base by cleaning out all that old code. It might even work for a little while - while everybody is excited about the change, remembers how the situation was before, and remains on their best behavior. Yet, later on, the problem comes back.
A lot of the time the seemingly useless processes and code were there for a reason. Sometimes the reason is no longer valid, or good, and it is in the organizations' interest to reform. But occasionally the reason is no longer visible because, well, the process in place took care of the problem. Which means that should that process be streamlined away, the problem will show up again.
It is a little easier when dealing with code. Tools will analyze dependencies and find whether the code is ever run by the system. Good unit test and regression coverage will help to find bugs introduced by changes. However, nothing replaces having an understanding why this particular piece of code was created in the first place, what problem it was trying to solve, and whether this problem is still around.
Original article Meteuphoric: Protect the seemingly useless
- Jane Prusakova's blog
- Login to post comments
Comments
I'm trying to think if this
I'm trying to think if this same scenario occurs in chips. Usually design IP blocks are added or removed in whole, so macro-functionality is understood. At the lower-level (portions of logic inside a block), this is where an analogous scenario may play out. However, it all depends on the verification: if the verification process doesn't wiggle the logic that was changed, you'll never know.