Over a million developers have joined DZone.

What Is The Value Of A Software Architect?

· Java Zone

Discover how AppDynamics steps in to upgrade your performance game and prevent your enterprise from these top 10 Java performance problems, brought to you in partnership with AppDynamics.

(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]

The Java Zone is brought to you in partnership with AppDynamics. AppDynamics helps you gain the fundamentals behind application performance, and implement best practices so you can proactively analyze and act on performance problems as they arise, and more specifically with your Java applications. Start a Free Trial.

Topics:

Published at DZone with permission of adam bien .

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}