Some Thoughts on Software Design and Maintenance

There is a definite Art in Computer Programming [] shaped by the Structure and Interpretation of Computer Programs [] and established Design Principles and Design Patterns [] From a technical pespective, Refactoring [] is the essential technique to incrementally remove harmful code patterns such as the Go To Statement [] and other AntiPatterns [] such as the Big Ball of Mud [].

Thus any organization that seeks to embrace sustainable maintenance by eliminating irreversibility in software designs Needs an Architect [] who understand the Classic Mistakes [] for Why Software Fails [] and how to manage Technical Debt [].

How Software Evolves [] and knowing what to fix (hint: It’s Not The Code) are they keys to success. The reasons Why Good Programmers Are Lazy and Dumb [] and Worse Is Better (maybe) [] often seem paradoxical to industry outsiders untrained in basic critical thinking and unaware that there is No Silver Bullet [] to the essential difficulties of software development.