A desire to achieve this Architect certification started sometime around 2007 when I started to pursue Sun Certified Java Programmer 5.0 (SCJP). Those days on the Sun site they had this certification path that showed three layers, the bottom one being the SCJP and middle tier with SCJD, SCWCD, SCBCD and top tier being SCEA. I remember saying to myself what would it take to get there, little did I know it took 6 jobs and 10+ years. But finally, I made it.
These days SCEA is known as Oracle Certified Master Java Enterprise Architect with Java EE version tagged to the certification name. Oracle University site nicely lays-out the steps in the certification path here
For brevity here are the steps in achieving this certification
- Pass a multiple-choice exam (1Z0-807)
- Complete an assignment (1Z0-865)
- Complete essay on the assignment (1Z0-866)
Step 2 and 3 should be completed within 6 months of starting the assignment i.e. starting of step 2. There is also a requirement to attended one of the courses offered from Oracle University it’s a mandatory step else you won’t get the final certified badge.
Part 1 exam (1Z0-807)
I spent close to 2-3 months to prepare for this exam. I read through OCM Java EE 6 Enterprise Architect Exam Guide start to end. As I travelled on the train to work it was easier to get through the book. Also bought this exam simulator from epractizelabs. All along the exam went well and managed to pass just on the mark at 73%.
Part 2 & 3 exam (1Z0-865, 1Z0-866)
Assignment part of the exam is challenging. From my own experience I have been involved in all stages of the Software Development Lifecycle least 8 times (worked on hybris eCommerce with short projects spanning from 4 to 24 months) but still took a good 2+ months to finish it. Anyone who says it can be done in a few hours is plain lying or they are counting only the actual time spent on documentation and diagrams.
I bought the assignment just after finishing the part 1 exam. I spent the first few weeks reading through assignment to understand the requirements without thinking much about design. I did these one or two times a day for 2+ weeks to engrave the requirements in my mind. Next task I tackled was to auto-generate the JAR file for submission. I come from a hands-on development background, I didn’t want to manual create an HTML page using WYSIWYG editors. I researched and landed upon two formats that I could use, Markdown or Asciidoc and chose the latter for the project. I built a Gradle project that would read the Asciidoc file and convert it into an HTML page and finally packaging all up into a JAR file.
After tackling the JAR file generation, I spent time on ERD diagrams outlining the data model requirements. Spent too much time on this even generating sample data for the generated models. All of ERDs and sample data didn’t go in vain. After starting the assignment and about a month and a half into it, my schedule made it harder to spend any more time on the assignment. Ultimately coming back to restart the whole process 2 months before the assignment deadline. As I had the ERD diagram complete; building a data model and services on top wasn’t much of a task expect drawing diagrams. My assignment, all in all, had around 30 diagrams. I focused on big pieces in the solution and also went into the details. In hindsight, I think I could have saved a bit more time. Like for example, what would you use for Authentication and Authorisation? and its integration into your project. Details like how user and groups are stored their hierarchy and so on would be nice to have but you would be wasting time here on the details here.
Essay exam also needs to be done before the assignment deadline. Don’t leave too much gap between assignment submission and taking the essay exam. I submitted the assignment on Tuesday and took the essay exam on Saturday. Also, make sure to Google part 3 sample questions and check how you would answer them based on your assignment. I compiled a list of 18 questions and answered it with respect to my project before going in for the exam. All in all, the assignment and essay went well, and I got 152 for the both.
Tips from my experience
- Think about all the systems you would integrate with and write down integration methods used, protocols and payload format.
- Think about how you would tie the two system together i.e. identifier.
- If you have a dependency on another system elaborate what that dependency is and what you are expecting that system to do for you.
- Don’t try to solve all the edge cases you will never finish the assignment.
- Resist the temptation to tweak the design either to change the tech stack or refine to details mid-way through the project.
- Finally, remember you are being tested for if your solution is a viable option to solve the problem not necessarily have to be the best.
Tools used for design and documentation
- Visual Paradigm (UML - community version)
- OmniGraffle (for anything that wasn’t possible with plain UML)
- Gradle
- Asciidoc plugin for Gradle
- Visual Studio Code
- Visual Studio Code with Asciidoc plugin