Passion * Technology * Ruthless Competence

Wednesday, August 31, 2005

Believe Me, You're Not Architecting

So I said yesterday that I'm talking about architecture, not architects. However, today I am going to discuss the word architect and the dramatic misuse of the word I see pretty regularly. Or at least, I see now because Paul Preiss of IASA mentioned it when we were hanging out at TechEd.

"Architect" is a noun, not a verb.

Usually, when I hear the term "architect" used as a verb, it's being used as a synonym for design. In fact, the term "architecture" is also often used as a synonym for design. For example, Arnon wrote this:

Architecture is design (but not all design is architecture)
[Arnon Rotem-Gal-Oz, What's "Software Architecture"?]

Like Fowler's description I talked about on Monday, I don't like this one much either. Architecture isn't just "good design" which is what Arnon's description makes it sound like. This begins to get into the title inflation that Alan Cooper wrote about a few years ago. Speaking of Alan, here's his definition of architect.

The panoply of software construction includes three vital roles: the programmer, the engineer, and the architect. The architect is responsible for determining who the user is, what he or she is trying to accomplish, and what behavior the software must exhibit to satisfy these human goals. The engineer's responsibilities are comparable but focused on technology. A good engineer can and should ignore human issues, confident that the architect will cover the human side.

That definition of architecture (i.e. what Alan's idea of an architect does) dovetails pretty nicely with mine. The architect and architecture is the link between the users (i.e. the business) and the software (i.e. IT). The only thing I would change is that as we get deeper into service orientation, interop and connected systems we have lots of process that don't have direct user involvement. So the "human goals" Alan mentions may not be end user goals so much as business / organization goals. Either way, they certainly aren't IT goals.

As Dave Welsh said and my dad pointed out in my comments, Business is from Mars, IT is from Venus. But that doesn't mean they can't get together. In fact, they have to get together. You show me a system with no business drivers or impact and I'll show you a failed architecture.

Posted By Harry Pierson at 4:42 PM Pacific Daylight Time
Wednesday, August 31, 2005 6:19:48 PM (Pacific Standard Time, UTC-08:00)
I like your definition, however, I would also probably constraint it (imho) to say that the architect is just *one* possible link between users and the software, but certainly not the only one. Maybe one focusing on certain parts of the interaction? I don't know...

I sometimes think of the architect as the one that cares about the things other members of the project would like to pretend don't exist :)
Thursday, September 01, 2005 9:13:05 AM (Pacific Standard Time, UTC-08:00)
Thank you, thank you, thank you... I agree that title inflation is probably at the root of the misuse of "architect" as a verb. It just sounds bad. Based on Larry O's post a few weeks back about "ask as a noun", I blogged the "architect as verb" pet peeve.

http://jeff.donnici.com/archive/2005/08/04/392.aspx
Saturday, September 03, 2005 12:45:29 PM (Pacific Standard Time, UTC-08:00)
I personally prefer the term Architect to be used more like a 'role' than a 'job'. In some (surprisingly very rare) cases it *may* be possible that what you are doing is so very complex that one person takes on that remit as their single and dedicated 'role'. Even then though, due to title inflation, they tend to often make the mistake of not participating in the team with other useful role slices; and then flounder in an alternative reality to the one that actually ships working stuff.

This is actually odd, as a developer's 'test' their code, even with a dedicated test engineer around, but that doesn't stop them being called a 'developer'; just as TE's do develop lots of code.

Architects (as a job title) smooze, spec, design, code, test, juggle and can sweep the floor with a party trick involving a broom - it's just an awkward name given to people with a wide remit and depth of experience, and is probably more of a memed organizational positioning term rather than a concrete job description, i.e. L61.

Now, if it is all about positioning and seniority levels then I propose just delisting the word 'architect', call us all 'developers' and then find a suitably horrible word set for people with less experience. About 500 years ago we had 'Serf, Lord, Baron, King' - worth a go again? Would make a great org chart? ;-)

- David (Serf)
Friday, September 30, 2005 11:11:48 AM (Pacific Standard Time, UTC-08:00)
I just reread your post (I am writing another post and thought I read here something related) and I noticed that you mis-understood my intention when I said "Architecture is design (but not all design is architecture)"
I didn't mean that architecture is just "good design". I meant that it is a type of design (which has to do with top-level / global issues relating to a project/solution/enterprise whereas design (which is also a type of design...) has to do more with local problems

Arnon
Comments are closed.

PDC08

patterns & practices
Summit 2008

Øredev

Change Congress
Recent Bookmarks
Tags .NET Framework (2) ADO.NET (5) Agile (7) AJAX (3) Architecture (284) Guidance (6) Interop (2) Modelling (61) Patterns (7) Process (4) SOA (93) Web Services (5) ASP.NET (24) Battlestar Galactica (3) BI (2) BizTalk (4) Blogging (115) dasBlog (11) Podcasting (4) BPM (1) C# (10) C++ (4) Capitals (5) CardSpace (3) CLR (2) College Football (10) Comedy Central (1) Community (81) Concurrency (6) Consumer Electronics (1) Database (13) Dependency Injection (2) Development (117) C Plus Plus (1) Embedded (5) Lanugages (37) Media (2) P2P (11) Rotor (1) SharePoint (6) SOP (3) DIY (1) DLR (14) Domain Specific Languages (13) Durable Messaging (5) Dynamic Languages (10) Dynamic Silverlight (1) Education (3) Enterprise 2.0 (1) Entertainment (14) ETech (15) F# (51) Functional Programming (17) Game Development (2) Guidance Automation (3) Hardware (8) HawkEye (3) Hockey (29) Home Electronics (1) Home Network (5) Humor (5) IASA (1) Idempotence (3) infrastructure (5) Instrumentation (4) Integration (2) IronPython (27) IronRuby (11) Java (2) Job (3) LINQ (19) Live Mesh (2) Lost (1) Master Data Management (1) Media 2.0 (6) Microsoft (29) MIX06 (2) Mobile Phone (1) Monads (5) Morning Coffee (172) Object Oriented (4) Office (5) Open Source (5) Open Space (2) Operations (3) Other (135) Art (1) Books (1) Family (31) Games (18) General Geekery (26) Home Theater (1) Movies (23) Music (20) Politics (3) Society (1) Sports (37) Working at MSFT (15) Parsing Expression Grammar (16) patterns & practices (2) PDC08 (2) Politics (42) PowerPoint (2) PowerShell (33) Presentation (5) Projects (1) HawkWiki (1) Python (4) Quote of the Day (4) Refactoring (1) Research (2) REST (18) Reuse (5) Robotics (2) Rome (5) Ruby (23) Ruby on Rails (1) Sci-Fi (2) Scripting (4) Security (3) Service Broker (14) SharePoint (2) Silverlight (18) Social Software (1) Software + Services (2) Software Design (1) Software Factories (11) Software Industry (1) Spark (1) SQL Server (2) Stephen Colbert (1) TechEd (7) TechEd06 (1) TechRec League (1) Television (6) Travel (6) Unified Client (1) Unit Testing (4) UX (1) Virtual PC (2) Visual Basic (1) Visual Studio (20) Volta (2) Washington Capitals (34) WCF (31) Web 2.0 (65) Web Services (5) WF (21) Windows Live (23) Xbox (1) Xbox 360 (53) XML (7) XNA (14)
Disclaimer: The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Inappropriate comments will be deleted at the authors discretion.