Naming Things in Software: Why Clarity Is a Leadership Decision
There is a well-known joke in our industry:
“There are only two hard things in Computer Science: cache invalidation, naming things, and off-by-one errors.”
The joke lands because it’s painfully accurate.
Naming is often treated as a cosmetic concern — something you can “clean up later.” In reality, naming is one of the most strategic decisions engineers make, because names shape how systems are understood, evolved, and governed.
Over the years, I’ve learned that poor naming doesn’t just slow developers down. It erodes trust, increases cognitive load, and amplifies accidental complexity across teams.
Names Are the Primary Interface
Code is read far more often than it is written.
Names form the first contract between:
- The original author and future maintainers
- One team and another
- A system and the organization operating it
When names are vague, overloaded, or misleading, teams are forced to reverse-engineer intent. That tax compounds with scale.
Strong names, on the other hand:
- Encode intent
- Reduce ambiguity
- Enable local reasoning
- Accelerate onboarding
This is not aesthetics — it is developer experience engineering.
Naming as a Systems Problem
At scale, naming stops being an individual skill and becomes a systemic discipline.
Consider what happens when:
- Different teams use the same word to mean different things
- The same concept is referred to by multiple names
- Names reflect implementation details instead of domain intent
The result is fragmentation.
High-performing organizations institutionalize naming conventions:
- Shared domain language
- Explicit glossary ownership
- Consistent boundaries between concepts
This is as much an organizational design problem as it is a technical one.
Leadership Signal Hidden in Plain Sight
When senior engineers care deeply about naming, they send a powerful signal:
We value clarity over cleverness.
Good naming reflects:
- Thoughtful design
- Respect for future maintainers
- Ownership beyond immediate delivery
In my experience, teams that name well tend to:
- Design better abstractions
- Make safer changes
- Scale systems with fewer rewrites
Closing Thought
You can refactor code later.
You can optimize performance later.
But once a name spreads across APIs, teams, and documentation, changing it becomes exponentially harder.
Naming things well is not a junior concern — it is a quiet but decisive act of engineering leadership.
Web Accessibility: Principles, Governance, and Strategic Execution
Share this post