I'm currently a junior Java developer with 1 year of experience. And I want to know how to become an Architect. what things should I focus on to reach that goal or to be more specific what is the road map to be a great architect?

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.
If this question can be reworded to fit the rules in the help center, please edit the question.

5 Answers
5

Software architect is an individual contributor role in most companies. And btw, it is just a term that different companies allow differently. (After all, every developer "architects" his piece). So I am assuming you want to know about the person who decides the end to end design/architecture of a complex piece.

The growth path usually depends on the size of the company, but it could go like Developer -> Senior Developer (multiple levels here) -> Principal developer (usually architects) -> Senior principal or Partner developers (usually architects at a much bigger level).

Having said that you should look at what makes a senior developer into a principal. The senior developer is expected to influence the code written around her/his team, but the principal / partner developer is the person who decides the interactions / drives projects across teams. So the biggest contributors would be,

Great coding knowledge (to identify time estimates etc.) This includes everything like patterns/refactoring/maintenance etc.

Design skills and knowledge of the bigger picture.

Ability to work very effectively across teams - hence communication.

Ability to mentor / interview junior folks.

Ability to influence a lot of folks since usually developers don't report to you, and its ineffective to escalate every issue via their your/their managers.

A bit of future gazing. Ability to predict stuff like, In 5 more years blue ray players are gonna be so cheap that I am going to write huge software products.

Working with customers/knowledge of biz and marketing.

As you grow up the Individual contributor path, the ability to define your contribution in terms of source code files etc. goes away (Your junior developers will be writing a ton of code in many of your projects and obviously the architect won't be able to match them line to line or even in complexity). So you also have to learn to show your value at a meta level, in a way other than SLOC / bug count.

Just so you know, you're probably very junior right now. As with virtually all human activity, it takes around 10 years of hard work (i.e., about 10k hours of pushing yourself) to become an expert in something. There's no real short cut to that; it relates to how long your brain takes to lay down certain types of pattern.

And I want to know how to become an Architect. what things should I focus on to reach that goal or to be more specific what is the road map to be a great architect?

A software architect is really an expert position, having responsibility for selecting the components and interaction patterns used across a whole project to achieve that project's goals. Not all projects need that much architecture of course — sometimes it's obvious to everyone what needs doing — but when you've got a complex problem that requires 20 interacting services each with its own technology stack, the skills of a good architect will really help. If the architect gets it wrong, the project will either fail completely (with huge recriminations on all sides) or “succeed” in the worst way possible (e.g., results that can't be rolled into production because they're so utterly intertwined with everything else in a way that only the original developers can understand). Be aware that software architecture typically has to bear in mind project management too; solutions must be buildable after all.

The roadmap to being an architect starts with becoming a good programmer. It pretty much requires that the proto-architect spend plenty of time learning many different paradigms, languages and libraries so that problem-spaces and potential solutions can be understood and evaluated rapidly. It also requires a lot of reading, and more than a few experiments which end in partial failure; when something goes wrong, try to understand why so that it doesn't happen again. And naturally, it requires good communication skills: the forces can only be understood by listening to others and the proposed architecture must be communicated to all relevant parties to be of any value.

I suppose one of the key things is that you've got to understand the problems in terms of multiple levels of abstraction. That's not very easy, because each level of abstraction has its own restrictions and domain of applicability, yet there is coupling between the levels too. Details matter, yet can overwhelm. Finding a good balance, especially one that you can explain to others, is difficult.

Will you become an architect in time? I don't know. You might get it in your job title after some amount of time, but job titles aren't very relevant: it's whether your peers would describe you as such that matters. (Remember, there are other possible career paths out of plain programmer-hood too: if it turns out that you're good at project management, then please do that instead. There are far too few good project managers out there.)

+1: Avoiding the soundbite answer. Being afraid of absorbing or contributing large amounts of written, diagrammed or verbal information ain't a good starting point for any would-be architect... (Just offering a counterpoint to @Jim G. Some questions have brief answers. For other questions, whatever fits in a nutshell, belongs there.)
–
Pontus GaggeMay 28 '11 at 19:57

@Pontus Gagge: So you think it's useful for @Donal Fellows to remind us that "A software architect is really an expert position." and to tell the OP definitively "Will you become an architect in time? I don't know."
–
Jim G.May 28 '11 at 21:54

Only take positions with room for improvement, unless the positions are temporary. Set yourself up to be able to earn the next position up the ladder. If you're in a company where that's not an option - or not really an option - look to move, and move in a professional manner.

The path to be a great architect is working as a programmer with passion and professionalism in several projects the next 10 years and keep learning things. Eventually your peers will see you as an architect.

If you are interested in being a "Senior Architect", a certified architect on something or another fancy role name, follow your company politics to get there, but a role without proper experience is just an empty box.

With one year of experience you still don't know, not even by name, a lot of stuff that you should be knowing associated to software development process and software architecture 10 years from now.

Road to become good J2EE architect in 10 years at normal 8-hrs/per day with work-life balance:

First 3 years

Junior J2EE developer, work for a small start-up company#1 big into Java otherwise jump out if they are making you do all types of work besides java coding or do consulting as java programmer instead. Where you will be required to code in java extensively nothing else using latest Java API.

Next 3 years

Intermediate J2EE developer, move to intermediate J2EE developer permanent position in a different medium-size (< 1000 employees) company#2. While still coding but with more ease by now, create low-level designs/ understand business knowledge of company, SDP process, start building soft-skills, presentation skills, working as a part of team. Do not try to lead just let others recognize your J2EE expertize and come to you for J2EE suggestions as a goal. Do not take up leadership roles yet even if job offers you, focus on J2EE design plus coding.

Next 3 years - Senior J2EE developer

Move to senior developer permanent position into a different company#3 with larger employee-base demanding a job expection as J2EE architect role or promotion to next level in the interview. Pick up some project management experience as you are in bigger company with bigger team/learn how to work closely with managers-MDs/work-estimation experience/company hardware & s/w and beaware all technologies besides J2EE that company already uses. Focus on architecture/design and code protoypes etc.

10th year

Seek promotion as J2EE architect(every company designation name differs - if you are in role that is more like a consultant within the company and they moved you around between different projects most likely you are an architect) in the same company.