Characteristics of a Software Architect
The construction analogy tells us that there is no single role for an 
architect - he may be any combination of client, project overseer, inspector, 
trouble-shooter and builder as well as some combination of visionary, designer, 
problem solver and mentor. Neither is an architect defined by a single body of 
knowledge or expertise - a competent housing architect would not be qualified to 
tackle a bridge or a skyscraper.
The role may vary from senior strategic adviser to programmer, but an 
architect will always deliver some key views and contributions. An architect who 
can design a web-based business solution, but knows when client-server is 
better, might also recognise when the requirement demands a larger-scale TP or 
real-time solution, but might not presume to design either.
If anything the software architect is defined by a set of viewpoints and 
attitudes:
	- 
		The architect must make sure that the solution
		will manage change and control complexity. To do this he may have to stand
		in lieu of future users, developers and maintainers, extrapolating the
		requirements beyond the views of current stakeholders, which may be
		constrained by parochial or short-term considerations. This is the
		equivalent of Stewart Brand's "building for change".
	
 
	- 
		The architect must deliver a solution which
		meets the users' needs. However, he does not have to meet every constraint,
		passing fancy or prescribed solution, especially when these are incompatible
		or generated by panic, religion or fashion (e.g. "We want a web-based
		solution"). The ability to say "No", or at least "What do you really need?"
		is even more important than "Yes, we can do it".
	
 
	- 
		The architect sees the "big picture", and
		views a system and its context as a set of interacting components. The
		ability to take this view is probably what distinguishes the architect(s) on
		a project, from those whose mental model focuses on functionality, hardware,
		project or financial considerations. However, the architects must also be
		able to understand and discuss the system using those other mental models,
		and may have to act as an interpreter between them.
	
 
	- 
		The architect is frequently an evangelist for
		new or different technologies, processes or solutions. However, he or she
		also has a key responsibility to help manage change, which may mean reining
		in enthusiasm where the risks and costs would outweigh the benefits.
	
 
	- 
		The architect may be a key source of ideas,
		but must expect those to be adapted and changed as they are adopted by the
		rest of the team. Conversely the architect may have to adapt ideas
		originating elsewhere, but without losing the team's ownership of the
		solution.
	
 
	- 
		The architect recognises that success in IT is
		about people, and understands both the processes of development and
		the factors which drive the various players. He or she has been "out there",
		so that requests or suggestions are realistic, not academic. A key role may
		be to help interpret between the people (developers etc.) actually doing the
		work, and senior managers who see projects in terms of money and
		"resources".
	
 
	- 
		The architect will typically have general, not
		specific business knowledge. One of the key contributions may be to look at
		problems in a different way by applying analogies from different fields or
		projects. A true architect must not be parochial, and this means gaining
		experience in different roles and fields, probably with different employers.
		Having and using experience is more about attitude than years.
	
 
	- 
		The architect has the ability to synthesise
		solutions, understanding new problems in the context of old ones.
	
 
 
To formalise Software Architecture, we have to define a basic set of
knowledge and skills. However, this is likely to be quite "light": basic 
terminology, modelling skills, pattern literacy and so on. Different architects 
may need very different detail technical skills. We must also find some way to 
recognise the important attitudes and softer skills which really define an 
architect.