the first step towards becoming a good software designer is to realize that working code isn’t enough it’s not acceptable to introduce unnecessary complexities in order to finish your current task faster. the most important thing is the long-term structure of the system. most of the code in any system is written by extending the existing code base, so your most important job as a developer is to facilitate those future extensions. thus you should not think of working code as your primary goal, though of course, your code must work your primary goal must be to produce a great design. which also happens to work this is strategic programming.
strategic programming investment types how much to invest in strategic programming