Category Archives: Personal

I Passed the Salesforce.com Certified Force.com Advanced Developer Programming Assignment and Essay Exam!!

It’s been awhile since I made a Salesforce post.  I’m so happy to be able to make this one.  I feel so grateful, blessed, and humbled right now.  About four weeks ago, I was given an amazing new job opportunity with a company called ACI Worldwide as a Salesforce Architect.  They brought me in knowing I had a lot to learn to really live up to that title, but that I was passionate about the Salesforce Platform as a Service, and want to learn as much as I can about anything and everything that can be done with it.  I’m very excited about this chance to learn, but it’s pretty intense right now as I’m surrounded by a new business context and a lot of new ideas.  Tonight, right when I could use a bit of a pick-me-up as I’m working hard to learn fast and add value quickly in the new job, I found out that I PASSED the Salesforce.com Certified Force.com Advanced Developer Programming Assignment and Essay Exam on my first attempt!

I couldn’t have done this without all the encouragement I received from my former colleagues at The MENTOR Network, in particular Kate Miller, Shaun Wood, Bridget Samuel, Paul Perisic and Jeffrey Cohen, among many others.  They may never see this post, but I want to record my gratitude for the encouragement and assistance they provided as I was learning Salesforce and diving in to the certification process.  And, frankly, I want to thank Dan Appleman and Jason Ouellette.  Their books on advanced apex and Force.com platform development, respectively, are the resources that I think most helped me make the transition from intermediate-PHP-MySQL-Web 2.0-self-taught developer to someone able to pass this programming assignment.  Thank you to the review panel who graded my programming assignment for their comments, including the constructive criticism included therein.  Mostly, though, I want to thank my wife, who pretty much got used to me getting done with work, grabbing a sandwich, and going right back to my home office for most of the month of October 2014.  She picked up a lot of slack as I was focusing on the programming assignment, and I’m very grateful.

Now, back to that constructive criticism from the review panel, since anyone prepping for the Advanced Developer certification process who actually found their way to this blog post from a search engine result deserves at least an attempt from me at providing helpful information.  I don’t even want to brush the edges of sharing any proprietary information about this certification programming assignment because I worked WAY too hard to risk losing it for an ethics violation or anything like that.  So, I’m going to have to speak in pretty generic terms.  But, what I feel comfortable saying is that the comments really weren’t that unexpected, and I think they were very fair (even the negative ones, which aren’t ever really easy to get, but I’m focusing on the chance to improve that they represent!).  They focused on Salesforce best practices, that are documented all over developerforce.com, the success community, etc.  There was one comment that I should have expected.  When I was approaching one piece of the assignment, I thought to myself, “I wonder if I can do this with [a piece of standard Salesforce functionality] rather than with this cool, but perhaps over-engineered, chunk of code I’ve written.”  If you find yourself thinking something like that, stop, and go read the pertinent documentation!  That thought leads me to the two pieces of advice I would give to anyone preparing for this certification:  1)  Read Development with the Force.com Platform by Jason Ouellette and Advanced Apex Programming by Dan Appleman, and 2) remember that you’re being tested on THE SALESFORCE PLATFORM.  As you’re designing your solution, think about what Salesforce has done to make certain things easy for you as a developer, and make sure you’re not writing code to solve problems they’ve already solved.  I was “guilty as charged” on that count for one thing, and I’m going to go back and think my way through the “better way” that was described in my comments.  Thank you again for the feedback, review panel, whoever you are!!

Actually, one more thing:  The certification website and other sources on the web have language like, “Plan at least 20 hours for the programming assignment, but be ready to possibly spend more to do a good job…”  I guess I have a third piece of advice for folks going after this one:  Unless you REALLY know what you’re doing, I’d at least double that 20 hour estimate.  I read the assignment the first night, read it again the next day, did some thinking / planning / design, then started coding.  I think, in the end, I put in more like 50 hours.  I grant you, some of that was in obsessing, reworking a bad design choice I caught last minute, etc.  I also seriously underestimated the amount of time it would take to write test code for EVERY permutation I could think of for use of the simple interface, and truthfully, I left some positive and negative use cases untested simply because I ran out of time.  I think I got to 98% or 99% code coverage, and I’m proud of that, but the funny thing about getting code coverage that high in this context is that the handful of lines I couldn’t cover DROVE ME CRAZY!!!  There was one line of Apex code I tried to cover about a dozen different ways, and finally had to give up.  I was SURE it was possible to cover, but for some reason my usual bag of tricks wasn’t cutting it.  Ah, well; I’m proud that I was more focused on testing every use case I could think of than just getting the code coverage.

OK, call it FOUR pieces of advice, since I think this is just restating a Force.com development best practice and doesn’t give anything away about the assignment:  Don’t be lazy; actually DO the “worst case” analysis we all know we should always do to determine if a solution will scale BEFORE you start coding.  I caught a design flaw in my assignment two nights before it was due because I went back to the beginning of the prompt and decided to think my way through the whole thing one more time.  Had I not done that and caught the issue to which I’m referring here, I’m almost certain I would have failed.

Good luck to those of you pursuing this certification!  It’s hard work, but it feels great when you pass, so go for it!!

 

dev copy dev_adv