This is the first in a series of blog posts about how we can learn about software architecture by studying and comparing it to the sport of Baseball. This series was inspired by the book Management by Baseball.
In baseball scouting one of the biggest compliments that a player can receive is to be called a "5 tool player". This is a reference to the skills that make up a good, all around baseball player:
When a player shows above average potential in all of these skill areas, he is considered to be a "5 tool player" and will be highly sought after by major league teams.
Using the baseball term as my guide, I wanted to put together a list of the "5 tools" that make up a good architect. This exercise was actually a lot harder than you might think. Like many people I think that an architect needs to be a generalist and as a result there are a 1001 things that a architect must need to know in order to be a good architect. Categorizing these into 5 tools was difficult. But here is the list that I came up with.
Note: My colleague and friend Chris Bernard, who is Microsoft's User Experience Evangelist for the Central United States, has written a follow-up post to this one where he talks about the tools that a designer needs.