Skip to main content

Why is an architect?

 




This week's (very short) article, Who Needs an Architect?, Martin Fowler explains to us the different definitions of architects that exist in the software world. The first and most common definition, which Fowler disagrees with, says that an architect is (s)he who helps identify what the most important parts of a project are, in order to give it structure. However, it is also mentioned that these parts are usually the most important because they are the hardest to change, so an architect's job should also include reducing the amount of these parts. Following the logic, by this definition, an architect's job is to reduce the amount of architecture. 

The second proposed definition, which I also think I agree with, is that an architect's role is more like a guide's. His purpose is to help the team become better by using his expertise, and communicating with as much of the team as possible in order to remove their blocks. I think the word architect still fulfills this definition. However, the role isn't to design the product, it's to, in a way, design the right team to work on that product.

I think the reason I agree with the second definition is because just like Thanos, change is inevitable. It's even mentioned in the article: flexible components are a little more complex than their non-flexible counterparts, but as a whole, a non-flexible system can be just as complex. That being said, since it's impossible to prevent change, you might as well have a solid team that will be able to tackle it. 

With that said, I think I agree with the idea that a "software architect", as is defined today, meaning someone who designs a system from the beginning in order for it to be more robust, is not needed in most cases. What is needed, is someone who is able to manage a team, is willing to teach, and knows how everything should work together, and what to do when it doesn't. We could change the definition and keep using the architect title, or come up with a new titleto cover this issue, either is fine by me, but I agree with the idea that an architect by today's terms isn't the most useful addition for most projects.

Comments

Popular posts from this blog

Is Design Dead?

 This week, we had to read Is Design Dead? by Martin Fowler. Just by reading the title, the thought of agile methodologies popped into my head, since they do involve design, just not as much as we're accustomed to. And not too surprisingly, Fowler reached a similar conclusion: design is NOT dead, it has just evolved along with us to keep up with today's standards.  Before, design was used to make sure that you knew everything you needed to get done, and it let you find any flaws in your plan beforehand. It was meant as an all-encapsulating process that all future code will be based on. Today, it has maintained its role as a guide, as to not make the developer feel totally lost, but with today's fast-paced work environment and ever-changing requirements, with the help of methodologies such as Extreme Programming, it has evolved to become more dynamic and easier to change.  For my personal opinion, I've had experiences (both academic and professional) where a bit of desig

SOLID

 This week, we read a very straight-forward chapter by Edward Guiness of the book Ace the Programming Interview: 160 Questions and Answers for Success. It very quickly explains the SOLID principles, which are widely-known principles applied to object-oriented programming that have to do with minimizing dependencies between classes. I won't explain what each principle consists of (since it's very easy to find ), but I will share my general thoughts about them.  I still remember when I first started university, my code consisted of one very long python file that you could very easily read from top to bottom; the concept of functions was still foreign to me, and when we started using them, we would split up all of our code into two or three functions and that was that. Since then, we've been introduced to many different ways to make code cleaner and easier to read, and one that's been repeated often is the Single Responsibility Principle, which I agree is very useful in or