Sunday, January 9, 2011

What is the Software Architect's Role in Development?

The outdated view that a Software Architect is someone who sits on a pedestal and draws diagrams is an old and defunct paradigm that failed to provide business value in reality. Reality proves day after day that this portrait of an SA doesn't fit with the nature of business and the nature of software development as an exploratory process.

I have seen first hand how paper solution architect having flaws in their thinking when they do the top level diagrams. Because they lack the low level implementation detail, I've seen them often over-engineer and therefore, increase the cost of systems in orders of magnitude because they don't know the low level implementation details.

I've witnessed those "paper" architects being replaced so fast because the smart business people realize soon enough that these architects are designing systems specifications that are not in touch with reality. Plus, for the sake of argument, even if the business folks keep those "paper" architects, their involvement in the project is minimal. After they draw the diagrams, the "paper" architect's involvement is diminished significantly.

And I'm sure you know how fast the gap between the paper diagram and the real implementation grows if the SA's role is just diagramming.

In reality, and what I've observed in all small, medium and large corporate environments, that Software Architect role has evolved to be providing the following business values:

1- The software architect is the one to maintain and enforce *ongoing* conceptual integrity of the system to the development team.

2- The software architect is looked up to when developers on the team need to understand a design pattern or have a question on how to proceed.

3- The software architect MUST have come from a *guru* level development background to solve complex implementation problems for the development team and this will also gain him tremendous respect and buy in.

4- The software architect is the *factory* that implements/codes the components for cross-cutting concerns that every system needs.

5- The software architect is the one who can and must do the integration of all all features and code together.

6- The software architect is the one to inspect code to make sure it implements his/her top level design.

7- The software architect is the one to do design reviews of code.

8- The software architect is the one who represents the full system view to all stakeholders

For all the above value to be delivered the software or solution architect must have impressive and always-current coding, design patterns, architecture and high-level view skills.

He or she must have the mental flexibility to go high and low, to be an evangelist, politician and the engineer. He or she must be able to role up their sleeves and dig into the code and shine anytime anywhere.

That's the reality. That's what businesses are looking for. That's the solution or software architect who provides true value and is worth paying the big bucks.