For reasons I won't get into, I took the Salesforce Dev Certification exam this week. Salesforce, for those who don't deal in enterprise software, is a cloud based solution for providing ways for companies and other organizations to keep track of things like sales leads, or the effectiveness of marketing campaigns. It's practical, focused and unsentimental. Salesforce developers normally create custom apps by "clicks not code" using the web interface to build up data models and work flows. Salesforce provides a series of certification exams, the Dev certification having a reputation as being the easiest to take.
Therefore, I spent much of the last few weeks reading, watching videos and walking through tutorials and workbooks. And for a developer who creates custom apps through code, and then more code, it was darn hard. Harder for an experienced coder because Salesforce co-opts common programming terms for new usages all the time. Think you know what an 'object' or a 'field' or a 'record type' is? Well think again. Think a 'checkbox' is a kind of a widget, well how quaint.
And it is all so arbitrary, 2 Master-Detail fields per object max, 3 External IDs per object, workflows can create Tasks but not Events, or is it Events but not Tasks...
I've been trying to polish up an explanation for programming constructs that are nearly universal, unchanging and therefore transferable from system to system: those made by God like the for loop or the delegate pattern, and those constructs that are ad hoc, arbitrary, and require memorizing every corner because there is no pattern to recognize, those made by Men like, oh I don't know, the Win32 API. I was taught to be a scientist, I got through college and graduate school not through memorizing every little thing, but in learning the patterns and principles of the universe and applying them. You can do a lot in an hour's Physics test with Newton's laws of motion and courage.
Getting ready for a test by rote memorization is not my thing.
Which is not to say that Salesforce is bad. In fact, for what it does it's kind of great. While I was studying away, I could observe my wife manually preparing to cold call a large number of organizations to sell them on a new (let's say) product. A big mess of phone numbers and eMail address she was gathering and putting into Excel. I realized how better organized and efficient she'd be if I just took what I was learning and made a few customizations to a Salesforce 'org'. And that would be for just a one-woman sales team. The network efficiencies for a large team would be huge. Same thing with my Dad's private plane brokering service, if I could get him better organized, he'd sell more planes.
So I went to the local proctored test center, took the test and by some miracle of preparation and methodical mastery of the multiple-choice form, I passed.