Simplicity is truly the ultimate goal of design. When writing code, we stress for fewer lines of code. When designing software, both visually and architecturally, we strive for the simplest possible design such that a pattern can be derived. Patterns allow both simplicity and extensibility such that it is simple to add or remove like components.
There are clever programmers that pride themselves on quickly churning out something complex that can do everything. This script can be extremely imperative such that another developer can take the hours required to understand every scenario and every component (which is commented at each section).
But wouldn’t it instead be quite a bit more beautiful and magical if a script could do everything it should, but be composed of smaller, consistent components that work together to achieve different goals. Sure, it would take a little longer for another developer to understand it, but this other character may very well enjoy the process quite a bit more. Organization can be digested and understood at a high level, unlike several disparate if-statements and branches. This organization allows readers to understand the design goals of each component. Once learned, it will be harder to forget.
Is it easy to go too far? Very much so! Of course, we don’t want to force patterns just for the sake of saying “I’m building an MVC architecture!” That will only overcomplicate the architecture, and lead to unnecessary boilerplate needed for the sake of fulfilling the design. Organization in design also means developers should be able to easily add new like components within minutes, not hours or days.
However, if the architecture allows for so much convenience in future development, it must do quite a bit under the hood. Thus, it may not be so simple after all.
Leave a comment