Devdictionary Best Practices: Building a Reliable and Useful Technical Glossary
Get our best free resources and updates.
Every growing engineering team eventually hits the same wall: the codebase has a vocabulary that only exists in people's heads. New hires ask what a "shadow write" or a "cold path" means, get three different answers from three different engineers, and quietly give up trying to get a precise one. A well-built internal glossary fixes this, but only if it is built with the same rigor you'd apply to any other piece of shared infrastructure. A sloppy glossary is worse than no glossary at all, because it teaches people that the documentation can't be trusted.
Want expert help putting this into practice? Dev Dictionary can guide you through it.
Start by defining scope, not just terms
Before you write a single entry, decide what the glossary is for. Is it documenting your product's domain language (the nouns customers and support staff use), your system architecture (the nouns engineers use to talk about services and data flow), or both? Teams that skip this step end up with a junk drawer: half business terminology, half infrastructure jargon, with no clear audience. Split them if you have to. A glossary that tries to serve support agents, product managers, and backend engineers at once usually serves none of them well.
Scope also means deciding what does not belong. General programming terms that are already well covered by external references (what is a "hash map," what is "REST") rarely need a local entry unless your team uses them in a nonstandard way. Reserve your glossary's real estate for terms that are specific to your system, your domain, or your team's internal shorthand.
Write definitions a new hire could actually understand
Related: Devdictionary - Essential Steps to Mastering Technical Jargon.
The most common failure mode in internal glossaries is writing a definition that only makes sense to someone who already knows the answer. Compare these two entries for the same term:
- Bad: "Shadow write: A write performed to the shadow store as part of the dual-write path during migration." (This defines the term using two more undefined terms — "shadow store" and "dual-write path.")
- Good: "Shadow write: When our system saves data to a new database in the background, in addition to the old one, so we can compare results before fully switching over. Used during the 2026 billing-database migration. See also: dual-write, cutover."
The good version explains the concept in plain English first, then gives context for why it exists, then links to related terms instead of silently assuming the reader already knows them. That structure — plain-English definition, then context, then cross-references — is worth turning into a template every contributor uses, so entries stay consistent even as different people add them.
Avoid circular and self-referential definitions
Circular definitions are sneaky because they read as complete sentences while conveying almost no information. "A worker is a process that performs work from the queue" tells a reader nothing if they don't already know what "the queue" or "work" means in this context. A useful check: read the definition out loud to someone unfamiliar with the system and ask if they could explain the term back to you afterward. If they can't, the definition is circular, too abstract, or missing an example.
Concrete examples are the fastest way to break circularity. Instead of just defining a term abstractly, show it in a sentence the way it's actually used in code review or standup: "We had to add a retry because the shadow write kept timing out on the old store."
Version definitions as the system evolves
See also: Devdictionary Best Practices: Building a Reliable Technical Resource.
Systems change, and terminology drifts with them. A term that meant one thing during a migration can mean something subtly different — or become obsolete — a year later. Glossaries that never get revisited slowly fill up with zombie entries describing systems that no longer exist, which is actively worse than having no entry, because it actively misleads people.
Treat the glossary like code: put it under version control if it isn't already, note the date or the release a term was introduced, and mark deprecated terms clearly rather than deleting them outright — a deprecated entry that points readers to the current term ("Deprecated. See: replication lag") prevents confusion when someone finds the old term in a two-year-old commit message or ticket.
Assign ownership and build in review
A glossary with no owner rots. Someone — often whoever owns the docs site or the wiki — needs to be responsible for periodically auditing entries, merging duplicate terms, and flagging ones that look stale. This doesn't need to be a full-time job; a quarterly pass where you check entries against the current codebase is usually enough to catch drift before it compounds.
Just as valuable: make adding or editing glossary entries part of the normal review process for any change that introduces new terminology. If a pull request introduces a new architectural concept or renames something, the PR template can prompt the author to add or update the corresponding glossary entry. This keeps the glossary current without requiring a dedicated maintenance sprint, because the people who understand the new term best are the ones writing it while the context is fresh.
Make it discoverable, not just accurate
An accurate glossary that nobody can find is functionally useless. Discoverability comes from two things: search and cross-linking. If your glossary lives on a docs site, make sure it's indexed by whatever internal search tool your team uses, and make sure individual entries have stable, linkable URLs so people can drop a direct link in Slack or a code comment instead of saying "check the glossary" and leaving the reader to hunt.
Cross-linking matters just as much. Every entry that mentions another defined term should link to it. This turns the glossary from a flat list into a navigable structure — someone looking up "cutover" naturally finds "shadow write" and "dual-write" because they're linked from the same paragraph, which builds a mental map of the system far faster than reading entries in isolation. Sites like Dev Dictionary demonstrate this pattern well: consistent structure, plain-English definitions, and dense cross-linking between related terms, which is exactly the model worth borrowing for an internal glossary, even one built for a much smaller audience than the public web.
Treat the glossary as a living contract
The teams that get the most value from an internal glossary treat it less like documentation and more like a contract for how the team communicates. When someone uses a term loosely in a meeting, a good glossary gives the team a shared reference point to correct course without it feeling pedantic — "let's check what we actually mean by 'cutover' here" is a much easier sentence to say when there's an agreed-upon definition to point to. That shared precision compounds over time: fewer misunderstood tickets, faster onboarding, and code review comments that argue about the actual design instead of arguing past each other over what a word means.
Want the full guide?
Enter your email for free access to the rest of this article and our resource library.
Frequently asked questions
What is devdictionary - best practices?
Devdictionary Best Practices is covered in depth in this guide, with practical steps you can apply straight away.
How do I get started with devdictionary - best practices?
Start with the essentials in this article, then use the free resources from Dev Dictionary to put them into practice.
Can Dev Dictionary help with this?
Yes - Dev Dictionary is built to make devdictionary - best practices faster and easier, so you get a better result in less time.