Bookshelf

I love books. Always have and always will. In fact, there was a time (before I started a family) when I would buy at least two books every time I recieved a paycheck. As a result, I own about 40 technical and business books that I've lugged around with me over the years and every year or two add a new one to my bookshelf that I consider a classic. This page is where I'll list those that I think are of particular importance to Architects.

 

Architecture & Design

Universal Principles of Design by William Lidwell, Kritina Holden, and Jim Butler

This is a great first book for designers. It contains 100 common design concepts that everyone should know - things like the 80/20 Rule, Ockam's Razor, and Fitts' Law. If you're a code slinger, this may not the book for you. But if you do design in any capacity, this book has something for you that I guarantee will help refine your craft. It's a beautiful book and the explanations and examples are dead on.

Domain-Driven Design by Eric Evans

I love this book because it offers most elegant model for software design I've ever seen. All software is boiled down into four elements: ENTITIES, VALUE OBJECTS, SERVICES, and MODULES. Not only does it offer a great mental model for conceptualizing design, it offer tons and tons of real world examples. Chapter 5 alone is worth the price of the book. This book WILL make you a better designer and developer.

Microsoft Application Architecture Guide 2.0 by Microsoft Patterns & Practices Group

This guide provides design-level guidance for the architecture and design of applications built on the .NET Framework. It focuses on the most common types of applications, partitioning application functionality into layers, components, and services, and walks through their key design characteristics.This guide is related to our Application Architecture Guide v2.0 Knowledge Base Project.

Download the electronic version here: Patterns & Practices Application Architecture Guide 2.0.

Architecting Applications for the Enterprise by Dino Esposito and Andrea Saltarello

If you’re an .NET developer looking to get a better understanding of software architecture you’re in luck. This book offers a superb hands-on introduction to all the aspects of application architecture you’ll need. You’ll get an introduction to software architecture as a discipline as well as an overview of UML and a review of commonly accepted industry design principles. From there Dino and Andrea dive right into the heart of application architecture – designing your data, business, service, and presentation layers. There’s a TON of guidance on the options available for each of your layers and when to choose which. The greatest strength of this book - it's all proven out in a real world working example that you can download and try out. I can’t underscore how important this book is to the working developer. I applaud this book for it’s greatness and curse Dino and Andrea for writing the book I wanted to write. Highly recommended!.

Design Patterns - Elements of Resusable Object-Oriented Software by Erich Gamma, et. al.

This is the book that launched a thousand software architect careers. Considered by all to be a classic, it was the first serious attempt to document repeatable high-level software designs. The patterns themselves have aged fairly well, but what really made this book stand out was the taxonomy and prescriptive format used to document the patterns. It's one of those books that you get more out of each time you crack it open. It's dense and has a somewhat academic/scientific flavor to it, making it difficult to read in places. If you find this a turn off, the derivative works are more approachable and cover all the same topics this book does. It may be nostalgia, but I prefer this version over the derivatives.

Framework Design Guidelines - Conventions, Idioms, and Patterns for Resusable .NET Libraries by Krzysztof Cwalina and Brad Abrams

This book is the result of an internal effort at Microsoft to share framework design best practices during the development of the .NET 1.0 framework. Krzysztof and Brad were part of a team that conducted API usability studies and reviews of the emerging framework APIs with the development teams doing the work. It began as a word document and review consultations with teams but eventually turned into a series of internal lectures offered to all developers working at Microsoft. That was where I first heard about this effort. The lectures were recorded and for a while made publicly available (they have since been removed). The series ultimately let to the creation of this book, which is jam packed with years of wisdom and anecdotes about good API design. If you work on shared libraries, this book is a must read. P.S. I still keep a dvd with the original lectures in my backpack. Catch me at an event and I'll share.

Refactoring - Improving the Design of Existing Code by Martin Fowler, et. al.

Ever inherit a big mountain of nasty code and have to add new features to it?  You can only play the "we have to rewrite it all from scratch" card with management a once every couple of years. This book is THE canonical reference for identifying smelly code and getting it cleaned up.  It provides an enormous toolbox of tactics you can use to make incremental improvements to an existing code base.  Using these tactics along with an iterative approach, you could very well rewrite an application from scratch over the period of a few releases and your management will be none the wiser. Every developer on your team needs to own this one.

Systems Thinking - Managing Complexity and Chaos by Jamshid Gharajedaghi

This book is a cornucopia of ideas, patterns, and solutions for looking at complex systems and creating order and structure throughout them. It's a book about organizing businesses and people but applies equally well to software systems, especially those built through domain driven design principles. It's a dense read but full if mind-blowing concepts. It's is a business book but I'm classifying it as a architecture and design book for one good reason - it has the best description of architecture that I've ever encountered. Hint: it's on page 189.

The Design of Sites – Patterns for Creating Winning Web Sites by Van Duyne, Landay, and Hong

This book does for web design what the gang of four book did for object-oriented software development. It contains, quite simply, the best catalog of design patterns and paradigms ever published for building web sites with great user experiences. It begins with a survey of the different web site genres on the net and advice on how to design sites around these genres to hit your target audience. What follows are best practices for everything found on modern web sites: branding, navigation, accessibility, personalization/customization, browsing and searching, efficient shopping, and much more. It concludes with advice on how to tune the speed of your sites to ensure that users get a snappy response and want to come back for more. It contains 1000s of full color example screenshots illustrating the knowledge they are sharing. My only caution to you is that you be so inspired by this book, you will want to use ALL the patterns in every new site you build.

 

Business

The Ten Day MBA by Steven Silbiger

After spending 5 years on a bachelor's degree in Mechanical Engineering and 5 more on a master's in Computer Science, I swore that I would never set foot on a college campus again. As I moved into leadership roles, I found myself becoming more and more immersed in the crazy world of business management. I began to wonder if I needed a Master's of Business Administration (MBA) degree to keep moving up the ranks. This book has been a life-saver for me. The author has distilled the core topics from the curriculums of America's top business schools into ten easily digestible chapters: Marketing, Ethics, Accounting, Organizational Behavior, Quantitative Analysis, Finance, Operations, Economics, Strategy, and MBA Mini-Courses. An MBA may still be in my future at some point, but for now this book has equipped me with a fundamental understanding of business concepts and terminology. I've owned this book for over ten years now and still refer to it once or twice a year. Highly recommended.

First, Break All the Rules by Marcus Buckingham and Curt Coffman

This is the second business book I'm adding to my bookshelf series. This book has taken the business world by storm and has become required reading in most MBA schools. I include it in my collection here for one for a very important reason: it will help you stay employed during these turbulent economic times. It's an fast read and contained within it's 270 pages are some of the most profound (and counter-intuitive) secrets ever revealed about how the biggest and most successful companies in the world do business. It's based on a Gallup study of over 80,000 managers from 400 different companies and is to date the largest study of it's kind. There are lessons on economics, leadership, and career management with concrete guidance on how to apply these lessons to every day situations. Besides the face value of increasing your business acumen, there's also a hidden benefit to this book - you will be able to recognize which companies are worth working for. Sounds easy, but the speed at which companies fold or turn over, there's no better career skill than being able to assess the caliber of the company's values, leadership, and talent. You'll never look at your manager the same way after reading this book.

Good to Great: Why Some Companies Make the Leap…and Others Don’t by Jim Collins

This book cuts straight to the heart of good leadership within an organization. Collins takes a look at a dozen companies that have managed to build large scale sustainable businesses and provides insight into their executive strategies and cultures. The big lesson: hire smart, motivated people, explain the goals, and then reward behaviors that contribute to long term success. Sounds simple but there are many counter-intuitive findings and there are many bad attitudes and behaviors that need to be unlearned. Of particular interest is a chapter entitled Technology Accelerators, in which he reveals the role technology (should) play in long-term business strategy. I found the chapter to be very relevant to software architecture. I encounter situations everyday where the lessons from this book can be applied. It’s a fast read with lots of great leadership stories.

 

People

Peopleware by Tom DeMarco & Timothy Lister

This is one of the most influential books in our industry and should be required reading for all technical leaders. It makes an incredibly strong argument for hiring really smart people, giving them direction, and the space and freedom to run (Scott Guthrie comes to mind). In fact some people have called it the "Anti-Dilbert" manifesto. It starts off looking at environmental conditions for development teams and provides guidance on productivity problems in those oceans of cubes we now find ourselves in. And those evil intercom systems? They break flow - duh!  It follows up with a roadmap for hiring, motivating, and growing super stars and super teams. It concludes with advice on how to begin influencing your organization to make changes in order to create more successful outcomes.