Who Needs an Architect?

Hi, this entry will talk about an article titled: “Who Needs an Architect?”, written by Martin Fowler. Basically, it discusses the definition of architecture and one related term: architect, but, obviously, focusing on software.
One thing I agree with the author is about our nonconformity with the IEEE’s definition of software architecture, despite the fact that It was defined by software development experts. I think that that definition has to be restated and then better explained.

But this similarity with the author's opinion doesn’t mean that I agree with the author’s definition explained later in the paper: “The shared understanding of the system design” or “Architecture is about important stuff” or “things that people perceive as hard to change”. 
The only salvageable definition is the first one, I think an architect must have a better understanding and experience of software design and development, so he would be able to share that knowledge with the other team members that aren’t at the same level of understanding and this could, effectively, distinguish a normal developer, from an architect.
But the last two definitions are completely relative on the project treated at that time. There will always be disagreements about what people, architects or even developers think about what is “important stuff” and what they “perceive as hard to change”. The author tries to explain that what makes a component significant is that an expert developer say so, and again that would totally depend on each developer. We can’t use that generalization in a concept with a great level of importance as Software Architecture. 
I think Software architecture could be better defined.

I will end this entry with the last thing I agree with the author in this paper: software isn’t limited by physics, but it is limited by imagination, design, organization, and properties of people, so the real enemy in software architecture and development is us.

Comments

Popular posts from this blog

An Introduction to Metaprogramming

Understanding the SOLID Principles

Microservices