The Devil’s Dictionary of Software Design

Hidden meanings for your favorite programming terms

Matthew MacDonald
Dec 1, 2020 · 4 min read
© Young Coder

ooner or later, most developers discover that a little bit of jargon goes a long way. Why call someone’s code good when you can say it’s clean or elegant? Why complain that the boss is rambling off-topic when you can just say that they’re raising an orthogonal issue? (It’s low-key shade, and it burnishes your geek credentials.)

In other words, a few carefully chosen codewords can go a long way.

This is the dark power of tech jargon. Programming terms don’t always mean what they’re supposed to mean. Like when the VP of engineering looks at your code and asks why it’s stateful when she really means Why is this bad? Or when they ask you, on Friday evening, what the test coverage is for the brilliant code routine you just wrote, which really means Are you working on the weekend?

Before another bit of tech jargon bites you, consult this list of well-used programming terms — and their alternate meanings.

10x Programmer. The CEO’s justification for hiring ten times less programmers than are needed to complete a project.

Abstraction. Making a program progressively more general and less specific, so that the next person to review the code cannot pinpoint who make the mistakes.

MVC Pattern. A fancy acronym to remind you not to write your whole program in the event handler for a button click.

OOP. Wouldn’t programming be so much easier if we were making metaphors about objects instead of writing lines of functional code? No, not really? Well I wish you had spoken up before.

Refactoring. That thing you’ll do in the distant future to fix all the bugs you’re putting in right now.

Singleton: A politically correct global variable.

HTML. Often described as the first programming language you should learn by people who don’t understand what a programming language is.

YAGNI (You Ain’t Gonna Need It). A formal expression of the fact that a programmer can often have a more beneficial effect on a project by staying in bed than by writing code.

Pair Programming. When two programmers share one computer, not due to lack of funds, but as a form of peer pressure.

Full Stack Developer. A back-end developer who can also center a <div> using CSS. (Alternate definition: a front-end developer who knows how to install MySQL.)

Garbage Collection. Just one of the many things a runtime environment needs to do because you can’t trust programmers to clean up after themselves.

Regular Expressions. A system no one really understands for making mistakes in string validation code.

Inheritance. If our programming language doesn’t have this feature, we make fun of it. But if someone actually uses it, we make fun of them.

Big-O Notation. A way of sizing up how the performance of different algorithms will scale. Or, a way of sizing up who studied computer science at school and who taught themselves the craft with Udemy courses.

Agile Programming. The reason your CEO gave when he tossed out the project’s requirements document and forwarded you an email of customer requests instead.

Interfaces. A design-by-contact approach that would have saved you a lot of headaches if you had implemented it six weeks ago, when you wrote that first quick prototype.

Code Smells. Like ordinary smells, you can always deny being the one responsible for the offense.

Clean Code. The excuse you’ll use for leaving out all the comments.

Design Pattern. A name we give to a programming practice developers have repeated over and over again, so we can lavish it with undeserved reverence.

Compiler. A tool that transforms minor syntactical mistakes to business-shattering disasters.

Recursion. See recursion, Devil’s Dictionary of Software Design.

Testing. An unnecessary diversion of resources, given that the program works fine on my computer. (Come and see it if you don’t believe me.)

ORM (Object Relational Mapping). No one likes code that’s littered with dozens of tiny data class definitions. Also, no one likes inefficient, dynamically generated queries. But what if we invented a technology that combined both?

Cryptography. The art of keeping sensitive information between you and the NSA.

Encapsulation. A design principle that makes sure all the horrible mistakes you made in one class don’t leak into another.

Obfuscation. Concealing the purpose of your code by adding a great deal of design patterns.

Bootcamp. A place where newly recruited civilians prepare, painfully, for a world of stress and hand-to-hand combat (that’s corporate IT).

DRY (Don’t Repeat Yourself). A principle that holds that the less programmers say, the happier everyone will be.

Leaky Abstraction. The inevitable and perpetual state of programming, where simplifications ruin everyone’s life because you need to learn both the simplification and the thing being simplified so you can patch all the problems the simplification doesn’t cover. (See also, “The reason programmers will never be unemployed.”)

Ambrose Bierce was a 19th century American writer who wrote the satirical book The Devil’s Dictionary. This tech-world update was inspired by that work.

To get more programming humor in your life, go here. Or, subscribe to the Young Coder newsletter.

Young Coder

Insights in .NET, JavaScript, and future tech

Matthew MacDonald

Written by

Teacher, coder, long-ago Microsoft MVP. Author of heavy books. Join Young Coder for a creative take on science and technology. Queries: matthew@prosetech.com

Young Coder

Insights into the .NET stack. Thought pieces about the craft of software development. Real advice for teaching kids to code. And a shot of humor.

Matthew MacDonald

Written by

Teacher, coder, long-ago Microsoft MVP. Author of heavy books. Join Young Coder for a creative take on science and technology. Queries: matthew@prosetech.com

Young Coder

Insights into the .NET stack. Thought pieces about the craft of software development. Real advice for teaching kids to code. And a shot of humor.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store