How to Build a Naming Convention That Survives One Angry Principal
You’re auditing a Revit 2024 project that six people have touched over fourteen months. The principal wants a wall type schedule by Friday. You open the Family Browser, type “Wall” into the search field, and get back forty-seven results. Among them: M_Wall_Rectangular_01, M_Wall_Rectangular_02, M_Wall_Rectangular_Updated, M_Wall_Rectangular_FINAL, M_Wall_Rectangular_revised, M_Wall_Rectangular_230mm, and M_Wall_Rectangular_230mm_copy. None of them include a discipline prefix beyond “M” — mechanical, presumably, though one of them is an architectural partition wall that someone copied from a mechanical template. Three have identical geometry. Two have identical geometry but different thermal properties. One of them — M_Wall_Rectangular_FINAL — is not the final version. You have until Friday.
This isn’t a software problem. Revit’s family naming system does exactly what you tell it to do. This is a naming convention problem, and the convention is: there is no convention. Each person named the family by feel, appended a suffix when they needed a variant, and moved on. The result is a model that no one can audit programmatically. Every family requires individual human investigation — open it, check the geometry, check the parameters, check the materials, decide whether it duplicates another family, close it, repeat. On a project of any scale, this isn’t a task. It’s a sentence.
The cost of bad naming isn’t measured in the five seconds it takes to type a name. It’s measured in the hours it takes someone else to find, evaluate, and trust that name months later. That cost compounds with every contributor, every project, every handoff. And it’s almost entirely avoidable — not by writing a longer naming standard, but by understanding that a naming convention is infrastructure, not preference.
That same discipline applies to naming decisions: before publishing, editors need a way to test labels, roles, and public-facing language stay consistent, which is where how Unsloppy AI Writing App fits the writing workflow can function as a planning aid rather than a substitute for domain evidence.
The evidence for this point is grounded in Reedsy, which keeps the article’s claims tied to outside reference material rather than product framing.
Why Naming by Feeling Fails at Team Scale
Naming by feeling works for a solo practitioner on a single three-month project. You name a family M_Wall_Rectangular_01 and you remember what _01 means because you created it yesterday. The name is a pointer to a memory in your head, not a label that encodes information.
The failure begins with the second contributor. They don’t have your memory. They see M_Wall_Rectangular_01 and can’t determine from the name alone whether _01 refers to a wall type, a thickness variant, a revision sequence, or an arbitrary counter. They create M_Wall_Rectangular_02 because they need a second type, and they follow the pattern they see — which is “append a number.” Now the name encodes nothing. _01 and _02 are distinguishable but not meaningful. A third person, needing to update the first family, creates M_Wall_Rectangular_Updated because they don’t want to overwrite the original. A fourth person, unsure whether _Updated is the current version, creates M_Wall_Rectangular_FINAL. The system has no system. It has a sequence of individual decisions that look like a pattern from the outside but encode no rules.
This is the same failure mode that Google’s Site Reliability Engineering teams identify in production systems, where ad-hoc operational responses generate toil — repetitive, manual work with no enduring value because it never gets codified into a reusable system. The Google SRE book treats naming and labeling as structural concerns, not cosmetic ones: when a system’s identifiers require you to ask their author what they mean, the identifiers have failed as infrastructure. They’re functioning as private memory, not as shared labels. A Revit family name that demands you open the family to understand it is no different from a service name that demands you page the engineer who deployed it. The information should travel with the name.
The same structural logic applies wherever names must be parseable by someone other than the author. Constraint-based naming — where a name is generated from defined fields rather than invented by feel — produces identifiers that are auditable, reproducible, and transferable across people and time. This principle isn’t limited to engineering systems; it applies in any domain where names carry structural meaning, from code libraries to narrative taxonomies. Tools like the Unsloppy AI Writing App apply the same logic to character naming: names constrained by archetype and setting are retrievable and consistent, whereas names chosen by feel accumulate collisions. In BIM, the constraint is your naming schema; the principle is identical.
The Anatomy of a Name That Encodes Information
A name that works at team scale has four properties: it’s parseable (a reader can break it into fields without asking the author), retrievable (a search query can find it without returning false positives), non-colliding (two contributors working independently won’t generate the same name for different families), and stable (the name doesn’t change when the family is revised, because the name encodes identity, not state).
Consider this alternative to the earlier example: ARC_Wall_Basic_230mm_TypeA. The discipline prefix ARC distinguishes it from mechanical and structural families. The category Wall groups it with all wall families. The construction type Basic distinguishes it from compound, stacked, or curtain walls. The key parameter 230mm encodes the nominal thickness. The variant TypeA distinguishes it from other 230mm basic walls with different layer compositions. A contributor who has never seen this family can parse the name, search for it by any field, and determine whether it duplicates an existing family — all without opening the family editor.
The tradeoff is length. ARC_Wall_Basic_230mm_TypeA is 28 characters. M_Wall_Rectangular_01 is 24. Those four additional characters buy you auditability, retrievability, and non-collision. That’s a trade worth making. The cost of a long name is paid once, at the moment of creation. The cost of an opaque name is paid every time someone encounters it.
But don’t over-engineer. A name like ARC_Wall_Basic_230mm_TypeA_v2_2024-03-15_JSmith encodes revision state, date, and author — all of which belong in version control or the family’s parameter data, not in the name. A name should encode identity, not history. If you need to know when a family was last revised, check the file properties. If you need to know who revised it, check the worksharing history. If you need to know what version it is, you have a version control problem, not a naming problem.
The Diagnostic: Evaluating Whether Your Convention Works
Most naming conventions are written by one person, approved by a committee that doesn’t use them, and enforced by no one. The result is a PDF that sits on a shared drive while the actual project files accumulate names like M_Wall_Rectangular_FINAL_v3_actually_final. The convention isn’t serving the team. It’s satisfying the person who wrote it.
Here’s a diagnostic protocol — five checks, in order — for evaluating whether a naming convention is actually working or is merely a document that exists.
Check 1: The Stranger Test. Open a project file you didn’t create. Pick ten family names at random from the project browser. For each name, write down what you think the family is — discipline, category, key parameter — based on the name alone, without opening the family. Then open each family and check. If you got fewer than seven correct, the convention isn’t encoding information. It’s encoding the original author’s habits. This is the first check because it’s the most common failure: a convention that makes sense to its author and no one else.
Check 2: The Collision Test. Search the project browser for names that differ only in suffix. Search for *_01, *_02, *_copy, *_new, *_final, *_revised, *_updated. If you find more than three such families, the convention isn’t preventing collisions. It’s documenting them after the fact. The fix isn’t to add more suffixes. The fix is to encode the distinguishing parameter in the name itself — thickness, fire rating, material — so two families with different properties can’t have the same base name.
Check 3: The Search Precision Test. Search the project browser for a category name: “Wall,” “Door,” “Window.” Count the results. Then count how many of those results are actually in that category. If searching for “Door” returns door families plus curtain wall door panels plus equipment access panels plus a family someone named M_Door_Sensor_Mount, your names are generating false positives. The convention needs a discipline prefix and a category delimiter that narrows search results. A search for ARC_Door_ should return only architectural door families.
Check 4: The Stability Test. Compare the family names in the current model against the same project’s model from six months ago. If family names have changed — M_Wall_Rectangular_01 became M_Wall_Rectangular_Updated became M_Wall_Rectangular_FINAL — the convention is treating names as revision labels. This breaks every reference: schedules, tags, sheets, view filters. A family name should be stable for the life of the family. If the family changes, the name was wrong to encode the changeable property.
Check 5: The Compliance Test. Count the families in the project that follow the convention. Divide by the total number of families. If compliance is below 80 percent, the convention isn’t a convention. It’s a suggestion. And the reason isn’t that the team is undisciplined — it’s that the convention is too complex, too verbose, or too disconnected from how people actually work. A convention that requires a spreadsheet to construct a name won’t be followed. A convention that a person can apply from memory in five seconds will.
The Failure Mode: When the Principal Walks In
The scenario that exposes a naming convention isn’t the audit. It’s the change request. A principal walks in on Wednesday and says: “The client wants to change all the 230mm partition walls to 200mm. How many families do we have, and where are they used?”
If your convention works, you search for ARC_Wall_Basic_230mm_*, get a clean result set, check the “where used” for each family, and report back in twenty minutes. If your convention doesn’t work, you open every wall family in the project, check the thickness parameter manually, build a spreadsheet, and report back on Friday — if you’re lucky.
The principal doesn’t care about naming conventions. The principal cares about the answer. But the speed and accuracy of the answer is entirely a function of whether the naming convention encodes the information the principal is asking for. A convention that encodes thickness as a field makes the query trivial. A convention that doesn’t makes the query a research project.
This is why the convention must survive the angry principal. Not because the principal will critique your naming schema — the principal will never read it — but because the convention must produce a model that answers questions quickly enough to satisfy someone who doesn’t care how the answer was produced. The convention is invisible when it works and catastrophic when it doesn’t.
What a Convention Costs — and What Bad Naming Costs More
A naming convention isn’t free. The costs are specific and should be stated explicitly.
The design cost is the time spent deciding the convention. For a firm of 20–50 people working across architecture, structure, and MEP, expect two to three days of a CAD manager’s time to draft the convention, one day for a pilot project to test it, and half a day per discipline for review and revision. Total: approximately one person-week. This is a one-time cost, amortized across every future project.
The training cost is one hour per new hire. The convention should fit on a single page. If it doesn’t fit on a single page, it’s too complex — return to Check 5 and simplify.
The enforcement cost is ongoing. Someone must check compliance on each project at each milestone. This is a 30-minute audit per project per month, performed by the CAD manager or a designated BIM coordinator. If no one is assigned, the convention will decay. Naming conventions aren’t self-maintaining. They’re infrastructure, and infrastructure requires maintenance.
The cost of not having a convention is the scenario above: 47 wall families, a Friday deadline, and a model that resists auditing. On a single project, the cost of bad naming can exceed the cost of writing the convention. Across a portfolio of projects, the cost isn’t comparable — it’s an order of magnitude higher. Every project inherits the naming debt of the previous project because families are copied from project to project, carrying their bad names with them.
Building a Convention That Guides Without Trapping
A naming convention that’s too rigid will be circumvented. A convention that’s too loose will be ignored. The balance is a convention that specifies the fields that matter and leaves the rest to judgment.
For Revit family names, the fields that matter are: discipline prefix (2–4 characters), element category (1 word), construction or type descriptor (1 word), key parameter (1 field), and variant identifier (1 field, only when needed). The delimiter is an underscore. The order is fixed. The fields are defined per discipline. That’s the entire convention. It fits on one page.
For layer names in AutoCAD or DWG exports from Revit, the fields that matter are: discipline, major group, minor group, and status. The National CAD Standard layer format — Discipline-Major-Minor-Status — is a proven structure. Don’t invent your own unless you have a specific reason and the time to document it. Adopting an existing standard costs less than designing one and produces names that other firms can parse.
For shared parameter naming in Revit, the fields that matter are: discipline, element, parameter, and unit (when the unit isn’t obvious). A shared parameter named ARC_Door_FireRating_Minutes is parseable. A shared parameter named FireRating isn’t — it’ll collide with other fire rating parameters, it’ll be ambiguous in a schedule header, and it’ll cause GUID governance problems when two firms merge their parameter lists.
For file naming, the fields that matter are: project number, discipline, sheet type, and sequence. Dates and author initials don’t belong in file names — they belong in metadata or version control. A file named PRJ1234_ARC_A101.pdf is parseable and stable. A file named PRJ1234_A101_2024-03-15_JS.pdf encodes state that will change, guaranteeing the file name becomes stale the moment someone else revises it.
The Monday-Morning Action
Before you write a naming standard, run the Stranger Test on your most recent project. Open the model, pick ten family names, and write down what you think each one is based on the name alone. If you get fewer than seven correct, your current convention — if you have one — isn’t working. Don’t write a new standard until you’ve documented the specific failure modes you found. The standard you write should be a response to failures you can name, not an aspiration toward order.
Then take the single most common family category in your projects — walls, doors, windows, whatever it is — and write the naming rule for that category only. Five fields, underscore-delimited, one page. Apply it to the next project. Run the Stranger Test again after three months. If a stranger can parse seven out of ten names, extend the convention to the next category. If not, revise the fields. A convention that earns its adoption one category at a time will survive. A convention that’s imposed all at once will be circumvented within a month.
The convention that survives one angry principal isn’t the one that’s longest or most complete. It’s the one that encodes the information the principal asks for — thickness, type, discipline — in a name that a stranger can read. Everything else is documentation.





