I work at my day job as a System Architect in a small company who creates commerce applications. I design the plumbing of applications and I write code to test the design. This is not true of all architects, there are some who are behave more like prima donnas, thinking this is not their job. They create charts with some fancy software and present the design to a team and walk away. This does not work. How can a design be so complete as to work this way without proof of concept?
Johanna Rothman is a writer who I enjoy reading her books and in particular her blog about Managing Product Development. She had a post recently about this subject where she makes the statement that Architects must write code. She also calls out to a book from Pragmatic Bookshelf called Practices of an Agile Developer that call these types of Architects “Powerpoint Architects”.
I cannot agree more about this labelling. We went through a complete redesign and are deep in our rewrite of our latest commerce application. I worked with another Architect in the initial design and we spent many weeks on an iterative architecture design, we wrote code to test our theories and reworked the architecture based on the results. The code was not production code but prototype code to prove the design. I think this was the key to our good design, without this we would have gone down the wrong path in several areas for various reasons which relied on the current framework available at the time of design versus the framework to be available at key phases of the implementation.
As an example, we had some design decisions to make when we were using the .NET Framework 1.1 and looked ahead to version 2.0. Knowing 2.0 had some great features that would supplement our design and take it a different direction we had to rework the design committing to version 2.0. Our prototype code was done with a beta version of 2.0 and looking back it was a key design decision that we are better for now. If we had not taken the time to prove some initial points we may be using version 1.1 today and be months behind because of the areas 2.0 saved us time in.
A good architect needs to write code, period. A good design needs to be proven, it is a culmination of experience and proven results.