As a technical instructor for Trailhead, I have found that there is a single overarching principle that Salesforce developers must adhere to in order to be effective Apex coders:
Developers have to understand how the Lightning Platform works before attempting to write a single line of Apex code.
Why Do I Need to Know How Force.com Works To Be a Good Apex Developer?
When developers from other platforms first encounter the Apex language, the natural reaction is to simply learn the Apex syntax and apply design patterns and principles from the languages that they already know. This is a fatal mistake.
Anyone can read documentation, memorize syntax, and find code snippets on Stack Exchange to hack their way through an Apex development project, but any developer who wants to write effective and efficient Apex code has to first understand the underlying platform.
To understand the Salesforce platform is to understand why it is designed the way it is, how it works, and what can and cannot be done with it.
Until there is a fundamental understanding of how this platform works, the power that lies within the platform can never be unlocked.
There are a number of key concepts that developers have to grasp about the Lightning Platform in order to understand why we have to develop applications the way we do.
Four of these concepts are illustrated as design constraints:
- Every Salesforce Customer Uses Shared Infrastructure
- The Force.com Platform is an Abstraction of the Underlying Infrastructure
- Apex is an Abstraction of the Force.com Platform
- Salesforce Development is Metadata-Driven