Joseph Yoder (computer scientist)
While much attention has been focused on high-level software architectural patterns, what is, in effect, the de-facto standard software architecture is seldom discussed: the Big Ball of Mud.
All too many of our software systems are, architecturally, little more than shantytowns.
Managing a large project is a qualitatively different problem from managing a small one, just as leading a division of infantry into battle is different from commanding a small special forces team.
When you build a prototype, there is always the risk that someone will say “that’s good enough, ship it”. One way to minimize the risk of a prototype being put into production is to write the prototype in using a language or tool that you couldn’t possibly use for a production version.
Sadly, architecture has been undervalued for so long that many engineers regard life with a Big Ball of Mud as normal.
The real problem with throwaway code comes when it isn’t thrown away.
Sometimes it’s just easier to throw a system away, and start over.
The way to arrest entropy in software is to refactor it.
Reviews and pair programming provide programmers with something their work would not otherwise have: an audience. Sunlight, it is said is a powerful disinfectant. An immediate audience of one’s peers provides immediate incentives to programmers to keep their code clear and comprehensible, as well as functional.