The Force.com Advanced Developer Certification is currently one of the most sought after certifications for recruiters and employers, one of the most marketable certifications in the industry if you are a developer, and an important measure of key developer skills on the Force.com platform. So what will it take to get there?
I am a holder of this credential. I've also been a judge, reviewed questions for the exam, and assisted in writing and reviewing assignments for the assignment portion. As someone who has touched every aspect of this certification, I wanted to share my first hand account.
You might have already read the Salesforce Developers article on certification. If so, you'll already be familiar with the basics of getting started creating your WebAssessor account. You will have hopefully visited the Salesforce Certification web site, and read the Advanced Developer Study Guide. In which case, you're ready to go, right?
Ok…maybe not. So what now?
Let's take a step back.
If you're like me, achieving the prerequisite Developer Certification brought great satisfaction, but working toward my Advanced Developer credential felt like I was really on the way to joining an exclusive club. In the study guide we highlight three steps:
The first step is all too familiar: multiple choice exam. This is described quite well in the study guide with good guidance examples of what the questions will be like. But Salesforce Certification, as a practice, does not publish its own practice exams, so how do you prepare?
I could write a whole article on preparation and training for certifications, so I'll keep it brief. Rather than an exhaustive treatise on exam preparation, I'll just highlight some useful resources.
To prep for the multiple choice exam, use the topic list in the study guide to decide what to study. Rank yourself by each of the topics. Once you've done that, ignore the stuff you know and study the items you don't know. I detail my technique in this Salesforce Stack Exchange answer about the Force.com Developer certification, but I developed the technique in my Advanced Developer preparations, and it helped me feel confident walking into that exam room.
Salesforce training and certification does offer a well known 5-day training class called DEV501. This was instrumental for me, as I learn well in a classroom environment.
Webinars and Dreamforce session recordings on best practices were also extremely useful, particularly some of the hands on and breakout sessions on Apex patterns. I used several of these directly in my assignment solution. The testing best practices webinar from early 2011 formed the foundation of my understanding of unit test best practices. Here's a little playlist I put together of my top 6 videos. But also go searching on our Dreamforce and Developerforce Youtube channels. These are gold mines of information.
If you are a premier customer, or Unlimited Edition customer, remember, you have access to the full online training catalog under the help and training link of your org, that includes the Apex and Visualforce Controllers online titles, which are the two components of DEV501.
Outside of that, pick a few topics a day off of the study guide and spend a couple of hours reading, watching, and practicing in your Free Developer Edition org.
One final place you might spend some time is the current release notes. Every question of every certification exam is reviewed by at least two people every single release to ensure it is still valid. So making yourself release-current is always a good idea before sitting the exam.
Once you have passed your exam, you will be invited to sign up for a Programming Assignment window. The assignment timeline can be a bit confusing, but here's how I would break it down:
Within these phases, there are three very important dates to stay on top of: Registration, Distribution of Assignment, and Assignment Due Date. These are shown on the certification Advanced Developer Assignment Schedule on the Certification website.
About two months before an assignment window opens, everyone who has passed their exam will be notified of the assignment window opening and of the registration date. If you have failed your assignment, you will also be on the notification list. Add a reminder to your calendar, and don't make any big plans.
When you sign-up, you'll also need to schedule the time and place of your Essay Exam, which is proctored. So have a game plan in place and know where and when you will take it. Yours truly didn't the first time, and when I came back a few days later to register, the sign-up had closed due to oversubscription! I had to wait until the next window. Aaargh!
Because of the backlog that exists as of the writing of this blog, plan to not sleep that day, and don't wait for the email, just watch your WebAssessor sign-up page. As soon as the assignment exam appears on your profile, sign up. Typically, the sign-up opens around 8:00 a.m. Pacific Time (GMT-8:00). I won't mince words…if you are in Asia, this is not ideal. But that is just how it is for the time being.
The assignment will happen about one month after you sign up. You are issued an org, and a document with requirements and details of the rules of the assignment. You will have 30 days to complete the assignment. Expect to spend 20-40 hours. I was at the higher end of that range, but I'm a slow plodding kind of programmer.
You will generate a sandbox, do your work and deploy to production. You check in your solution by activating an assignment administrator user in the production org. Activation of the user notifies the assignment admin who deactivates your user locking you out of your org while you are judged. If you want to preserve your code to refer back to, make sure you back it up to a free Developer Edition org *before* you check in because once you are locked out, you don't ever get back in.
You should schedule your essay toward the end of the 30 days. You aren't absolutely required to check in your assignment before although you should be at code complete, or very close. The reason for this is that the essay is your time to talk about your solution. What were the interesting choices you made? What challenged you? What makes your solution tick? What was your testing approach?
The final part is waiting for the outcome and then receiving the news. The wait for results can vary, but typically you can expect to wait around 4-8 weeks to find out.
If you pass, great! If not, provided you keep your certification release-current, you can retake the assignment the next time a new window is opened up for sign-up. Or perhaps you might want to spend some additional time preparing. And a word of consolation if you do fail. Seriously, don't sweat it. I know some very good developers who have failed their first go of the assignment, who then went back and passed the second time.
The assignment is the most enigmatic part of the process, and there isn't a lot about it in the study guide, so pay careful attention here.
A general mindset to keep is this: write good code, but don't over-architect.
Here are a few specific guiding principles I would suggest you bear in mind as you write your assignment:
Wait…didn't he just repeat himself?
Yes. I did. Guess why?
An important minimal qualification to call yourself a Force.com Advanced Developer is to be able to design and implement a decent round of unit tests. We want you to show the judges that you believe testing is important and you can meet this requirement.
Here's the thing. A programming assignment is stilted by its very nature. In order to have a discrete set of requirements that can fit in to a relatively short implementation time frame, there are going to be some non-production-ready aspects in the end. But your tests should be 100% production ready. Use this page of the Apex code developer guide as your testing to-do list. If you've accomplished every one of these bullets that makes sense in the context of your implementation, you've done it.
Since attaining my Advanced Developer certification, I have also been a judge for the programming assignment. Several of the assignments that I judged were failed because the testing was incomplete. These were people who, best we could tell, wrote one unit test, got code coverage, and then packed it in and went down to the pub for a pint. Often their solutions for the rest of the assignment were good. But they only wrote one unit test. They didn't assert their behavior. They didn't test positive and negative use cases. They didn't test in bulk. Or often there was a combination of serious unit test faults.
If there is one thing to take from this article, it is this: write good unit tests!!!
And if you are the kind of person who rises to a challenge, I'll throw this one down for you. For my assignment, I ended up writing 23 unit test methods. There is no actual stated minimum...but I would guess that most assignments are complex enough that if you're there about the 20 tests mark, you've probably demonstrated good tests for the bulk of your code.
Once your assignment is submitted, it will be judged by a team of real human beings. These are people already holding the Advanced Developer certification. The judges use a scoring rubric as a guide for what to look for that fits the profile of an assignment done well. This is the basis for your score. This is also why if you go beyond the assignment's requirements, it will not give you extra credit. Extra work is just extra work. It is not taken into account.
The rubric is not publicly available, but with a careful reading of the requirements doc, it won't be too difficult to infer what the measures of the rubric are.
Remember, these judges are real programmers looking at every line of code you write. Those of us who have been judges take the task we are charged with very seriously. We all try to be fair. We want to reward honest efforts with their deserved scores. We take time to understand your code and your thought process, but we can only score what we observe, not what we might infer. And we certainly won't justify away serious flaws in one area (say testing, for example) because another area was done well.
Each judge makes their own score then works with the others to normalize and agree on the actual score the candidate will receive, based on what they have observed. It is a remarkably effective process, and there is often much discussion to come to an agreement. But in the end, I can say with confidence that each of the judges feels they have given the most honest score they can based on the provided solution.
All of the judges in different teams also share a Chatter group to discuss best practices and to maintain consistency so that each candidate is judged by the same ruler.
Once a team of judges has completed a raft of assignments, there might often be one or two borderline assignments to review. Here we go back over how we judged these assignments compared with others again. This helps us once more ensure that we judged all assignments using an equivalent measuring stick.
Say it loud, say it proud. Once you've attained your credential, talk about it. Blog about it. Add it to your LinkedIn profile. Put your badge on your business card. You've gone through an arduous certification process. You deserve to brag.
You've also proven you have experience and knowledge you can share with the rest of the community. You've written code that stood up to the critical eye of your peers. Get active in the Developerforce discussion boards. Contribute to the salesforce.com stack exchange.
You will still sit the same release maintenance exam you always sat for your Developer Certification. So no extra work there.
Finally, upon being notified of passing your certification, you will be told of your strengths and areas where you needed improvement. Use this as a guide to understand where you need to improve going forward.
As you can see, there is a lot to the Advanced Force.com Developer Certification process. Hopefully, you now have some insight into what goes into the certification, how to prepare, how to navigate the process, and have a better understanding of the assignment portion.