Java Champion / JavaOne Rockstar Adam Bien (adam-bien.com) is a self-employed consultant, lecturer, software architect, developer, and author in the enterprise Java sector. He is also the author of several books and articles on Java and Java EE technology, as well as distributed Java programming. adam has posted 59 posts at DZone. View Full User Profile

What Is The Value Of A Software Architect?

08.12.2010
| 10128 views |
  • submit to reddit

(My) definition of the architect's role: "Software Architect is someone who is able to break down customers (=product owners, sponsors etc.) vision in more or less fine grained software artifacts."

I prefer the term "vision" over requirements, because most of the time requirements happen to be unstable and the customer actually unsure.

An architect should also immediately inform the customer about the impacts of his functional and non-functional requirements. Pro-active consulting in the definition phase about the consequences of high availability, modularization, distribution, security etc. is crucial and safes real money. The architect should be especially well experienced with possible problems and side-effects.

To provide a real value to the company, the architect should not only sell his ideas to the developers, but also convince them with hard facts and be open for feedback (a single architect just cannot be smarter, than a whole developer team). The problem here: it is very hard to convince developers with PowerPoint, Visio or plain UML-diagrams. A better idea is to verify the high level ideas with Proof Of Concepts - small applications or code snippets, and some test results (memory consumption, scalability, performance, testability). This easiest the communication a lot. Developers feedback will be a lot better, and there is no better concept explanation, as high level and clean Java, Ruby, Scala etc. code. Furthermore the PoC could evolve to a concept prototype and the could be used as a sample for a tutorial for new developers.

...my definition of developer's is: "Developer is an architect, who just don't want or is not able to deal with the translation of high level requirements into low level code, and enjoys to code more". Therefore an architect is a developer, who enjoys the translation and likes communication, meetings and everything else what is needed to extract the requirements from the customer. An architect should be only a temporary role. Otherwise it will be harder to keep up with the technology and you will end up in an "ivory tower":

"...From the 19th century it has been used to designate a world or atmosphere where intellectuals engage in pursuits that are disconnected from the practical concerns of everyday life. As such, it usually carries pejorative connotations of a wilful disconnect from the everyday world; esoteric, over-specialized, or even useless research; and academic elitism, if not outright condescension..." [from wikipedia]
References
Published at DZone with permission of its author, adam bien. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Mike P(Okidoky) replied on Thu, 2010/08/12 - 1:49pm

I've found that breaking things down together on a large whiteboard with the architect in the lead, works really well. Questions are asked and ideas are exchanged. Pros and cons are weighed out. Everyone goes back to their computer, and each person does research on a given component, answers questions that were unanswered during the first brainstorm session, and possibly others make little prototype concepts to prove whether a certain component can work a certain way. Then everyone gets back for another brainstorm white board meeting. The previous diagram is re-drawn from scratch, nice and clean, and results from the research time is are presented and discussed. The architect gets to decide what parts are used and how things stick together, but everyone expects an explanation as to why the decisions were made, with a chance for further improvement. This way everyone is in the loop and gets an equal chance to contribute. It's fun, energizing, and incredibly productive. This can not work if some people don't get along. The architect has the added responsibility to keep things effective on a social level. So that's another requirement of an architect, you have to be good with dealing with people (so that the customers don't have to - Office Space ;-).

King Sam replied on Fri, 2012/02/24 - 10:39am

Couldn't agree more with this post, especially the ivory tower part. Nothing more frustrating then trying to deliver the 'architects' vision when they've been away from the technology too long.

One one client site I work at the team swaps the Architecture role around every project which seems to be a nice way of dealing with it.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.