InfoQ

News

Ted Neward's thoughts on Architecture Roles & Responsibilites

Posted by Gavin Terrill on Sep 24, 2007 12:30 PM

Community
Architecture
Topics
Teamwork ,
Customers & Requirements ,
Delivering Quality ,
Enterprise Architecture ,
Leadership
Tags
Enterprisey
Ted Neward recently provided some insights into what the roles and responsibilities of an Architect are, in response to some hard questions about Architects.

The first question was in relation to "what does an architect do"?
For some companies I've worked for, the "architect" was as you describe yourself, someone whose hands were dirty with code, acting as technical lead, developer, sometimes-project-manager, and always focused on customer/business value as well as technical details. At other places, the architect (or "architect team") was a group of developers who had to be promoted (usually due to longevity) with no clear promotion path available to them other than management. This "architect team" then lays down "corporate standards", usually based on "industry standards", with little to no feedback as to the applicability of their standards to the problems faced by the developers underneath them.
The next question asks if architecture should be facilitative or restrictive:
Architecture is intended to be facilitative, of course, in that a good architecture should enable developers to build applications quickly and easily, without having to spend significant amounts of time re-inventing similar infrastructure across multiple projects. A good architecture will also facilitate interoperability across applications, ensure a good code quality, ensure good maintainability, provide for future extensibility, and so on. All of this, I would argue, falls under the heading of "facilitation".

But an architecture is also intended to be restrictive, in that it should channel software developers in a direction that leads to all of these successes, and away from potential decisions that would lead to prolems later. In other words, as Microsoft's CLR architect Rico Mariani put it, a good architecture should enable developers to "fall into the pit of success", where if you just (to quote the proverbial surfer) "go with the flow", you make decisions that lead to all of those good qualities we just discussed.
Finally, the email asks if architects are still relevant:
Fowler talks about architecture being irrelevant in an agile project, but I disagree with that notion pretty fundamentally: an architect is the captain of the ship, making the decisions that cross multiple areas of concern (navigation, engineering, and so on), taking final responsibility for the overall health of the ship and its crew (project and its members), able to step into any station to perform those duties as the need arises (write code for any part of the project should they lose a member). He has to be familiar with the problem domain, the technology involved, and keep an eye out on new technologies that might make the project easier or answer new customers' feature requests.
These sentiments echo those of Fred Brooks, author of The Mythical Man Month, who sees the Architect role as a critical enabler of "Conceptual Integrity":
Conceptual Integrity is central to product quality. Having a system architect is the most important single step toward conceptual integrity...after teaching a software engineering laboratory more than 20 times, I came to insist that student teams as small as four people choose a manager, and a separate architect.
What are your thoughts on the roles and responsibilities of Architects?
I see a different emphasis by Jeremy Wales Posted Sep 24, 2007 10:48 PM
Tomayto, Tomahto ? by Greg Willits Posted Sep 24, 2007 11:33 PM
Need for an architect by Steven Devijver Posted Sep 25, 2007 7:11 AM
Re: Need for an architect by emrah okay Posted Apr 30, 2009 10:45 PM
Re: Need for an architect by emrah okay Posted Jun 19, 2009 7:22 AM
Architects, Architects, and more Architects by Adron Hall Posted Oct 2, 2007 1:17 PM
Levels of Work by James Caradoc-Davies Posted Oct 3, 2007 1:08 AM
Re: Levels of Work by emrah okay Posted Apr 12, 2009 11:53 PM
  1. Back to top

    I see a different emphasis

    Sep 24, 2007 10:48 PM by Jeremy Wales

    Fowler talks about architecture being irrelevant in an agile project
    Maybe he has said that somewhere that I'm not aware of, but I'm pretty sure he has an article on his site that describes the role of an agile architect in terms remarkably similar to those employed by Neward (I would confirm that but Fowler's site seems to be down at the moment! Perhaps he should hire an architect...).
    He has to be familiar with the problem domain, the technology involved, and keep an eye out on new technologies that might make the project easier or answer new customers' feature requests.
    On the agile projects I've worked on all of this is included in the role of "Developer". Successful agile projects rely on every developer doing these things, not leaving it all up to one architect. Where the architect does make a distinctive contribution is by providing technical requirements for the system. Kind of like a technical customer as distinct from the business customer. For instance, in an enterprise this technical customer needs to be identifying reusable services that can be developed not only to benefit the current project but others as well, and requesting the factoring out of these services as storycards in the project. They also make more of the macro, pre-development decisions like build-from-scratch or buy-and-integrate. Then, as the technical customer, they accept the system from a technical perspective (which implies they understand down to the low-level, as Neward says) and help the developers achieve the desired result when they need help to do so. The role presented by Neward seems to me more like a Master Developer, which would be necessary if none of the developers are masters, but not necessary if at least some of them are.

  2. Back to top

    Tomayto, Tomahto ?

    Sep 24, 2007 11:33 PM by Greg Willits

    On the agile projects I've worked on all of this is included in the role of "Developer". Successful agile projects rely on every developer doing these things, not leaving it all up to one architect.
    While the devs will certainly determine what I'd call local architecture on small projects or portions of larger projects, you still need someone connected to the bigger picture, connected to activities in other groups if they exist, or connected to knowing what is coming in the future to help provide context for the devs' decisions. While agile is often concerned with technical debt and YAGNI, I personally believe some guys take this too far and generate unnecessary rework and wasted time for themselves by ignoring inevitabilities because they aren't relevant in the current iteration. Knowing when developing something is technical debt and when it is actually effecient IMO is a place where the architect or master developer should be managing. If a CEO is supposed to be providing the larger vision for the direction of a business, the architect's role is supposed to be providing the larger vision for the technical aspects and direction for the dev team as a whole. If the project and team are small enough, then consensus among experienced players is certainly suitable. When there's bigger groups, someone has to be laying the basic ground rules and connection points. My guess is some people have a semantic problem with the term because of its connection to pre-planned engineering that agile is counter to. Clearly you can't have 100 people split up in to a bunch of teams doing whatever they want -- there has to be coordination. Call him an architect, a master developer, the jerk boss or whatever you want, but he's necessary (and hopefully agile orgs are better at picking a good guy for that job than most companies).

  3. Back to top

    Need for an architect

    Sep 25, 2007 7:11 AM by Steven Devijver

    If you're doing a project in rails you probably don't need an architect. However, you may wish you had a capable architect in case your project involves any of the following: remote access, web services, serialization, copy-by-value, asynchronous execution, threading, messaging, (distributed, ...) transactions, OR mappers (many potential issues), sub-components, packaging, complicated dependecies, potential software quality issues, complicated domain model, VPD, ...

  4. Back to top

    Architects, Architects, and more Architects

    Oct 2, 2007 1:17 PM by Adron Hall

    I wrote a blog entry a few months back about what type of architects there are out there. It seems the confusion and lack of clear definition continues. If you wouldn't mind, could you shoot a comment over onto my site in regards to by entry? My entry is available here.

  5. Back to top

    Levels of Work

    Oct 3, 2007 1:08 AM by James Caradoc-Davies

    The views presented to this point fail to emphasize the levels of work at play in the enterprise. Since when does an Architect lay bricks? Is not architecture design? The function of the Enterprise Architecture team is is pointedly to effect Enterprise Architecture. It is clearly a governance function. This includes as a necessary element facilitation and high-level control of individual solution architectures. In 'point' or Line of Business solutions the term 'Solution Designer' clarifies the controlling aspect with regard to focus on the integrity and suitability of a solution, as provided by an in-team resource. The goal is to align with and fill the requirements of the controlling Enterprise Architecture team. The term 'Systems Analyst' could describe the implementation-focused solution accountability role described in this thread. This could of course be delegated, shared and/or rotated. Agile teams can and do excel in such environments in which the bigger picture is the domain of persons beyond the team boundary. I agree that in smaller, isolated projects with mature teams there certainly seems to be no need for 'Architects', perhaps excluding the need of some to wear eppaulettes.

  6. Back to top

    Re: Levels of Work

    Apr 12, 2009 11:53 PM by emrah okay

    With twenty-four members plus two spec leads, Java EE 6 -- or JSR-316 -- is officially underway, Roberto Chinnici presents a summary from the first meetings between the group saç  video izle program indir indir amerika Sohbet adana Sohbet izmir Sohbet Ağrı Sohbet aksaray Sohbet almanya Sohbet Adıyaman Sohbet Afyon Sohbet ankara Sohbet Antalya Sohbet istanbul Sohbet Afyon Sohbet Afyon Sohbet Haber Haber oyun indir oyun indir sohbet mp3 indir bedava film izle bedava film izle telefon çet oyun indir indir program indir - chat anyone try to appropriate the IP and patent it without OpenID's consent.

  7. Back to top

    Re: Need for an architect

    Apr 30, 2009 10:45 PM by emrah okay

    With twenty-four members plus two spec leads, Java EE 6 -- or JSR-316 -- is officially underway, Roberto Chinnici presents a summary from the first meetings between the group saç  video izle program indir indir amerika Sohbet adana Sohbet izmir Sohbet Ağrı Sohbet aksaray Sohbet almanya Sohbet Adıyaman Sohbet Afyon Sohbet ankara Sohbet Antalya Sohbet istanbul Sohbet Afyon Sohbet Afyon Sohbet Haber Haber oyun indir oyun indir sohbet mp3 indir bedava film izle bedava film izle telefon çet oyun indir indir program indir - chat anyone try to appropriate the IP and patent it without OpenID's consent.

  8. Back to top

    Re: Need for an architect

    Jun 19, 2009 7:22 AM by emrah okay

    With twenty-four members plus two spec leads, Java EE 6 -- or JSR-316 -- is officially underway, Roberto Chinnici presents a summary from the first meetings between the groupmetin 2 indir video izle oyun indir bedava sohbet mp3 indir bedava film izle oyun indir indir program chat anyone try to appropriate the IP and patent it without OpenID's consent. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- With twenty-four members plus two spec leads, Java EE 6 -- or JSR-316 -- is officially underway, Roberto Chinnici presents a summary from the first meetings between the group saç  video

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.