I just turned in my Salesforce.com Certified Advanced Developer Programming Assignment!

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!