DEV Community

Mikael
Mikael

Posted on • Edited on

Software Architecture - Complete Guide

Introduction

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.

Series structure

I will approach the series in the following way:

# Title Description Link
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 --
5 ... ... ...

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.

Why should I spend time reading those?

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.

Conclusion

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!
Mikael


About me

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.

Disclaimer

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!).

Top comments (9)

Collapse
 
videtwo profile image
videtwo • Edited

Your complete guide is kind of empty :-D One link that points to itself :-D But I think it is not an accident. Please tell me one example of a well known, big, working software that has the perfect architecture and clean code. Linux kernel :-D Please contradict me but I don't think there is any. Anyway good luck to finish your post and will come back to "learn"...

Collapse
 
mikgross profile image
Mikael

Hey Videtwo, It’s a series so posts come weekly/biweekly on different posts. This one is the first and the second is not written so yeah... one link :)

Collapse
 
gernotstarke profile image
Dr. Gernot Starke

Just in case you want to read about architecture in a (recent) book:

leanpub.com/isaqb-foundation-study...

It helps to prepare for the CPSA-F certification, and therefore contains all relevant topics, from design principles, patterns over to methodical foundations. Even documentation and architecture-evaluation/assessment is covered...

Collapse
 
jeden profile image
Eden Jose

How do I follow this series?
I'm new here in dev.to and you're post is one of the firsts that I came across and I really find it interesting. :)

Collapse
 
mikgross profile image
Mikael

Hi! Posts will come every one to three weeks depending on my workload. I will update my posts and followers should get it in their notifications :)

Collapse
 
jeden profile image
Eden Jose

Alright. got that! Thanks!

Collapse
 
alaputacalleok profile image
A La Puta Calle

Estaré atento a tus avances, leyendo alguna lineas de tu texto, recordé los resúmenes de mis tiempos de estudiante

Collapse
 
mikgross profile image
Mikael

Jaja me encanta tu pseudo! Gracias por la lectura

Collapse
 
_2082ca7cc65434467c4fb profile image
袁官东

If you need to design 3D software architecture diagram, you can try iCraft Editor : icraft.gantcloud.com/editor