Designing for Scale: Why I Default to Declarative Before Code

Designing for Scale: Why I Default to Declarative Before Code

I can write Apex. I often do. But when I design systems, my first question is always: Can this be built declaratively and maintained by a future admin?

Why?

  • Declarative tools like Flow and Custom Metadata are faster to deploy

  • They’re easier to maintain, especially in smaller teams

  • They keep the business logic closer to the surface, not buried in code

Permission Audits Aren’t Just for Security Reviews

Permission Audits Aren’t Just for Security Reviews

Most teams only think about permissions when something breaks or there’s an audit. I treat permission reviews as part of ongoing system hygiene.

Every quarter, I:

  • Run Permission Set and Profile audits using custom report types

  • Compare assignments to actual job roles

  • Remove “temporary” permissions that were never revoked

Optimizing Lightning App Performance Without Sacrificing UX

Optimizing Lightning App Performance Without Sacrificing UX

When Lightning pages get cluttered, user adoption drops—and performance tanks. This year I focused heavily on page performance optimization while keeping layouts intuitive.

What worked:

  • Replacing overused Related Lists with curated Dynamic Related List – Single components

  • Hiding low-priority fields and sections behind Dynamic Forms rules

  • Moving resource-heavy components (like reports or LWCs) to secondary tabs

Cross-Object Formulas That Actually Perform Well

Cross-Object Formulas That Actually Perform Well

Cross-object formulas can be elegant—or they can become performance bottlenecks. The difference is in how you build them.

I’ve learned to keep them lean:

  • Limit how many relationships you traverse (e.g. Parent.Parent__r.Contact__r.Email)

  • Use text outputs instead of nested IF statements when possible

  • Avoid unnecessary references to formula fields within formula fields

Scheduled Jobs Without Apex: How I Use Scheduled Flows for Time-Based Automation

Scheduled Jobs Without Apex: How I Use Scheduled Flows for Time-Based Automation

You don’t need Apex to schedule work anymore. Scheduled Flows are robust enough for 90% of my time-based automation.

Use cases I’ve implemented this year:

  • Daily digest emails based on queue assignments

  • Automatic reminders for unfulfilled reservations

  • Weekly maintenance tasks like flagging stale records

Custom Metadata vs Custom Settings

Custom Metadata vs Custom Settings

Years ago, the debate was real. Today? Custom Metadata Types (CMDTs) are the clear winner over Custom Settings in almost every use case.

CMDTs give me everything I need:

  • Deployable via metadata

  • Referencable in validation rules, Flows, and formulas

  • Easier to maintain and document

Change Sets Aren’t Enough: My Deployment Workflow

Change Sets Aren’t Enough: My Deployment Workflow

Change Sets are fine—for small orgs or last-minute tweaks. But for serious development, I’ve moved to a hybrid model: Change Sets for UI-friendly items, and metadata deployments using SFDX and source control for everything else.

Joined Reports: The Reporting Power Tool Too Many Orgs Ignore

Joined Reports: The Reporting Power Tool Too Many Orgs Ignore

If you’re still relying only on standard reports, you’re missing one of Salesforce’s most powerful data tools: Joined Reports.

I use them whenever I need to compare or summarize related datasets in a single view—like open vs closed cases per consultant, or service request metrics across member types. Once you understand how they work, they become your go-to for high-level insight.