What are the 16 technical key areas?
If you want to become a Java Application Architect, then you must have good handle on these 16 technical key areas. Not only the architects, but also seasoned Java developers must have a good understanding & hands-on experience in these key areas to fast-track their careers.
- Language Fundamentals (LF)
- Specification Fundamentals (SF)
- Platform Fundamentals (PF)
- Design Considerations (DC)
- Design Patterns (DP)
- Concurrency Management (CM)
- Performance Considerations (PC)
- Memory/Resource Considerations (MC)
- Transaction Management (TM)
- Security (SE)
- Scalability (SC)
- Best Practices (BP)
- Coding (CO)
- Exception Handling (EH)
- Software Development Processes (SDP)
- Quality of Service (QoS)
Why will they help you fast-track your career?
#1: When you have production issues relating to these technical key areas, the middle to senior management will be constantly monitoring progress through regular crisis meetings. Having a good handle on these key areas to solve issues will give you the much needed visibility, and it puts you on the good books with the management. They will earn you a reputation as a “go to person” to get things done.
#2: Technical job interviews are conducted by senior/lead developers and architects. The above key areas are their favorite topics, and you can get open ended questions, which have no right or wrong answers, but you can really show off your technical and communication skills with the quality of the answers you provide. Here are some popular open-ended questions to sell your experience & know how in the key areas.
- Can you describe the architecture of the last application you had worked on from a 100 feet?
- Can you describe some of the common mistakes and pitfalls of Java? What features do you like and dislike? What features do you like to be added in the future releases?
- If you are reviewing others’ code, what would you look for?
- What do you like the most about your current job?
- How do you ensure code quality within your team?
- What is a deadlock, and how will you go about detecting and fixing a deadlock?
- Can you describe a situation where you fixed a transaction management or a concurrency issue?
#3: When you are asked the very common ice breaker interview question “tell me about yourself?” you can highlight your strengths in the technical key areas, and also for other questions like “what are your strengths?”, “why should we hire you?”, etc you can bring out your strengths in these key areas with examples. 8 real life examples of SAR for Java developers
#4: In code review sessions to impress your superiors and peers. I improved my coding skills by reviewing others’ quality code, and also learned what not to do from others’ bad code. Having a good handle on the above technical key areas like best practices, language and specification fundamentals, coding, exception handling, quality of service, scalability, etc will help you write robust code.
#5: These key areas will help you contribute in your team meetings. All your contributions will be noticed for potential promotions and pay rises. Good engineers ask the right questions like
- If an exception gets thrown here, will my transaction get rolled-back properly?
- Will this regular expression gets back tracked, and adversely impact performance?
- Do I have proper service timeouts and retries implemented properly for web service calls?
- Should I have dead lock retry here?
- Should I go for optimistic or pessimistic locking?
This is also a part of the answer for the question — Why do you like software engineering? Good software engineers like to see all these 16 technical key areas fit together like a jig saw puzzle to build a robust application.
#6: Towards the end of the interviews, you will be asked — “Do you have any questions for us?”. If you feel that you have not sold your key strengths as well as you would have liked, take this question as an opportunity to ask your interviewers the questions like — Do you think that hands-on experience in writing low latency applications and ability to identify and fix performance and concurrency issues will be considered favorably?
#7: Knowledge, skills, and experience gained in these key areas are transferable from one programming language to another. So, these are transferable skills.
#8: Get good handle on the key areas to solve real business problems and to better market your skills at the job interviews and on the job. I am yet to work for an organization that did not have performance issues, concurrency issues, security vulnerabilities, and memory leaks. So learn how to create and analyze thread dumps , use visual VM to analyze memory leaks and performance issues , etc. You also need to know the big picture of the baseline architectures you had worked on.
How do you go about getting a good handle on these key areas?
Proactively pick a key area that you have less experience with and learn about it relating to your mainstream language. Write some sample code. Examine others’ code in your work to see how it was applied. Find a way in which you can apply it in your current project. Blog about it in your own style. Add it to your resume. In short, Learn –> Apply –> Let the world know