Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I have a couple of developers at my company who wish to move from programming into architecture. What are the best books out there on the theory and practice of software architecture? Include a cover picture if you can.

Feel free to include general books, and also books that relate to a specific technology.


locked by Thomas Owens Jun 5 '13 at 13:33

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

closed as not constructive by Mark Trapp Dec 9 '11 at 18:41

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

It's not a direct answer, so just a comment. The best (and really only) way to learn to be an architect is from another architect, preferably a master architect. Software Architecture and Engineering in general is still in a pre-industrialized state from the perspective of other engineering disciplines. We still do apprentice->journeyman->master type advancement. – JP Alioto Dec 8 '10 at 18:00

20 Answers 20

up vote 15 down vote accepted

alt text

(link to the book)

This is a pretty good book, although it deals not with software architecture in general, but with architecture of business applications.

it was a good book when published, but I think most of the patterns there are not used very much in the industry. Not a bad book but for sure not one of the top 5 in my opinion – Uberto Dec 7 '10 at 14:26
Although it's called "Enterprise Application Architecture", it's roughly on the same level as the GoF Design Patterns book, which is a class-level design rather than an application-level architecture. – Thomas Owens Dec 7 '10 at 14:34
Ugh, I don't like this book. It will not help you become an architect. – JP Alioto Dec 8 '10 at 17:54
The book is ok, but it's really only about enterprise applications. If you're doing any other kind of development (e.g. desktop, mobile, embedded) it's not very useful. – nikie Jun 28 '11 at 8:33

alt text

But, I would encourage these developers not to move into architecture and totally forget about programming. If they do, they won't have any respect from programmers and they won't be properly equipped to make architectural decisions.


The commonly cited/referenced book on software architectures, and the book used when I took the Software Architecture course at my university is Software Architecture in Practice (2nd Edition) by Len Bass, Paul Clements, and Rick Kazman.

At least one professor who teaches the course has switched the textbook to Software Systems Architecture by Nick Rozanski and Eoin Woods, but I can't vouch for the quality or content of that book. According to Sergio Acosta (in the comments), Rozanski's book is newer, based on the work of Bass, and he considers it easier to read. I'm rarely disappointed by books used in the software engineering program.

I've used both (Bass and Rozanski). Bass' was the architectural bible for a long time, but Rozanski's is newer and more up to date; it is easier to read and heavily based on Bass'. I highly recommend starting with Rozanski's. – Sergio Acosta Dec 5 '10 at 22:42
+1 the Bass book was a good read when I started getting into architecture. It is a bit dry but it gives you an idea of the kinds of things you should be thinking about. – RationalGeek Sep 27 '11 at 12:18

Design Patterns

A must read for all programmers:

Obsolete book now. Most of the patterns of the Gang of Four are became so misused that are almost anti-patterns now. Like singleton and abstract factory. – Uberto Dec 7 '10 at 14:31
@Uberto That's why everyone should read this book. It explains why and how to use each pattern along with when you probably should consider something else. If more people read the entire pattern entry, I think a lot of those problems would go away. – Thomas Owens Dec 7 '10 at 14:35
I found that book very heavy to read and to understand. I suspect most of the people just pretend they read it and copy-paste the examples. So I won't suggest it as first book for a future architect. For sure it's important for a historical point of view of current sw architecture. – Uberto Dec 7 '10 at 14:42
Does anyone else think that Groupthink is a huge disease in the software profession? If following gurus blindly (not what the book expected, but that which in fact happened) is where the profession is going, I think the software profession is doomed. I don't blame this book. I blame the people who read it, and started thinking that grokking pattern-fu could cover for their lack of care for other foundational practices of clean coding. – Warren P Apr 13 '11 at 15:41

97 Things Every Software Architect Should Know

enter image description here

Zach, did you read one? I was looking at it before, but its amazon reviews looked not so great. – DXM Jun 28 '11 at 7:02
I've read chunks of it. I'm not sure if I read every essay but some of the ones I read were worth it. – Zachary K Jun 28 '11 at 7:17

alt text

this would be my #2 choice. Good book on practices and good code. A bit pedantic sometimes.

I agree about it being pedantic, but the practices it advocates are much better than 2000 line functions. – Stargazer712 Dec 8 '10 at 18:24
Yes sure, the content is a very very good one. – Uberto Dec 9 '10 at 20:28
This book is too low-level to be considered software architecture. – Steven Jeuris Nov 25 '11 at 10:21

alt text

This is my number #1 choice right now. Best book about how to build (grow) application now.


I've found volumes 1 and 4 of Pattern-Oriented Software Architecture to be very useful. I'm sure the other volumes are good too, I just haven't read them so I can't recommend them.


Refactoring, Martin Fowler

One of the best programming books overall.


I wont't cite ones that have already been by other, so I'll add this one:

Concepts Techniques and Models of Computer Programming, by peter Van Roy and Seif Haridi

Concepts Techniques and Models of Computer Programming

The obvious problem is that it used the now (sort-of) defunct Mozart Programming System and the amazing Oz programming language. Which then spawned other interesting experiments like the Alice ML programming language.

It is, however, an amazing book, both to learn computer programming and to get a deep understanding of CS concepts and a good overview of architecture concepts without using buzzwords.

A bit verbose at times, but very well written.

Maybe more of a CS theory book in the end than an enterprise architecture book, but I find its teachings very valuable to apply to industry software.


Documenting Software Architecture: Views and Beyond by Clements et al. from the Software Engineering Institute.

Cover of Documenting Software Architecture


An interesting book is The Architecture of Open Source Applications

Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another's mistakes rather than building on one another's successes.

This book's goal is to change that. In it, the authors of twenty-five open source applications explain how their software is structured, and why. What are each program's major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to this book provide unique insights into how they think


Microsoft have some really good stuff on this. For a start they have a great free book available here:

Plus a lot of their white papers on design are here:

You probably want to read up on design patterns:

And then there's the classics - mythical man month, code complete, pragmatic programmer etc. A bit of googling will help you find the good books.


try this small book.

Software Architecture for Developers - The Book A practical and pragmatic guide to software architecture

This book is a collection of essays that together form a practical and pragmatic guide to software architecture.

  1. What is software architecture?

  2. What is the role of a software architect?

  3. How do you define software architecture?

  4. How do you share software architecture?

  5. How do you deliver software architecture?

The blog also has some excellent posts about the discipline of software architecture. – RationalGeek Sep 27 '11 at 12:20

I recommend Expert One-on-One J2EE Design and Development. It's a very good book about J2EE, and is the theory basement of Spring Framework.


The question you're asking is very untangible, in a way. Software architecture is different things and software architects are a very diverse bunch.

A few notes, though:

"Clean Code" mentioned above is one of the best books I've ever read on programming. But it is certainly not a book about architecture. Mandatory reading for developers, yes, but doesn't give much insight into how the larger stuff fits together, imo.

"PoEAA" by Fowler is a good book, but as someone else said, kind of old now, and many of the patterns presented have been obsoleted several years ago.

The DDD book by Eric Evans is a very solid and very inspiring book about software construction and customer collaboration - valuable skills for architects, but good for developers also.


What I'd suggest that, please go and read Code Complete 2 first. This will help you to shape your thoughts and find the best way of doing things.

In the architecture perspective, it's good start with GOF or Head First Design Patterns.

Patterns of Enterprise Application Architecture is an excellent book


Not the answer you're looking for? Browse other questions tagged or ask your own question.