10 Lessons from 10 years of Saleforce Development

It's been 10 years since I first started working on the Salesforce platform.

So I thought I'd share 10 personal lessons from 10 years of Salesforce development.

  1. Most important skill for admins, devs, architects is to understand the interdependence and interplay between code (trigger, apex controllers), pseudo-code (process builder, workflow, flows) and config (everything else) in your org
  2. When something looks easy to implement at first blush, it's more than likely that you've either not considered long term impact of your solution, or don't understand the current implementation enough to work out the knock-on effect, or both.
  3. Real world delivery experience trumps certification and badges. Your Ranger status and 12 certs mean nothing if the only thing you've delivered is a small sales cloud implementation for 2 users.
  4. Building a managed package app for the Appexchange is NOT the same as building the usual unmanaged app for the end customer. The former needs way more deliberation and consideration than latter.
  5. Team is more important than the individual. Build and nurture a process that improves the delivery bandwidth of the whole team.
  6. Good technical documentation is more valuable than gold dust. A team that follows good documentation process will have a high bus factor.
  7. <controversial>Giving devs/admins the responsibility (and accountability) to write automated UI tests instead of a separate QA team will drastically reduce the number of bugs created in the first instance</controversial>
  8. Clear and readable code trumps clever and convoluted code. Modifying software is a fact of life. Make your life easy by designing programs from the ground up for extensibility.
  9. Deployment checklists will prevent avoidable mistakes and will let you and your team to leave work just in time for supper.
  10. Finally, our job is NOT to write programs but it IS to solve (business) problems. And the important prerequisite for this is to UNDERSTAND the problem and its constraints intimately. Premature solutioning is the source of all project evils.