501 Part II: What Does It Entail? 5 Key Points
HTTP code 501 is 'Not Implemented', however 501 the Certified Force.com Advanced Developer is something that's implemented, and something I'm pleased to say I achieved a little over a month ago. I apologise for the delay in discussing it; the last two posts related to specific events and so took priority, but here we are, and I hope this helps those out there looking to gain this somewhat elusive Force.com certification.
The biggest challenge after completing the Advanced Developer multiple-choice exam, is actually getting registered to take the assignment. The course is in high demand and, due to the manual nature of the assessment, limited places are available each round, with the spacing between rounds appearing to be in the realm of three to four months. The only advice I can give here is to watch out for the announced opening dates (these are made public via various methods, including Twitter and LinkedIn) and then make sure you're awake for it — the places fill very quickly.
The Programming Assignment
I'll be completely honest and say that when I read the information regarding the assignment, I struggled to believe that it would really take the twenty hours they suggest you allocate to it; I figured that was likely to be a generous estimate. Reading through the instructions when they arrived, my initial reaction was that it seemed straight forward, and would take eight, maybe ten, hours tops. Reading through the requirements a second time (always a good habit to get into before touching any buttons on your keyboard) made a few of the more subtle details more apparent, and I realised very quickly that there were a lot of complexities buried in the seemingly simple outline.
In this particular instance, there were two main parts to the requirements; the first being a trigger to perform some data processing and the second being a custom visualforce page to facilitate the end users in performing their day to day tasks. The former aspect was straight forward (though I erred on the side of over engineering), but it was clearly designed to ensure that you knew about the various techniques required in designing and developing an efficient and effective trigger. The visualforce page and associated controller represented the lion's share of the work, and was definitely out of the ordinary for me with regards to the work I am typically involved with.
To further qualify that statement, the large majority of the work I do involves 100% custom controllers; extensions are rare, and the use of standard controllers with just a Visualforce page are even more so, but that may purely be down to the nature of work we tackle. Either way, the biggest challenge for me was to ensure that I was making the most of the standard functionality, and definitely required me to learn more about some of those aspects. Standard functionality aside, the other major focus was clearly on architecture and solution design, as the requirements necessitated some degree of left field thinking (unless of course I missed something obvious, which I am wont to do at times).
The Written Exam
Not so much an essay, this final exam was a series of questions which are apparently designed to test your knowledge of your own solution, ensuring of course that you did in fact write the code yourself. To those tempted to utilise the work of others in the programming assignment: please don't. People who claim to be developers but can't develop do not help anybody, including themselves. There was nothing to note in particular here, but make sure you remember how you went about meeting the various requirements; that's it.
The Results and Feedback
The wait for results seemed to take forever, though in reality was no more than a few, perfectly understandable, weeks. What I can say is that the feedback I received was absolutely spot on and reflected my own views on the solution I had created, though that is not to say that it wasn't valuable. I was informed of three 'Areas for improvement' and they revolved primarily around test methods — something that I did do in a hurry, but also something that I don't concentrate on too heavily on a day to day basis. I understand the importance of testing, and it is indeed vital, though I personally prefer manual testing over automated test scripts. If my team and I wrote test methods for clients to the same extend as desired for the assignment, we'd spend at least 50% of our time maintaining them to meet the whims of enthusiastic administrators.
Summing It Up
- Keep your eyes open for information regarding the registration periods — you don't want to miss one.
- Salesforce say it will take twenty hours, and it's more than likely that it will take you twenty hours.
- Know how to utilise standard controllers, standard set controllers, extensions and custom controllers.
- Make sure you understand the technical restrictions when writing a trigger, and knowledge of aggregate SOQL wouldn't hurt
- Write complete, all-encompassing test methods. The aim of the game is not 75% coverage, it's about testing security requirements, governor limits impositions and asserting that requirements are met.
Writing this post has proved somewhat tricky; obviously I don't want to disclose exactly what was required as I'm pretty sure that'd be against the spirit of things, and also it wouldn't really benefit you as I'm sure each round is different. What I have tried to do is highlight what is worth concentrating on, and stress that it isn't something that can be cranked out in a couple of hours with minimal testing. Last of all, good luck!