100 Best Software Architecture Books of All Time

We've researched and ranked the best software architecture books in the world, based on recommendations from world experts, sales data, and millions of reader ratings. Learn more

Featuring recommendations from Jeff Bezos, Satya Nadella, Andrew Chen, and 44 other experts.
1

Clean Architecture

Building upon the success of best-sellers The Clean Coder and Clean Code, legendary software craftsman Robert C. "Uncle Bob" Martin shows how to bring greater professionalism and discipline to application architecture and design.
As with his other books, Martin's Clean Architecture doesn't merely present multiple choices and options, and say "use your best judgment": it tells you what choices to make, and why those choices are critical to your success. Martin offers direct, no-nonsense answers to key architecture and design questions like:

What are the best high level...
more

See more recommendations for this book...

2
Even bad code can function. But if code isn t clean, it can bring a development organization to its knees. Every year, countless hours and significant resources are lost because of poorly written code. But it doesn t have to be that way.
Noted software expert Robert C. Martin presents a revolutionary paradigm with Clean Code: A Handbook of Agile Software Craftsmanship . Martin has teamed up with his colleagues from Object Mentor to distill their best agile practice of cleaning code on the fly into a book that will instill within you the values of a software craftsman and...
more
Recommended by Ana Bell, and 1 others.

Ana BellThis book is going to show you how to write code that is readable by yourself in the future, or by somebody else. You can sit on the couch and read it; you don’t need to code. You can actually enjoy it if you don’t know how to program at all. (Source)

See more recommendations for this book...

3
Many forces affect software today: larger datasets, geographical disparities, complex company structures, and the growing need to be fast and nimble in the face of change.

Proven approaches such as service-oriented and event-driven architectures are joined by newer techniques such as microservices, reactive architectures, DevOps, and stream processing. Many of these patterns are successful by themselves, but as this practical ebook demonstrates, they provide a more holistic and compelling approach when applied together.

Author Ben Stopford explains how service-based...
more

See more recommendations for this book...

4

The Pragmatic Programmer

From Journeyman to Master

-- Ward Cunningham Straight from the programming trenches, The Pragmatic Programmer cuts through the increasing specialization and technicalities of modern software development to examine the core process--taking a requirement and producing working, maintainable code that delights its users. It covers topics ranging from personal responsibility and career development to architectural techniques for keeping your code flexible and easy to adapt and reuse. Read this book, and youll learn how to *Fight software rot; *Avoid the trap of duplicating knowledge; *Write flexible, dynamic, and adaptable... more
Recommended by Jeff Atwood, Hadley Wickham, and 3 others.

Hadley WickhamThis book is about the craft of software development, and thinking about how to produce good code. (Source)

See more recommendations for this book...

5
Distributed systems have become more fine-grained in the past 10 years, shifting from code-heavy monolithic applications to smaller, self-contained microservices. But developing these systems brings its own set of headaches. With lots of examples and practical advice, this book takes a holistic view of the topics that system architects and administrators must consider when building, managing, and evolving microservice architectures.

Microservice technologies are moving quickly. Author Sam Newman provides you with a firm grounding in the concepts while diving into current solutions...
more

See more recommendations for this book...

6
The practice of enterprise application development has benefited from the emergence of many new enabling technologies. Multi-tiered object-oriented platforms, such as Java and .NET, have become commonplace. These new tools and technologies are capable of building powerful applications, but they are not easily implemented. Common failures in enterprise applications often occur because their developers do not understand the architectural lessons that experienced object developers have learned. Patterns of Enterprise Application Architecture is written in direct response to the... more
Recommended by David Heinemeier Hansson, and 1 others.

See more recommendations for this book...

7
"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is not about drawing pictures of a domain; it is about how you think of it, the language you use to talk about it, and how you organize your software to reflect your improving understanding of it. Eric thinks that learning about your problem domain is as likely to happen at the end of your project as at the beginning, and so refactoring is a big part of his technique. "The book is a fun read. Eric... more
Recommended by David Heinemeier Hansson, and 1 others.

See more recommendations for this book...

8

Code Complete

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... more

Santiago BasultoIf my career path is hackers turned business people, I’d say: Start with the basics and fundamentals: SICP: Structure and Interpretation of Computer Programs Code Complete 2 (Source)

Ana BellCode Complete is for people working in industry, writing software for companies. It has little checklists at key points in the book; if you are in industry, you can make sure that your code is readable and debugged by going through these checklists and making sure you’re touching upon all aspects. (Source)

See more recommendations for this book...

9

Windows Internals, Part 1

User Mode

Delve inside Windows architecture and internals - and see how core components work behind the scenes. This classic guide has been fully updated for Windows 8.1 and Windows Server 2012 R2, and now presents its coverage in three volumes: Book 1, User Mode; Book 2, Kernel Mode; Book 3, Device Driver Models.

In Book 1, you'll plumb Windows fundamentals, independent of platform - server, desktop, tablet, phone, Xbox. Coverage focuses on high-level functional descriptions of the various Windows components and features that interact with, or are manipulated by, user mode programs, or...
more
Recommended by Rob Fuller, and 1 others.

Rob Fuller@maddiestone Awesome book, I've read a couple editions and always learn new things. Have fun ;-) I would also recommend reading the older editions they have tricks and info that seem to disappear in newer ones. (Source)

See more recommendations for this book...

10
Few books on software project management have been as influential and timeless as The Mythical Man-Month. With a blend of software engineering facts and thought-provoking opinions, Fred Brooks offers insight for anyone managing complex projects. These essays draw from his experience as project manager for the IBM System/360 computer family and then for OS/360, its massive software system. Now, 20 years after the initial publication of his book, Brooks has revisited his original ideas and added new thoughts and advice, both for readers already familiar with his work and for readers discovering... more
Recommended by Jeff Bezos, Andrew Chen, Alan Kay, and 4 others.

Jeff Bezos[From "The Everything Store", written by Brad Stone] “An influential computer scientist makes the counterintuitive argument that small groups of engineers are more effective than larger ones at handling complex software projects. The book lays out the theory behind Amazon’s two pizza teams,” Stone writes. (Source)

Alan KayAn early look and experience with timeless truths (and gotchas) from systems building with teams (Source)

See more recommendations for this book...

Don't have time to read the top Software Architecture books of all time? Read Shortform summaries.

Shortform summaries help you learn 10x faster by:

  • Being comprehensive: you learn the most important points in the book
  • Cutting out the fluff: you focus your time on what's important to know
  • Interactive exercises: apply the book's ideas to your own life with our educators' guidance.
11

Design Patterns

Elements of Reusable Object-Oriented Software

Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.

The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in...
more

See more recommendations for this book...

12
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...
more

See more recommendations for this book...

13
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... more

See more recommendations for this book...

14

How do you detangle a monolithic system and migrate it to a microservice architecture? How do you do it while maintaining business-as-usual? As a companion to Sam Newman’s extremely popular Building Microservices, this new book details a proven method for transitioning an existing monolithic system to a microservice architecture.

With many illustrative examples, insightful migration patterns, and a bevy of practical advice to transition your monolith enterprise into a microservice operation, this practical guide covers multiple scenarios and strategies for a successful...

more

See more recommendations for this book...

15

Software Architecture in Practice

This award-winning book, substantially updated to reflect the latest developments in the field, introduces the concepts and best practices of software architecture—how a software system is structured and how that system's elements are meant to interact. Distinct from the details of implementation, algorithm, and data representation, an architecture holds the key to achieving system quality, is a reusable asset that can be applied to subsequent systems, and is crucial to a software organization's business strategy.

Drawing on their own extensive experience, the authors cover the...

more

See more recommendations for this book...

16
Fully Revised and Updated-Includes New Refactorings and Code Examples "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
--M. Fowler (1999) For more than twenty years, experienced programmers worldwide have relied on Martin Fowler's Refactoring to improve the design of existing code and to enhance software maintainability, as well as to make existing code easier to understand.
This eagerly awaited new edition has been fully updated to reflect crucial changes in the programming landscape. ...
more
Recommended by David Heinemeier Hansson, and 1 others.

David Heinemeier HanssonThis is next on my list of technical books to read! Refactoring is one of two programming books that I’ve read multiple times (the other is Smalltalk Best Practice Patterns), and I’m due for another reading. What perfect time then to dive into Martin Fowler’s long anticipated 2nd edition, now using JavaScript rather than Java for the code examples. Like the stoic books, I read Refactoring and... (Source)

See more recommendations for this book...

17
Winner of the 2011 Jolt Excellence Award!

Getting software released to users is often a painful, risky, and time-consuming process. This groundbreaking new book sets out the principles and technical practices that enable rapid, incremental delivery of high quality, valuable new functionality to users. Through automation of the build, deployment, and testing process, and improved collaboration between developers, testers, and operations, delivery teams can get changes released in a matter of hours-- sometimes even minutes-no matter what the size of a project or the...
more

See more recommendations for this book...

18
Whether it's in Java, .NET, or Ruby on Rails, getting your application ready to ship is only half the battle. Did you design your system to survivef a sudden rush of visitors from Digg or Slashdot? Or an influx of real world customers from 100 different countries? Are you ready for a world filled with flakey networks, tangled databases, and impatient users?

If you're a developer and don't want to be on call for 3AM for the rest of your life, this book will help.

In Release It!, Michael T. Nygard shows you how to design and architect your...
more

See more recommendations for this book...

19
Rozanski and Woods explain what software architecture is all about, and why the architect's role is vitally important to successful project delivery. This practical, practitioner-oriented guide explains how to design successful architectures for information systems and to see these through to their successful implementation. less

See more recommendations for this book...

20

The Soul of a New Machine

The computer revolution brought with it new methods of getting work done—just look at today's news for reports of hard-driven, highly-motivated young software and online commerce developers who sacrifice evenings and weekends to meet impossible deadlines. Tracy Kidder got a preview of this world in the late 1970s when he observed the engineers of Data General design and build a new 32-bit minicomputer in just one year. His thoughtful, prescient book, The Soul of a New Machine, tells stories of 35-year-old "veteran" engineers hiring recent college graduates and encouraging them to work... more

Stephen BakerA marvelously detailed book, and I found it very inspiring. An interesting way of looking at how computing has utterly changed in the last 30 years. (Source)

Scott JohnsonTracy Kidder's The Soul of a New Machine. This was the first book that really took a deep dive into the process of creating a high tech product from scratch. Tracy really humanized the engineering process and made me realize that was the type of industry where I wanted to be. (Source)

See more recommendations for this book...

Don't have time to read the top Software Architecture books of all time? Read Shortform summaries.

Shortform summaries help you learn 10x faster by:

  • Being comprehensive: you learn the most important points in the book
  • Cutting out the fluff: you focus your time on what's important to know
  • Interactive exercises: apply the book's ideas to your own life with our educators' guidance.
21

Head First Design Patterns

You're not alone.

At any given moment, somewhere in the world someone struggles with the same software design problems you have. You know you don't want to reinvent the wheel (or worse, a flat tire), so you look to Design Patterns--the lessons learned by those who've faced the same problems. With Design Patterns, you get to take advantage of the best practices and experience of others, so that you can spend your time on...something else. Something more challenging. Something more complex. Something more fun.

You want to learn about the patterns that matter--why to...
more

See more recommendations for this book...

24

Accelerate

Building and Scaling High-Performing Technology Organizations

Does technology actually matter? And how can we apply technology to drive business value? For years, we've been told that the performance of software delivery teams doesn't matter--that it can't provide a competitive advantage to our companies. Through four years of groundbreaking research, Dr. Nicole Forsgren, Jez Humble, and Gene Kim set out to find a way to measure software delivery performance--and what drives it--using rigorous statistical methods. This book presents both the findings and the science behind that research. Readers will discover how to measure the performance of their... more
Recommended by Kirk Borne, and 1 others.

Kirk BorneFantastic accomplishment! Congratulations @nicolefv on your outstanding #DevOps book ... I love that: “The Science of Lean” ... that works also for #DataOps and Lean Analytics. https://t.co/i9gPhKL0dt https://t.co/DNJpuJtER0 (Source)

See more recommendations for this book...

25

Building Evolutionary Architectures

Support Constant Change

The software development ecosystem is constantly changing, providing a constant stream of new tools, frameworks, techniques, and paradigms. Over the past few years, incremental developments in core engineering practices for software development have created the foundations for rethinking how architecture changes over time, along with ways to protect important architectural characteristics as it evolves. This practical guide ties those parts together with a new way to think about architecture and time. less

See more recommendations for this book...

26
As Python continues to grow in popularity, projects are becoming larger and more complex. Many Python developers are now taking an interest in high-level software architecture patterns such as hexagonal/clean architecture, event-driven architecture, and strategic patterns prescribed by domain-driven design (DDD). But translating those patterns into Python isn't always straightforward.

With this practical guide, Harry Percival and Bob Gregory from MADE.com introduce proven architectural design patterns to help Python developers manage application complexity. Each pattern is...
more

See more recommendations for this book...

27
Be a Better Developer and Deliver Better Code Despite advanced tools and methodologies, software projects continue to fail. Why? Too many organizations still view software development as just another production line. Too many developers feel that way, too--and they behave accordingly. In The Software Craftsman: Professionalism, Pragmatism, Pride, Sandro Mancuso offers a better and more fulfilling path. If you want to develop software with pride and professionalism; love what you do and do it with excellence; and build a career with autonomy, mastery, and purpose, it... more

See more recommendations for this book...

29
The Complete Guide to Writing More Maintainable, Manageable, Pleasing, and Powerful Ruby Applications Ruby's widely admired ease of use has a downside: Too many Ruby and Rails applications have been created without concern for their long-term maintenance or evolution. The Web is awash in Ruby code that is now virtually impossible to change or extend. This text helps you solve that problem by using powerful real-world object-oriented design techniques, which it thoroughly explains using simple and practical Ruby examples. Sandi Metz has distilled a lifetime of conversations and... more

See more recommendations for this book...

30
Programmers who endure and succeed amidst swirling uncertainty and nonstop pressure share a common attribute: They care deeply about the practice of creating software. They treat it as a craft. They are professionals. In The Clean Coder: A Code of Conduct for Professional Programmers, legendary software expert Robert C. Martin introduces the disciplines, techniques, tools, and practices of true software craftsmanship. This book is packed with practical advice-about everything from estimating and coding to refactoring and testing. It covers much more than technique: It is... more

See more recommendations for this book...

Don't have time to read the top Software Architecture books of all time? Read Shortform summaries.

Shortform summaries help you learn 10x faster by:

  • Being comprehensive: you learn the most important points in the book
  • Cutting out the fluff: you focus your time on what's important to know
  • Interactive exercises: apply the book's ideas to your own life with our educators' guidance.
31
Implementing Domain-Driven Design presents a top-down approach to understanding domain-driven design (DDD) in a way that fluently connects strategic patterns to fundamental tactical programming tools. Vaughn Vernon couples guided approaches to implementation with modern architectures, highlighting the importance and value of focusing on the business domain while balancing technical considerations.

Building on Eric Evans’ seminal book, Domain-Driven Design, the author presents practical DDD techniques through examples from familiar domains. Each principle is backed up by realistic...
more

See more recommendations for this book...

32

Working Effectively with Legacy Code

Get more out of your legacy systems, more performance, functionality, reliability, and manageability.Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts.

In this book, Michael Feathers offers start-to-finish strategies for working more effectively with large, untested legacy code bases. This book draws on material Michael created for his renowned Object Mentor seminars, techniques...
more

See more recommendations for this book...

33

Microservice Patterns

The monolithic architecture works well for small, simple applications. However, successful applications have a habit of growing. Eventually the development team ends up in what is known as monolithic hell. All aspects of software development and deployment become painfully slow. The solution is to adopt the microservice architecture, which structures an application as a services, organized around business capabilities. This architecture accelerates software development and enables continuous delivery and deployment of complex software applications.

Microservice Patterns...
more

See more recommendations for this book...

34

Site Reliability Engineering

How Google Runs Production Systems

The overwhelming majority of a software system's lifespan is spent in use, not in design or implementation. So, why does conventional wisdom insist that software engineers focus primarily on the design and development of large-scale computing systems?

In this collection of essays and articles, key members of Google's Site Reliability Team explain how and why their commitment to the entire lifecycle has enabled the company to successfully build, deploy, monitor, and maintain some of the largest software systems in the world. You'll learn the principles and practices that enable...
more

See more recommendations for this book...

35
In the early days of computer science, the interactions of hardware, software, compilers, and operating system were simple enough to allow students to see an overall picture of how computers worked. With the increasing complexity of computer technology and the resulting specialization of knowledge, such clarity is often lost. Unlike other texts that cover only one aspect of the field, The Elements of Computing Systems gives students an integrated and rigorous picture of applied computer science, as its comes to play in the construction of a simple yet powerful computer system.
more

See more recommendations for this book...

36
Publisher's Note: Products purchased from Third Party sellers are not guaranteed by the publisher for quality, authenticity, or access to any online entitlements included with the product.
Design and build scalable web applications quicklyThis is an invaluable roadmap for meeting the rapid demand to deliver scalable applications in a startup environment. With a focus on core concepts and best practices rather than on individual languages, platforms, or technologies, Web Scalability for Startup Engineers describes how infrastructure and software architecture work together to...
more

See more recommendations for this book...

37
Written by a software developer for software developers, this book is a unique collection of the latest software development methods. The author includes OOD, UML, Design Patterns, Agile and XP methods with a detailed description of a complete software design for reusable programs in C++ and Java. Using a practical, problem-solving approach, it shows how to develop an object-oriented application--from the early stages of analysis, through the low-level design and into the implementation. Walks readers through the designer's thoughts -- showing the errors, blind alleys, and creative... more

See more recommendations for this book...

38
This practical guide seeks to make architecture relevant to all software developers. Developers need to understand how to use constraints as guiderails that ensure desired outcomes, and how seemingly small changes can affect a system's properties. less

See more recommendations for this book...

39

Game Programming Patterns

Game Programming Patterns brings the benefits of reusable design patterns to the world of game programming. Commercial game development expert Robert Nystrom presents an array of general solutions to problems encountered in game development. For example, you'll learn how double-buffering enables a player to perceive smooth and realistic motion, and how the service locator pattern can help you provide access to services such as sound without coupling your code to any particular sound driver or sound hardware.
Games have much in common with other software, but also a number of unique...
more

See more recommendations for this book...

40

Designing Software Architectures

A Practical Approach

Designing Software Architectures" will teach you how to design any software architecture in a systematic, predictable, repeatable, and cost-effective way.
This book introduces a practical methodology for architecture design that any professional software engineer can use, provides structured methods supported by reusable chunks of design knowledge, and includes rich case studies that demonstrate how to use the methods. Using realistic examples, you ll master the powerful new version of the proven Attribute-Driven Design (ADD) 3.0 method and will learn how to use it to address key...
more

See more recommendations for this book...

Don't have time to read the top Software Architecture books of all time? Read Shortform summaries.

Shortform summaries help you learn 10x faster by:

  • Being comprehensive: you learn the most important points in the book
  • Cutting out the fluff: you focus your time on what's important to know
  • Interactive exercises: apply the book's ideas to your own life with our educators' guidance.
41
Often referred to as the "black art" because of its complexity and uncertainty, software estimation is not as difficult or puzzling as people think. In fact, generating accurate estimates is straightforward--once you understand the art of creating them. In his highly anticipated book, acclaimed author Steve McConnell unravels the mystery to successful software estimation--distilling academic information and real-world experience into a practical guide for working software professionals. Instead of arcane treatises and rigid modeling techniques, this guide highlights a proven set of... more

See more recommendations for this book...

42
In this truly unique technical book, today's leading software architects present valuable principles on key development issues that go way beyond technology. More than four dozen architects -- including Neal Ford, Michael Nygard, and Bill de hOra -- offer advice for communicating with stakeholders, eliminating complexity, empowering developers, and many more practical lessons they've learned from years of experience. Among the 97 principles in this book, you'll find useful advice such as:




Don't Put Your Resume Ahead of the Requirements (Nitin Borwankar) Chances...
more

See more recommendations for this book...

43
This book distils the ideas and theories of the Domain-Driven Design (DDD) philosophy into a practical play-book that you can leverage to simplify application development for complex problem domains. A focus is placed on the principles and practices of decomposing a complex problem space as well as the implementation patterns and best practices for shaping a maintainable solution space. less

See more recommendations for this book...

44
Increase profitability, elevate work culture, and exceed productivity goals through DevOps practices.

More than ever, the effective management of technology is critical for business competitiveness. For decades, technology leaders have struggled to balance agility, reliability, and security. The consequences of failure have never been greater whether it's the healthcare.gov debacle, cardholder data breaches, or missing the boat with Big Data in the cloud.

And yet, high performers using DevOps principles, such as Google, Amazon, Facebook, Etsy, and Netflix, are routinely...
more

See more recommendations for this book...

45
Applying UML and Patterns is the world’s #1 business and college introduction to “thinking in objects” - and using that insight in real-world object-oriented analysis and design. Building on two widely acclaimed previous editions, Craig Larman has updated this book to fully reflect the new UML 2 standard, to help you master the art of object design, and to promote high-impact, iterative, and skillful agile modeling practices.

Developers and students will learn object-oriented analysis and design (OOA/D) through three iterations of two cohesive, start-to-finish case studies....
more

See more recommendations for this book...

46
More than 300,000 developers have benefited from past editions of UML Distilled . This third edition is the best resource for quick, no-nonsense insights into understanding and using UML 2.0 and prior versions of the UML. Some readers will want to quickly get up to speed with the UML 2.0 and learn the essentials of the UML. Others will use this book as a handy, quick reference to the most common parts of the UML. The author delivers on both of these promises in a short, concise, and focused presentation. This book describes all the major UML diagram types, what they're used... more

See more recommendations for this book...

47
Finally, this brand new book exposes the secrets of computers for everyone to see. Its humorous title begins with the punch line of a classic joke about someone who is baffled by technology.

It was written by a 40-year computer veteran who wants to take the mystery out of computers and allow everyone to gain a true understanding of exactly what computers are, and also what they are not.

Years of writing, diagramming, piloting and editing have culminated in one easy to read volume that contains all of the basic principles of computers written so that everyone can...
more

See more recommendations for this book...

48
Contains insights and lessons about creating winning software solutions in the context of a real-world business. This book provides practical techniques that development executives can employ to improve the productivity of their software organization. It deals with issues like licensing, deployment, installation, configuration, and support. less

See more recommendations for this book...

49

Pattern-Oriented Software Architecture Volume 1

A System of Patterns

Pattern-oriented software architecture is a new approach to software development. This book represents the progression and evolution of the pattern approach into a system of patterns capable of describing and documenting large-scale applications. A pattern system provides, on one level, a pool of proven solutions to many recurring design problems. On another it shows how to combine individual patterns into heterogeneous structures and as such it can be used to facilitate a constructive development of software systems. Uniquely, the patterns that are presented in this book span several levels... more

See more recommendations for this book...

50
Don't engineer by coincidence-design it like you mean it! Filled with practical techniques, Design It! is the perfect introduction to software architecture for programmers who are ready to grow their design skills. Lead your team as a software architect, ask the right stakeholders the right questions, explore design options, and help your team implement a system that promotes the right -ilities. Share your design decisions, facilitate collaborative design workshops that are fast, effective, and fun-and develop more awesome software!

With dozens of design methods, examples,...
more

See more recommendations for this book...

Don't have time to read the top Software Architecture books of all time? Read Shortform summaries.

Shortform summaries help you learn 10x faster by:

  • Being comprehensive: you learn the most important points in the book
  • Cutting out the fluff: you focus your time on what's important to know
  • Interactive exercises: apply the book's ideas to your own life with our educators' guidance.
52

Computer Organization & Design

The Hardware/Software Interface

The performance of software systems is dramatically affected by how well software designers understand the basic hardware technologies at work in a system. Similarly, hardware designers must understand the far-reaching effects their design decisions have on software applications. For readers in either category, this classic introduction to the field provides a look deep into the computer. It demonstrates the relationships between the software and hardware and focuses on the foundational concepts that are the basis for current computer design. less
Recommended by Vicki Boykis, and 1 others.

Vicki BoykisThis is a textbook that covers how computers work from the ground up. It includes hardware, software, and operating systems. It’s a really thick book, but also a really good one! This is the book I’d recommend reading if you missed out on a formal computer science education. (Source)

See more recommendations for this book...

53
Job titles like "Technical Architect" and "Chief Architect" nowadays abound in the software industry, yet many people suspect that "architecture" is one of the most overused and least understood terms in professional software development.

Gorton's book helps resolve this predicament. It concisely describes the essential elements of knowledge and key skills required to be a software architect. The explanations encompass the essentials of architecture thinking, practices, and supporting technologies. They range from a general understanding of software structure and quality...
more

See more recommendations for this book...

54
The need to handle increasingly larger data volumes is one factor driving the adoption of a new class of nonrelational "NoSQL" databases. Advocates of NoSQL databases claim they can be used to build systems that are more performant, scale better, and are easier to program." ""NoSQL Distilled" is a concise but thorough introduction to this rapidly emerging technology. Pramod J. Sadalage and Martin Fowler explain how NoSQL databases work and the ways that they may be a superior alternative to a traditional RDBMS. The authors provide a fast-paced guide to the concepts you need to know in order... more

See more recommendations for this book...

55
Terraform has become a key player in the DevOps world for defining, launching, and managing infrastructure as code (IaC) across a variety of cloud and virtualization platforms, including AWS, Google Cloud, Azure, and more. This hands-on second edition, expanded and thoroughly updated for Terraform version 0.12 and beyond, shows you the fastest way to get up and running.

Gruntwork cofounder Yevgeniy (Jim) Brikman walks you through code examples that demonstrate Terraform's simple, declarative programming language for deploying and managing infrastructure with a few commands. Veteran...
more

See more recommendations for this book...

56

Refactoring to Patterns

In 1994, "Design Patterns" changed the landscape of object-oriented development by introducing classic solutions to recurring design problems. In 1999, "Refactoring" revolutionized design by introducing an effective process for improving code. With the highly anticipated " Refactoring to Patterns ," Joshua Kerievsky has changed our approach to design by forever uniting patterns with the evolutionary process of refactoring.

This book introduces the theory and practice of pattern-directed refactorings: sequences of low-level refactorings that allow designers to safely move designs...
more

See more recommendations for this book...

57
Most software professionals spend much of their time working with someone else's brutally imperfect code. When you consider the serious constraints that legacy code was created under, it's no surprise it looks so bad. The question is: now what? In Brutal Refactoring, Michael Feathers starts with code bases "as they are," not as "we pretend them to be" - and shows how to aggressively reshape them to make them maintainable and amenable to further development.

Brutal Refactoring takes the next steps beyond all previous refactoring books, including Feathers' own highly-praised Working...
more

See more recommendations for this book...

58
Computer systems design is full of conundrums: -Given a choice between a single machine with speed s, or n machines each with speed s/n, which should we choose?
-If both the arrival rate and service rate double, will the mean response time stay the same?
-Should systems really aim to balance load, or is this a convenient myth? -If a scheduling policy favors one set of jobs, does it necessarily hurt some other jobs, or are these "conservation laws" being misinterpreted?
-Do greedy, shortest-delay, routing strategies make sense in a server farm, or is what's good for the...
more

See more recommendations for this book...

59

Documenting Software Architectures

Views and Beyond

For all but the most trivial software systems, you must pay close attention to its architecture, the conceptual glue that holds every phase of a project together. less

See more recommendations for this book...

60
You want increased customer satisfaction, faster development cycles, and less wasted work. Domain-driven design (DDD) combined with functional programming is the innovative combo that will get you there. In this pragmatic, down-to-earth guide, you'll see how applying the core principles of functional programming can result in software designs that model real-world requirements both elegantly and concisely - often more so than an object-oriented approach. Practical examples in the open-source F# functional language, and examples from familiar business domains, show you how to apply these... more

See more recommendations for this book...

Don't have time to read the top Software Architecture books of all time? Read Shortform summaries.

Shortform summaries help you learn 10x faster by:

  • Being comprehensive: you learn the most important points in the book
  • Cutting out the fluff: you focus your time on what's important to know
  • Interactive exercises: apply the book's ideas to your own life with our educators' guidance.
61
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 second volume of The Architecture of Open Source Applications aims to change that. In it, the authors of twenty-four open source applications explain how their software is structured, and... more

See more recommendations for this book...

62
One of the biggest challenges for organizations that have adopted microservice architecture is the lack of architectural, operational, and organizational standardization. After splitting a monolithic application or building a microservice ecosystem from scratch, many engineers are left wondering what s next. In this practical book, author Susan Fowler presents a set of microservice standards in depth, drawing from her experience standardizing over a thousand microservices at Uber. You ll learn how to design microservices that are stable, reliable, scalable, fault tolerant, performant,... more

See more recommendations for this book...

65
Follows two TDD projects from start to finish, illustrating techniques programmers can use to increase the quality of their work. The examples are followed by references to the featured TDD patterns and refactorings. This book emphasises on agile methods and fast development strategies. less

See more recommendations for this book...

66

Windows Kernel Programming

There is nothing like the power of the kernel in Windows - but how do you write kernel drivers to take advantage of that power? This book will show you how.The book describes software kernel drivers programming for Windows. These drivers don't deal with hardware, but rather with the system itself: processes, threads, modules, registry and more. Kernel code can be used for monitoring important events, preventing some from occurring if needed. Various filters can be written that can intercept calls that a driver may be interested in. less

See more recommendations for this book...

67

Spring Microservices in Action

With microservices, you build applications from very small, loosely coupled, and distributed services. Spring Boot and Spring Cloud offer Java developers an easy migration path from traditional monolithic Spring applications to microservice-based applications that can be deployed to multiple cloud platforms. The Spring Boot and Spring Cloud frameworks let you quickly build microservices that are ready to be deployed to a private corporate cloud or a public cloud like Amazon Web Services (AWS) or Pivotal’s CloudFoundry.

Spring Microservices in Action teaches you how to use the...
more

See more recommendations for this book...

68

Compilers

Principles, Techniques, and Tools

This introduction to compilers is the direct descendant of the well-known book by Aho and Ullman, Principles of Compiler Design. The authors present updated coverage of compilers based on research and techniques that have been developed in the field over the past few years. The book provides a thorough introduction to compiler design and covers topics such as context-free grammars, fine state machines, and syntax-directed translation. less

See more recommendations for this book...

69
Foreword by Kent Beck "The authors of this book have led a revolution in the craft of programming by controlling the environment in which software grows." --Ward Cunningham "At last, a book suffused with code that exposes the deep symbiosis between TDD and OOD. This one's a keeper." --Robert C. Martin "If you want to be an expert in the state of the art in TDD, you need to understand the ideas in this book."--Michael Feathers Test-Driven Development (TDD) is now an established technique for delivering better software faster. TDD is based on a simple... more

See more recommendations for this book...

70

Java 8 in Action

Lambdas, Streams, and Functional-Style Programming

Summary

"Java 8 in Action" is a clearly written guide to the new features of Java 8. The book covers lambdas, streams, and functional-style programming. With Java 8's functional features you can now write more concise code in less time, and also automatically benefit from multicore architectures. It's time to dig in!

Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications.

About the Book

Every new version of Java is important, but Java 8 is a game changer. "Java 8 in Action" is a clearly written...
more

See more recommendations for this book...

Don't have time to read the top Software Architecture books of all time? Read Shortform summaries.

Shortform summaries help you learn 10x faster by:

  • Being comprehensive: you learn the most important points in the book
  • Cutting out the fluff: you focus your time on what's important to know
  • Interactive exercises: apply the book's ideas to your own life with our educators' guidance.
71

Object-Oriented Design Heuristics

Provides a set of metrics that helps determine the quality of object-oriented models. This book offers insight into object-oriented design improvement. The more than sixty guidelines presented in this book are language-independent and allow you to rate the integrity of a software design. less

See more recommendations for this book...

72
Does it seem you’ve formulated a rock-solid strategy, yet your firm still can’t get ahead? If so, construct a solid foundation for business execution—an IT infrastructure and digitized business processes to automate your company’s core capabilities. In Enterprise Architecture as Strategy: Creating a Foundation for Business Execution, authors Jeanne W. Ross, Peter Weill, and David C. Robertson show you how.

The key? Make tough decisions about which processes you must execute well, then implement the IT systems needed to digitize those processes. Citing numerous companies worldwide,...
more

See more recommendations for this book...

73

Scalability Rules

50 Principles for Scaling Web Sites

"Once again, Abbott and Fisher provide a book that I'll be giving to our engineers. It's an essential read for anyone dealing with scaling an online business."--Chris Lalonde, VP, Technical Operations and Infrastructure Architecture, Bullhorn "Abbott and Fisher again tackle the difficult problem of scalability in their unique and practical manner. Distilling the challenges of operating a fast-growing presence on the Internet into 50 easy-to understand rules, the authors provide a modern cookbook of scalability recipes that guide the reader through the difficulties of fast growth."--Geoffrey... more

See more recommendations for this book...

74
Making Sense of Design Effective design is at the heart of everything from software development to engineering to architecture. But what do we really know about the design process? What leads to effective, elegant designs? The Design of Design addresses these questions. These new essays by Fred Brooks contain extraordinary insights for designers in every discipline. Brooks pinpoints constants inherent in all design projects and uncovers processes and patterns likely to lead to excellence. Drawing on conversations with dozens of exceptional designers, as well as his own experiences in... more

See more recommendations for this book...

75

Pattern-Oriented Software Architecture Volume 2

Patterns for Concurrent and Networked Objects

Designing application and middleware software to run in concurrent and networked environments is a significant challenge to software developers. The patterns catalogued in this second volume of Pattern-Oriented Software Architectures (POSA) form the basis of a pattern language that addresses issues associated with concurrency and networking.

The book presents 17 interrelated patterns ranging from idioms through architectural designs. They cover core elements of building concurrent and network systems: service access and configuration, event handling, synchronization,

...
more

See more recommendations for this book...

76

Digital Design and Computer Architecture

Digital Design and Computer Architecture is designed for courses that combine digital logic design with computer organization/architecture or that teach these subjects as a two-course sequence. Digital Design and Computer Architecture begins with a modern approach by rigorously covering the fundamentals of digital logic design and then introducing Hardware Description Languages (HDLs). Featuring examples of the two most widely-used HDLs, VHDL and Verilog, the first half of the text prepares the reader for what follows in the second: the design of a MIPS Processor. By the end of... more

See more recommendations for this book...

78
Are you working on a codebase where cost overruns, death marches, and heroic fights with legacy code monsters are the norm? Battle these adversaries with novel ways to identify and prioritize technical debt, based on behavioral data from how developers work with code. And that’s just for starters. Because good code involves social design, as well as technical design, you can find surprising dependencies between people and code to resolve coordination bottlenecks among teams. Best of all, the techniques build on behavioral data that you already have: your version-control system. Join the fight... more

See more recommendations for this book...

80
Since it was first published in 1973, Couscous and Other Good Food from Morocco has established itself as the classic work on one of the world’s great cuisines, and in 2008 it was inducted into the James Beard Cookbook Hall of Fame. From the magnificent bisteeyas (enormous, delicate pies composed of tissue-thin, buttery layers of pastry and various fillings) to endless varieties of couscous, Paula Wolfert reveals not only the riches of the Moroccan kitchen but also the variety and flavor of the country itself. With its outstanding recipes, meticulous and loving research, and... more

See more recommendations for this book...

Don't have time to read the top Software Architecture books of all time? Read Shortform summaries.

Shortform summaries help you learn 10x faster by:

  • Being comprehensive: you learn the most important points in the book
  • Cutting out the fluff: you focus your time on what's important to know
  • Interactive exercises: apply the book's ideas to your own life with our educators' guidance.
81
The second edition of this comprehensive handbook of computer and information security serves as a professional reference and practitioner s guide providing the most complete view computer security and privacy available. It offers in-depth coverage of security theory, technology, and practice as they relate to established technologies as well as recent advancements. It explores practical solutions to a wide range of security issues. Individual chapters are authored by leading experts in the field and address the immediate and long-term challenges in the authors respective areas of... more

See more recommendations for this book...

82

Neural Networks and Deep Learning

Neural Networks and Deep Learning is a free online book. The book will teach you about:
* Neural networks, a beautiful biologically-inspired programming paradigm which enables a computer to learn from observational data
* Deep learning, a powerful set of techniques for learning in neural networks

Neural networks and deep learning currently provide the best solutions to many problems in image recognition, speech recognition, and natural language processing. This book will teach you the core concepts...
more

See more recommendations for this book...

83
A Comprehensive, Proven Approach to IT Scalability from Two Veteran Software, Technology, and Business Executives In "The Art of Scalability, " AKF Partners cofounders Martin L. Abbott and Michael T. Fisher cover everything IT and business leaders must know to build technology infrastructures that can scale smoothly to meet any business requirement. Drawing on their unparalleled experience managing some of the world s highest-transaction-volume Web sites, the authors provide detailed models and best-practice approaches available in no other book. Unlike previous books on scalability, "The Art... more

See more recommendations for this book...

84

Software Architecture

Foundations, Theory, and Practice

Software architecture is foundational to the development of large, practical software-intensive applications. This brand-new text covers all facets of software architecture and how it serves as the intellectual centerpiece of software development and evolution. Critically, this text focuses on supporting creation of real implemented systems. Hence the text details not only modeling techniques, but design, implementation, deployment, and system adaptation -- as well as a host of other topics -- putting the elements in context and comparing and contrasting them with one another. Rather than... more

See more recommendations for this book...

85

Programming Quantum Computers

Essential Algorithms and Code Samples

Quantum computers are poised to kick-start a new computing revolution--and you can join in right away. If you're in software engineering, computer graphics, data science, or just an intrigued computerphile, this book provides a hands-on programmer's guide to understanding quantum computing. Rather than labor through math and theory, you'll work directly with examples that demonstrate this technology's unique capabilities.

Quantum computing specialists Eric Johnston, Nic Harrigan, and Mercedes Gimeno-Segovia show you how to build the skills, tools, and intuition required to write...
more

See more recommendations for this book...

87

Microservices in Action

Microservices in Action is a practical book about building and deploying microservice-based applications. Written for developers and architects with a solid grasp of service-oriented development, it tackles the challenge of putting microservices into production. You'll begin with an in-depth overview of microservice design principles, building on your knowledge of traditional systems. Then, you'll start creating a reliable road to production. You'll explore examples using Kubernetes, Docker, and Google Container Engine as you learn to build clusters and maintain them after deployment.... more

See more recommendations for this book...

88

Go in Practice

Go in Practice guides you through dozens of real-world techniques in key areas like package management, microservice communication, and more. Following a cookbook-style Problem/Solution/Discussion format, this practical handbook builds on the foundational concepts of the Go language and introduces specific strategies you can use in your day-to-day applications. You'll learn techniques for building web services, using Go in the cloud, testing and debugging, routing, network applications, and much more. less

See more recommendations for this book...

89

Composing Software

All software design is composition: the act of breaking complex problems down into smaller problems and composing those solutions. Most developers have a limited understanding of compositional techniques. It's time for that to change.

In "Composing Software", Eric Elliott shares the fundamentals of composition, including both function composition and object composition, and explores them in the context of JavaScript. The book covers the foundations of both functional programming and object oriented programming to help the reader better understand how to build and structure complex...
more

See more recommendations for this book...

90
Becoming a master of networking has never been easier

Whether you're in charge of a small network or a large network, Networking All-in-One is full of the information you'll need to set up a network and keep it functioning. Fully updated to capture the latest Windows 10 releases through Spring 2018, this is the comprehensive guide to setting up, managing, and securing a successful network.

Inside, nine minibooks cover essential, up-to-date information for networking in systems such as Windows 10 and Linux, as well as best practices for security, mobile and...
more

See more recommendations for this book...

Don't have time to read the top Software Architecture books of all time? Read Shortform summaries.

Shortform summaries help you learn 10x faster by:

  • Being comprehensive: you learn the most important points in the book
  • Cutting out the fluff: you focus your time on what's important to know
  • Interactive exercises: apply the book's ideas to your own life with our educators' guidance.
91

Computer Architecture

A Quantitative Approach

The computing world today is in the middle of a revolution: mobile clients and cloud computing have emerged as the dominant paradigms driving programming and hardware innovation today. The Fifth Edition of Computer Architecture focuses on this dramatic shift, exploring the ways in which software and technology in the cloud are accessed by cell phones, tablets, laptops, and other mobile computing devices. Each chapter includes two real-world examples, one mobile and one datacenter, to illustrate this revolutionary change.



Updated to cover the mobile computing...
more

See more recommendations for this book...

92

Engineering a Compiler

The proliferation of processors, environments, and constraints on systems has cast compiler technology into a wider variety of settings, changing the compiler and compiler writer's role. No longer is execution speed the sole criterion for judging compiled code. Today, code might be judged on how small it is, how much power it consumes, how well it compresses, or how many page faults it generates. In this evolving environment, the task of building a successful compiler relies upon the compiler writer's ability to balance and blend algorithms, engineering insights, and careful planning. Today's... more

See more recommendations for this book...

93
Master The Crucial Technical Skills Every Software Architect Needs! To succeed as a software architect, you must master both technical skills and soft skills. Dave Hendricksen illuminated the soft skills in his highly-regarded 12 Essential Skills for Software Architects. Now, in 12 More Essential Skills for Software Architects he turns to the technical side. Drawing on his decades of experience, Hendricksen organizes technical skills into three areas. PROJECT SKILLS: driving projects from ideation through delivery
TECHNOLOGY SKILLS: building,...
more

See more recommendations for this book...

95
Automated testing is a cornerstone of agile development. An effective testing strategy will deliver new functionality more aggressively, accelerate user feedback, and improve quality. However, for many developers, creating effective automated tests is a unique and unfamiliar challenge. xUnit Test Patterns is the definitive guide to writing automated tests using xUnit, the most popular unit testing framework in use today. Agile coach and test automation expert Gerard Meszaros describes 68 proven patterns for making tests easier to write, understand, and maintain. He then shows... more

See more recommendations for this book...

96

Computer Systems

An Integrated Approach to Architecture and Operating Systems

In the early days of computing, hardware and software systems were designed separately. Today, as multicore systems predominate, this separation is becoming impractical.

Computer Systems examines the key elements of all computer systems using an integrated approach that treats hardware and software as part of the same, larger system. Students gain important insights into the interplay between hardware and software and leave the course with a better understanding of a modern computer system
less

See more recommendations for this book...

97

Domain-Driven Design Distilled

Domain-Driven Design (DDD) software modeling delivers powerful results in practice, not just in theory, which is why developers worldwide are rapidly moving to adopt it. Now, for the first time, there's an accessible guide to the basics of DDD: What it is, what problems it solves, how it works, and how to quickly gain value from it. Concise, readable, and actionable, Domain-Driven Design Distilled never buries you in detail-it focuses on what you need to know to get results. Vaughn Vernon, author of the best-selling Implementing Domain-Driven Design, draws on... more

See more recommendations for this book...

98
Use your Raspberry Pi to get smart about computing fundamentals

In the 1980s, the tech revolution was kickstarted by a flood of relatively inexpensive, highly programmable computers like the Commodore. Now, a second revolution in computing is beginning with the Raspberry Pi. Learning Computer Architecture with the Raspberry Pi is the premier guide to understanding the components of the most exciting tech product available. Thanks to this book, every Raspberry Pi owner can understand how the computer works and how to access all of its hardware and software...
more

See more recommendations for this book...

99
The late Seventies to the early Nineties was a completely unique period in the history of computing. Long before Microsoft and Intel ruled the PC world, a disparate variety of home computers, from an unlikely array of suppliers, were engaging in a battle that would shape the industry for years to come.

Products from established electronics giants clashed with machines which often appeared to have been (or actually were) assembled in a backyard shed by an eccentric inventor. University professors were competing head to head with students in their parents' garages.

...
more

See more recommendations for this book...

100

The Tao of Microservices

The Tao of Microservices teaches you the path to understanding how to apply microservices architecture with your own real-world projects. This high-level book offers you a conceptual view of microservice architectures, along with core concepts and their application. You’ll also find a detailed case study for the nodezoo.com system, including all source code and documentation. By the end of the book, you’ll have explored in depth the key ideas of the microservice architecture and will be able to design, analyze and implement systems based on this architecture. less

See more recommendations for this book...

Don't have time to read the top Software Architecture books of all time? Read Shortform summaries.

Shortform summaries help you learn 10x faster by:

  • Being comprehensive: you learn the most important points in the book
  • Cutting out the fluff: you focus your time on what's important to know
  • Interactive exercises: apply the book's ideas to your own life with our educators' guidance.