DEV Community

Pablo Martí
Pablo Martí

Posted on

Looking for courses and books about Software Architecture

Today I was studying about Monolithic Applications and Microservices Architecture (specially at Martin Fowler blog) and I know something about it but I really want to go into this. What courses, specializations, books do you recommend?

I was reading some posts like https://dev.to/mikkpr/what-are-good-ways-to-learn-software-architecture-and-systems-design-38b9 that has a lot of good information but I want to find something straight-forward to follow for the next months.

This is very open but was done intentionally so you can guide me because I don't know if have some wrong concepts :D lol thank you!

Top comments (6)

Collapse
 
victortangggg profile image
Victor

not in the position to guide since i'm a junior developer. but i find this book really helpful in my learning!

Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Book by Martin Kleppmann

Collapse
 
pablomarti profile image
Pablo Martí

Thank you! I will look for that book

Collapse
 
jonathanhiggs profile image
Jonathan Higgs

When I saw the title of your post I was going to recommend Martin Fowler, but you have already found him

Most often when trying to find something on the subject of architecture it ends up being on design patterns and while I think design patterns are very important and highly related to architecture they are still two distinct fields and skills. One is micro level design and one is macro level, decisions are driven by different factors for different outcomes

I don't know of too many books on the subject other than Clean Architecture by Uncle Bob (I haven't read it, but I've heard good things and Uncle Bob has a lot of similar ideas to Martin Fowler). Probably the single most interesting things I've read is the ZeroMQ guide, it is not an architecture book as such, but is a literal encyclopedia of distributed computing patterns right next to example implementations. Other than that I'd just say search search and search for anything you think is relevant, there definitely isn't any right answer, just how suitable a solution is for a particular problem, so most of the skill in architecting is having a wide vocabulary so you understand the tradeoffs you are making (most often speed of development vs flexibility for changing requirements). Something I found interesting was comparing how different languages achieve similar results, eg. SqlAlchemy for python vs EntityFramework in .Net, and specifically how small changes in the language design change the way that large projects turn out. Or maybe how very low level interfaces could cause you to entirely change how you would architect the entire system, eg. using the Reactive Extensions observable/observer instead of events or iterators

Collapse
 
pablomarti profile image
Pablo Martí

Important to mention that, about architecture and design patterns, I believe they are related (that is open) but they are different. There is a relationship and dependency between them. I will take a look to "Clean Architecture" also and thanks for the guide! It is good to know a little from each one in order to be prepared in the future for the tradeoffs that you mention.

Collapse
 
pwnchaurasia profile image
Pawan Chaurasia

Hi,
I have to same interest as you. I am also trying to know more about software architecture and found a post in medium and I am reading that you can try this too and see if it helps
medium.com/@nvashanin/books-in-sof...

Collapse
 
pablomarti profile image
Pablo Martí

Really good list! Will check it thank you!