New Programming Jargon
July 20, 2012 5:50 PM   Subscribe

This is just the top 30, what I consider to be the most likely candidates for actual new programming jargon based on community upvotes, not just "funny thing that another programmer typed on a webpage and I felt compelled to upvote for hilarity". Because that would be Reddit. Coding Horror presents the top 30 Stack Overflow New Programming Jargon entries.
posted by Artw (66 comments total) 37 users marked this as a favorite
 
#5, A Duck, is a great tool to use in a lot more than programming. Indispensable in the graphic design world, for one, and now I've got a name for it!
posted by jason_steakums at 6:01 PM on July 20, 2012 [2 favorites]


Some of these are pretty decent. I particularly like "Hindenbug" and "Hydra Code".

I feel like "Heisenbug" and rubber ducking have been around for quite a while already.
posted by brennen at 6:08 PM on July 20, 2012 [1 favorite]


Usually contains the phrase "doesn't work."

Or simply is the phrase, "doesn't work."
posted by BungaDunga at 6:08 PM on July 20, 2012 [3 favorites]


Heh. I'm just starting to really seriously work on learning how to code, and I am definitely a serial Smurf Namer.
posted by jason_steakums at 6:13 PM on July 20, 2012


The first item, "Yoda Conditions", is considered an extremely valid C/C++ programming idiom, because it prevents typos like this:

if (count=5)

from happening.
posted by Old'n'Busted at 6:15 PM on July 20, 2012 [21 favorites]


"Common Law Feature" is a hilarious name.

"Smurf Naming Convention" is annoying but a similar problem is far, far worse. That's where you have 3 dozen Java classes (or XML document types) that are all very similarly, but not identically named. Like Object, ObjectFactory, ObjectReportListFactory, ObjectReportFactory, ObjectListFactory, ObjectReportsList, ObjectsListReport, etc. I would call this the "James Bond Movie Title Naming Convention".
posted by DU at 6:15 PM on July 20, 2012 [8 favorites]


Sometimes, you just have to talk a problem out. I used to go to my boss and talk about something and he'd listen and then I'd just answer my own question and walk out without him saying a thing.

Oh my boss and I do this all the time to each other. In fact, we just walk into the other one's office and say "I need to explain to you how I can't possibly have a bug so I can find it." So a chair is pulled up and in 5 minutes it is fixed.
posted by DU at 6:17 PM on July 20, 2012 [4 favorites]


The first item, "Yoda Conditions", is considered an extremely valid C/C++ programming idiom

Yeah; I've been making a practice of this for years, ever since a fairly senior C++ guy introduced me to it (I do not by habit or inclination write C++). I think it's as much the fact that I think about it that prevents me from making the mistake as it is the order of operations itself. It's a good habit of mind in any syntax that uses various permutations of = for assignment and comparison.
posted by brennen at 6:19 PM on July 20, 2012


The first item, "Yoda Conditions", is considered an extremely valid C/C++ programming idiom

I suppose you could call it that, or perhaps, more accurately, best practice ass-covering for syntactic shittery.
posted by fleacircus at 6:22 PM on July 20, 2012 [7 favorites]


I don't know how much more valid "extremely valid" is, but I've never seen Yoda Conditions in C/C++ code. I don't do a lot of C/C++ though, so maybe I'm looking at pre-Yoda code.

In general, though, I'm against counter-intuitive conventions to circumvent design problems.
posted by DU at 6:24 PM on July 20, 2012


I had not heard 'Heisenbug' but will certainly be using it.
posted by trip and a half at 6:26 PM on July 20, 2012


I don't program at all but I love Heisenbug.

In my last job, our library software was a little bit buggy, and eventually we figured out -- if you pressed "Print Preview," it would print out correctly. If you didn't press "Print Preview," it would not print out correctly. You didn't have to change the margins or anything like that -- all you had to do was press "Print Preview." "It's like Heisenberg!" I gasped when I figured it out. "Because as soon as you observe it, you change it!"

Nobody had a clue what I was talking about.

I am glad there is a word for this.
posted by Jeanne at 6:35 PM on July 20, 2012 [3 favorites]


I think any modern gcc warns about the error the "yoda condition" is intended to prevent:
if (i = 5)
...
warning: suggest parentheses around assignment used as truth value [-Wparentheses]
posted by scatter gather at 6:39 PM on July 20, 2012


(Well, you have to use -Wall, but you should be doing that anyway.)
posted by scatter gather at 6:45 PM on July 20, 2012 [2 favorites]


I feel like "Heisenbug" and rubber ducking have been around for quite a while already.

"Heisenbug" is in the jargon file and was used in 1983.
posted by kenko at 6:45 PM on July 20, 2012 [4 favorites]


What scatter gather said; use your compiler warnings.

I find if (5 == i) annoying in code; I understand the argument for it, but it's uncommon enough usage that it always makes my brain briefly wait-what? stutter.
posted by We had a deal, Kyle at 6:48 PM on July 20, 2012


I've seen stringly typed around long before Stack Overflow, but it's a wonderful term that I find myself having to use far, far too often when doing code reviews.
posted by aspo at 6:49 PM on July 20, 2012


Rubber ducking is referred to as "talking to the teddy bear" - either in the jargon file or an anecdote with SICP or a random file with the emacs distribution maybe?
posted by idiopath at 6:49 PM on July 20, 2012


It isn't just (5 == i) that's weird and annoying. Also backwards >/< checks. For instance, you are running a loop for everything less than 1000, so your termination check says (1000 > i). It's even worserer when both values are variables, so it's even harder to tell what the "real" logic is.
posted by DU at 6:54 PM on July 20, 2012 [1 favorite]


Nerdgasm - n. The feeling when a large chunk of code compiles and executes on The first try.
posted by DigDoug at 6:55 PM on July 20, 2012 [10 favorites]


For JavaScript use JSLint and get shouted at for not using ===.
posted by Artw at 6:56 PM on July 20, 2012 [1 favorite]


The feeling when a large chunk of code compiles and executes on The first try.

I used to love that. Then I noticed that if I didn't struggle at least a little bit to write the code, I either didn't understand it (which is a bug in itself) or I forgot how it worked later (which means I'll introduce a bug). Now when my code works on the first try I keep looking until I find a bug. It appeases the gods.
posted by DU at 7:02 PM on July 20, 2012 [2 favorites]


Nerdgasm - n. The feeling when a large chunk of code compiles and executes on The first try.

Followed by the dread. The dread that something is lurking somewhere.
posted by device55 at 7:03 PM on July 20, 2012 [7 favorites]


The Yoda Condition is a good thing that I found by experience.

The left side of the condition is simple. Trivial. Thus, when reading the code, you grasp it in an instant. The prolog, if you will, before the real story begins.

The right side is the workhorse. You can focus on the complex condition on the right because you already understand the goal.

Logically, of course, they are the same. But code is not simply logic; it is narrative. It is the old programmer, possibly your own younger self, explaining, "this is what we want, let's look at how to get there."

Wise, Yoda is.
posted by SPrintF at 7:05 PM on July 20, 2012 [2 favorites]


I'm so deep in Baklava Code right now, I'm peeing honey.
posted by gwint at 7:10 PM on July 20, 2012 [2 favorites]


Oh god, "Common Law Feature" is such a great term. I think that half the behavior of the product that I work on is governed by those.

"Why does this test check for this condition?"

"I don't know but that's the only way to get the test to pass"

"Where is that documented?"

*shrugs*
posted by octothorpe at 7:13 PM on July 20, 2012 [2 favorites]


"Ultimately, Stack Overflow is a college, not a frat house."

/rolls eyes at "hooker code" (#29)
posted by scatter gather at 7:14 PM on July 20, 2012 [18 favorites]


The left side of the condition is simple. Trivial. Thus, when reading the code, you grasp it in an instant. The prolog, if you will, before the real story begins.

It's a conditional test, it's already simple. Writing it that way is like using non-idiomatic expressions in a natural language; it makes everyone reading it have to work a little harder to figure out what the hell you're talking about. I can still understand Yoda, but he talks funny.

I mean, if your style dictates that for everyone, fine, but I bet you're in the minority of shops.
posted by axiom at 7:29 PM on July 20, 2012 [1 favorite]


I like to shake things up. So when when some jackass texts the project manager, "I found a Yoda condition when Copy-pasta via Hooker code was clearly called for", I immediately insert a try { } catch Exception ex) { // Gotcha! } , because it sends a message that fucknut can understand.

Then I really get crafty by writing in a Duck just to get middle management into a Plaxo/LinkedIn yak-fest meld. And then BOOM ! When a user registers, I click “Endless under Contacts” so everyone they’ve ever replied to sub-domain contact search script deploys.

I also like to make sure to layer-cake linked URL stringly type open-face in a Heisengurg, so I can assure his contacts in upper managment shits their pants pants when I pull that stunt. But, When I'm fealing frisky, I throw in a Rustled Jimmy (they’re better than Delicious), because they max out the wiki snarls of RSS feeds, which means less Unicorny Nopping.

To finish it off, I ping the uploads to social networks via Jenga Code to interlink torrent. They may have gotten the spam e-mail from Zoidberg, managing editor, saying that people who do this sort of thing will go to Hell, but just ignore it.

*answers phone-"Yes, this is Dog."
posted by vozworth at 7:48 PM on July 20, 2012 [7 favorites]


Yoda Conditions don't come naturally to me, and I don't use it. But I'd be glad to work somewhere it was enforced as company style. It would save me the experience of having to go explain to the documentation division that, even though they've correctly described the GUI's behavior:
After you inspect the sheet to see if it is set to Side 1 or Side 2, it will automatically be set back to Side 1,

that is not how it is supposed to work.

I had written "if( sheet.side_set = C_SIDE1 ) { ... }". It had gotten all the way through testing and a technical writer had faithfully described how it worked. The woman who had to change the documentation was not a native English speaker, and was in fact a very polite Japanese woman, true to the cliche. I had to explain that, no, they had done the right thing, but because I'm an idiot they have to change the documentation. Ouch.
posted by benito.strauss at 7:49 PM on July 20, 2012 [4 favorites]


Or simply is the phrase, "doesn't work."

Or "I dunno" or "I didn't do anything" or "bugg" (why do people who won't spell out "you" add an extra G to "bug?") or "soup sandwiched."

In our shop we have the phrase "Johncode" because, well. That guy.


One of our programmers bought a crate of rubber ducks and sent them to the junior programmers in our other office. Unfortunately it hasn't really saved him any time on Skype.
posted by Foosnark at 8:59 PM on July 20, 2012


I am shocked by the fact that most of these are not overly corny, trying too hard or divorced from reality.
posted by Dr Dracator at 9:15 PM on July 20, 2012 [1 favorite]


There's a variation on the Yoda Condition that is popular in the Java world, which is

"constant".equals(variable)

The reason this makes sense is that you know that the constant is not null, so you don't need to do a separate null check to avoid an NPE when dereferencing to invoke the equals method.
posted by pascal at 9:19 PM on July 20, 2012 [2 favorites]


There's a variation on the Yoda Condition that is popular in the Java world, which is

"constant".equals(variable)

The reason this makes sense is that you know that the constant is not null, so you don't need to do a separate null check to avoid an NPE when dereferencing to invoke the equals method.


The first time I saw this I was actually pretty upset that I hadn't thought of it on my own. It's so simple and so obviously superior....
posted by IAmUnaware at 9:24 PM on July 20, 2012 [2 favorites]


Old'n'Busted: "The first item, "Yoda Conditions", is considered an extremely valid C/C++ programming idiom, because it prevents typos like this:

if (count=5)

from happening
"

The thing is, we have these programs that can parse your program and suggest that maybe assignment to a constant expression inside an if clause is undesired.

And then there's Java, with it's bullshit null pointer.
posted by pwnguin at 9:28 PM on July 20, 2012


Heisenbug and Bohrbug are classics, and are featured in old, pre-ESR versions of the Jargon File.

That said, *-bug names tend to be obscure in-jokes. That list was bland to me -- it didn't include anything referring to the activity of programming-in-the-small, just platitudes about the joys and sorrows of software engineering.
posted by syntaxfree at 11:13 PM on July 20, 2012


There needs to be a name for code produced by non English speaking developers who seem to feel all variable and method names are equally meaningless. Sometimes FolderId means the file id sometimes GetFile really returns a folder. Booleans are oddly reversed, causing things like IsNotFolder that needs to be set true for almost everything. They seem like sort of translation errors to me, like they knew what they meant but got the English wrong.

Other people have seen this right? It isn't just my Indian developers that do this right?
posted by Ad hominem at 11:16 PM on July 20, 2012 [2 favorites]


The Duck was in the Hacker's Dictionary / Jargon File as the Hairy Gorilla Arm, with a different illustrating anecdote, but so parallel that I suspect someone just decided to pass it off as their own invention. The fact that no one on StackOverflow picked this up, the other lifts from the Jargon file and terms for things that already had well known names (e.g. Hydra code for spaghetti code) or didn't need them (e.g. nopping) makes me suspect SO's level of competence.
posted by outlier at 1:59 AM on July 21, 2012 [1 favorite]


Nice to see people calling out Mad Girlfriend in the comments.

Studying in England, we called ducks "nodding dogs" (I don't know how localized this was). This was after the toy dogs that sit on dashboards.
posted by Wrinkled Stumpskin at 2:32 AM on July 21, 2012 [1 favorite]


I prefer the Egyptian style if bracket. One thing I dislike and need a term for is if statements with no blocks. For example


if (foo == bar)
SomeMethod();
//program continues

posted by humanfont at 4:15 AM on July 21, 2012


God most of these are impossibly cutesy, or old, or trying way too hard, or the trifecta.

If I ever hear anyone refer to K&R braces as "Egyptian," I will smirk at them silently in my head while maintaining a carefully neutral expression. If I ever hear a coder refer to Pokemon when not talking about their children I will feel very, very old and tired inside.

Fear Driven Development is pretty good, I'll give them that one.
posted by ook at 5:08 AM on July 21, 2012


We buy all our developers rubber ducks. I personally have a Darth Vader duck, but I am the pointy-haired boss...
posted by alasdair at 5:16 AM on July 21, 2012


I thought these were pretty good. Jargon like this, even or perhaps especially cutesy jargon, can be helpful because it somehow lends weight to criticism. It's not just an argument you're making now, it's a common enough issue to have a name.

"Baklava code" would have been really useful on my last project.

"Common law features" is another good one.

"Protoduction" (although I don't love the term) is the story of my career.

"Reality 101 failure" is good but should probably be shortened to "reality failure."
posted by callmejay at 5:24 AM on July 21, 2012


The boys at work are gonna love this list...
posted by ph00dz at 5:38 AM on July 21, 2012


SPrintF: The prolog, if you will, before the real story begins.

... and after a puzzled moment where I tried to understand what I took to be a pun, for the first time ever I realised that "Prolog" is not just the name of a programming language but how you guys over there on the other side of the Atlantic actually spell the word "prologue".

Huh.

Apologies if it actually was meant as a pun...
posted by ManyLeggedCreature at 6:19 AM on July 21, 2012


At my last job "Heisenbug" was completed accepted and universally-understood terminology.
posted by tempythethird at 6:25 AM on July 21, 2012


At work we call the "rubber duck" one the "cardboard cut-out":

"You explain the problem and what you have done so far. However you suddenly discover the solution before you have finished speaking! So far your colleague has been as useful as a cardboard cutout."
posted by Nossidge at 6:26 AM on July 21, 2012


Nerdgasm - n. The feeling when a large chunk of code compiles and executes on The first try.

Followed by the dread. The dread that something is lurking somewhere.


Then I spend an hour poking at it and throwing edge-cases until it implodes. If it fails to implode I spend the rest of the day looking behind my back every few minutes.
posted by tempythethird at 6:32 AM on July 21, 2012 [1 favorite]


Regarding the rubber duck / teddy bear / cardboard cutout t thing, I have found it helpful to have a guy on my team working from a remote office. I write him emails when I have questions, and 9 out of 10 times I can fix my problem and discard the draft before I even send it.
posted by idiopath at 6:40 AM on July 21, 2012


I like "common-law feature".

Smurf naming is a palliative approach in one context due to the explicit problem posed by another context: namespacing selectors in HTML and CSS can be problematic; you have to err towards being hyperselective when you can't predict what elemeents will appear in combination with other elements on the page. When developers also have to anticipate that the HTML elements they're styling might change out from under them (a P to a DIV, a UL to an OL), and who aren't used to any kind of calculated terseness, you end up seeing CSS like this: .calendar.wrapper.red .umbrella.advertising .wrapper table>tbody>tr>td:first-child>.wrapper { color:red; }

And then when you have to write presentation Javascript to style/manipulate that hellish dogpile of tag nesting and CSS legalese, and the only way to prove in hasty code checks that you're namespacing strictly, and you know you can't possibly comment thoroughly enough for certain other developers to understand what you're doing no matter how trivial the script is, you end up writing things like var umbrellaCalendarFirstCellChildChange = function() { var umbrellaCalendarFirstCell, umbrellaCalendarFirstCellChild,umbrellaCalendarFirstCellChildColor; }

And then you're going to field email from somebody asking where the JS for the Calendar Umbrella is, because you named it backwards.
posted by ardgedee at 6:52 AM on July 21, 2012


The neat thing about the Rubber Duck is that the action of having to explain your code is often enough to find the flaw in your own reasoning.

I have had cases where I asked a complete non-programmer to listen to me explain my problem - and usually I had to explain the rubber duck phenomenon first. It works, and I've often thanked the non-programmer for playing the cardboard cutout role for five minutes and helping my find the flaw....
posted by DreamerFi at 7:15 AM on July 21, 2012


"Ultimately, Stack Overflow is a college, not a frat house."

/rolls eyes at "hooker code" (#29)


Well, the did say ultimately. So maybe they just haven't gotten to the end and earned that badge yet.
posted by srboisvert at 7:16 AM on July 21, 2012


Sometimes, you just have to talk a problem out. I used to go to my boss and talk about something and he'd listen and then I'd just answer my own question and walk out without him saying a thing.

Related to printing out a ream of code, not reading it, and then going back to the terminal and finding the bug.
posted by StickyCarpet at 7:28 AM on July 21, 2012 [1 favorite]


"Prolog" is not just the name of a programming language but how you guys over there on the other side of the Atlantic actually spell the word "prologue".

How SPrintF spells it, maybe.
posted by kenko at 7:41 AM on July 21, 2012


Some of my own:

Arctic Formatting: an excess of whitespace.

CINO (Const In Name Only): when a base class has a const virtual function where subclasses const-cast the this pointer so they can do non-const things.

Down The Const Hole: what happens when the above scenario gets really ugly.

I Solemnly Swear: "==true" in conditions, which of course are always redundant.

Decoy Code: code that *looks like* the part you need to debug, but is actually something else and might not ever be called by anything.

Minotaur: the actual bit of (non-)functional code in a labyrinth of wrappers and interfaces.
posted by Foosnark at 7:46 AM on July 21, 2012 [3 favorites]


Heh. There was a guy at my last workplace who LOVED refactoring stuff so the actual code was as hidden as possible, in the name of it being more proper programming. He was a darling of my then manager and got to do this to whatever code he liked, and a factor in my leaving.
posted by Artw at 8:20 AM on July 21, 2012


Nickelback functions: they have different names, but all appear to do the same thing.
posted by kurumi at 8:59 AM on July 21, 2012 [6 favorites]


I always seem to run into Mad Girlfriend bugs with Hadoop, for some reason.
posted by Afroblanco at 9:12 AM on July 21, 2012


... as in, Cloudera Manager says my HBase region server "started with good health", but every time I try to hit it, I get a ServerNotYetStartedException, which is nothing if not specific.

Maybe 'mad girlfriend' is a bad name for it, but it's a real phenomenon all the same.

Also, these days I avoid smurf naming by following the rule, "if it's in the namespace name, it usually doesn't need to be in the class name."
posted by Afroblanco at 9:57 AM on July 21, 2012 [1 favorite]


"if it's in the namespace name, it usually doesn't need to be in the class name."

corrolary (and valuable in its own right):
"don't promiscuously import from unrelated namespaces"
posted by idiopath at 11:07 AM on July 21, 2012 [1 favorite]


"Prolog" is not just the name of a programming language but how you guys over there on the other side of the Atlantic actually spell the word "prologue".


Hehe. I thought about this, but I thought it would be silly to footnote it.

And my point stands: programming is narrative. I can't tell you how many times I've looked at a piece of code and pondered, "what was he thinking?" And then there is the "aha!" moment, and the program, the story that he was trying to tell, moves forward.
posted by SPrintF at 12:00 PM on July 21, 2012 [2 favorites]


wrt Yoda coding, have never favored it myself. Why? That error is so damn far down on my list of bugs. Honestly. I won't say I never make it, but it has never been a concern. On the other hand, writing one byte too far past the end of a string...**hangs head in shame**. I have done that enough that I had to develop a process which I use to this day to prevent it. Bad Toad.
posted by plinth at 7:23 PM on July 21, 2012


Yoda coding seems kind of weird, but whatever....an equality is an equality. One side equals the other, and the 'if(x=y)' vs 'if(x==y)' error is common/stupid enough that most compilers yell at you loudly if you try it.

I almost wish some languages would sacrifice some syntactical purity for the sake of common sense here, and explicitly prohibit you from making assignments inside of a conditional. I seriously cannot think of a single case where this would be a good practice.

Now, on the other hand, SmurfCode made me laugh out loud. Every Java developer on the planet is guilty of this, it seems, and it's starting to leak into some other languages too. Learn how to use namespaces, and save us from the extra typing. That said, I'd be more inclined to refer to this as BatCode (largely due to my personal preference of Batman over The Smurfs)...

But, really, when and why did Java code end up gaining the (totally true, and now self-perpetuating) reputation for being gratuitiously verbose?

posted by schmod at 1:14 AM on July 22, 2012


I used to write compact code but after a couple of years of nothing but java suddenly everything became more and more verbose. It is very handy to get the team together and stub out the interfaces and mock objects and then send everyone off to build the live code.
Also i blame smurf code on IDE's. It is annoying when Ecliple imports the wrong package as you are trying to get a frewuently usdd class name like User or Client. So you end up calling it SmurfClient. Then because it looks weird in the package where the others don't have that name prefix suddenly every other class gets to be SmurfX SmurfY.
posted by humanfont at 5:16 AM on July 22, 2012 [1 favorite]


I Solemnly Swear: "==true" in conditions, which of course are always redundant.

Not always redundant, in languages with truth-y values.
posted by kenko at 7:18 AM on July 23, 2012


Redundancy is also good for the puny humans reading the code.
posted by Dr Dracator at 9:56 AM on July 23, 2012


« Older Christopher Nolan and this Batman trilogy.   |   Death, Death, Death, Revolution! Newer »


This thread has been archived and is closed to new comments