I qualified the exam with 74% today.
You may skip this para and the next one if you just want to get to the exam review and preparation notes. A little background about myself. I'm a self taught coder working as a junior dev for around 1.5 years now developing RESTful APIs and have worked on other two major projects in Java. I'm kinda in between jobs right now so I thought getting a cert would add another layer of legitimacy (other than my work exp) to my resume given that my BTech is actually in Electrical Engg
I'd been using Java for 1.5 years so how difficult would it be, I thought.
I was clearly wrong. Even before properly going through the syllabus, I booked the test, giving myself 1.5 months of prep time.
I started my preparation with Herbert Schildt's Java - The Complete Reference (11th Edition). I'd covered around all the topics of 1Z0-815 from the book. At that time, I thought I'd just check my preps with a mock test. Got the Enthuware test series. Hang me dead! I got 28% in the first test. I realized then, that while the book is excellent reference material, it certainly isn't meant to prepare for the cert exam. Then looked through Udemy. Found nothing good there either. It was at this time that I serendipitously discovered Coderanch and eventually Jeanne and Scott's book from Simon Roberts' class on the Safari platform. Got the book. Started reading through it and realized I don't know Java at all. Hell, the entire part from 1Z0-816 was absolutely unknown to me except for exceptions. By then it was January end and I had exactly 1 month left to the exam. I tried to reschedule the exam only to find out the voucher that I had used to schedule the exam had an expiry of 28th Feb so I couldn't extend it any further. There was no way back. 1 month that's it.
So given that everything was absolutely new to me and I just 1 month to crack this, I planned things out very carefully.
There are three parts to learning something new:
Yeah. You read a brand new knowledge material right now. You understand it. But can you remember all of it
tomorrow? Or a week later? Forget remembering because 1Z0-819 isn't a fact based exam. You have to apply
the knowledge to questions. That is where internalizing comes in. I'm attaching a graph in this post that shows how spaced repetition helps us remember things for a longer time (and why cramming fails for the exact same reason). You better understand things.
So anyway, I got to it. My plan was simple. I would study a new chapter (or two depending on how tough) everyday and I would make it a point to go through another chapter than I'd read the previous day and one other chapter from previous study. Some parts were very difficult to understand given this was my first proper foray into Java. Generics, Functional Interfaces, Arrow functions, Concurrency, NIO2. But I kept at it.
When I'd solve the review questions at the end of the chapter after my first read, I'd get around 40-50% but the very next read through would bump it up to 60-70%. No, you can't learn questions in one read through. I just got to internalize the matter better after a second read through.
I completed the whole syllabus in around 21 days. Last remaining week, I took up Jeanne and Scoot's new book of practice tests. It further showed gaps and told me where I was lacking. I read through those topics again. Their book was instrumental in helping me further understand topics because this exam tests you more on corner cases of Java than a normal happy path and while that knowledge comes with experience, since I didn't have that, the only thing I could do was solve more questions. The new Practice test book really puts forward amazing questions that'll make you go, "Oh, well, I certainly hadn't though of that. What happens if you actually do that?"
I solved through the entire book in 3 days. I didn't do the practice tests though. I thought well I've done the entire learning and question solving through Jeanne and Scott's perspective, atleast the mock tests should be different. I went back to Enthuware with 4 days left. First test was 54%. I was disappointed. But I recognized my mistakes and kept moving. The score kept rising till I hit a max of 70% after 7 tests. I didn't solve any more. With just 1 day left, I just went through all the topics I thought I'd have a hard time with. If you look at the Enthuware data that they show in Average Scores section, there's a 4-5% increase in actual exam from all test takers' combined enthuware average. I'd say that's pretty accurate.
I can't possibly overstate the immense
help that this community has been throughout my preparation. Any doubt I had. Any question, somebody would take their time out to answer it. Not just for technical but mental support as well. I'd like to thank everyone here. I'm going to stick around help others like they helped me when I needed it.
I reached the Pearson Vue centre an hour early because the anxiety was too much for me to bear. There was nobody else around so they let me take the test early.
The questions I got on the exam -
1. Questions from inheritance and calling overriden/hidden methods.
2. Streams. Several questions. You gotta know collectors really well.
3. 2 questions from Strings and stringbuilders. Performing several operations on them using their inbuilt methods.
4. Comparator/Comparable being used together with compare and compareTo confuse you.
5. Concurrency. Questions from cyclic barrier.
6. One question from generics.
7. A lot of questions from loops, identifying correct instantiations of data structures, finding lines that don't compile, finding outputs etc.
8. 1 question from NIO2 and also from serialization of objects.
9. A couple of questions from module and naming of jars.
I'd say the Enthuware questions are the closest thing to the actual questions that I could find. I'm sure I found a couple of questions that were almost identical to the ones I solved.
Now, getting to the is it worth it part!
Is it worth it?
Every. Dang. Bit.
Whenever I had to implement something, I had to google [read StackOverflow] around how to do things and while I could modify the code I found online to fit my needs, I could never write them from scratch. But now, it's like a whole new realm of possibilities has opened up. Whenever I have to do something, so many different ways come up to my mind. Should I use the regular DS? Or use streams (Oh streams are so magical!)? Or why not use a functional interface? I can go back to the old code I have written and compress dozens of lines of code into small snippets using streams (You ever gone back to old code and gasped at how terrible it is?). I finally understand how JDBC works. Oh and security - never paid any thought to it before now. I finally know how to write secure code! I have learnt so so much I can't possibly put it all down on paper (Scott and Jeanne have though - in their 1400 page book
). I think it's this journey that matters more than anything else. Yeah, I didn't get as high marks as everyone else here. People getting 93% and what not. Respect for all of them!
I started as an overconfident fresher a month back and stand today, humbled by this experience that I got to share with ya'll. Attaching another graph that shows the Dunning-Kruger Effect - if anything, it pretty much sums up my journey of this one month. This is just the beginning though. I'll keep honing this knowledge. Planning to next go through the Clean Code books by Uncle Bob.
Well, the first thing that makes me anxious once again is that how much of this information shall I be able to retain, say 6 months from now? How much of this will I actually need? For that reason, I'm going to keep Jeanne and Scott's book handy and sift through it once in a while to keep the topics fresh in my mind. I've got around 11 tests from Enthuware still with me unsolved. Probably solve them once in a while to make sure I'm not slipping.
P.S. Experienced devs: How much of Java do you always have at your fingertip-knowledge and how much of it do you use reference for?
All said and done, I don't know if it is within community guidelines to post such long posts on the forum. Apologies for the long read - I know it can get tedious. Thanks again everyone. See you around on the ranch!