Meet the Architects

One of my favorite sections in the Microsoft Architect Journal is the Architect Profile feature where they interview gurus. Typically the interviewees are asked what advice they would give aspiring architects & the answers are enlightening

Scott Guthrie (General Manager, Microsoft's Developer Division) - "Writing code is valuable for an architect. Not necessarily production code you check in, but constantly trying out new technologies, new approaches, and feeling how the system works. I don't write a lot of production code these days, but I spend an hour or two every day writing code. It may be samples, prototypes, or some fun personal project—whatever it is, I'm trying things out, thinking of ways to structure things. Being hands-on is very valuable from a code architect's perspective.

The other thing I would recommend is taking a look at core systems theory and how to architect very robust systems. Consider some of the principles you want to think about and apply them as you're doing it. That doesn't mean thinking about what the lines of code look like, but thinking about simplicity, or robustness, or fault tolerance. Those types of things are core in successful systems; whether it's a client application, server application, or a game. An architect who thinks hard about those kinds of principles and can marry them with a good coding background can provide a tremendous amount of guidance to teams."

Ray Ozzie (Microsoft’s Chief Software Architect) - "From my vantage point, being an architect is really about pattern matching. It’s about being exposed to enough tools and techniques of the trade that over time you start to develop a toolkit of different patterns that work in different situations. This is true of software architecture and probably other types of architecture as well. Whether you build bridges or design buildings, you’re trying to apply design patterns to a given situation."

"...don’t jump in too quickly. You need to do your time as a programmer to understand the different patterns that are out there, and recognize the attributes of well-architected systems, in order to raise yourself to the next level of abstraction in the solutions you’re building."

"The most effective architects I’ve dealt with are the ones who’ve paid their dues. These are the architects who’ve spent time in the trenches building and debugging fairly complex systems. You can learn a lot about how things work by fixing other people’s bugs. When something fails and the person has left the company, you can learn a lot by either reverse engineering or looking at the documentation. The more systems that you can learn from the inside out, the more you can develop an understanding for bad practice and good practice design patterns. As I mentioned earlier, it’s this library of patterns in your mind that will define you as an architect."

Comments