Here are 100 books that 97 Things Every Software Architect Should Know fans have personally recommended if you like
97 Things Every Software Architect Should Know.
Shepherd is a community of 12,000+ authors and super readers sharing their favorite books with the world.
I’ve been a software architect for a very long time. I love hard problems, and I’m very passionate about collaborating with others to find the right solution to them. Software architecture is a challenging, multi-faceted discipline with very few resources to help you make the right decisions. That’s why I’m recommending these books on software architecture. These books helped me become a more effective software architect, and I hope they can help you become more effective as well.
It is my belief that half of being an effective software architect is mastering people skills.
However soft they are, these skills are the hardest to master. This book focuses on the communication and soft skills necessary to become an effective architect, and it does it superbly. The author’s elevator metaphor is perfect in that it emphasizes the fact that communication must exist on all levels within the organization, and the skills needed at each level differ.
I personally found this book very useful in honing my communication skills as a software architect.
As the digital economy changes the rules of the game for enterprises, the role of software and IT architects is also transforming. Rather than focus on technical decisions alone, architects and senior technologists need to combine organizational and technical knowledge to effect change in their company's structure and processes. To accomplish that, they need to connect the IT engine room to the penthouse, where the business strategy is defined.
In this guide, author Gregor Hohpe shares real-world advice and hard-learned lessons from actual IT transformations. His anecdotes help architects, senior developers, and other IT professionals prepare for a more complex…
The Victorian mansion, Evenmere, is the mechanism that runs the universe.
The lamps must be lit, or the stars die. The clocks must be wound, or Time ceases. The Balance between Order and Chaos must be preserved, or Existence crumbles.
Appointed the Steward of Evenmere, Carter Anderson must learn the…
I’ve been a software architect for a very long time. I love hard problems, and I’m very passionate about collaborating with others to find the right solution to them. Software architecture is a challenging, multi-faceted discipline with very few resources to help you make the right decisions. That’s why I’m recommending these books on software architecture. These books helped me become a more effective software architect, and I hope they can help you become more effective as well.
This book was very influential in my career as a software architect because it was the first “technical” book I read that finally focused on the people and leadership skills of being an architect.
It was also the first book I read that made me start to think more about the intersection of agile and architecture, something they also devote an entire chapter to. While a bit outdated in today’s world, the authors hit the nail on the head with the still-relevant chapters on thought leadership, agility, and software architecture modeling.
In A Practical Guide to Enterprise Architecture, six leading experts present indispensable technical, process, and business insight into every aspect of enterprise architecture. You'll find start-to-finish guidance for architecting effective system, software, and service-oriented architectures; using product lines to streamline enterprise software design; leveraging powerful agile modeling techniques; extending the Unified Process to the full software lifecycle; architecting presentation tiers and user experience; and driving the technical direction of the entire enterprise. For every working architect and every IT professional who wants to become one.
I’ve been a software architect for a very long time. I love hard problems, and I’m very passionate about collaborating with others to find the right solution to them. Software architecture is a challenging, multi-faceted discipline with very few resources to help you make the right decisions. That’s why I’m recommending these books on software architecture. These books helped me become a more effective software architect, and I hope they can help you become more effective as well.
Although first published in 2004, this book continues to be my primary reference for anything related to messaging, event processing, and integration architecture.
The patterns described in this book are still highly relevant today, and are explained in a clear and concise manner that makes each one easy to understand and implement. Because you will encounter these patterns everywhere, this timeless book is a must-read book to better recognize and understand these patterns.
Enterprise Integration Patterns provides an invaluable catalog of sixty-five patterns, with real-world solutions that demonstrate the formidable of messaging and help you to design effective messaging solutions for your enterprise.
The authors also include examples covering a variety of different integration technologies, such as JMS, MSMQ, TIBCO ActiveEnterprise, Microsoft BizTalk, SOAP, and XSL. A case study describing a bond trading system illustrates the patterns in practice, and the book offers a look at emerging standards, as well as insights into what the future of enterprise integration might hold.
This book provides a consistent vocabulary and visual notation framework to describe…
The Guardian of the Palace is the first novel in a modern fantasy series set in a New York City where magic is real—but hidden, suppressed, and dangerous when exposed.
When an ancient magic begins to leak into the world, a small group of unlikely allies is forced to act…
I’ve been a software architect for a very long time. I love hard problems, and I’m very passionate about collaborating with others to find the right solution to them. Software architecture is a challenging, multi-faceted discipline with very few resources to help you make the right decisions. That’s why I’m recommending these books on software architecture. These books helped me become a more effective software architect, and I hope they can help you become more effective as well.
Why should you spend so much time working on the software architecture of a system? Does it really matter?
This book made me realize that not all systems need the same effort of software architecture to make them successful. If you’re building a doghouse, very little planning is needed—all you need is some wood, nails, a hammer, and a saw. If you are building a skyscraper, you need a significant amount of planning and architecture, or the building will collapse.
In this book the author also talks about risk-based architecture—determining how much architecture is needed based on risk, a perspective I found very helpful in my career as an architect.
This is a practical guide for software developers, and different than other software architecture books. Here's why:
It teaches risk-driven architecting. There is no need for meticulous designs when risks are small, nor any excuse for sloppy designs when risks threaten your success. This book describes a way to do just enough architecture. It avoids the one-size-fits-all process tar pit with advice on how to tune your design effort based on the risks you face.
It democratizes architecture. This book seeks to make architecture relevant to all software developers. Developers need to understand how to use constraints as guiderails that…
I’m a professor of computer science at Oregon State University. My research focus is on programming languages, but I also work on computer science education and outreach. I grew up in Germany and moved to the United States in 2000. Since computer science is a fairly new and not widely understood discipline, I am interested in explaining its core ideas to the general public. I believe that in order to attract a more diverse set of people to the field we should emphasize that coding is only a small part of computer science.
This book provides a brief introduction to the concept of algorithms before discussing the limitations of computation. Specifically, Harel explains undecidable problems (that is, problems for which no algorithm exists) and infeasible problems (that is, problems for which only algorithms are known that have an exponential runtime). I like this book (and its splendid title) because of its focus on the limitations of computation. Harel does a marvelous job in explaining two difficult topics about computation. The understanding of any scientific discipline requires the understanding of its limits, and the limits of computation are as significant as they are surprising.
Computers are incredible. They are one of the most important inventions of the 20th century, dramatically and irrevocably changing the way we live. That is the good news. The bad news is that there are still major limitations to computers, serious problems that not even the most powerful computers can solve. The consequences of such limitations can be serious. Too often these limits get overlooked, in the quest for bigger, better, and more powerful computers. In Computers Ltd., David Harel, best-selling author of Algorithmics, explains and illustrates one of the most fundamental, yet under-exposed facets of computers - their inherent…
I love to expand my knowledge and learn not just about new technologies, but how things work. I find it fascinating to dig deep into computer programming, technology concepts, and really geek out on things. That’s why I love software development or programming books that aren’t just about some technology and how to do something, but rather books that really make you think and teach you not just programming skills but critical thinking about problem-solving skills. As a software developer for over 15 years and a person who teaches software developers, I have learned that if someone isn’t entertained, they aren’t learning. That’s why I put together a list of fun, entertaining and useful books.
Wow! This book is exactly what every programmer has always wanted to know or even felt guilty about not knowing and it’s all presented in an extremely simplified and fun way.
This is one of those books where you get excited in the morning when you wake up because you know you are going to be able to read more in the book and you are hoping the book will never end.
It’s rare to find a big book that I enjoyed reading so much and felt so short. This book covers almost everything you ever wondered about computer science. After reading this book, I felt like I finally understood everything a programmer was supposed to know and I no longer felt that nagging feeling of being an imposter.
Aury and Scott travel to the Finger Lakes in New York’s wine country to get to the bottom of the mysterious happenings at the Songscape Winery. Disturbed furniture and curious noises are one thing, but when a customer winds up dead, it’s time to dig into the details and see…
If someone had told me during my early professional years that I would become a strong advocate for functional programming and the author of a fundamental book on functional software engineering, I would have found it hard to believe. Was functional programming truly worth dedicating my life to? However, once I experienced the sheer beauty of functional programming, there was no turning back. I delved deep into Haskell and functional C++, and began writing articles, giving talks, and developing various technologies. I realized that I possessed a truly unique perspective on approaching software engineering in functional languages, and that there was a significant knowledge gap that needed to be filled for the benefit of all.
My journey in the world of software development has been arduous and challenging.
One of the common struggles we all face is the overwhelming number of solutions available, making it impossible to fully grasp everything at a deep level.
Just when I thought I had mastered an approach and felt competent in it, a new shiny approach would emerge, demanding my immediate attention. It often felt like a never-ending race to keep up with the ever-evolving field.
This constant pursuit of staying relevant as a software engineer can be frustrating, as it feels like we are always lagging behind the rapidly advancing world. I discovered that knowledge of specific technologies, frameworks, or libraries does not easily transfer across different technology stacks. They are too specific and lack universality. It was then that I turned my focus to more general principles of software engineering.
I realized that there are fundamental engineering…
Incorporate effective domain modeling into the software development process
Software design thought leader and founder of Domain Language, Eric Evans, provides a systematic approach to domain-driven design, presenting an extensive set of design best practices, experience-based techniques, and fundamental principles that facilitate the development of software projects facing complex domains. Intertwining system design and development practice, this book incorporates numerous examples based on actual projects to illustrate the application of domain-driven design to real-world software modeling and development.
Domain Model: Part I outlines the goals of domain-driven development, defines terms, and gives an overview of the implications of using the…
I have been coding for over 30 years. I’ve seen some miserable interfaces, and some large programs that collapse under their own weight. Software was, at one point, notorious for being late, over budget, and unreliable. These books have helped turn the corner on these failings, and I have found each of them very valuable in my day-to-day programming. While you can learn technique and even languages online, the kind of insight found in these books is rare and worth spending time and money on.
This book changed my entire perspective on writing the UI and UX of great software. Even the revised edition is a bit old but still has many valuable lessons to teach. Platt established many of the fundamental principles of writing usable and transparent software, and his book should be read not only by designers, but perhaps especially by programmers.
This non-technical book discusses the annoyances and dangers we encounter every day when using computers. Written with delightful wit and humor, as well as the insight of an experienced insider, it rips into the design of software much as Atul Gawande's Complications exposed the practice of medicine. Its basic message to ordinary people having problems learning or using their software is this: It's not your fault! It's not because you're dumb! Aimed primarily at casual users of software, the book tells readers what they should expect from their software and how to make their voices heard so that they receive…
Defining and managing the requirements for a software system is hard! I’ve been interested in improving how projects handle their requirements for more than 35 years. I realized how important this was when I saw how many projects—including my own—struggled and failed when they neglected to build a solid foundation of well-understood and clearly communicated requirements. I’ve personally used nearly all of the techniques described in my book Software Requirements, and I got always better results when I applied those techniques. My books, articles, training courses, presentations, and videos on requirements have been helpful to thousands of business analysts worldwide for many years.
Exploring requirements is more about communication than computing. Requirements elicitation often involves discussions between business analysts and user representatives or other project stakeholders in either one-on-one discussions or group workshops. Requirements by Collaboration presents a wealth of practical tools and techniques for planning and leading requirements development workshops. It’s packed full of useful tips, checklists, questions to ask, and activities to perform to make workshops effective and successful.
I especially like Gottesdiener’s “collaboration patterns,” eight techniques that a workshop facilitator can employ to help the group achieve its objectives. The pattern called Decide How to Decide is the first one that any group of collaborators should use: exactly how will we make decisions? If you expect to lead, or even participate in, requirements workshops, read this book first.
"I spend much time helping organizations capture requirements and even more time helping them recover from not capturing requirements. Many of them have gone through some motions regarding requirements as if they were sleepworking. It's time to wake up and do it right-and this book is going to be their alarm clock."
- Jerry Weinberg, author of numerous books on productivity enhancement "In today's complex, fast-paced software development environment, collaboration-the intense peer-to-peer conversations that result in products, decisions, and knowledge sharing-is absolutely essential to success. But all too often, attempts to collaborate degenerate into agonizing meetings or ineffectual bull sessions.…
Magical realism meets the magic of Christmas in this mix of Jewish, New Testament, and Santa stories–all reenacted in an urban psychiatric hospital!
On locked ward 5C4, Josh, a patient with many similarities to Jesus, is hospitalized concurrently with Nick, a patient with many similarities to Santa. The two argue…
During my career, I’ve worked on projects large and small (1 - 60+ people) in a wide variety of fields (like repair dispatch, ticket sales, and professional football coaching--the NFL kind not the FIFA kind). All of them, and particularly the big ones, were like antique clocks: they had lots of moving pieces and if any piece broke, the whole thing wouldn’t work. (Unfortunately, failed software projects don’t look nice on your mantelpiece.) In this list, I’ve tried to pick some books that you might not discover if you look only for programming books. Read those, too, but don’t ignore the more human-oriented dimensions of software development. Hopefully you’ll find these choices interesting and useful.
Software engineering involves several phases such as requirements gathering, design, programming, testing, and deployment.
This book explains techniques that allow you to build quality and robustness into every phase of the process. It discusses design, classes, defensive programming, collaboration, refactoring, and more.
The book uses many examples in an assortment of languages but the concepts apply to any programming language. In fact, the main themes like building error detection into every step of the process generalize to even non-programming parts of the development process.
If you’re an experienced developer, you may have discovered some of this book’s ideas elsewhere or even on your own, but you only need to pick up one or two new tidbits to make the book worthwhile.
Widely considered one of the best practical guides to programming, Steve McConnell's original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices-and hundreds of new code samples-illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking-and help you build…