In industry specific forums, I often see questions like “what certification do I need to do to become an architect?”. The simple answer is that you don’t need a certification to become an architect. It may help, but it takes a lot more to become an architect.
You can’t just only study to become an architect. The best way to become an architect is to start thinking and acting like one. You need to start asking the right questions. You must not only have good communication & interpersonal skills, but also look at things from both business & technical perspective,
Interviewers ask open-ended questions like:
1. Can you describe the architecture of the application you were recently involved in? or Can you describe the baseline architecture of your recent application?
Draw the high level architecture diagram, and address some of the following aspects hinted below. You will get drill down questions as to why a particular pattern was favoured.[Hint: Tiers, Layers, Source/Target Systems, Integration Styles, Protocols used HTTPS/TCP/SOAP/Proprietary, Data exchange formats e.g. JSON/XML/Proprietary, Synchronous Vs. Asynchronous, request-response Vs. fire-and-forget, non-blocking I/O, reactive programming, SQL Vs NoSQL, message oriented middleware vs ESB, SSO with SAML tokens & OAuth, Cloud infrastructure security like VPCs, VPNs, ACLs, security groups, identity management, encryption, etc.]
2) What are your most proud of achievements? What were your involvements?[Hint: Designed a mission critical 24 X 7 system that handles 250+ concurrent requests per second with full-stack technologies using Angular JS & Spring Micro Services, Spearheaded the on-premise batch job based data warehouse to a cloud based near real time data warehouse with Apache Kafka & Snowflake on AWS cloud, etc ]
3) Can you describe the non-functional requirements that you addressed in your last project?[Hint: Data volume, SLAs, security, scalability, maintainability, auditing/logging, archival strategies, choice of integration strategies, choice of tools & frameworks, devising test strategies like performance testing, cross browser compatibility testing, penetration testing, etc, disaster recovery plan, coding standards, and so on. ]
4) What are some of the key considerations when designing a system?
5) How do you evaluate the code quality of others?
6) Technical questions on design approaches, alternatives, pros/cons, and trade-offs. Often no right or wrong answers, but your technical know-how and reasoning skills will be under scrutiny. 75+ Java Architect FAQs.
7) What architectural documentations did you produce?[Hint: Baseline architectural diagrams & patterns, naming standards & process guides, non-functional requirements guide, capacity planning & infrastructure requirements document, unit tests, integrations tests, regression testing, performance test results, etc. ]
Expect drill down questions based on the answers you provide. These questions can reveal a lot about your passion, enthusiasm, attitude, communication skills, problem solving skills and technical strengths. As an architect you need to bridge cross functional teams (E.g. developers, testers, business analysts, stake holders, support & operational staffs, etc), and you need to be able to communicate at different levels both technically & non-technically.
Java Architect Road-map
Here is my take on the road-map to become a Java/JEE architect.
- Learn to draw high-level conceptual and UML diagrams: Know the various architectural styles, JEE layered multi tier architecture, and various integration styles. You must be confident to draw these diagrams on a white board with regards to the actual application you had worked on or how you would go about designing a new application in question.
- Learn to ask the right questions — what if …? how about …?, design alternatives, pros vs cons, tactical versus strategical solution, tactical vs stay-alive solution as a system is going to get decommissioned, weighting the risks against the benefits, build vs buy, etc. Ask questions pertaining to the 16 key areas. Think in terms of scalability, transactional boundaries, best practices, exception handling, fault-tolerance, high availability vs Scalability, service time outs & retries, loose coupling, disaster recovery, etc.
- Get a good handle on the 16+ technical key areas and proactively apply these key areas.
- Look at things from both business and technical perspective: architects form a bridge between many cross functional teams like business analysts, stake holders, project managers, developers, testers, infrastructure team, operational and support staff. Know your target audience and learn to convey technology to the business non-technically and the business requirements to the techies technically.
- Learn to look at the big pictures and also pay attention to details where required.
- Get a well rounded hands-on experience. For example, client side, server side, application integration, full SDLC, etc. Nothing beats experience, and you can proactively fast-track your career by learning from others’ experience via good books, blogs, industry specific web sites, and helping others on the forums.
- You don’t have to be the “jack of all trades” but as a technical leader and a bridge between various cross functional teams, you need to have good soft skills to make things happen by engaging the right teams and expertise. The key soft skills to have are communication, interpersonal, leadership, analytical, negotiation, and problem solving.
So, the combination of all the above can transform you into an architect. Stay visible at your current work and behave like an architect to get a foot in the door. Ask the right questions and contribute in team meetings and crisis sessions to prove your capabilities. It is much easier to step up in your current role by proving your capabilities than applying for an entry level position without any prior experience.
Ready to step up?
Start asking the right questions and acting like one. Learn proactively via online resources and observe the good architects at work and apply what you learn in your current job.