So, we've got a piece of code that has been proven to work well and we have a new project coming up. How should we go about creating the new project—just copy the working project and start making changes? After all, if the code is being copied, it is being reused, right? Creating copies of a code base like this can inadvertently create a mountain of technical debt over time. The problem isn't the act of copying and modifying the code, it is trying to maintain all of the copies over time.
Here's a look at what a monolithic architecture for algorithm.c might look like over the course of six projects. Let's assume that that actual algorithm is intended to be identical across all six projects:
Here are some ...