A four-week long adventure has just culminated in the submission of my Salesforce.com Certified Advanced Developer Programming Assignment. I’m still processing at this point, but I feel pretty good about what I turned in. There are parts of it that are inelegant, perhaps. And, there are some things I’ve been obsessing about in terms of design and trade offs that I can’t get out of my head at the moment. But, I’m proud of what I did.
I can’t go into specifics about the assignment, as the certification process requires confidentiality on the content. However, I can say I’ve learned more than I would have thought possible in the past four weeks in the course of figuring out this assignment. It was really a great experience for me to have this assignment, that I knew was going to be reviewed by advanced developers I don’t know, and to have to do the worst-case analysis and design up front in order to carefully account for resource consumption as this application scales. I used a SOQL relationship query more creatively than I have in the past in a pivotal part of my code, and I’m proud of that. I also used a multi-dimensional list of a wrapper class to good effect; something I don’t think I would have been able to do a few years ago. I also think I got the AJAX calls required/implied for the assignment handled pretty well.
My testing was fairly inelegant, and I know it. It was very “brute force,” not very object oriented, and was resource-intensive in terms of query count and DML operations. I think I have a lot of room to learn and grow there. I did centralize creation of object records in my test setup, and I feel good about that. I’m not 100% sure I caught every bug in a trigger-initiated method call for calculating and updating some figures, but I think I did perceive the “worst-case” mistake the prompt was dangling in front of me in that context, and although the method I constructed was more complex than the “easy solution that would fail when it scaled,” I think I got it 90% correct or better. At work, I would have had a team to test it with me, users trying it out in our staging environment, and the opportunity to patch / hotfix the thing if we had problems. In this context, I get one shot. I think that’s a good thing. I could use more practice in “you have to get it right the first time” situations. Yeah, I haven’t slept much the last week in going over and over the code, and testing every permutation I can think of, but I got a better app as a result.
I don’t know if I’ll pass and get this certification on this first attempt at the programming assignment. But, I’m glad I tried. I’m a better developer for all I’ve learned this past four weeks, and even if I have to tackle the assignment portion again, I’ll be approaching the next attempt having learned all these lessons. I should know in 8 or 9 weeks. Wish me luck!