Title: My work often involves starting with creating small prototypes that show a concept or solve a very specific problem. That prototype solves that problem, the client is happy and wants to extend it. The software grows from there, usually one feature at time. For these projects, the client usually doesn&#x27;t know what comes next until they need it. This extension can sometimes be immediate, or could be years after the fact.<p>&quot;Common wisdom&quot; states that the prototype should be thrown away when the concept is proved and the funds come in, but for me there is never a point at which that makes sense. As I mentioned, it&#x27;s one feature at a time.<p>I feel I do a <i>good</i> job at designing those prototypes in a decoupled, extensible way. I think about what direction the project could take, and try to put the right levels of abstraction in. Despite my best efforts, oftentimes I&#x27;m rewriting existing chunks of code to incorporate the new features because I chose a certain structure that no longer makes sense.<p>What I&#x27;m looking for is to improve this part of my programming. Are there any good resources on designing software that will grow&#x2F;evolve over time? Software that never have a project plan for more than a few months or a few features?
Upvote: