Programmer / Engineering Vernacular
A field guide to how engineers actually talk about problems
This vocabulary is less about technical concepts and more about how engineers communicate judgment, uncertainty, and tradeoffs — things that don't have precise formal terms but come up constantly in practice.
๐ง Understanding / knowledge
• know it cold — know something extremely well
• know it inside out — deep familiarity
• know it backwards — know it thoroughly
• have a handle on it — understand enough to work with it
• get the gist — understand the main idea without details
• have the mental model — understand how the system behaves conceptually
• connect the dots — understand relationships between separate facts
• see the moving parts — understand the interacting components
• under the hood — understand the internal mechanism
• surface-level understanding — know what it does, not necessarily why
• gut-level understanding — intuitive understanding from experience
• textbook understanding — formal/theoretical understanding
• muscle memory — something performed almost automatically
• tribal knowledge — undocumented knowledge accumulated by experienced people
• institutional knowledge — knowledge retained by an organization/team
• domain knowledge — understanding specific to a particular field
• lore — accumulated stories, quirks, and historical knowledge around a system
• esoteric knowledge — specialized knowledge understood by relatively few people
๐ฌ Rigor / precision
• hand-wavy — insufficiently rigorous
• handwave past X — skip over an explanation
• roughly speaking — deliberately approximate
• back-of-the-envelope — quick approximate calculation
• ballpark figure — approximate number
• first-order approximation — retain the dominant effects, ignore smaller ones
• rule of thumb — practical heuristic rather than strict derivation
• sanity check — quick plausibility check
• smell test — intuitive plausibility check
• Fermi estimate — estimate something using rough assumptions
• napkin math — extremely informal calculation
• eyeballing it — estimating visually
• modulo X — “except for X”
• with caveats — true, but subject to qualifications
• under reasonable assumptions — technically conditional statement
• in the limit — behavior under an extreme/idealized condition
• to first approximation — ignoring second-order effects
๐ Investigating / exploring
• quick pass — brief examination
• full pass — comprehensive examination
• skim — superficial examination
• deep dive — detailed investigation
• poke at it — investigate experimentally
• prod it — deliberately test behavior
• dig into it — investigate more deeply
• trace it through — follow execution/data flow
• follow the rabbit hole — keep discovering deeper issues
• rabbit hole — investigation that keeps expanding
• spelunking — exploring poorly understood code/systems
• code archaeology — reconstructing how old code works
• forensics — investigating what happened after a failure
• bisect — systematically narrow down where a problem appeared
• instrument it — add measurements/logging/tracing
• put it under the microscope — inspect very closely
๐ ️ Debugging vernacular
• rubber-ducking — explain the problem aloud to discover the mistake
• printf debugging — debug primarily through inserted print/log statements
• shotgun debugging — make many changes hoping one fixes it
• whack-a-mole — fixing one problem only for another to appear
• chasing ghosts — debugging something elusive/non-reproducible
• heisenbug — bug whose behavior changes when observed/debugged
• bohrbug — deterministic/reproducible bug, contrasted with heisenbug
• ghost in the machine — mysterious behavior with no obvious cause
• works on my machine — environment-specific failure
• can't reproduce — unable to trigger the reported problem
• bisect it — binary-search through versions/changes
• narrow it down — reduce the possible causes
• isolate the failure — reduce the problem to a minimal component
• minimal repro — smallest example that demonstrates the bug
• rubber duck the code — explain it step-by-step to expose faulty assumptions
๐งฑ Code quality / architecture
• clean — simple, understandable implementation
• elegant — particularly simple/general solution
• idiomatic — follows conventions of the language/ecosystem
• hacky — works, but inelegantly
• duct tape — temporary/ad-hoc solution
• glue code — code connecting otherwise separate systems
• shim — compatibility/interposition layer
• scaffolding — supporting structure used during development
• spaghetti code — tangled control/data flow
• ball of mud — architecture that has accumulated uncontrolled complexity
• big ball of mud — large, highly coupled system
• leaky abstraction — abstraction whose underlying implementation details escape
• code smell — symptom suggesting deeper design problems
• footgun — feature/API that's easy to misuse
• sharp edge — technically valid feature that's easy to get wrong
• gotcha — surprising behavior/trap
• paper cut — small recurring annoyance
• toil — repetitive work that could potentially be automated
• dead code — code that is no longer used
• legacy code — existing code, often implying difficult/old code
• bit rot — deterioration caused by neglect/environmental change
• cruft — unnecessary accumulated code/configuration/files
• code debt / technical debt — short-term implementation choices creating future cost
๐งฌ Understanding why something exists
• cargo culting — copying a practice without understanding its purpose
• considered harmful — intentionally questioning a conventional practice
• because that's how we've always done it — institutional inertia
• historical accident — behavior that exists because of past circumstances
• legacy constraint — old requirement that still limits design
• compatibility baggage — old behavior that must be preserved
• API archaeology — figuring out why an API behaves strangely
• design fossil — old design decision whose original rationale has disappeared
• accidental complexity — complexity caused by implementation/environment rather than the actual problem
• essential complexity — complexity inherent in the problem itself
๐ป Working with existing systems
• greenfield — starting from scratch
• brownfield — modifying an existing system
• legacy system — established older system
• in the trenches — practical hands-on engineering
• production-hardened — prepared for real-world operational conditions
• battle-tested — proven through real use
• dogfooding — using your own product
• eating your own dog food — same idea
• living with your own code — actually operating what you built
• fork it — create an independent development branch/project
• vendor lock-in — becoming dependent on a particular provider
• dependency hell — difficult/conflicting dependencies
• version skew — different components running incompatible versions
• configuration drift — systems gradually diverging from intended configuration
๐งน Work that isn't the actual work
• yak shaving — doing increasingly unrelated prerequisite work
• bikeshedding — disproportionate debate over trivial details
• boil the ocean — attempt an impossibly broad solution
• gold-plating — adding unnecessary features/perfection
• scope creep — requirements gradually expanding
• feature creep — product accumulating unnecessary features
• premature optimization — optimizing before identifying a real bottleneck
• overengineering — solving a simple problem with excessive complexity
• underengineering — insufficient engineering for the actual requirements
• reinventing the wheel — rebuilding something that already exists
• not invented here (NIH) — rejecting existing solutions because they aren't internally developed
• analysis paralysis — excessive analysis preventing action
• rabbit-hole engineering — getting lost in interesting but nonessential details
๐ฆ Development status
• WIP — work in progress
• rough around the edges — functional but unfinished
• happy path — normal successful execution
• sad path — failure/error execution
• edge case — unusual boundary condition
• corner case — particularly constrained/unusual case
• known unknown — known area of uncertainty
• unknown unknown — problem you don't yet know exists
• works in principle — conceptually valid, not necessarily production-ready
• proof of concept (PoC) — demonstrates feasibility
• prototype — early working implementation
• MVP — minimum viable product
• production-ready — sufficiently robust for real deployment
• battle-tested — already validated in real conditions
• hardening — making a system robust against real-world conditions
• polishing — improving usability/quality after core functionality works
๐ Trade-offs / engineering judgment
• pick your poison — every option has a downside
• trade one thing for another — explicit tradeoff
• there's no free lunch — improvement in one dimension costs another
• good enough — meets requirements without unnecessary optimization
• fit for purpose — appropriate for the actual requirement
• overkill — substantially more capability than necessary
• under the constraints — solution must operate within specified limits
• within budget — resource-constrained solution
• acceptable failure mode — failure exists but is tolerable
• fail gracefully — degrade safely rather than catastrophically
• fail fast — detect invalid conditions early
• make illegal states unrepresentable — design so invalid conditions cannot easily occur
⚡ Performance
• fast enough — meets practical requirements
• blazing fast — very fast, often informal
• hot path — performance-critical execution path
• cold path — rarely executed path
• critical path — sequence determining overall completion time
• bottleneck — limiting component
• bound by X — performance fundamentally limited by X
• CPU-bound — CPU is limiting performance
• I/O-bound — I/O is limiting performance
• memory-bound — memory bandwidth/latency is limiting
• throw hardware at it — solve performance problems with more hardware
• move the needle — produce a meaningful performance improvement
• micro-optimization — tiny optimization with limited impact
• premature optimization — optimization before measurement
• measure, don't guess — benchmark rather than speculate
๐งช Testing
• smoke test — basic test that checks whether something fundamentally works
• sanity test — quick plausibility check
• regression test — ensures an old bug doesn't return
• happy-path test — tests normal operation
• negative test — tests invalid input/failure behavior
• fuzz it — feed unexpected/random inputs
• hammer it — repeatedly stress something
• soak test — run continuously for an extended period
• load test — test under expected load
• stress test — push beyond expected operating conditions
• dogfood it — use it yourself in real workflows
• test in anger — use/test it under genuine real-world conditions
• break it on purpose — deliberately seek failure modes
๐ฅ Production / operations
• ship it — release it
• push it — deploy it
• roll it out — gradually deploy
• roll back — revert deployment
• hotfix — urgent production fix
• on fire — system/team experiencing severe problems
• redline — operating near maximum capacity
• degraded — functioning below normal performance
• brownout — partial service degradation
• blast radius — extent of impact from a failure/change
• single point of failure (SPOF) — one component whose failure can bring down the system
• cascading failure — one failure triggering others
• fallback — alternative path when primary fails
• graceful degradation — reduced functionality instead of total failure
• roll forward — fix the problem with a new version rather than reverting
• pager duty — being responsible for responding to operational incidents
๐ฌ Engineer-to-engineer phrases
Some of the most useful ones aren't technically precise terms at all — they're full phrases engineers reach for in conversation:
“Let's not boil the ocean.” → Keep the scope under control.
“That's a footgun.” → The interface makes misuse dangerously easy.
“I have a pretty good mental model of it.” → I understand the mechanism, even if I don't know every detail.
“I haven't gone spelunking in that code yet.” → I haven't deeply explored the internals.
“That's tribal knowledge.” → The information exists, but isn't documented.
“Let's do a sanity check before we optimize this.” → Verify the basic assumption first.
“We're getting into yak-shaving territory.” → We're doing prerequisites that are becoming a project of their own.
“It's battle-tested.” → It has survived real-world use.
“That's an accidental complexity.” → The problem itself isn't inherently difficult; the implementation/environment made it difficult.
“I wouldn't cargo-cult that.” → Don't copy the technique without understanding its rationale.
“There be dragons.” → This part of the system is dangerous/poorly understood.
“The code is telling us something.” → When an implementation becomes bizarrely complicated, the architecture, requirements, or abstraction itself may be wrong — not just the programmer.

No comments:
Post a Comment