Make the sfdx cli a little easier to use with some useful bash snippets
Today's post is a guest post from Boris Bachovski (Twitter handle @Bachovski, a good friend of mine, an ex-colleague, and a great Force.com developer is a regular fixture at the Melbourne Developer User Group. Boris has recently run the gauntlet that is the Advanced Developer Certification, and given that developers are always on the look out for more information on the certification I thought it'd be great to get some further insight on the topic.
The Advanced Developer Certification (501)
I'm sure you've already read many blog posts at this stage regarding getting DEV501 certified, but according to the stats on other blogs it looks like that this kind of blog posts have the highest number of visits, which tells me that there is a lot of interest around it... Having said that, I decided to write up a post and share some thoughts based on my personal experience while going through the certification process itself.
At this point in time, I have completed and submitted all 3 parts of the exam and I am waiting on Salesforce.com judges to evaluate it, score it and communicate through the results to me, which unfortunately takes a while (around 8 weeks since there is really a lot to be reviewed and the high demand of registered users).
Let's just quickly recap the components of the exam as a whole. There are 3 parts essentially:
- Multiple choice exam
- Programming assignment
The Multiple Choice Exam
Completing the first part of the exam (the multiple choice) was pretty straight forward for me, being a full-time developer on the platform for more than 3 years and having development background in other languages and platforms prior to this. The exam itself is very much similar to the rest of the certs in terms of the questions structure, although this time there is a lot more code, longer and proper development questions - unlike the DEV401 (Certified Developer) which is not very developer oriented (I still haven't figured out why both DEV401 and DEV501 are called "Developer", though only the latter is a true Developer Exam). If you've passed the DEV401 exam and you haven't written any APEX code on the Force.com platform, then you're not ready to take on DEV501, you will fail hard (quoting @LaceySnr here) and I guarantee you that!
You can register and take this first part of the exam independently and it's a pre-requisite for the other parts of the exam. As mentioned previously, there are a lot of questions related to actual code rather than the platform itself, so prior going ahead I recommend that you have at least 6 months to a year of in-depth experience in writing code on the platform (Classes, Triggers, VisualForce pages and most importantly test methods!). You will also need to understand the order of execution between triggers and workflows, understand governor limits, callouts, web services, security and pretty much be familiar with everything that is covered in the Force.com Developer's Guide document.
Let me be honest, I had a few questions marked to "Review Later" while undertaking the exam. I am sure there will be some questions that you will not be able to answer straight away even though you have X many years of experience on the platform. Writing APEX/VisualForce everyday doesn't mean that you can cover it all, you're not using every single component, class, method or API that salesforce offers so make sure that you're at least familiar with it and you've read about it. At the end of the day it all comes down to practising and staying up to date with the release notes.
The programming assignment
There is a hidden task here which I reckon is even harder than the whole exam itself and no one tells you about it - Registering for the programming assignment!
This was an absolute pain - Salesforce opens the registrations for the assignment and the essay at a specific date and time, 4 times a year, and there are a limited number of spaces. Of course you want to make sure you don't miss that time so you need to keep an eye on your email notifications and make sure you jump on as soon as the registration opens. In my case that was a Tuesday morning at 2AM. I can tell you how extremely high demand of participants there was at this time - webassessor would not load or it would time out. I quickly opened up a couple of other browsers (just in case) and tried to register again... 10 minutes later, still timing out, could not reach server...
Meanwhile, a question appears on the Salesforce StackExchange site and my twitter timeline is flooded with questions from people complaining about not being able to register - they were checking every different channel, trying to find out what's going on. You can imagine how many people tried to register at the same time...
Finally about 20 minutes later I managed to register, but for on-line proctored exam, because the page for on-site wouldn't even load yet.
But then, I had to select a specific date for the exam - no further description was available... Hmm, that's weird... Didn't Salesforce say that I have around 30 days to complete it!? So, not knowing what this date is, I selected the earliest possible thinking I'll have more time to complete the assignment. I knew that this whole date thing is not right and I thought to double check with someone who's already got this certificate. The answer was that this is the date when you want to undertake the 3rd part of the exam - the essay. Realising that and also the fact that before you do the essay you must have submitted the programming assignment, I logged back in webassessor and managed to change this to the latest date possible (Note that around $70 fee applies if you change this date 3 days prior the actual selected date).
And eventually I received the programming assignment package (a PDF document and login credentials to a developer instance). At that very time I was at work stuck into some code so I just quickly glanced through the document and thought: "Oh this is not that bad, it's something similar to my day-in-day-out work, I should be able to bang it out in a few days". Having that in mind, a couple of days later I left for a 10 day holiday, leaving the assignment for when I return.
Salesforce recommends that you spend a minimum of 20 hours on this and I can assure you and confirm that this number is not over estimated at all. It took me 23 hours to complete the whole assignment (including test classes which took me more than writing the actual code). That week, my life was: 8AM to 5PM day-to-day work, then 5PM untill late - DEV501. It wasn't as simple as it looked like when I first read through the PDF. There are a few caveats in this document so make sure you read it properly and you understand every single bit of it. Eventually, I managed to complete it before the scheduled essay date and submitted it. Fingers crossed! :)
Basically this is a proctored exam which contains 3 questions in regards to your programming assignment. Questions that you need to elaborate on and provide details around how you tackled a specific requirement, whether you have or you have not implemented certain components into your solution or whether you've considered/tested security etc. etc. It's all about confirming that you have written the code, so my tip here is that you review your code and remember as much as you can just before you do the essay.
If you've decided to take on this certification, you need to make sure that you:
- Register as soon as the registration opens
- Choose the date (for the Essay) as latest as possible (this will give you more time to complete the assignment)
- Make sure you understand every single requirement, that you design and build your solution to be scalable
- Start working on the assignment ASAP (allow time to review, fix and improve). Confirming again, 20 hours is THE MINIMUM
- Assert against positive and negative results in your test methods. Test every scenario; do not just write tests for the sake of getting 100% coverage
- Bulk test your triggers
- Consider governor limits
I'm pretty confident that I will pass and I'm wishing you best of luck!!!