Jump to ratings and reviews
Rate this book

Fundamentals of Software Architecture: An Engineering Approach

Rate this book
Although salary surveys worldwide regularly identify software architect as one of the top ten best jobs, no decent guides exist to help developers become architects. Until now. This practical guide provides the first comprehensive overview of software architecture's many aspects. You'll examine architectural characteristics, architectural patterns, component determination, diagramming and presenting architecture, evolutionary architecture, and many other topics.

Authors Neal Ford and Mark Richards help you learn through examples in a variety of popular programming languages, such as Java, C#, JavaScript, and others. You'll focus on architecture principles with examples that apply across all technology stacks.

419 pages, Paperback

First published January 27, 2020

Loading interface...
Loading interface...

About the author

Mark Richards

7 books41 followers

There are multiple authors with this name in this data base. This one is Mark^^^Richards.

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
544 (45%)
4 stars
472 (39%)
3 stars
147 (12%)
2 stars
23 (1%)
1 star
5 (<1%)
Displaying 1 - 30 of 124 reviews
Profile Image for Bartłomiej Falkowski.
104 reviews11 followers
June 19, 2021
Software Architecture is hard as well as writing a book about it. Eventually it's a well written position wich unofrtunately didn't give me as much value as I expected.

What I liked:
- Chapter about modules. This is a content that I was looking for - truly engineering way of looking at aspects like cohesion, coupling or connascence. Very interesting equations and quality metrics were provided.
- Accentuating over the entire book that there is no one perfect architecture - it's all about compromises and tradeoffs.
- The entire part about soft skills is plausible and pleasant to read. It consists of interesting (and sometimes funny!) tips for managing time, creating presentations, relationships with teams and many more. The best chapter from that area is about risk management (because it's the most engineering one!). I liked the idea of risk storming meeting and artifact called risk matrix.

What I didn't like:
- When the part of the book's name you're supposed to read consists of term "An Engineering Approach" you expect it to have a lot of engineering stuff inside (at least I expected that...). There were too few of these elements. The biggest part of the book is just a brief description of each architectural style which you can easily find literally everywhere.
- Strong separation of architect from the team. I notice that many organisations nowadays deliberately pick the path where the whole team is responsible for the architecture. Regardless of whether it is good or not, this book suggests only one path - there is a person named Sofware Architect who just coworks with teams. There were moments where I felt a bit uncomfortable with such strong seperation. I will recall the name of the book again - it's about Software Architecture and not about Software Architect role...

Finally, who is this book for?
If you're a Developer and your biggest dream is to become an Architect - go for it!
If you've never read before anything about Software Architecture - go for it!
However, if you're an experienced Developer (or already Architect) and you know the both soft skills fundamentals (it's all about communication with people, negotiating and tradeoffs) and technicals fundamentals (types of Software Architecture; fallacies of distributing computing) then don't expect too much from it.
Profile Image for Mengyi.
53 reviews4 followers
September 15, 2020
A great book about everything (that I could think of) about being a software architect, and how to be an effective one. The section about different architecture styles is a great overview of the different styles and explains clearly about the rationale behind the decisions made by each of them and what they are better at in certain contexts. The book also covers soft skills like architecture thinking, negotiation skills and communication skills, which I also find very useful. Highly recommended to any software engineer that is interested in learning more about the architect role and software architectures.
Profile Image for Bugzmanov.
186 reviews38 followers
May 8, 2021
The book is not bad. I just wish that the authors had learned Russian and read "Пиши, сокращай" by Maxim Ilyahov and Ludmila Saricheva before writing this one. When it comes to non-fiction, short and concise will almost always beat long and verbose.
This book is fine as a first book to read on software architecture. It's stays high-level and tries to be coherent. It does lay down the foundation principles with top-to-bottom approach.
However, it's very verbose. It gives very long examples, spends long paragraphs explaining simple obvious concepts. I've ended up skimming 50-70% of it and that still took noticeable amount of time.
Which is a shame cause overall I liked the content and definitely appreciate the systematic approach to architecture the authors had taken.
I believe somebody should create a short version for more seasoned developers and architects.
Profile Image for kasperoo.
5 reviews2 followers
April 4, 2020
Fantastic book, great examples and I loved the section about soft skills. Highly recommended!
Profile Image for Mindaugas Mozūras.
293 reviews158 followers
April 18, 2022
It depends.

As I moved onto the engineering management track, I'm not a software engineer anymore. Thus I'm not the target audience for this book. I've read the "Fundamentals of Software Architecture" to deepen my knowledge and to be able to be a better partner and leader to staff/principal engineers I work with.

I've thoroughly enjoyed reading this about architecture. I appreciated that it's more than just a collection of patterns and architectural styles. The authors do an excellent job at establishing what could be considered when picking an architecture, the various trade-offs/risks, and what could be measured. I would've been a better software engineer if this book existed and I'd read it ten years ago.

I didn't always enjoy the bits about a software architect's job. I cringed during some parts on soft skills (handshakes 🤝). While I'm sure that soft skills advice will work in some settings, it's not generally applicable.

Overall, it's an excellent book. Besides being a good read-through, I can imagine it would serve well as a reference for most senior engineers and architects.
Profile Image for Iman Jahandideh.
12 reviews7 followers
March 24, 2021
I had high expectations for this book. The title and the premise were so promising. I had searched for a good book on Software Architecture with a good overview of different architectures, but most of the books I had found, focused only on specific architectures and paradigm and others were incomplete.
The book tries to give a general overview of not only different architectures but also the roles and responsibilities of a software architect. But it is an uneven book and different parts are not evenly explained. Some technical concepts are just glossed over, and some are extensively elaborated (relatively). I feel the authors don’t have enough expertise on the general subject. The book lacks a consistent categorization and structure, and sometimes the principles are meshed with the examples which makes it hard to identify the principles.
Aside from these points in the technical aspects, the book also covers the role of software architect and the soft skills required for choosing this as a career path. These parts also feel a little abstract (albeit there are some concrete techniques), but for me it gives a good overview of the path, which is a good starting point.
Profile Image for Bill.
218 reviews75 followers
May 23, 2020
Useful reading. I'm not the core audience for this so I skimmed some sections, and while it tried to cover a lot of bases, it remained firmly anchored to concrete concerns. I really liked the lengthy middle section which was a bestiary of common system architectures and their strengths and weaknesses. Recommended for senior engineers trying to expand their scope of influence. I imagine it will remain a useful reference.
Profile Image for Robson Castilho.
208 reviews28 followers
March 31, 2022
Abrange diversos conceitos importantes relacionados ao assunto, desde a parte técnica à parte comportamental (soft skills).

Não dei uma nota maior porque simplesmente o livro não me trouxe tanta coisa nova assim (uma que vale dizer é o estilo de arquitetura "Space-based", que eu desconhecia).

Como destaque cito todos os pontos relacionados à modularidade e acoplamento e o capítulo referente à gestão de riscos.

De negativo (mas nem tanto assim), é o enfoque no "arquiteto de software". Acredito que poderiam pelo menos ter feito um paralelo com cargos mais atuais que absorvem boa parte da atividade de arquitetura, como Tech Leads e Principal Engineers.

De todo modo, vale a leitura, seja para iniciar na disciplina de arquitetura ou para refrescar alguns conceitos.
2 reviews1 follower
May 16, 2020
Fundamentals of Software Architecture An Engineering Approach by Mark Richards
Fundamentals of Software Architecture: An Engineering Approach
By Mark Richards and Neal Ford

The book, Fundamentals of software architecture, is an excellent guide for software developers aspiring to move to an architect role or architects that have been just promoted to the role that would like to become more effective in their role. It provides clear definition of software architecture, the responsibilities of an architect and technical and social skills needed to succeed as a software architect. The composition of the book is perfectly calibrated to be used as a receipt for first time architecture design projects. It provides guidelines for architects to have a good understanding of the business side of software projects, how to identify key architecture characteristics from business stakeholders and use these characteristics to guide the selection of best fit architectural style, make trade-off analysis and document these decisions. It also highlights approaches on how to continue monitoring the evolution of the architecture as the project progresses in the development. In general, the book provides practical examples, as the names suggests (an engineering approach), to elaborate both technical topics, such as how to identify components and make architecture trade-off, or methods for effective communication and negotiation with stakeholders.

However, there are also some missing ingredients that I personally would have liked to see. The first one is the organisation of some chapters could be reordered to make it cohesive and easy for readers to follow logically. Another missing piece, in the Architecture style discussion, is it didn’t provide the constraints that are applied with the discussed style. In the discussion of the styles, the authors discuss the re-organisation of components as if there are no constraints. It also discussed synch/async method of communication between components but didn’t go into enough details through connectors of components as it did in great detail through component discussion. The figures and equations presented in the book are not clear enough (Eg. Equation variables are sometimes not defined) or some of the figures are not of good quality. The good side of the book is it provides sufficient representations of the discussed material. Another very lightly discussed but mostly needed by architects is drawing the architecture. The book provides few methods of presenting the architecture, but I would be happy to see how the architecture characteristics address the concerns of the stakeholders (view points) and this is mapped to a certain view of the architecture, for instance as in the architecture description standard in ISO/IEC/IEEE 42010.

In summary, the book provides a comprehensive set of information for new architects and developers that want to be an architect. I highly recommend this book for software developers to read it; it shades light to the role of an architects that was usually not so clear. If you are looking for a guide to become an effective software architect this is one of the best books to start with.
Profile Image for Marcin Golenia.
33 reviews5 followers
May 18, 2021
It is hard to tell if the book is worth reading or not. I don't know :) Let me put it that way... If you do consider yourself as an architect - read it. If you have read some architecture books - for instance by Uncle Bob or Sam Newmann or Ploeh blog/plurarsight and You do consider yoursef as a programmer it safe for you to skip that one.
Pros:
- Teaches you to wear the glasses of everything is a compromise.
- Katas!
- Emphasizes the importance of soft skills.
- Tells that Architect should write the code.
- Contains great quotes from other books/people.
- Good diagrams.
- Great chapter about space based architecture.
Cons:
- What about "The best architectures, requirements, and designs emerge from self-organizing teams" ??? The book says about the architect as a role, not bunch of activities. It is the worst thing in the whole book.
- It seems that the authors are in their comfortable zone :) You can learn nothing about the Jamstack, microfronteds. Fuck the UI. What about event sourcing? What about clean architecture? Ports and adapters? Gosh!
- Databases, ok the authors said that this is a broad topic and it is sth outside the book but some references please?
- Lack of references... The only chapter that has some is the one about microservices. As a book about "fundamentals" it should give good directions - I mean good references!
- It totally misses the point of negotiations. Read "Negotion Genius" if you want to know more. Here it is about effective communication.

At the end I think that the book is a really nice one for the ones working at companies that will never get into the essence of agile software development (so the bigger part). For the minority it still good read, but You will not lost much if You skip it.
Profile Image for Jason Cihelka.
60 reviews2 followers
November 7, 2020
Awesome approach to software architecture. Packed full with concrete examples and advice, as well as mindset things (how to think like an architect and design software effectively). Highly recommend for anyone getting deep into software development
Profile Image for Andrey Astakhov.
9 reviews3 followers
May 6, 2021
Never shoot for the best architecture, but rather the least worst architecture.


It is a good book but was difficult reading for me because I don't see how to immediately apply learnings in my current work. I hope to return to this book later when I'll work on high-level architectures for projects.

The authors explained who is an architect, what does it mean to think like an architect, what metrics are important for architectures.

The main part of the book gives an overview of different architecture styles and often how they overlap. That chapters can be used as a reference by discussing the pros and cons, costs and risks of applying a certain type of architecture.

I'd suggest this book to someone who is clearly on a path to an architect role. Programmers will find many useful things in "Fundamentals of Software Architecture" but often it goes very deep to levels that are not necessarily needed for all developers. As the authors mention: programmers know the benefits of everything and the trade-offs of nothing. Architects need to understand both. And this books helps to learn how to achieve it.

My favourite quotes:

All architectures become iterative because of unknown unknowns, Agile just recognizes this and does it sooner.


First Law of Software Architecture: Everything in software architecture is a trade-off. If an architect thinks they have discovered something that isn’t a trade-off, more likely they just haven’t identified the trade-off yet.
Second Law of Software Architecture: Why is more important than how.


Inspired to read:

The Checklist Manifesto: How to Get Things Right
The Checklist Manifesto How to Get Things Right by Atul Gawande
Profile Image for Sumant.
240 reviews8 followers
May 29, 2022
This is a must read book for aspiring architects, or people who have transitioned into an Architect role currently. Because the advice given in this book is very practical and concise, because it does not teach you how to write perfect code or a set of best practices, but it teaches you things practically by considering all the factors which go into making a decision.

All rchitecture decisions are trade offs.

Because no matter what decisions you take it's not possible to build a perfect system, but you should aim to solve the problem at hand considering the functional and non functional requirements of a system.

This book teaches you read between the lines, because non functional requirements are never specified on the paper, but you have to understand them.

This book also focuses on lot of architecture types, and gives a detailed break down of architecture characteristics by rating them.

But the thing which I took most from the book is how can you convince your business stakeholders to invest in a specific architecture style, becuase at the end of the day it all comes down to cost. But you can convince using diagrams very effectively, and learning that skill is key for an architect.

Because being an architect your decisions are always going to be challenged by everyone involved, and how you convince them is basically the key to success, and this book teaches you that and much more.

A must read 5/5 stars.
Profile Image for Serdar Kalkan.
4 reviews1 follower
December 21, 2020
For anyone who is a software architect (mint or seasoned, really doesnt matter!) or is on the path to become one or just has an interest in software architecture!

The book has a very satisfying content varying from core disciplines and manifests of software architecture to different styles with specific characteristics plus the personal aspect that goes with the role.

Being some sort of an experienced architect with having gone through majority of the topics and issues described in the book, i can only echo that they are for real! Authors know exactly what they are talking about. Rather pinpointing a billion of resources in every other page, one will find exact blood and tears of effective architect experiences.

A guiding book that will always be on my desk, as a dictionary to look up in day2day work. Thanks!
Profile Image for Adrian.
126 reviews13 followers
February 8, 2021
The reason this book gets such a low rating is due to my frustration of not getting more architecture case studies with their chosen solutions for the buck i paid.

The book is abstract , written in a bird view way , just as a software architect should look at the system he is building.

My favourite part was the high-elasticity bidding system.Its a masterpiece to see how a problem formulated by the business analysts/clients/pm gets decoded and translated into rock-solid system constraints and then based on these constraints ,how the system gets split , decoupled into functional components.

What i think is useful but for me was a bit too pedantic and dry compared to the previous parts was the last part of thee book.where the focus is people skills/negotiatiion.
While i don't deny its useful , i would've preferred more case studies like the one i mentioned where you are given some ambigue systems constraints and its ur job too figure all out.
This entire review has been hidden because of spoilers.
Profile Image for Rob Erekson.
41 reviews2 followers
January 25, 2022
I picked this book up to read right after finishing Staff Engineer by Will Larson. As a Staff Engineer working as a Software Architect, reading the two books back-to-back were very interesting (and informative!). Just as Will Larson’s book provided valuable broad insight into the what exactly a Staff Engineer, Mark Richards and Neal Ford provide excellent insight into software architecture.

The book covers everything from what exactly is software architecture from a conceptual/definable level, some technical knowledge of architecture (including various architectural styles), and non-technical/soft skills that are required for architecture.

Being a software architect won’t always require being a Staff+ Engineer, but there is a lot of skill overlap. If you’re reading of these two books, I’d highly recommend reading the other as well. I certainly wish I had them both available earlier In my career.
Profile Image for Wojtek Erbetowski.
50 reviews18 followers
December 20, 2021
This book was very valuable to me. I learned a lot about an architect's work, challenges, solutions, and techniques.

As the authors claim, the book will not be relevant forever, as the landscape changes quickly. On the other hand, it offered useful vocabulary to think and speak about the different architectural solutions in terms of tradeoffs analysis, which is a great technique, no matter what the current solutions are.

I would recommend it not only to future architects, but also anyone who works closely with architects, or in a no-architects environment.
Profile Image for Francois D’Agostini.
58 reviews5 followers
February 7, 2022
Really a good book to get an overview of architecture activities from professionals.
Actually, the less interesting part was the beginning, because it lays down generic statement that you can think you've seen everywhere

then it goes into the collection of architecture patterns which were really interesting to see the variatous archtiectures. There was information that is hard to see in other places. Most interestingly, they do not put microsercies architecture as the ultimate goal to attain. That always depend on what you are trying to optimize.

So I really enjoyed reading it. Maybe not all chapters will be seen as insightful, but at least most architects should get something out of it

The "technology radar" part at the end was interesting as well. It gave me the objective of checking regularly Thoughworks existing radar to keep touch with existing trend in IT.

Profile Image for Andrew Breza.
350 reviews21 followers
June 5, 2022
I manage a data science team. Over the past several years, the worlds of data science and software development have started to overlap, leaving me planning projects at a higher level and designing architectures. This book describes the art and craft of software architecture in a down-to-earth manner that really clicked for me.
Profile Image for Miloš.
65 reviews3 followers
September 20, 2021
I'm not sure if it's the fact that I got burned by Building Evolutionary Architectures, co-authored by Neal Ford, or my previous experience with other "fundamentals" books which tended to be rather useless - my expectations were fairly low of this one but I'm glad I went ahead and read it.

The book starts off by discussing what software architecture is, what the job entails, what the common misconceptions are and then for the remainder of the book covers both the technical and soft skills required for a person to become a good architect - how to maintain the technical know-how required by the job, what types of knowledge to focus on, how to detect, discuss and document the architecture, the reasons behind it and the trade-offs it entails, how to interact with your colleagues, both on the developer and the business side, how to resolve conflicts, nurture and promote constructive collaboration etc. So, as you can see, the authors try to cover a lot of ground without going too deep (and waking Durin's Bane) - and they do it successfully.

That being said, the book isn't perfect, some chapters could have used more feedback, especially the event-driven architecture one, which felt a bit dated and like it came from someone who didn't have firsthand experience with it recently. Also, I can't really say that I truly discovered something new within its pages - which isn't necessarily a bad thing if, like here, the summary of the things you know is presented in such a way it actually reinforces the existing knowledge.
Profile Image for Mark.
204 reviews15 followers
September 25, 2022
Surprisingly enough.
This is quite a good source of knowledge.
And almost not boring at all.

The content is delivered with great value and presented clearly and effectively with examples.

Recommended.
Profile Image for SHAD MAZUMDER.
10 reviews
March 30, 2023
As the title says this is fundamental. This book mainly focuses on the backend domain. Greatly enjoyed the fundamental concepts as I am not a backend engineer. And never worked on scaling or elastic issues of BE. It addresses the monolithic to micro-service architecture, tradeoffs, soft skills, and many more. Great for someone who is starting a backend engineer or for someone who is not in the backend domain. But for experience backends, this might be refreshing/relative knowledge.
Profile Image for Jhony Rivero.
1 review
January 5, 2022
This is an amazing and useful book, it contains a lot of tips and practices that all software architects would handle, for example: fitness functions, architecture desicions record, architecture katas and so on. I recommend this book for all those who want to learn more about how to become a good architect.
50 reviews
October 30, 2021
everything is a trade off and the why is more important than the how
This entire review has been hidden because of spoilers.
Profile Image for Thang.
74 reviews10 followers
January 5, 2023
This book covers some software architecture variants and describes how to become a good software architect, including soft skills such as how to lead a team, and negotiation.

Some takeaway points:
- Use ThoughtWorks tech radar
- Use Architecture kata
- Microservices - try to break it to reduce cross-domain transactions.
- Microkernel architecture is nice for customization situations. Ex: IDE, pizza top-up system.
- Architecture Decision Record (ADR) is a good way to communicate and avoid future why-not-use question.
Profile Image for Meysam.
50 reviews
March 11, 2023
As I went along, this book wasn't getting any more exciting and intriguing. I expected more, quite more, but to set the records straight, I should've known better since the book title already gives away that it will not get into very advanced topics; it's a "fundamental."

I believe the book can benefit many young engineers, but those who have already spent some years in the industry may not get anything new here!
Profile Image for Łukasz Słonina.
122 reviews18 followers
June 28, 2020
Very good book, read if you're starting as software architect or moving in that direction. Seasoned architects would also find useful stuff there. Author describes role is architect, areas to focus on (broad knowledge vs deep understanding of frameworks and tools). Book explains different architecture approaches with pros and cons of each (even microservices architecture has it's flaws). It's up to date with agile approaches to software development.
Profile Image for Tom.
88 reviews11 followers
July 26, 2020
I liked Parts 1 and 3 the most, how to consider architecture and how to influence an organization to adopt an architectural direction. Part 2 (architecture styles) was interesting, but mostly material I've seen in one place or another. Where this book really shines is in the advice around how to take architecture ideas / decisions and get them a) implemented b) to stick and c) approved and paid for.
Profile Image for Rostislav Vatolin.
15 reviews1 follower
March 4, 2022
Enjoyed! This book describes to you the life of an architect, the challenges it faces each day. It teaches how to be a great technical lead in your project, how to talk, present and discuss the decisions. This book encompasses different types of architecture, introduces general practices, and depicts common pitfalls. Apart from the technical part, it has a section devoted to soft skills - another essential part of every architect and lead.
Displaying 1 - 30 of 124 reviews

Can't find what you're looking for?

Get help and learn more about the design.