Role Profile for Software Architects

The role of the software architect is a frequently discussed topic and changes depending on any number of factors. Even with a large amount of existing material available (e.g. the RUP role definitions, the IASA Skills Library, etc), defining exactly what a software architect does is hard, particularly when you're trying to define a role profile for a project or recruitment. In an attempt to address this particular area, I've distilled what I think it means to be a software architect on a bespoke software development project and broken down the role into a number of broad groupings, which are the aspects of the software architect's role.

Rather than simply present a breakdown of the software architect role, I've given each aspect a brief description and listed a number of levels to reflect that the role of an architect is an evolutionary experience. For example, there's a big difference between contributing to the architecture of a software system and defining it yourself.

This additional categorisation of the aspects means that you can use the diagram in a couple of ways. The first is as a prompt when interviewing potential architect candidates so when they say "I've architected a system", you can ask them whether they contributed to or defined it, drilling into detail where necessary. The second way in which you can use this diagram is as a self-assessment. If you're an aspiring software architect, this will give you more information on what the role entails. Likewise, for more experienced architects, it will highlight areas in which you have little experience. For example, I'd say that my infrastructure selection experience is limited because of the type of environments that I work in (many banks have a central infrastructure team that take care of this stuff for you).

This is certainly a work in progress and we'll be refining this over the coming weeks, perhaps also putting some detail behind each of the major boxes. If you have any comments, find it useful, etc, please let us know.

Update: Please see What is the role of a software architect for much more information about the role.



Re: Role Profile for Software Architects

This is really good stuff. I was thinking of creating a "Architects Handbook" internally, but perhaps there is scope to do one externally if enough people were interested.

Regarding your boxes, something architecty in me wants to order them according to something like the roles- I mean that it feels like there is a spectrum of skills there that could be structured?

Tom

Re: Role Profile for Software Architects

"Spectrum of skills" makes a lot of sense. Many people have "architect" roles but very few will do the same thing. The ordering on the diagram is kind of arbitrary, although each row kind of groups related stuff together. Perhaps this can be the discussion topic for the first user group session. It could be entitled, "what exactly do we do?!".

A handbook ... interesting that you say that. ;-)

Re: Role Profile for Software Architects

I just put together an 'Architect's Manifesto' to describe my role as an architect. There were two points that I have on my list that don't appear on yours: Customer Relationships, and Evangelism. I am expected to maintain good relationships with customers, keep my ear to the ground, and represent their concerns and requirements to the developers. Another aspect of my job is to liaise with other architects in my organization, identify areas where we can cooperate and share ideas, and even code where possible.

Re: Role Profile for Software Architects

Applying the "scores" to projects as well as yourself seems to give a fair indication of the architectural health of that project.

Re: Role Profile for Software Architects

You're right - I'd not really thought about it like that.

Re: Role Profile for Software Architects

I notice there is no box for "sorting out cr*p". The week I am having makes this feel like an oversight :-)

Tom

Re: Role Profile for Software Architects

I like this approach to describing the aspects of a software architects role. One area that to consider adding is that of Evangelist / Communication. An important role of an architect is to convince management and the team that the selected solution is valid. An architect needs to know how to communicate with management effectively. They also need to be effective in selling their work to the developers and others that implement the architecture.

Re: Role Profile for Software Architects

I've been talking about the role of an architect recently and the sales aspect has come up more than once. You're right; architects *do* need to sell their vision to both the management and the development team. If you don't successfully do this, then I guess nobody will buy into your solution - and that's not a good position to be in. I'll add this in when we revise the profile. :-)

Re: Role Profile for Software Architects

Nice description of software architect role can be also found here:

http://www.ibm.com/developerworks/rational/library/mar06/eeles/

Re: Role Profile for Software Architects

Hello, A really informative illustration. Got some basic idea about Architect job profile. Gave a back link from my blog too!

Re: Role Profile for Software Architects

Maybe you should consider creation Software Architect Body of Knowledge ? SABOK ? Like BABOK, or PMBOK

Re: Role Profile for Software Architects

Very helpful post in determining where I am on the architecture career path, thanks!

I've been building (predominantly) database-driven web applications in the Java/J2EE arena for 8 years and currently class myself as a Technical Team Lead having just led a greenfield software team that's built a b2b/b2c business directory search engine with "Web 2.0" social networking aspects (gotta love the pointy heads!).

I had the part-time help of an Architect on various aspects of the project and this discussion neatly categorises those areas that I was solely responsible for and those that were a collaborative effort where the two of us would bounce ideas around.

IMHO, having the presence of another senior technical resource (albeit on a consultancy basis) meant that very few mistakes were made in terms of technical direction/architecture as we were generally always able to correct each other before paddling the wrong way up the proverbial creek.

Architect Responsibilities

Whilst trying to identify some of the gaps in my own experience, I stumbled across coding the architecture. It has some very useful articles on software architects and what they should be doing, as well as not doing! The most helpful for me personally ...

Add a comment Send a TrackBack