Many of my geek friends are in a kind of transition point in their career life, most of them worked on specific technologies for last 5+ years, Now they have reached the crossroads where they get to choose either project management or technology specific roles. One of frequent question from them is "If I have to become an Architect, What should I do?", Here is my answer for everyone, who are interested in becoming an Architect.
Learn to Comprehend:
First step to become an Architect is, understand the term "Architect"
In my definition, "Architect is one, who takes the major design decisions".
In today's world, developing software demands a greater number of decisions to be taken, most of them related to
> What to build?
> How to build?
> How to make our solution available 24/7?
software has become so complex that no single person can take all these decisions. Each one of the above questions, requires some specific skill, expertise and experience.
Based on the decisions they take, Architects can be categorized into Solution Architects, Technical Architects and Infrastructure Architects.
Solutions Architect - "Who decides on what to build". Solutions Architects work on the business, requirements and the behavior side of the application. They have multiple project experience spanned across different industries and problem areas. They also have experience in building broad range applications (desktop, mobile, enterprise, and embedded), etc.
Technical Architect - "Who decides on how to build", They decides on the implementation side of the system and how to integrate different technical components and other Open Source tools and technologies to implement a business requirement, Technical Architect also should have experience in various technology components, tools, OOAD, Design Patterns, understanding and building Framework, etc.
Infrastructure Architect - "Who decides on how to make our solution avialable 24/7, This role requires an outstanding, real time experience in configuration and fine tuning of specific tools and servers. Their main focus will be on Fault Tolerance, Load Balancing, Capacity Planning, etc.
These above roles compliment one another and are equally important roles. Based on the interest and experience, one can decide the kind of Architect role, he/she wants to be.
Dare to Explore:
Apart from technology, an Architect should have a broad understanding
of various things, including business, processes, development
methodologies, implementation strategies, etc.
A common problem with the technical people is, they focus only on technology. I see very few go beyond technology and spend sometime in reading and understanding other topics.
Here is a list of books, I would recommand every one in software industry to read, especially Architects and Project Managers
| > Crossing The Chasm By Geoffrey A Moore |
| > Breakthrough Consulting By Dembitz & Bessinger, Prentice Hall |
| > Selling Dreams By Longinotti-Buitoni |
| > Living On The Fault Line By Geoffrey A Moore |
| > The Circle Of Innovation By Tom Peters |
| > Project 50 By Tom Peters |
| > The Mythical Man Month By Frederick |
| > About Face 2 By Alan Cooper |
| > Beyond Software Architecture By Luke Hohmann Addison-Wesley. |
| > Patterns Of Enterprise Architecture By Martin Fowler |
| > Domain Driven Design By Eric Evans |
| > Ziglar On Selling By Zig Ziglar |
| > Secrets Of Power Marketing By Peter Urs Bender |
| > Leadership And The One-Minute Manager By Kenneth Blanchard |
See my previous post Am I a rare intellect? I think so! for the complete list of wonderful books from my library
Prepare to Experiment:
An old proverb says "I hear and I forget. I see and I remember. I do and I understand.", it's very much true in terms of learning anything new. We tend to forget everything, unless we actually use our knowledge in a real time.
Since software development is driven by the customers needs and chagning market dynamics, getting a right environment to experiment every technical decision is very difficult, unless you are part of the initial stage of software development.
The best possible option is, to team up with like minded people, and take three or four different problems, start architecting solutions from the scratch.
Other bloggers who has similar thoughts:
Role of a software architect - Fabrice Marguerie
Do you wanna be an Architect when you grow up? - Martin Fowler
What are the types of architect? - Michael Platt
Breaking Down the Software Development Roles - Robert Bogue
Enterprise Architecture is not Software Architecture - James McGovern