notsotrivial.net

Non-trivial matters of interest to software architects and other like minded geeks.

I'm thrilled to announce that the new edition of this book has been released. For those of you who develop on the .NET platform, this is THE reference architecture book for you. In fact, it's often referred to as the "Microsoft playbook for application architecture". I've carried around a paperback copy of the first edition in my backpack since the day it was released. This updated version is even more special to me because I have been participating as a technical reviewer since the revision began. We've learned a lot more about building great .NET applications since the first release of the book and I wanted to make sure it was all captured in this new edition. I'm extremely pleased with the results. I hope you are as well.

 

AppArch2.0_small.jpg

Application Architecture Guide 2.0 by Microsoft patterns & practices

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 a collaborative effort between patterns & practices, product teams, and industry experts. This guide is related to our Application Architecture Guide v2.0 Knowledge Base Project.

 

Visit http://msdn.microsoft.com/practices/ to see the full line of existing patterns & practices guidance.

 

Special thanks to J. D. Meier for contacting me and allowing me to participate.


clip_image001

Distributed Agile Development at Microsoft patterns & practices

Distributed development is a fact of life for many teams. Unfortunately most agile methodologies or approaches assume that the team is located in a single team room. Until recently there has been little guidance about how to apply these approaches with a geographically dispersed team.

Microsoft’s patterns & practices group has been following an agile, distributed development approach for the past five years. During this time teams within the group have experimented extensively with different approaches to best address the challenges of distributed agile development. This paper outlines the challenges faced by geographically distributed agile teams and details some proven practices to address these issues and build successful distributed teams.

 

There's also an Agile Development Showcase portal inside MSDN that provides even more great guidance around agile development.

 

Visit http://msdn.microsoft.com/practices/ to see the full line of existing patterns & practices guidance.


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.

 

Here's how he describes it:

 Architecture is a general description of a system. It identifies its vital functions, major elements and their relationships, and the organizational processes that define the nature of the whole. An architecture consists of a set of distinct but interrelated platforms (views). Each platform (view) represents a dimension of the system signifying a unique context, output, and mode of behavior controlled by a predefined set of performance criteria and measures. These dimensions and their complementary processes are individually necessary and collectively sufficient to give rise to a viable system capable of realizing its desired specifications.

 

I could do an entire talk on this definition. Architecture boils down to two things: 1) determining the minimal but necessary set of views you need to define the design of a system (e.g. logical, physical, deployment) and 2) designing the system in question through models for each of those views.


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.


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.