Tuesday, July 27, 2010

Architectural Thinking

I recently had to give an Architectural Thinking course. As I was putting the materials together, I wondered – what really makes a good architect? What is the difference? Is it personality, totality of experiences, different wiring, or natural inclination?

I always believed that while good architecture skills can be taught, it is the way we think that differentiates us and makes us good architects. Our natural ability to understand the problem and determine the right solution is the magic formula. This – and this alone – distinguishes good architects in our midst. You don't have to have "architect" in your job title or even be in IT to be a good architect. You can understand the technology in minute detail, know all the design patterns, possess tremendous depth of experience, have in-depth knowledge of various design techniques, etc. All this can be taught or acquired. At the end of the day, however, it is your approach to problem solving and the way you think that will make you stand out among your peer architects.

Why do I put such a heavy emphasis on the thinking style? To help you understand, we need to take a step back and define "architecture". According to Wikipedia, "the software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them." Many books, articles, and white papers provide a definition of architecture as well. However, in my opinion, these definitions are too complex and do not truly reflect the nature of architecture. My personal definition is very simple: architecture is a high level view of a technical solution to a business problem.

What does the definition of architecture have to do with our approach and thinking style? Everything! Taking all the specifics of how we actually deliver architectural solutions out of conversation, to do our job well we simply need to determine the right technical solution to the right business problem. We need to consider all the possibilities when addressing a business problem – what is there today, what is missing, what problem are we really trying to solve, is the current process the most efficient, what would deliver the most value, are we solving the right problem?.. We should be able to look at the problem from a very high level, abstract ourselves from the underlying technology or processes, and envision the most effective and efficient solution. As in the old adage, we should see the forest for the trees. Once the "ideal" solution is found, we can start concentrating on its details and understanding technology implications. Many times, we will discover that our vision cannot be readily implemented due to technology limitations, insufficient process maturity, and a host of other factors. Do not despair, however. Your vision becomes the solution goal state, and you would need to create a roadmap to get there.

Undoubtedly, some of you will disagree with the approach presented above. I can hear the arguments now – "You must consider the current situation to determine the right solution to the problem", "The project has a limited scope, and thinking broader is impractical", "The technology landscape should be considered upfront to design the most effective solution", etc. However, if we are to find the right technical solution, we must shed the old baggage. It is very hard to find new and innovative solutions if you cannot think outside the current box. To a large extent, the architectural thinking principles are grounded in the definition of what makes a good architect.

Architecture is an art, not a science. Therefore, a good architect is more of an artist – creative, imaginative, someone who can paint with a big brush. In my opinion, the characteristics and approaches listed below are the true differentiating factors among architects.
  • Abstract thinking – this is the #1 quality of a good architect. You must be able to see the big picture and understand it abstractly, absent of many details that can cloud your judgment.

  • Out-of-the-box thinking – many situations require us to be creative and innovative in our approaches. Good architects should be able to adapt to new situations easily and come up with the right solutions regardless of the situation.

  • Clarity of vision – you, as an architect, should be able to clearly envision the solution and all of its implications including business process, technology, low level design, development, and potential phased delivery.

  • Strength of convictions – architects should always try to do things right the first time, oppose inappropriate or wrong decisions, and stand up for what they believe are the right architectural solutions.

  • Critical thinking – architects should always cast a critical eye towards their domain. You should challenge everything. Nothing should remain status quo or off limits. There are always opportunities for improvement. Don’t miss them because you feel comfortable with the current situation or are used to doing things a certain way.

  • Problem solving skills – architects are problem solvers. Good architects strive to solve problems in the minimalist way, i.e. reaching the right solution in the most efficient manner. Even better architects ensure that they are solving the right business problem.

  • Soft skills – this one is obvious. Good architects should have excellent soft skills to work well with the diverse audiences they are exposed to every day.

As in the everlasting nature vs. nurture debate, I believe good architects cannot be made – a large portion of what makes architects stand out is ingrained in how we think, act, and approach problems. To be truly effective, we should practice all the elements of architectural thinking and exhibit all the traits of a good architect.

11 comments:

Jeffrey said...

Thanks for sharing this Leo. I agree with you that architectural thinking is very essential to the success of an architect. Having worked in a team that builds web services architecture, it is necessary that we see the big picture and understand it to be able to execute it well. Again, thanks for the good read. It really inspired me a lot

Sanjay Gupta said...

Looks like you've put good effort on making this article. Thanks for sharing.

Jinson said...

Awesome !. This is good inspiration article. Thank you so much!

Zedman said...

Interesting perspective, especially the nice straightforward definition of architecture which makes clear the interface between business and technical domains (satisfying different kinds of stakeholders).

Some research has been done in the area relating to the question of what makes a good IT architect. Take a look at:

http://researchbank.rmit.edu.au/eserv/rmit:6670/Frampton.pdf

Ian Peake

http://www.cs.rmit.edu.au/~ipeake

sid said...

Thanks for sharing your thoughts. I liked the way you described Architecture as an Art. And I believe ..It is. Since we have to work with diverse set of people and each having their own ideas and apprehensions about any proposed solution, soft skills really comes handy in making roads for your approach to design/build a solution. Drawing a big picture through Architects brush always helps. It’s always good to challenge the status quo but at the same time one will have to understand the boundary/scope.

Jamie said...

Interesting and very helpful blog. Good architects also learn continuously throughout the course of their career. Thanks for posting.
residential interior design baltimore

Cool boy said...

I have been searching for hours and I haven’t found such awesome work.
Flinders Street Station Design Competition

Dheeraj said...

you can teach basic of architect to anyone but you can't make him perfect or master in architect designs for that one himself need to work lot on himself. Stone tubs

Isabella watson said...

Thanks for sharing your post... keep sharing content about Architects I'm a frequent reader of your blog.

Draftsman Brisbane | Architects Sydney

John Dudley said...

Acetech who have been one of the leading software development company in Delhi giving creative custom software development to meet interesting business challenges for the absolute most distinguished organizations and associations in the country.

Naviya Nair said...

Great Article..
WCF Online Training
WCF Training
Online WCF Training from India
WCF Training in Chennai