This week's book giveaway is in the OCPJP forum. We're giving away four copies of OCA/OCP Java SE 7 Programmer I & II Study Guide and have Kathy Sierra & Bert Bates on-line! See this thread for details.
I passed Part 1 back in May after studying on and off for a few months. I read the Allen book and reviewed Head First EJB a little (I'm also SCBCD) for the parts I couldn't remember as well.
I also intensely studied the GoF patterns, to the point that I could and still can name all 23 patterns off the top of my head, explain each one and give any J2EE examples if relevant. That was really way more than I needed for the exam but it was a topic I've always wanted to know thoroughly so I did it for myself.
I didn't study some topics as thoroughly as I normally would have, but I had been holding onto my voucher for a few months already and wanted to get on with it. I passed with a humble 79%.
Then I got the Cade book because I heard it was helpful for Part 2. Honestly, I didn't find it all that helpful for Part 2, but I think I would have done better on Part 1 had I read Cade first.
I really struggled with the assignment. Not because it was all that difficult, it's just rather intimidating thinking that the grader is likely having certain expectations, prejudices, and biases of what is good and bad in design and it's maddening to try to figure out what exactly the grader thinks is worth 100. It's very difficult to make decisions with only a couple small and incomplete documents to go by and with no communication with the authors. My hesitation and fear only verified to me all the more why it's so difficult in a waterfall methodology to get the folks in the initial phases to submit their documentation concerning what's needed - all at the point in the project where they know the least about the problem and know that they either won't be allowed to change it or the change process is very heavyweight and painful. Ugh.
I spent lots and lots of time going through the discussions here in the forum. Make sure you do SEARCHES to find valuable old threads! I learned that there's no one right way and that I simply needed to do what I thought was best and then have the courage to risk failure.
I bounced around between a few UML editor programs. Each had some limitations and I never did find one that would allow me to make the components for every diagram look exactly as I'd like. I finally settled with NetBeans because it's prettier and has some auto-rearrange options that sped up my changes. Overall, despite that NetBeans would occassionally shut down for no reason, I enjoyed using it the most and it did the best to keep me motivated and enjoying the work. I also didn't have to use another program to shrink image size because NetBeans exported my images to a very small file size.
When I submitted my assignment I found I did not have permission to upload but I was already scheduled to sit for Part 3 the next morning. Check out the SceaFaq here to avoid having to go through what I went through.
Scheduling a flight for a trip I took a few weeks ago helped my thinking some. I recommend visiting a few airline websites and play around with their booking systems. Learning your industry/company's domain is always very important and, since you don't have access to FBN employees, learning the industry standards by other means can go a long ways. If terminology or industry jargon doesn't make sense to you, search the forum for old threads where other people had noticed the same thing to get a few perspectives on how it should be.
I was also surprised to see that 2 of my 4 essay questions specifically asked why I did something in my design that I had purposefully omitted because I felt it wasn't relevant. That made me worry some but I explained in the essay why I left that technology consideration for the developers to consider. I think the essay questions made sense for the design years ago but not so much so today.
Do your best. For good progress, give yourself a time limit of an hour or two to complete a diagram or its documentation and sit down and do it, examine your work for a day and then return to it with new ideas and a shorter time limit for adding to it. Understand the problem domain completely. Don't add crap for the sake of "best practices" unless you actually need it. Keep diagrams as simple as they need to be but no simpler. Document your intentions. If you would give your work a high grade then that is what should matter to you.
I had a frozen black raspberry pie waiting for the day I submitted my assignment and it was a nice reward. The smell was sweet in the oven as I made the final spelling and grammar corrections. Now I need to think of a good reward for passing!