As a developer that has to undertake software architecture problems quite a lot in my recent projects, I educated myself on basic Architecture principles and techniques by reading books (and maybe a few blog posts). In my opinion, Books have higher quality content that is, most of the time, written to be resistant to time and as such can still serve you as a reader in your day to day fast changing environment. So if you want to learn about any specific topic in a deep manner, read a book, blog posts are often outdated, too focused, and not written by professionals or cross-read.
Anyway, after many hours spent reading about Software Architecture, I decided to put together a blog post series based on my findings in order to share with fellow developers (and architects) clean architecture principles. This should be useful for you at all level, from Junior to Senior, in order to build software that is scalable, resistant to change and, the most important, maintainable.
I will approach the series in the following way:
|1||Introduction||Introduction to the series||link|
|2||What is architecture?||Introduction to the concepts of design and architecture in software and why they matter||link|
|3||Starting from the bottom||Coding paradigms and why they affect our architecture||--|
|4||Design principles||5 architecture design principles to always have in mind when designing software||--|
In each of the posts enumerated in the table above I will sum up key ideas taken from a book I am currently reading and completing the summary with a short collection of thoughts and real life example showing how relevant are those to us in modern days software development and architecture.
If you are new to software development & architecture, reading about principles that structure your software in a way that will make it scalable, fast and easy to maintain is a must. You need to understand how not to grow a monster full of intricate dependencies and bugs that require your entire code base to change in order to get fixed. After all you don't want to just write code, you want to be productive while doing it. Each character you type needs to produce something that will make your software better, not just fixing legacy dependencies after a breaking change was introduced.
If you are experienced in architecture and development, reading about all of those concepts you had to experience at a theoretical and practical level so many times will probably remember you funny and sad war stories about how your own software was poorly or amazingly designed. Sharing comments would be amazing for new devs, and funny discussion topics for experienced ones.
Looking forward to write about this topic as it is often not the first thing we learn when developing code for the web or any other tech but is definitely the single most important thing we need to understand and work on constantly.
See you on another post!
I am a partner at MMPG Consulting, a firm active in the custom software development industry in the Spanish and Swiss markets.
You can add me on LinkedIn or shoot me a DM if you want to discuss specific topics, your software or an idea you want to implement.
As mentioned above, I am writing this series while reading books about software dev, the ideas and principles exposed will be taken from those books. In those articles I will sum them up and discuss concrete examples. I am not introducing new ideas principles about software architecture essentially because my thoughts on it do not, and will not, introduce a paradigm shift or introduce ground breaking architecture principles (who knows!).