Some Thoughts on Software Design and Maintenance

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

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

How Software Evolves [oreilly.com] 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 [outer-court.com] and Worse Is Better (maybe) [dreamsongs.com] often seem paradoxical to industry outsiders untrained in basic critical thinking and unaware that there is No Silver Bullet [wikipedia.org] to the essential difficulties of software development.