Wednesday, January 24

How do you become an Architect?

During an interview yesterday a candidate told me he had aspirations of becoming a software architect and asked me how he should pursue it. That question caught me off guard. I considered my personal career history and came up with this little nugget:
Always be the guy in every meeting with the best design idea.
That's pretty much how it worked for me. When you're sitting in a room with your colleagues and peers, discussing and debating how to solve a particular problem, and you consistently present the best ideas, the ideas that get implemented, you start to build a reputation and credibility. The next thing you know, you're The Architect. I expanded on the idea with this:
Be able to recognize and vocalize the pros and cons of every idea.
Not just your own; other people's ideas as well. If you can tell them, in a polite and constructive manner, what's wrong with their idea and how it might hurt them in the near or far future, they will [if they're not a complete jackass] thank you for it, and come to you the next time they want a Sanity Check.

But how, you might ask, do you become the guy with the best ideas? Read, read, read! I am a bookworm. I read books on design patterns, frameworks, methodologies, programming languages, antipatterns, usability, etc. If you can grok it and regurgitate it at the appropriate times, you'll be The Idea Guy.

That's how it worked for me. Your mileage may vary.

22 comments:

Unknown said...

so here I think how it goes:
if(u.haveBestIdeas()) {
u.setPosition("Chief Architect");
} else if(u.havebetterIdeas()) {
u.setPosition("Senior Architect (As oppose to what?)");
} else if(u.haveGoodIdeas()) {
u.setPosition("Architect");
} else if(u.haveIdeas()) {
u.setPosition("Senior developer");
} else if(u.haveNoIdeas()) {
u.setPosition("Phreakin' code monkey");
} else {
u.setPosition("You are in a wrong business buddy");
}

Ganeshji Marwaha said...

That is some interesting thought there. Even though, it is something that many know about, still it is good to see someone vocalizing it.

we4tech said...

very nice topic.
experience is most important stuff...
the days you pass u are growing your knowledge base... and your ideas are growing tooo...

i think architect always thinks - "..Nothing is perfect... but find out something better..."

Unknown said...

Great post, I will just add a further comment.
The only down side to been know as the guy with the best ideas is that after some time people take it for granted that this guy knows best. It doesn't matter if your Chief Architect or a code monkey the best ideas are the ones that are continuously challenged. If your ideas aren't been challenged anymore it's time you found a new gig where those around are willing to take down your ideas

Shahana Shafiuddin said...

nice suggestion. i like to add little more... you can't just give idea which doesn't have any based on this earth. when you know, how it is possible. what will be it's performance, how developer can bring it in reality, how it will give effect on budget and time. then this will be a best idea, not an irretating idean.

nicholdraper said...

Beyond having the best idea, you need to back it up with the ability to communicate those ideas effectively. Don't just read, you must also write and diagram. Even shops that subscribe to agile processes need architectural diagrams to guide the overall project. Often I white-board what I have already diagrammed in Visio.

Madhusuthanan Seetharam said...

A very precise and compact guide on "How to become a Software Architect...?"

Adeel Ansari said...

Indeed.
Code reviews does alot in this sense. Get your code reviewed by your seniors(not in terms of years but in terms of work). Follow the steps of refactoring done to your code. Discuss those with them. After gaining the adequate sense review and refactor out the codes of your juniors. And then try to review the codes of your seniors.

JoShCrUz said...

Zachman ? TOGAF ? E2AF ? EUP ? Being a good "software designer" is not the same as being a good architect - you can design "good" software, that has the taregeted the wrong business solution. A good architect has to be not only an ubber designer but also an ubber psychologist and an ubber clairvoyant for the business (which at the end of the day is what matters). Think strategically, develop tactical.

Unknown said...

This is great, I expected some long article, but I was pleasantly surprised, short and straight to the point. The comments added to quality/content of the article.
I completely agree with what JoShCrUz added. "Think strategically, develop tactical"
Communication is key, you can have a revolutionary idea, but without having the ability communicate that idea, its basically worth nothing.

eyeStreet times said...

:-))

I expected some techy advice to get to that lofty goal...but this I did not expect...caught me off guard.

Good one though. And are surely worth trying out!!

Unknown said...

This topic is indeed really interesting in some aspects.
Here is my story: I like software development and software engineering all my life. Until now, I have 10 years of experience (details can be seen at www.hanoian.com), but still don't have the title of "Software Architect".

Many people who know me have told that I have quite an awesome capability in software design and implementation.

However, becoming an architect requires some other skills that I don't have. For example, in a meetings where people don't know a thing about Design Patterns, there is no way for me to teach them. Or guys fancy them selves as software architects - but they are only good at vibrating bullsh*t- seem always be able to get high positions such as CIOs or Technology Managers in corporations, and they wouldn't hear anything about real technologies in the meetings.

So, I guess in order to become a Software Architect (I don't mean a real one, but a title), it is not about your technical ability, but the ability of bullsh*ting and you must have a right amount of Stupidity. (Not too stupid to get ignored, but not too smart so that nobody can understand what you say).

Unknown said...

Ted is right. Being the ideas man is the go... and to do this you've got to be able to back it up with up to date design principles and processes.

I'm not an architect (deciding to go down the PM route instead) but have worked with some brilliant architects. What made them better than just a senior dev was that they were able to articulate design AND process to other developers AND managers AND business stakeholders. It might be all well and good to be a brilliant designer/developer with lots of ideas, but if you can't communicate your ideas effectively to the people that make the business decisions and to the guys that have to do the coding then you're not going to do very well.

Being noticed does count for a lot. Maybe those guys that became CIOs and Tech Mgrs are better at doing this. If you're better than them the prove it. It shouldn't be too hard if you can communicate effectively and your patient enough. Leverage of the knowledge that these guys have. If you know more than them in the tech field then leverage off them for their business know how. Being well balanced is the key to advancement in any field. (Or so I believe)

Good points though Ted. They've been taken on board.

Gopi said...

A really wonderful guide to 'become an architect'! and amazing code by 'up' :) Well.. to summarize all that I feel is Ideas are also inspired by a lot of reading. Its more important to constantly keep reading new ideas from other people and keep track of upcoming technologies. An attitude to learn new is a must ...

Unknown said...

Could u please list down the books u have read as it might be useful for young aspirants like me,may be the important ones in each category.

Mahesh said...

Nice and short approach to become an Architect. I was expecting a longer version though.
To add to this I would say an Architect need not know all technologies available in detail but should be aware of them with their pros, cons and applicability. There isn't one solution to all problems; providing right solution (with right technology) to a specific problem makes an Architect different from all others.
I would recommend SCEA as first step to become an Architect.

Bene Wu said...

Thank you! I want to become an Architect.

I'm a developer now, so what's the
first step?
Is it right that SCEA is the right first step or other?

Unknown said...

Bene Wu, did you even read the article or comments? SCEA is not even mentioned. It takes experience, research, and certain personality traits to become an architect.

Amy said...

hey im graduate in engineering working as vb.net developer can u tell me do i need to MS or any pther post graduation to bcum a syatem architsct.. jus want to b sure abt qualifications required apart frm valid expierence

Unknown said...

Becoming an architect is easy, and is essentially a matter of applying the "Dogbert consults" pattern. Here is the way forward in order to become an architect, when faced with another guy like you ("Bob"), who also wants the job:

1. Come up with some idiosyncratic design and framework that somehow smells of a current trend.
2. Defend your design with teeth and nails in every meeting. Preparation helps, make a list of 10 reasons why Bob's design sucks. If your bladder is bigger than that of other people, and there is lots of coffee around, then that helps too.
3. Introduce your framework in some central place of your company's business.
4. Use time after work to expand your design such that it adds new features. Note that this may mean that you no longer will have a social life, but a true architect does not need such a thing.
5. Introduce subtle changes that mean that others, especially Bob, will need to continuously adapt. Explain to others why your new features are the best thing since sliced bread.
6. Humiliate Bob, ideally in presence of a customer or superior, by explaining why their code and design is a bad idea.
7. Coerce Bob into doing things your way. Watch as Bob's morale goes down. Eventually he will quit or do something he will regret.

You have gotten rid of Bob, your design is inside of the code base, congratulations, you have become The Architect.

Anonymous said...

Architect is the one who first know what to do in front of new demands, new propositions, new problems that are never been seen. Also he should master the old known problems so he can solve them in no time and after all be up-to-date in all technology. Otherwise, he can't solve what said previously

Regards

Anonymous said...

nice post