Archive for October, 2014
Preparing for Oracle Certified Master – Java EE Architect ( formerly SCEA) Part-2 and 3
My last blog post was about my experience with the OCMJEA Part-1 multiple choice exam. That was based on JEE5 though I don’t think there is much difference in the approach that one has to follow for the JEE6 version.
This post will talk about my experience and approach towards the Part2/Part3 of the OCMJEA certification. These two parts are common for the JEE5 and the JEE6 versions.
Part 2 is the assignment. You have to pay and you are given a link to download the assignment. Once you download it, the timer starts ticking. You need to remember that BOTH the assignment (Part-2) and the essay exam (Part-3) should be completed within six months time of you downloading the assignment. Another thing to remember is that you can’t register for the Part-3 essay exam unless you have uploaded the assignment solution (part-2) — so time your moves well.
OK. So, this is going to be a long read. If I may sound preachy, well, bear with me but do make it a point to email me your comments.
Part 2:
My first advice about Part 2 is also the most underrated one – Once you have downloaded the assignment, go through it. Oracle’s guidelines prohibit you to take a printout of the downloaded PDF (I know, yes, they have gone too far with that) but it can be a good thing. Write it down on paper – at least the most important aspects. Go through it again and again- trust me, it is not what it looks like. Once you start with the assignment you would read it multiple times and each time you may have a different interpretation of the assignment. Those are the “grey” areas that you have to deal with. Identify the non-functional requirements (NFRs) here. Some NFRs are written clearly (For example a sentence like “customer security should be in focus” obviously asks you to focus on Security NFR) but be on the lookout for NFRs that aren’t obvious.
My second advice about Part 2 is also as much underrated as the first one – don’t take breaks. I know that clearing part-1 feels like an accomplishment (and trust me, it is) and there is nothing wrong to have a breather between the two. But chances are that you are reading this AFTER you have downloaded the assignment and the clock is already ticking. The first few weeks you can still lay low and afford to stay away but don’t prolong it. You may have spent a month wandering around after you have downloaded the PDF and it is OK – but once you decide to work on the assignment, do not take any breaks more than 2 days at a stretch. I found it *really* hard to come back to my assignment after taking those mini-breaks. How do you deal with it? Well, the days when you can’t sit on your desk to work, keep thinking about some aspects of it. Think over the problem statement, the grey areas and in all directions. The idea is similar to what the great Rahul Dravid describes as being “in the zone” (remember the shadow batting?). You end up carrying that mental aspect with you everywhere – so even when you are having a quiet evening with your friends you are still “working” in the background. It is important that you come into this frame of mind as soon as you can.
The assignment does not ask you to code but if thinking on the lines of code helps you, don’t hesitate to write a few classes. One thing that helped me was that I created dummy classes to ease myself into the assignment. As new architects, we come from a coding background and many of us find solace in code. It is a comfort zone of sorts. But remember not to overdo this.
When you start working on your assignment by sitting on your desk with a pen and a paper – don’t be surprised if you spend hours on it without anything scribbled on your notepad. During my initial days on the assignment I used to sit for hours without anything written down while pondering over stuff. That is work. When you do this a few times you will realize that the thinking is the real work – creating a class diagram is just putting your finalized thoughts on the paper and that does not take much time. Thinking brings clarity and this sounds cliched but the more you spend your time thinking, the better your solution will turn out to be.
The first few days as you ease into the assignment – spend some time creating your work environment on your PC. If you have no prior experience on UML, you may need to spend some time working on that. I read a lot of IBM tutorials on UML and of course, Martin Fowler’s classic UML Distilled. The choice of UML tool matters as it will be something you will spend a lot of time on. I did not have much UML experience/knowledge. I used StarUML (not the new Beta!) for my assignment. If you have not used the chosen UML tool before, you will have a small learning curve before you get comfortable with that as well. You need to take all this into account.
I think that the order you go about for creating the diagrams is important. Start with the Class diagram. This is because identifying the Classes and the main methods should be the one of the first things you should do when you start with the assignment. This is also an area which requires constantly coming back to – you might think of X as a class and then one day you’d say, “wait why can’t that be an interface?”. So, this back and forth is a very common thing to happen even as you work on other diagrams towards the end of your assignment. That means your Class diagram is constantly changing and that is why this should be the first to be attempted.
One point here. Remember the “grey areas” that I talk about above? There will be points where you would be unable to move forward until you have a concrete answer. What do you do then?
Consider a real life scenario. The use case is where the grey area is. You have a project to deliver. Things are vague. You want exact specifications. What do you do? You talk to the customer. Except that in the assignment there is no real customer. So you have to assume and move on. Now remember – maintain all your assumptions and notes. Write everything that comes to your mind. Document every doubt and every thought. As you move ahead and achieve more clarity, some of your assumptions will cease to exist. Don’t forget to strike them out from your notes then.
As your class diagram nears maturity, a rough draft of your component diagram should be ready. Actually if you do things right, you should not be spending a lot of time on the first draft of the component diagram. The module and tier segregation should be fairly clear once your class diagram is in good shape. You can always revisit it to “beautify” the Component diagram but the basic structure should be ready and stable.
A word on design patterns – Do not use a design pattern because you think it is cool. Do not use a design pattern because you think you understand it better than the others and because you have used it in your job. On the other hand, some design patterns are no longer in use because of the advent of technology frameworks (Business Delegate, DAO, Service Locator). If you think you can justify their usage, and there is a case for them still, please do not hesitate to use them. Remember that there can be more than one solutions to a problem. Also remember that it is you, who will be required to defend the use of that design pattern so be ready with an explaination. Many people told me not to use Business Delegate but I did. On the other hand, I know people who have used a flow like “JSF->ManagedBean->EJB” and still passed with good marks.
Sequence Diagrams will be something that you have to handle with care. Now here’s the tricky part – Sequence diagrams take the longest time. They go on and on. They also have the least marks (with no minimum passing score – in theory you can get a Zero here and still get your certification!) Here’s another tricky one – There is a good chance that while doing Sequence diagrams you may encounter some things that you may not have thought of earlier and want to go back to the drawing board. Why? Because Sequence diagrams makes us think at the lowest level details, just one level above coding, and it is generally in the details wherein lies the devil.
It is inevitable that you will spend a lot of time in Sequence diagrams so prepare for it accordingly. Use the notations introduced in the UML2.0 to your advantage – for example, the “Ref” notation which allows one sequence diagram to “refer” to another. Identify a small series of sequence that you think is common to every use case – for example, a rendering of a “workqueue” page for a user. Or a service locator looking up a service. Or a series of “if-then-else” sequences that is common in more than one use cases. Create a Sequence diagram and refer it in your use cases with the “Ref” notation. This helps in many ways – (1) it saves your time, (2) it makes your sequence diagram more readable and (3) it tells the examiner that you have used the tools at your disposal in an optimum way.
Remember to document only the main aspects of your use cases in the Sequence Diagrams. Try not to get too detailed. And this is important — it is suicide if you refer to a Class in your Sequence diagram which is NOT in your Class diagram. Cross check that all your mentioned Classes are present in your Class diagram. Having said that, I had a couple of Classes that were there in the Sequence diagram but not present in the Class diagram – the EntityManager (JPA) and CacheManager (From EhCache framework which I had used in my solution). You don’t need to have System classes in your Class diagram but you can show them in the Sequence diagrams for the sake of continuity and clarity. This should be mentioned as a side note in the diagram and/or in the assignment notes section. Lastly – you should ideally have the same number of Sequence diagram sections as the number of use cases in your assignment. So, if you have four use cases, you should have at least four sections for Sequence diagrams (broken down further for clarity).
Deployment diagram takes less time. It took me 3 days to do my deployment diagram. Your deployment diagram should most clearly reflect the NFRs you are focusing on. For example, if you have to make your system on high-availability, your system should have some disaster recovery mechanism. Also, do not use an infrastructure only because you think it is the “in” thing (For example – cloud). Not every deployment has a case for Cloud infrastructure. As you near completion, you can also spend some time on researching on the servers available in the market for the kind of hardware you are going to suggest but from what I hear it is not a mandatory requirement. If you do it though, it shows up positively on your effort (I did it).
You might be wondering on how much “text” to include as notes/comments/side-notes on your diagrams. I do not think there is anything wrong in putting a side-note that helps the examiner understand your diagrams better. Having said that, I also think that it is your diagram that should do most of the talking. Try to strike a balance here – write a few notes that supplement the diagram but overdoing them could make your diagrams look cluttered (and may also signal a lack of confidence).
Now the final documentation part – remember the notes that I suggested you to document? They finally come in real use here. Writing everything down as notes DURING the assignment is very critical because it tells about your thoughts, as they were, at THAT time. When you go over them again and again, with your thoughts getting refined, you will see changes in them and you might strike out a few things as they will no longer be valid. What remains of them at the end of your work is what should now go in that zip file to Oracle as notes and assumptions.
Part 3:
Sorry to break this for you but the most important tip for part 3 isn’t exciting at all. In fact it sounds like an age old wisdom: Don’t take a long break between your assignment submission and your essay exam. If you follow this, you do NOT need any preparation for your part 3. You can have a good night’s rest after your assignment submission and simply go to the exam center and be done with it.
The second thing I would like to insist on for Part-3 is that be prepared to type. They ask you questions on the NFRs, design patterns and technology choices and you have to justify your decisions taken. What kind of design patterns did you use? Why did you use them? What have you done to make sure your system is secure? How have you ensured availability?
There could be somethings which you have thought of but could not be shown in the diagrams/assignment. For example, using javascript for any client side validation/security mechanism may not be a part of any of your diagrams. You can mention all this in your essay exam. Be prepared to write. I remember typing till the last minute of my essay exam.
Alright then – This has been such a long post. If you have read it till here, I guess you must be really serious about it. In which case, I should wish you Good luck! Please feel free to reach out on email in case you have any doubts.
Preparing for Oracle Certified Master – Java EE Architect ( formerly SCEA) Part-1
I haven’t blogged lately but there has been a lot that has been keeping me busy. For the most part of this year (and a few months during last year) I had been preparing for the Oracle Certified Master Java EE Architect certification. I gave the final part of it last month and Oracle informed me earlier this month that I have passed with a 90% score in the part2/3.
Thus, I thought, why not write about it and post it on my blog? I have generally been quiet about my credentials as a “techie” and focus on other things here but what-the-heck and then there’s no harm if my experience helps a few others out there.
I have written two long posts – the first one is about part 1 which is OCMJEA’s multiple choice exam. The second post (which I will post soon after this) focuses on part 2/3. I will be disabling comments here but should you have any doubts, please feel free to email me (from the “about me” page) or reach out to me on Twitter (predictably, @adityeah)
Update: The second part of my series of OCMJEA blog post that talks about part2/3 can be accessed here.
I started working on the part-1 sometime around October last year. I had targeted giving the exam sometime in the month of February 2014. There is no standard time-frame that one can have to prepare for part-1. It varies in each case and the time you can devote. I have come across cases where people have studied for 20 days and given the exam. In my case, I gave a couple of hours per day average (it shot up to 4-5 hours during the last month), in 3 months to prepare for the exam. You can very well do it in two months time if you can give more hours per day.
I gave the JEE5 version and I believe one has to go for OCMJEA6 now. During my time, last year, there was no guide available for OCMJEA6 as the exam was relatively new and I felt more safe giving the older version then. I think a lot of the documentation and guides for OCMJEA5 still hold true for the newer exam too. Of course, now you have this book to help you.
The first thing I did was to read Mark Cade and Humphrey sheil’s book. The book is compact – this is no exhaustive material for an exam such as this but it gives a primer on what can be expected in the exam (and parts 2 and 3) and acts as a stepping stone for the exhaustive reading ahead. I feel this work is important because Sheil and Cade were in the creator’s panel for this certification. Since this book is not a long one, I think you should not spend more than 12 days (or even less!) on it. Also remember that this is a book you might keep coming back to.
Initially I spent a lot of time reading Mikalai Zaikin’s and Cheng’s notes. They can be found here and here. Zaikin’s notes are only available for the first two sections. I found these notes worth looking at for topics such as NFRs, Architecture principles and design concepts. For technology specific topics, I would not advise them.
As you move towards sections that deal with technologies, don’t be afraid to read specific topics from the right books. For example, the first few chapters of “EJB 3 in Action” are an excellent source for understanding EJB3 from the exam’s perspective. I also thoroughly read the JEE tutorial by Oracle to understand the lifecycle of JSF. The JEE tutorial (http://docs.oracle.com/javaee/6/tutorial/doc/gfirp.html) should be read for all topics. You can skip the code samples but otherwise it should always be in focus.
It is very important to try to come into the “this vs that” mode of studying. The exam poises a lot of questions that ask you to choose one technology over another given a specific scenario. For example, why would you choose JSF over any other MVC framework? What will make you look at Web Services for a solution? Such questions form the crux of the technology based questions.
Design Patterns form a big part of the exam – and that is because both Gang of Four design patterns and the J2EE design patterns are included in exam’s scope. For some people out there, it is a good thing. Design patterns can be a good scoring area if done right. Not for me. The whole thing could be a dealbreaker if it is not your strength. So keep in mind to spend enough time on design patterns. And it takes a LOT of time – especially if you have not studied them before. In case this is not your strength, keep in mind to devote enough time on this topic and then go over it again and again. I did not follow a single source for studying this. The J2EE pattern book, GoF and Martin Fowler’s blog were my major reference material.
And now lastly the Dumps question. Do they work? Where does one find them?
Before I talk about it let me cover an important aspect of this exam – something which differentiates this exam with say, Oracle Certified Professional Java Programmer (SCJP). It is the lack of trick questions (Do they call them “gotchas”?) in the OCMJEA. This is a major difference. You do not have to read between the lines again and again – maybe thinking if you are missing something. There is no code. There is no semi-colon missing. Oracle is not messing with you. What this means is that the conventional methods of exam preparation work well in this exam. You do not have to be sceptical.
There are a few questions available online – you’ll have to search for it. But I would recommend buying the Whizlabs exam simulator. Start going through the tests once you are done with a single iteration of your preparation (and perhaps 30 days before you sit for the exam). But having said that I must insist that you must NOT depend on it. Do not think that going over and over with Whizlabs would help you pass the exam. If you do not buy it, it is OK – I know people who have passed the exam without any simulator and scored very well. And that is exactly why I think the conventional studying methods work well with this exam.
Also – and I can’t stress this enough – go through Coderanch (If you are a Java professional and do not know of Coderanch..well..umm…) The forum there is the best support group you will ever see. Ask questions. Look up old ones. If you have a doubt, search for it. More likely than not, someone must have already asked that question and another noble soul must have answered it.
Last words – Buy a new notebook. Make notes. Write everything. Keep coming back to it. I wrote the distinguishing features of each design pattern on my notebook and I used to look them up when I had nothing to do. Study for knowledge, not passing or attaining a number. Not for beating a system. Didn’t I tell you this is all old fashioned exam studying?
So well – that’s that then. I will be posting about the Part2/3 experiences soon enough. I would be glad to take up any doubts that you may have. Feel free to reach out to me on email or twitter (from the “About me” page on my blog). Good luck with your preparation!