NOTE: This was sitting unpublished as a blog post some 4 moths before going public with Obvious, so I thought it would be interesting to publish this now in its unfinished form to give some perspective on Obvious Architecture’s development…
Good design and good architecture is usually easy to understand and use, but it seems to me that truly great architecture and great design feel obvious, when in fact it isn’t obvious at all.
Great architecture is hard, but it should feel obvious in retrospect.
Writing software is about communicating intent to both a machine as well as to the next developer who looks at your code. Great code should be easily understood by both a machine and a human, without the convenience of the original author interacting with either as they are interpreting it. That is what makes writing software so hard.
Writing software by yourself is relatively easy, you just have to convince a machine to do what you want the way you want it to. Writing software in a team means convincing your coworkers, peers, bosses, qa testers, and people who will never even meet you that you in fact knew what you were doing when you wrote the code in the first place.
For software development patterns, frameworks, and architecture provide tools to make it easier to communicate reliably with others and with the machines that execute the code. However, not all patterns, frameworks, and architecture ideas are created equally. At different times different approaches have their place, but over time it becomes obvious that some of these tools are frequently misused and eventually need to be replaced.
If you live with a system long enough you’ll learn that there is only one constant in the world of software development – the need for sysems to evolve and grow as the needs of users change. Unfortunately, most programs are not designed with the need for change in mind.
I propose a “new” set of patterns as a tool to write programs that are easier to change over time. I call it the Obvious Architecture. The name is a nod to the first sentance of this article. Great architecture feels obvious, but only in retrospect usually.
There are 4 main principles that drive the Obvious Architecture:
- Obvious Functionality
- Framework Independence
- Extreme Testability
- Maintenance Minded
So that’s the unfinished post. Like I said, it was found unfinished. See what Obvious Architecture has turned into since then.
P.S. Have you subscribed to Code Career Genius yet?