7 Prerequisites to Become a Software Architect

 
Author:  Follow: TwitterFacebook
Job Title:Sarcastic Architect
Hobbies:Thinking Aloud, Arguing with Managers, Annoying HRs,
Calling a Spade a Spade, Keeping Tongue in Cheek
 
 

So, after all those years of hard work as a developer, you’ve got a lot of experience and have become a Very Senior Developer. You  may be a team lead, or just a lone-wolf developer, but in any case you’ve got a lot of self-confidence and respect from the others in what you’re doing.

You’re happy with what you’re doing, but the company have decided to start a Big Next Project, and they need somebody to architect it. Due to your experience and respect of the others, you’re one of the candidates. The Big Question now is the following:

Do you have what it takes to become a Software Architect?

This is exactly what we’ll try to find out in this article.

Software Architecture

Prerequisite -1. Being respected BOTH by team members AND management

If you want to get to the top, prepare to kiss a lot of bottom
Not Strictly Necessary
It is very important that you should be respected by both management and team members. If you’re not respected by team members – there is probably something either with your technical abilities, or your abilities to communicate. If you’re not respected by the management – you will certainly have problems communicating with it (not to mention that they won’t give you the job in the first place).

BTW, contrary to popular belief, being respected by the management doesn’t necessarily involve kissing a lot of bottom. From my experience, if both you and your boss are smart enough, she’ll appreciate you being frank and telling her what do you really think (at the very least because nobody else does it, and she knows that she needs a second opinion). And if your boss isn’t smart enough – you’d better to look for another job anyway.

Prerequisite 0. Having technical expertise / being smart enough

Despite what most of the people (including yourself and you manager) think, the question is not really about your technical abilities or about “how smart are you” – most likely, if you’re really respected by the team, you can do pretty much everything out there, architecture included. So, in a sense, this Prerequisite 0 should pretty much go without saying.

In fact, from what I’ve seen in practice, difficulties with becoming an architect are usually more of a psychological nature. Just one example: in one quite a large project, we have had at least 5 people who were able to take the architect role. However, despite all the encouragement we  (“we” = both management, and me as an architect at that time) gave to these people over 2 years, none of them was really willing to do it. Such situation is not an exception, in fact it is very typical. Subsequent prerequisites, will provide certain insight why it happens, and what do you need to overcome to become a software architect.

Prerequisite 1. You should want to do it

Hare thumb down:If you don't want to become an architect - you won't be the one (or at least a good one).Yes, it is that simple. If you don’t want to become an architect – you won’t be the one (or at least a good one). What will surprise most of the people out there (especially those dreaming about promotion) is that most of the Very Senior Developers don’t want to become architects. Usually it ranges from reluctance to being outright angry about such a perspective. Why? We’ll see it in Prerequisite 2.

Prerequisite 2. You should be willing to go out of your comfort zone

This is IMHO the largest problem for a Very Senior Developer on the way to the Architect. Below goes a brief outline of the “comfort zone” problem

  • As a Very Senior Developer, you tend to know pretty much everything in your field.
  • It is well-known and recognized that whatever-you-have-said, is true; you’re trusted implicitly
  • However, your field is not wide enough to include the whole system
  • So, if you go outside of your field, you’re facing making mistakes, asking things, and losing this status of the “mystical guru who’s always right”.
  • This acts as a huge disincentive for a Very Senior Developer

This is perfectly fine, and most (if not all) software architects came through this process, and nobody will make fun out of you (at least because of respect you’ve already earned), but still it means coming out of your field, which is your “comfort zone”, to become an architect.

Prerequisite 3. You should be willing (and be able) to listen to the others

As an architect, you will need to balance things between different parts of the project, and different teams. This makes communication one of the vital skills for the architect. Being able to listen to the arguments of the others, can be difficult not only for lone-wolf developers, but also for team leads (especially those who prefer authoritative team-leading style, myself included).

Prerequisite 4. You should be ready to admit that people know better than you within their field

Hare pointing out:As an architect, you should be able to know what is possible to do, but answering how to do it is not strictly required.This one is closely related to “comfort zone” prerequisite, but is still distinct enough to emphasize it. As an architect, you have way too much on your hands to understand intrinsic details of each and every team. It is perfectly normal, but on the other hand it implies that you should accept that there are people who know intricate details of the field better than you. As an architect, you should be able to know what is possible to do, but answering how to do it, while certainly nice-to-have, is not strictly required.

Prerequisite 5. You should be able to isolate yourself from irrelevant details

This is one of the most tricky – and most important – skills of the software architect. As a developer, you knew everything about what you’re doing, and were able to keep it in your head most of the time. For a software architect, it is no longer an option. To deal with it, you should “lock” yourself within one layer of abstraction, find a way to understand other layers as “black boxes” (via interfaces which those other layers are implemented), and to ignore everything which is located within those “black boxes”. This model applies as long as you’re thinking within one abstraction layer. As soon as you need to think about another abstraction layer – you should repeat the process above, and start thinking within new layer, ignoring everything else (including that layer which you’ve just left). The best of us (of course, I mean Yours Truly here 😉 ), can switch between abstraction layers really fast, but this is not a strict requirement. What is a very significant requirement though – is being able to concentrate on one single well-defined problem (and to do it – you’ll need to define it well first).

Ok, I can do it, what’s next?

If you want to learn to swim jump into the water.  On dry land no frame of mind is ever going to help you.

”Bruce

As soon as you understand what are these prerequisites are about, and can fulfil them – you’re more or less ready to apply for your first job as a software architect. It won’t be easy, but – at least you will have a chance there.

Good luck! I really mean it, as there are way too few good architects out there; increasing the number of good architects will help to create better software, which is the thing I’m really craving for :-).

Don't like this post? Comment↯ below. You do?! Please share: ...on LinkedIn...on Reddit...on Twitter...on Facebook

[+]References

[+]Disclaimer

Acknowledgement

Cartoons by Sergey GordeevIRL from Gordeev Animation Graphics, Prague.

Join our mailing list:

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.