Salesforce Certified Platform Developer I: Reflections

For specific technical topics tested on the Salesforce Platform Developer I exam, see my annotated study materials post. This post is orthogonal to that post and contains observations about the types of questions asked, cognitive styles addressed, what kind of skills and weaknesses the exam is trying to uncover (as far as I can infer), and in general what this certification seems to mean about a developer who has it.

 

Salesforce Certified Platform Developer I Test Questions

I hear this is often true of technical certifications whose tests are automatically graded. As a once-upon-a-time university instructor, sometimes running classes with 150+ students, I can’t imagine how coding tests with exclusively multiple choice responses could work otherwise. Now of course there are automatically graded coding tests, with fairly granular quantitative results, that needn’t rely on multiple choice — anything that can be measured by static analysis, for example — but the interpretation of statically assessed quality metrics is often highly domain- and platform-sensitive, so I can imagine many developers objecting to whatever code quality rubric the testmakers apply. Whereas at least multiple choice answers can be cut-and-dried right or wrong. But this may be my not-looking-forward-to-office-hours-after-giving-a-midterm side talking.)

 

In More Detail: What Kinds of Developer-Brain Abilities are They Testing?

Technical certs verify that you can do certain things; multiple-choice technical certs verify the ‘mere thinking’ part, i.e. that you think such that you can do certain things. What sort of things?

  • Many questions included lists of constraints len(constraintsList)-1 of which would imply correct answer alen(constraintsList) of which would imply correct answer b, and (often) ∀x(x∈ constraintsList) x could be interpreted in multiple ways if read independently of the other constraints. (I suppose this tests your ability to pay close attention to mediocrely-presented requirements.)
  • Several coding questions were purely procedural, none more complex than one question about control flow in misleadingly formatted nested conditional blocks. (Presumably, this is supposed to check your general ability to reason about programs, and maybe also your lazy over-reliance on compiler errors to preempt bugs (that wouldn’t be caught by the syntactically correct but pretty obviously mistaken blocks in the question body).)
  • No questions really tested object-oriented thinking. The closest question was about constructors; but this was basically about syntax+platform, not class design/patterns.
  • Of course a few non-SF-specific procedural and architectural issues came up, sometimes explicitly (MVC best practices, minimizing I/O, basic data structures), but most questions were more about the platform (standard objects and libraries, Apex syntax, typecasting, governor limits, bulkification, controller extension/design) than the deep technical ‘how to’ of creating feature-rich, cloud-native Apex+VF/Lightning applications.

Remember that these observations represent only one instance of the test. Your particular question set will certainly be different.

 

Platform-Specificity and Level of Abstraction

My colleagues Jonathan and Noe had already warned me about the platform-specificity of the exam, and in retrospect I’m 100% certain that pre-exam studying was absolutely necessary to pass the test — even though (I think) I’m reasonably handy with C-based languages (plus SQL and associated Codd/relational schema/normalization issues) and fairly up-to-date on modern software engineering practices (my last job was in survey&interview-based research and publishing for developers and software vendors). So even if you’re a brilliant software engineer outside of the Salesforce ecosystem, you’ll still need to study up on the platform itself.

 

The need for concrete knowledge of what the language/compiler/runtime/whatever lets developers do is not, of course, unique to Salesforce development. Platform-specificity is, of course, one of the frustrations that all high-abstraction, high-productivity, much-more-than-memory-managed software developers face. The cloud magnifies the abstractness even further: *aaSes in general, and PaaSes in particular, take Fred Brooks’ ‘essence and accident’ distinction to an extreme; and the Force.com platform, with its ‘clicks before code’ model-driven mantra, pushes the concept of a PaaS as hard as any industrial-strength platform I know.
I suppose developers pay for the magical runtime everything convenience that Salesforce offers with the memorizing arbitrary platform features/constraints (that sometimes change anyway) drudgery that writing Apex+VF+JS requires a little and that passing the Salesforce technical certs requires rather a lot. Now that I’m certified I can affirm a little more credibly that it is totally worth it, especially if you’re not really an interpreted languages kinda person but are nevertheless addicted to a hyperquick code->compile->test feedback cycle..!