Software Development

“Architect” Should Be a Role, Not a Position

What happens when a senior developer becomes…more senior? It often happens that they get promoted to “architect”. Sometimes an architect doesn’t have to have been a developer, if they see “the bigger picture”. In the end, there’s often a person that holds the position of “architect”; a person who makes decisions about the architecture of the system or systems being developed. In bigger companies there are “architect councils”, where the designated architects of each team gather and decide wise things…

But I think it’s a bad idea to have a position of “architect”. Architect is a position in construction – and it makes sense there, as you can’t change and tweak the architecture mid-project. But software architecture is flexible and should not be defined strictly upfront. And development and architecture are so intertwined, it doesn’t make much sense to have someone who “says what’s to be done” and others who “do it”. It creates all sorts of problems, mainly coming from the fact that the architect often doesn’t fully imagine how the implementation will play out. If the architect hasn’t written code for a long time, they tend to disregard “implementation details” and go for just the abstraction. However, abstractions leak all the time, and it’s rarely a workable solution to just think of the abstraction without the particular implementation.

That’s my first claim – you cannot be a good architect without knowing exactly how to write the whole code underneath. And no, too often it’s not “simple coding”. And if you have been an architect for years, and so you haven’t written code in years, you are almost certainly not a good architect.

Yes, okay, YOU in particular may be a good architect. Maybe in your particular company it makes sense to have someone sitting in an ivory tower of abstractions and mandate how the peons have to integrate this and implement that. But even in that case, there’s a better approach.

The architect should be a role. Every senior team member can and should take the role of an architect. It doesn’t have to be one person per team. In fact, it’s better to have more. To discuss architecture in meetings similar to the feature design meetings, with the clear idea that it will be you who is going to implement the whole thing. Any overdesign (of which architects are often guilty) will have to be justified in front of yourself – “do I want to write all this boilerplate stuff, or is there a simple and more elegant way”.

The position is “software engineer”. The role can be “scrum master”, “architect”, “continuous integration officer”, etc. If the company needs an “architects’ council” to decide “bigger picture” integrations between systems, the developers can nominate someone to attend these meetings – possibly the most knowledgeable.

I know what the architects are thinking now – that there are high-level concerns that developers either don’t understand or shouldn’t be bothered with. Wrong. If your developers don’t understand the higher level architectural concerns, you have a problem that would manifest itself sooner or later. And yes, they should be bothered with the bigger picture, because in order to fit the code that you are writing into the bigger picture, you should be pretty familiar with it.

There’s another aspect, and that’s team member attitudes and interaction dynamics. If someone gets “promoted” to an “architect”, without being a particularly good or respected developer, that may damage the team morale. On the other hand, one promoted to “architect” can become too self-confident and push design decisions just because they think so, and despite good arguments against them.

So, ideally (and that’s my second claim) – get rid of the architect position. Make sure your senior team members are engaged in architectural discussions and decision making – they will be more motivated that way, and they will have a more clear picture of what their development efforts should achieve. And most importantly – the architectural decisions won’t be detached from the day-to-day development “real world”, nor will they be unnecessarily complicated.

Reference: “Architect” Should Be a Role, Not a Position from our JCG partner Bozhidar Bozhanov at the Bozho’s tech blog blog.

Bozhidar Bozhanov

Senior Java developer, one of the top stackoverflow users, fluent with Java and Java technology stacks - Spring, JPA, JavaEE, as well as Android, Scala and any framework you throw at him. creator of Computoser - an algorithmic music composer. Worked on telecom projects, e-government and large-scale online recruitment and navigation platforms.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

8 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Manitu
Manitu
7 years ago

There are some true statements in your theory, but the majority of them are simply wrong, because obviously you don’t know any good architect. The first delusion comes from the wrong assumption that Architect position is an engineering one, hence a developer could do the same since he’s closest to the code. He or she has to tackle more with the business concerns and constraints than engineering one, hence all the trade-offs in the decision making are mostly coming from the business not from well-known engineering patterns and principles. Engineer’s soft skills are very often completely missing or at most… Read more »

DaFab
DaFab
7 years ago

My position is currently ‘Senior Technical Architect’.
How often do I work with this role? No more than 10% of my time. The rest of the time, I work as a ‘technical expert’, as a ‘tech lead’, as a ‘trainer’, as a ‘scrum master’ and even as a ‘developer’ (not counting the ‘fireman’ role).
So I totally agree (at least based on my experience), as you can’t be an architect 100% of your time, this is a role, and not a position

Bozhidar
7 years ago

@DaFab – thanks, I even added your point to the post, which other commenters pointed out as well.

@Manitu – you are basically saying what DaFab is saying the same thing, but you are looking at it from different persiective. You are saying that architects do a lot more stuff than architecture. Which is true. And again means that “architect” is just a role, as architects do a ton of other stuff, utilizing their soft skills.

Tarek Said
Tarek Said
7 years ago

I agree, architect should be a role. I’m a “Solutions Architect”, but I still code, the design part is an extra role, not exclusively what I do. I certainly don’t want to stop coding, I just love it :) Continuing your Construction analogy, it doesn’t make sense for an architect to do handy work, since it requires physical strength and he hasn’t trained for it. But in software development, the implementation requires just as much thought than the design, there’s no reason for an architect not to code. Also, I do find that I often have to change the design… Read more »

V Kumar
V Kumar
7 years ago

This in practical sense is very good. But how to manage the senior people? Senior should get rotated between architect and developer roles intermittently. Senior people can do architecture and code crucial points in the application.
Also Senior developer if gets promoted to architect, the salary also need to be revised or hiked. How would it be easy for employee and the company?

Kangeyan Passoubady
7 years ago

Not every developer becomes an Architect. Having domain knowledge, how to design and implement various tools and technologies, integration between different tools and technologies is not every developer knows ahead of time. A person, who is coding for longer time, finding patterns, SME and with other exposures becomes an Architect, as he sees patterns, pit-falls ahead of time, able to convince technologies needed to implement a solution. Doing good coding in one language or one thing does not mean, the developer can address the bigger picture of what is needed to run the business. As an architect I code about… Read more »

Warren Weinmeyer
Warren Weinmeyer
7 years ago

Hi Bozhidar, Your article describes a pretty common sentiment, but, unfortunately it shows a fundamental misunderstanding of what a professional Architect does and what the scope of Architecture is. In fact, only a relatively minor part of an architect’s time working at the Solution level of architecture involves design (of applications, of interfaces, of infrastructure, etc.), because that is only a relatively minor part of architecture – though still very important, of course. On top of that, a critical aspect of the design work an architect performs is understanding when to stop designing and leave the exact implementation details to… Read more »

Manuel
Manuel
7 years ago

I agree with your point of view. I have also known some ‘architects’ that were very bad developers. The usually made proposal that seemed good on paper, but that failed when someone tried to develop them. And when it happened, they avoided to give any support because they didn’t know how to make it works. So, as you say, architech should be a role and not a position. But it seems that the HR deparments are not able to understand it (after all they usually don’t understand anything about our profession), and they continue tagging to every worker according to… Read more »

Back to top button