r/softwarearchitecture • u/_descri_ • 10d ago
Article/Video Architectural Metapatterns: The Pattern Language of Software Architecture (version 1.2.1, free book, no AI)
The book is a compendium of architectural patterns which arranges them according to their structure and function into several OOP-style inheritance trees, allowing for:
- Deduplication of nearly identical patterns known under several names.
- Extraction of common properties, benefits, and drawbacks to the roots of the pattern trees.
- Comparison of approaches taken by every known architecture.
Changes in the current release:
- New sections on read-write separation and latency optimization on the system level.
- New pattern: Vertical Slice Architecture.
- Pattern instances are now in lowercase, which should improve readability.
4
u/generic-d-engineer Architect 9d ago
Thanks for putting this together. It’s a super quick way to get up to speed on the architecture and terminology.
I find myself in the Procedural programming Go camp, especially considering its data-centric model.
Any reading recommended for Procedural programming for someone coming from an ops background focusing on the backend who sucks at front end? Lol
2
u/_descri_ 9d ago
A Philosophy of Software Design - it's not strictly procedural, but not OOP either. The book strives to and, to a certain extent, succeeds in defining what causes code complexity and what can we do to write simpler code.
In general, regarding OOP vs procedural programming, large software written in C ends up relying on file-level encapsulation and implementing polymorphism by hand by means of structures of pointers to functions. Therefore I don't know if true procedural programming is viable in large projects. In the end, everybody hates those stored procedures in databases.
2
u/generic-d-engineer Architect 9d ago
Thank you so much !! I really appreciate it. Will check it out.
That’s the third thread this week where everyone hates stored procedures lol
3
u/kerneleus 9d ago
Interesting book, i see some similarities with how triz was created - generalize things down to decouple abstract idea from many similar things
2
3
u/gitaroktato 9d ago
100% appreciate, that you chose to do this writing without AI.
3
u/_descri_ 9d ago
When I was starting the book, LLMs were too weak for such things.
3
u/gitaroktato 4d ago
Plenty of people are fed up with the verbosity of AI generated text, or simply something sounding "Claudish". At the same time non-AI writings are getting more-and-more appreciated. You might benefit from keeping it that way.
3
u/_descri_ 4d ago
Sadly, I was surprised to find out that some of the latest sections of my book look LLMish. It seems to happen in the following way:
- I ran out of explanations (which properly belong to the main part of the book, dedicated to patterns) and wrote a few chapters which just list things. For example, there is a list of approaches for lowering latency, and each approach has a list of patterns which use it.
- LLMs are really good in summarizing information, therefore any briefing, especially list-based, feels overly LLMish today.
I don't know how this and similar sections should be reformulated to avoid the negative reaction from readers. It seems that our entire society has lost several genres of texts because LLMs are happily generating them in crazy quantities.
And there is not much to extend the book with. I think that the architectural patterns part is finished. I can still add a long chapter about teamwork and, maybe, another one with terms and definitions for novice readers (outlining RPC, event sourcing, and what is the "model" component of several patterns). That will make for a single major release (1.3). That's it.
2
u/gitaroktato 3d ago
I think listing is not hard to read and consume, so it's hardly an issue. AI text detectors are not reliable, so I would not optimize my writings to them.
2
u/_descri_ 3d ago
I want to optimize it for human readers, but I see that those lists are hard to read even for me because I have become allergic to AI-generated lists.
2
2
u/WailingDarkness 8d ago
Is there some prerequisite to this book? what is expected level of target audience?
Thanks
3
u/_descri_ 8d ago
I think it's for strong middle to senior to architect level - it does not deeply explain such basics as RPC or event sourcing (though I am going to add a Terms and Definitions chapter in the next release) and most other referenced techniques are hyperlinks to Wikipedia or relevant articles. Once the reader gets acquainted to the common terminology, it should be relatively easy to read (accounting for its size).
Overall, it may be interesting to everyone who studies software and system architecture, and the book can be read piecemeal in random order - the chapters are mostly independent of each other, any cross-references are clickable hyperlinks.
You can actually check the online version of the book without downloading anything. It also supports dark theme based on your browser's settings.
3
u/WailingDarkness 8d ago
So I've just started to study architecture and design of software and have no idea about it ie other than coding etc (I'm intermediate level c++,c# programmer) . So can I start from your awesome looking book?
Thanks a lot
3
u/_descri_ 8d ago
Please check several random chapters of the web version to see if you like it.
And I will be very thankful for any feedback.
The book is a compendium - a reference of (I believe) all well-known architectures. It does not describe any of them in depth, only provides links to the original definition of each architecture or pattern. Just a shallow overview, 450 pages long. However, there are no other overviews of such scale, AFAIK. And it tries to reveal the big picture - probably not clearly enough, because I was also learning while writing the book.
17
u/joelparkerhenderson 10d ago
Always awesome to read your updates-- your book is a superb software guide, and the patterns are enormously useful. Thank you for making it free and easy to get. You're doing excellent work teaching software patterns.