A curated list of books on Software Architecture
github.com
github.com
The chapters are short and stand independently. In general the technical writing is pretty good, a skill that I am not surprised to find in project leaders.
It is free to read online: http://aosabook.org/en/index.html
Anymore recommendations?! I read(not entirely) the cosmic python one from Percival and loved.
Pragmatic as in these are not generic solutions/patterns but actual working architectures.
Thanks.
It's very well written and full of useful insights for practitioners, while using language and descriptions that would be approachable to the layperson. This seems like a book that an engineering manager and a product owner can read together to better understand the shared endeavour of upgrading a legacy service.
Halfway through Chapter 3, I haven't learned anything I didn't know... but on the other hand, I find myself in violent agreement with each one of the author's points. And though it's a book that's well written and could be a breezy read, I find myself stopping to ponder on he consequences of each paragraph.
One great aspect of this book is that Bellotti was trained as anthropologist, and she brings the analytical tools of her studies to the human aspects of software development. The book offers a vocabulary/framework for the software development process, legacy or not, and better models for framing our own professional experiences when approaching client work.
Heartily recommended.
Yes, you can, and I can be the hurried person with no time to summarise, and recommend you read the book yourself. It's not like those business books that have a single thesis, backed by 100 examples to support it, where the thesis itself can be written on the back of a stamp.
I can however try and describe to you what the book is about.
It's a book about how legacy software interventions are about the people as much as about the code and the machines, with advice for aligning incentives between stakeholders, developers and managers,
It's about prioritising competing goals under different sets of constraints, with useful advice for ensuring psychological safety in your team.
It's about measuring risk, and acting on the measurements.
It's about anthropology of software-using organisations, and about organisational design, and how those disciplines inform the job of recovering wayward software projects. It's not a book about computers, or about programming, or even about software management. It's about people in organisations doing all of the above.
It's about defining the right job to do lest you attempt to do the wrong job right.
It reads like an instant classic, like a "missing manual" for running software development operations in big organisations... but with advice that's also applicable at smaller scales.
I just finished reading it and I started on Chapter 1 again. It's that good.
For me that is teachyourselfcs.com. It recommends only two books if you don't have "multiple years" to self-study part-time. They are: Computer Systems: A Programmer's Perspective and Designing Data-Intensive Applications. If you do have multiple years it recommends ~9 books. The OP list has almost 100 books just on software architecture.
It takes so long to read one good textbook that I'd bet 90% of software engineers haven't read more than three or four cover-to-cover. I was rare in my computing theory class for actually using the textbook and doing the exercises and I only got 2/3 through. Given my current progress rate through 'Computer Systems: A Programmer's Perspective' it will take me at least 150 hours to complete.
I feel like some people are compelled to gather these monster lists due to their hoarding inclinations---and it probably serves as "useful" procrastination as well. As I get older and curate my bookshelf further, I find myself either discarding a lot of overlapped material or skipping through the majority of the content. Otherwise there is no escape, as the SE field is so dynamic and complex, that the list of "required readings" trully is overwhelmingly large.
But yes, you don‘t need more than one good introductory book on architecture, most of the books listed don’t have anything to do with architecture anyways, but rather software culture.
Maybe you don’t need to read one at all, but rather a paper from someone who analyzed or created a piece of software with interesting and useful architecture.
Blog articles are really useful too, especially if they concentrate on say something more specifically practical that doesn't warrant the same polish and rigor of a paper or essay. Also something I noticed is that many, who will make more general assertions in these articles, are typically echoing something that has been written down by researchers quite a while ago, so why not go to the source?
[0] Apparently I can't stop writing down names because it feels like I'm leaving out too many...
Oh they're all in there! They're just put at the back end of the 4 years partly because the more advanced content goes towards the end and partly because I haven't distributed everything properly.
I've spent quite a few hours curating the ~800 items and have in that process learnt a few new names that you mentioned, such as Niklaus Wirth. From him, the list has "Good Ideas, Through The Looking Glass".
I don't recognize Daniel Ingalls and Peter Naur so I'll look into them and consider adding them to the list. Cheers :)
Edit: Oh, Peter Naur would be the Naur in Backus-Naur form. He'd be in there.
2 pages in FoundationDB paper (https://www.foundationdb.org/files/fdb-paper.pdf) I knew I was looking at one month's reading material if I really was to grasp everything. It'd be much easier if I worked with DBs and Distributed daily but I don't.
But, yes, I see your point.
https://notes.eatonphil.com/books-developers-should-read.htm...
* Don't Make Me Think! (UI/UX)
* Forms That Work (UI/UX)
* Letting Go of the Words (interface writing / UI/UX)
* Developing Quality Technical Information: A Handbook for Writers and Editors (technical writing)
Many people here (and elsewhere) complain about the "curation" method I used, which is based on simple algorithmic rules instead of a subject matter expert curation. I totally understand their point. I admit that I misused the term "curated" here. I thought that algorithmic selection is a kind of curation.
When I made this, I didn't intend for a recommendation list. Instead, I intended for a comprehensive list excluding low-profile books. And there was a simple reason behind that: I don't know your experience level nor your preferences. You might prefer theoretical over practical books. Or prefer verbose over concise books. Or art-based over engineering-based books. Or and or and or. I will change "curated" to "comprehensive" in the repo description to reveal my purpose effectively and eliminate ambiguity.
You will end up with hundreds of almost unrated (zero raters) books without these seemingly simple algorithmic rules.
Don't be overwhelmed by the number of books on each subject. Practically speaking, you are supposed to read one or two books (maybe a little bit more for nerds?) on each subject that you are interested in. Deciding what to read is your business. Alternatively, you may go with the Goodreads community choice and start from the top of each list if you don't have the time to read reviews.
I almost never care if something is 4/5 if only <10 people reviewed it unless the thing is very niche. Especially when trying to discover within a genre or keyword I'd like to see the books people read most. That's basically impossible to fine without hand-curated Best Of lists.
I'm prompted to say this by the fact that this curated list _does_ show the number of raters. So nice work.
Telling someone to read 20 books is hardly useful. Nobody is going to actually do that.
Long overwhelming lists of books considered harmful.
- Clean Architecture - Design Patterns: Elements of Reusable Object-Oriented Software - Domain-Driven Design: Tackling Complexity in the Heart of Software - Clean Agile
and forget the rest. Life is short and those books are more than enough.
For a more prestigious review:
“This book is awesome. It bridges the huge gap between distributed systems theory and practical engineering. I wish it had existed a decade ago, so I could have read it then and saved myself all the mistakes along the way.”
— Jay Kreps, Creator of Apache Kafka and CEO of ConfluentDid you just literally search for books on software architecture on the internet . I can guarantee that the OP didn't even read 50%.
> I thoroughly reviewed all books [tagged with software-architecture] on Goodreads and picked the best objectively
I thought that reviewing a book meant that you read it, but no? Is this a review of reviews?
In practice, the typical software developer is not terribly well-read. The number of (non-mandatory) volumes most devs read (not just use as bookshelf decoration) is probably in the lower single digits. If you read one software engineering book a year, you are probably in the top 5%.
Maybe we can create a repository where people's vote and comment why they recommend a book. Does GitHub have a way to vote stuff?!
What you people think about it?!
* Structure and Interpretation of Computer Programs (SICP)
I’m left wondering about the Venn diagram of self-selected GoodReads reviewers and current pragmatic software engineering practitioners with a systems architect mindset.
Start with SICP.