No Naming Convention: The Org That Named Itself
“Let every admin and developer name things however they wanted. Two years later, nobody could find anything.”
What Happened
Over two years, multiple admins and developers built on the same org with no naming convention. We ended up with fields like Status__c, Status_New__c, Status_v2__c, StatusFinal__c, and Contact_Status__c — all on the same object. Flows named 'Test Flow,' 'My Flow,' 'Opportunity Update NEW,' and 'DO NOT DELETE.' Apex classes named Helper.cls, Utils.cls, Helper2.cls, and NewHelper.cls. I spent an entire day just trying to figure out which Status field was the real one.
The Wrong Way
// Fields on Contact: // Status__c // Status_New__c // Status_v2__c // StatusFinal__c // Contact_Status__c ← which one is real? // // Flows: // "Test Flow" ← is this active in prod? // "My Flow" ← whose flow? // "Opportunity Update NEW" ← new vs old? // "DO NOT DELETE" ← why? what does it do? // // Apex: // Helper.cls, Utils.cls, Helper2.cls // What do any of these do?
The Right Way
// Naming Convention (enforce from Day 1): // // Custom Fields: ObjectName_Purpose__c // Contact.Enrollment_Status__c // Contact.Preferred_Contact_Method__c // // Flows: Object - Trigger Type - Description // "Opportunity - After Save - Set Region" // "Contact - Screen - Enrollment Form" // // Apex: ObjectName + Pattern + Purpose // OpportunityTriggerHandler.cls // ContactService.cls // FundingRequestSelector.cls // // Validation Rules: Object_ShortDescription // Opp_Amount_Required_On_Close // // Document it in a wiki. Review it in code review. // Enforce it or it won't happen.
The Lesson
Establish a naming convention on Day 1 and enforce it in every code review and admin change. An org without naming conventions becomes unsearchable, unmaintainable, and terrifying within a year.
Enjoyed this? Get more like it.
Glen's Musings — AI, investing, and building things. Occasional. Free.
More Architecture Mistakes
5 Process Builders, 3 Flows, 2 Triggers on One Object
Stacked automations from three different consultants over two years. Nobody knew what fired when.
Read moreAnnoyingBuilding Custom Objects When Standard Objects Already Exist
Built a custom Project_Tracker__c object. Turns out Salesforce has a perfectly good Task and Event system.
Read morePainfulHardcoded Config Values Instead of Custom Metadata Types
Hardcoded thresholds, API endpoints, and business rules in Apex. Every change required a deployment.
Read more