New Programming Jargon

July 20, 2012

Stack Overflow – like most online communities I've studied – naturally trends toward increased strictness over time. It's primarily a defense mechanism, an immune system of the sort a child develops after first entering school or daycare and being exposed to the wide, wide world of everyday sneezes and coughs with the occasional meningitis outbreak. It isn't always a pleasant process, but it is, unfortunately, a necessary one if you want to survive.

Consider this question from two years ago:

New programming jargon you coined?

What programming terms have you coined that have taken off in your own circles (i.e. have heard others repeat it)? It might be within your own team, workplace or garnered greater popularity on the Internet.

Write your programming term, word or phrase in bold text followed by an explanation, citation and/or usage example so we can use it in appropriate context.

Don't repeat common jargon already ingrained in the programming culture like: kludge, automagically, cruft, etc. (unless you coined it).

This question serves in the spirit of communication among programmers through sharing of terminology with each other, to benefit us by its propagation within our own teams and environments.

Is this even a question, really? How many answers does it have?

Three hundred and eighty six!

A question that invites 386 different "answers" isn't a question at all. It's an opinion survey, a poll, a List of X. I suppose you could argue that reading through all those responses would teach you something about programming, but it was pretty clear that the bulk of the responses were far more about laughs and GTKY (Getting to Know You) than learning. That's why it was eventually deleted by experienced Stack Overflow community members. Although it is somewhat borderline in terms of learning, and I didn't personally vote to delete it, I tend to agree that it was correctly deleted. Though opinions vary.

I won't bore you with the entire history, our so-called "war on fun", and the trouble with popularity. Ultimately, Stack Overflow is a college, not a frat house. All the content on the site must exist to serve the mission of learning over entertainment – even if that means making difficult calls about removing some questions and answers that fail to meet those goals, plus or minus 10 percent.

In terms of programmer culture, though, there is precedent in the form of The Jargon File. Unfortunately, we don't have a good designated place for deleted "too fun" questions to live, but all Stack Exchange content is licensed under Creative Commons in perpetuity. Which means, with proper attribution, we can give it a permanent home on our own blogs. So I did. I've collected the top 30 Stack Overflow New Programming Jargon entries below, as judged by the Stack Overflow community. Enjoy.*

1. Yoda Conditions

zneak

Yoda-conditions

Using if(constant == variable) instead of if(variable == constant), like if(4 == foo). Because it's like saying "if blue is the sky" or "if tall is the man".

2. Pokémon Exception Handling

woot4moo

Pokemon

For when you just Gotta Catch 'Em All.

try {
}
catch (Exception ex) {
   // Gotcha!
}

3. Egyptian Brackets

computronium

Egyptian

You know the style of brackets where the opening brace goes on the end of the current line, e.g. this?

if (a == b) {
    printf("hello");
}

We used to refer to this style of brackets as "Egyptian brackets". Why? Compare the position of the brackets with the hands in the picture. (This style of brackets is used in Kernighan and Ritchie's book The C Programming Language, so it's known by many as K&R style.)

4. Smug Report

aaronaught

Pathreport-med

A bug submitted by a user who thinks he knows a lot more about the system's design than he really does. Filled with irrelevant technical details and one or more suggestions (always wrong) about what he thinks is causing the problem and how we should fix it.

Also related to Drug Report (a report so utterly incomprehensible that whoever submitted it must have been smoking crack.), Chug Report (where the submitter is thought to have had one too many), and Shrug Report (a bug report with no error message or repro steps and only a vague description of the problem. Usually contains the phrase "doesn't work.")

5. A Duck

kyoryu

Duck-wireframe

A feature added for no other reason than to draw management attention and be removed, thus avoiding unnecessary changes in other aspects of the product.

I don't know if I actually invented this term or not, but I am certainly not the originator of the story that spawned it.

This started as a piece of Interplay corporate lore. It was well known that producers (a game industry position, roughly equivalent to PMs) had to make a change to everything that was done. The assumption was that subconsciously they felt that if they didn't, they weren't adding value.

The artist working on the queen animations for Battle Chess was aware of this tendency, and came up with an innovative solution. He did the animations for the queen the way that he felt would be best, with one addition: he gave the queen a pet duck. He animated this duck through all of the queen's animations, had it flapping around the corners. He also took great care to make sure that it never overlapped the "actual" animation.

Eventually, it came time for the producer to review the animation set for the queen. The producer sat down and watched all of the animations. When they were done, he turned to the artist and said, "that looks great. Just one thing - get rid of the duck."

6. Refuctoring

Jason Gorman

Bottle-smashing

The process of taking a well-designed piece of code and, through a series of small, reversible changes, making it completely unmaintainable by anyone except yourself.

7. Stringly Typed

Mark Simpson

Cat-string-values

A riff on strongly typed. Used to describe an implementation that needlessly relies on strings when programmer & refactor friendly options are available.

For example:

  • Method parameters that take strings when other more appropriate types should be used.
  • On the occasion that a string is required in a method call (e.g. network service), the string is then passed and used throughout the rest of the call graph without first converting it to a more suitable internal representation (e.g. parse it and create an enum, then you have strong typing throughout the rest of your codebase).
  • Message passing without using typed messages etc.

Excessively stringly typed code is usually a pain to understand and detonates at runtime with errors that the compiler would normally find.

8. Heisenbug

unknown

Heisenbug

A computer bug that disappears or alters its characteristics when an attempt is made to study it. (Wikipedia)

9. Doctype Decoration

Zurahn

Charlie-brown-christmas-tree

When web designers add a doctype declaration but don't bother to write valid markup.

<!DOCTYPE html>
<BLINK>Now on sale!</BLINK>

10. Jimmy

Gord

Jimmy

A generalized name for the clueless/new developer.

Found as we were developing a framework component that required minimal knowledge of how it worked for the other developers. We would always phrase our questions as: "What if Jimmy forgets to update the attribute?"

This led to the term: "Jimmy-proof" when referring to well designed framework code.

11. Higgs-Bugson

gingerbreadboy

Higgs-boson-guy

A hypothetical bug predicted to exist based on a small number of possibly related event log entries and vague anecdotal reports from users, but it is difficult (if not impossible) to reproduce on a dev machine because you don't really know if it's there, and if it is there what is causing it. (see Higgs-Boson)

12. Nopping

Stanislav

Statue-napping

I'm writing a scifi novel from the POV of an AI, and their internal language has a lot of programming jargon in it. One of the more generalizable terms is "nopping", which comes from assembler NOP for no-operation. It's similar to 'nap', but doesn't imply sleep, just zoning out. "Stanislav sat watching the screensaver and nopped for a while."

13. Unicorny

Yehuda Katz

Stack-overflow-unicorn

An adjective to describe a feature that's so early in the planning stages that it might as well be imaginary. We cribbed this one from Yehuda Katz, who used it in his closing keynote at last year's Windy City Rails to describe some of Rails' upcoming features.

14. Baklava Code

John D. Cook

Baklava

Code with too many layers.

Baklava is a delicious pastry made with many paper-thin layers of phyllo dough. While thin layers are fine for a pastry, thin software layers don’t add much value, especially when you have many such layers piled on each other. Each layer has to be pushed onto your mental stack as you dive into the code. Furthermore, the layers of phyllo dough are permeable, allowing the honey to soak through. But software abstractions are best when they don’t leak. When you pile layer on top of layer in software, the layers are bound to leak.

15. Hindenbug

Mike Robinson

Oh-the-huge-manatee

A catastrophic data destroying bug. "Oh the humanity!"

Also related to Counterbug (a bug you present when presented with a bug caused by the person presenting the bug) and Bloombug (a bug that accidentally generates money).

16. Fear Driven Development

Arnis L.

Youre-fired

When project management adds more pressure (fires someone, moves deadlines forward, subtracts resources from the project, etc).

17. Hydra Code

Nick Dandoulakis

800px-Hercules_slaying_the_Hydra

Code that cannot be fixed. Like the Hydra of legend, every new fix introduces two new bugs. It should be rewritten.

18. Common Law Feature

anonymous

Common-law-marriage

A bug in the application that has existed so long that it is now part of the expected functionality, and user support is required to actually fix it.

19. Loch Ness Monster Bug

russau

Loch-ness-monster

I've started Loch Ness Monster bug for anything not reproducible / only sighted by one person. I'm hearing a lot of people in the office say it now. (Possible alternates: Bugfoot, Nessiebug.)

20. Ninja Comments

schar

Ninja-comments

Also known as invisible comments, secret comments, or no comments.

21. Smurf Naming Convention

sal

Brainy-smurf

When almost every class has the same prefix. IE, when a user clicks on the button, a SmurfAccountView passes a SmurfAccountDTO to the SmurfAccountController. The SmurfID is used to fetch a SmurfOrderHistory which is passed to the SmurfHistoryMatch before forwarding to either SmurfHistoryReviewView or SmurfHistoryReportingView. If a SmurfErrorEvent occurs it is logged by SmurfErrorLogger to ${app}/smurf/log/smurf/smurflog.log

22. Protoduction

Chris Pebble

Uno_motorcycle_segway

A prototype that ends up in production. Heard this from a tech at the Fermi lab. He said he didn't coin the term but had heard it used a number of times at Fermi.

23. Rubber Ducking

wesgarrison

Sesamstrasse_ernie_bert

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. I read about someone that put a rubber duck on their monitor so they could talk to it, so rubberducking is talking your way through a problem.

24. Banana Banana Banana

juliet

Dancing-banana

Placeholder text indicating that documentation is in progress or yet to be completed. Mostly used because FxCop complains when a public function lacks documentation.

/// <summary>
/// banana banana banana
/// </summary>
public CustomerValidationResponse Validate()

Other food-related jargon: Programmer Fuel (Mountain Dew, coffee, Mate, anything which gets you well-caffeinated), Hot Potato (Http and Https respectively. Same number of syllables, but more fun to say), Cake (Marty's noob cake broke the build), Chunky Salsa (based on the chunky salsa rule, a single critical error or bug that renders an entire system unusable, especially in a production environment).

25. Bicrement

evilteach

Plus-two

Adding 2 to a variable.

26. Reality 101 Failure

Loren Pechtel

Feature-fail

The program (or more likely feature of a program) does exactly what was asked for but when it's deployed it turns out that the problem was misunderstood and it's basically useless.

27. Mad Girlfriend Bug

Jeduan Cornejo

Mad-girlfriend-cartoon

When you see something strange happening, but the software is telling you everything is fine.

28. Megamoth

zolomon

Mothra

Stands for MEGA MOnolithic meTHod. Often contained inside a God Object, and usually stretches over two screens in height. Megamoths of greater size than 2k LOC have been sighted. Beware of the MEGAMOTH!

29. Hooker Code

NullPointerException

Muppet-pimps

Code that is problematic and causes application instability (application "goes down" often). "Did the site go down again? Yeah, Jim must still have some hooker code in there."

30. Jenga Code

sumit

Hasbro-jenga

When the whole thing collapses after you alter a block of code.

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. If you're itching to see even more, there are plenty more answers to read – three hundred and fifty six more to be precise. Longtime Stack Overflow user Greg Hewgill maintains an archive of old deleted Stack Overflow questions, but this one hasn't quite made it in there yet. In the meantime, try Stack Printer, or if you have the requisite 10k rep on Stack Overflow, you can view the full soft-deleted question on the site.

* But don't enjoy it too much. We will be watching you.

[advertisement] What's your next career move? Stack Overflow Careers has the best job listings from great companies, whether you're looking for opportunities at a startup or Fortune 500. You can search our job listings or create a profile and let employers find you.
Posted by Jeff Atwood
155 Comments

Oh, the huge manatee!

I will definitely be implementing some of these :)

Hediedforme on July 20, 2012 2:38 PM

The "Jimmy" answer was so highly upvoted because of one of the comments:

sigh . . ...... :< – Jimmy Mar 1 '10 at 6:30

That comment had 1470 upvotes, by far the highest upvoted comment on the site.

Blue Raja on July 20, 2012 2:52 PM

I wish my "What is your (least) favorite syntax gotcha" didn't have to go. There was lots of valuable information there :)

Goran Siska on July 20, 2012 3:28 PM

Jargon file still missing "Highlander" for when "there can be only one". Meaning you have a section of code for which only one process or thread can be alive at a time.

twitter.com/merlyn on July 20, 2012 3:42 PM

Come on ... Yoda Conditions is the easiest way to catch assignment in if statements:

if (5 = value) ...

causes the compiler to moan, whereas

if (value = 5) ...

does not and accidentally assigns 5 to value and ends up always executing the if block.

Gordon Down Under on July 20, 2012 4:05 PM

Nice post, but it needs anchors at each term, so we can direct-link to it.

Benny Smythe on July 20, 2012 4:24 PM

Dang it, my answer was only like 5 posts away! D:

Kalebbrasee on July 20, 2012 4:41 PM

Sigh.

Jimmy on July 20, 2012 4:56 PM

Number 7 - "Stringly typed" already has a better definition - "primitive obsession" You described it on your blog six years back http://www.codinghorror.com/blog/2006/05/code-smells.html

[)amien

Damienguard on July 20, 2012 5:03 PM

Dude, what's wrong with "egyptian brackets"? That's the only way I've ever written code. For two decades. Putting a bracket on the same line as a conditional or loop makes everything in between a lot easier to read and indent. Putting the closing bracket on its own line at the bottom (sometimes followed by a comment on what it's closing, if it's a nested block) makes it clearer what the closing bracket relates to. Saves a line at the top, and the syntax reads cleaner at the bottom. I've always hated the style of putting opening brackets on the next line down...or closing brackets at the end of a code line. I fix other people's code into "egyptian" before handing it back to them because the other variants piss me off. In what way is this some new Stack Overflow craze? Do you think I read stack overflow and came to a sudden realization that this was a way to write code? No. This is the way clean code looks. And has always looked, whether it's in C, Perl, Actionscript, PHP or anything else that takes a lot of brackets. Some Perl and C++ coders' tendency to put the opening bracket on next line is, honestly, stupid-looking and hard to read. Python and Ruby coders might get a pass for just having a completely shitty-to-look-at language, but using Pythonic formatting in languages that take bracketed conditionals is just a magnitude of stupidity higher.

if (you.cantRead(this)) {
youSuck();
}

js on July 20, 2012 6:09 PM

YADSL - Yet Another Domain Specific Language

When someone writes a DSL even though ordinary code would work just as well.

TR NS on July 20, 2012 6:17 PM

#27 is not a good thing. Please don't perpetuate this kind of jargon.

Squidseer on July 20, 2012 6:42 PM

Being the person who coined "yoda conditionals", I obviously felt let down when it was deleted. But now that I'm featured in a blog post of Coding Horror, I must say I'm proud of my call.

To everyone criticizing it: it's time to update your compilers. Neither Java nor C# will let you assign something in an if statement, and most C and C++ compilers will emit a warning if you do. At least, gcc and clang do; I wouldn't be surprised if VC++ did as well.

Félix Cloutier on July 20, 2012 6:48 PM

The opposite of "Egyptian Brackets" would be "Hadouken Brackets", then? (BTW, I completely agree with Félix regarding to "Yoda Conditionals" - and c'mon, hire good professionals, don't screw your code just because you want to protect your software from them)

Diogobaeder on July 20, 2012 6:59 PM

Egyptian brackets it's so funny that from now on every time I will see it I will do the walk like and egyptian whistle.

Guillem Sola on July 20, 2012 7:06 PM

This language says a lot about programmer culture. We have "Jimmy", the clueless new programmer, who is male because programmers are male by default. We have the "mad girlfriend bug", which programmers can empathize with because they are straight males who know what it is like to have a mad girlfriend. And we have "hooker code", which relies on the idea of prostitutes as unclean and unsafe.

InterfectPrime on July 20, 2012 7:13 PM

@Gordon Down Under, I never knew that was the reason for the choice, thank you. Some language's compilers won't let you either way, thankfully.

Johnwalters_sd on July 20, 2012 7:31 PM

Here are some of mine
Christian Magic-
A piece of code someone else wrote or you wrote at 4 am that you have no idea how it works, but it does you just have to believe

360 no scope-
Don't know how this came around but its when you get a service leak on andriod (or something equal) cause it just snuck right up on you.

akolanko on July 20, 2012 7:33 PM

@js, "I fix other people's code into "egyptian" before handing it back to them because the other variants piss me off." - You must be a great guy to work with, with you knowing what clean code looks like and what looks stupid and everything.

Johnwalters_sd on July 20, 2012 7:37 PM

I skimmed the Hindenbug entry and thought I saw a 'Cronenbug' -- this would be named after David Cronenberg the horror movie director and would describe a bug which makes your head explode.

Ambrose Chapel on July 20, 2012 7:42 PM

@John, I pretty much only work alone except if I'm answering people's questions and/or tracking down the bugs in their code. And I don't care about the grammar, I just find it impossible to read when the brackets are all over the place, so I clean that up too.

js on July 20, 2012 7:43 PM

Follymorphism, something that uses instanceof to do something that should have used polymorphism.

Nicsnoek on July 20, 2012 8:01 PM

I like "Ignorance is Bliss" code. This is when you don't know much about the system you're working on yet, but take it upon yourself to "refactor" a significant piece of business logic. It might not be under test, but what could go wrong when moving it into a new module, renaming it, extracting all of the logic into new methods, and adding parameters to its constructor? Nothing, right?

Blake Hyde on July 20, 2012 8:39 PM

Agreed with squidseer - #27 is not good jargon. It's sexist, and to some extent so is #29. Don't see what's so funny about them.

Jordo37 on July 20, 2012 8:41 PM

I've mostly only ever seen Java code Egyptian style.

I often use a variant on the Yoda conditional, to prevent null pointer exceptions:

"Some string".equals(aBean.getMightBeNullButDontCareString());
Andrew on July 20, 2012 9:00 PM

Back Seat Programming (BSP) is one fairly recently coined by a team that I was in. It starts as pair programming, but in occasional situations involves three people. This arrangement quickly devolves into the back seat programmer incessantly heckling the two front seat programmers, particularly the one doing the typing.

It has become a permanent addition to our vocabulary.

Geoff on July 20, 2012 9:15 PM

@js, other people think that clean code is when the brackets line up. They're not wrong. Neither are you. Personally, I really don't even have a preference. Whatever convention that seems to be present is the right one, for me. I'd rather just create something than be bothered by nonsense like that. I do like the term "egyptian brackets" though.

Johnwalters_sd on July 20, 2012 9:42 PM

" or if you have the requisite 10k rep on Stack Overflow, you can view the full soft-deleted question on the site"

Some of the archived 'fun' questions should be left in this soft-deleted state, just to add an entertainment enticement for reaching the 10,000 mark.

Gary Myers on July 20, 2012 11:05 PM

We use the term "Stebugging" internally to describe the process of finding and fixing code errors caused by our enthusiastic junior dev Stephen..

welcomebrand on July 20, 2012 11:06 PM

Wait, so this blog is creative commons as well? Can everybody else just grab quality material from SO and post it on their blog? Cause all I can see is "Content (C) Jeff Atwood" at the bottom...

Step 1: Build an awesome community tool that attracts millions of programmers

Step 2: Close down any question that's too popular or, god forbid, fun.

Step 3: Post same question on own blog...

Assaflavie on July 20, 2012 11:16 PM

Did you guys at SE ever think about making a SE specifically for stuff that was off-topic but fun/good? Just migrate all such posts from all of the SE's and SO to this particular SE. Could call it offtopic.stackexchange.com

Akshay Bist on July 21, 2012 12:06 AM

I my world, Rubber Ducking is "Potato Pairing".

You ask someone to help with a problem and you figure it out through the process of explaining the problem. Instead of asking a human, you could have saved trouble and paired with a potato instead.

Jarpy on July 21, 2012 12:32 AM

@Félix Cloutier

You can, in fact, make assignments in IF statements easily in most of the languages you listed. I'd never thought of using 'yoda conditionals' to prevent it, but it would work. If you wrap the assignment in ()s it is valid, this would happen if you are bracketting multi conditionals.

if ( (a == null) || (a < b) )
if ( (a = null) || (a < b) )


both valid, one of those does an assignment.


Anilm2 on July 21, 2012 1:02 AM

On the other hand, there's the problem of communities that are too forgiving to newcomers. Reddit post-digg-migration is a perfect example of a community that should've been tougher on newcomers. Instead, we were all too busy basking in our own popularity before we realized that it was too late to educate millions of new redditors on proper rediquette.

I think SO has struck a good balance of not being too loose on rules but also not scaring off newcomers. (And today, there's programmers, workplace, UNIX etc. StackExchanges for anything off-topic anyway).

CLUSTERfoo on July 21, 2012 1:06 AM

I often talk about the dreadful "leaning Eiffel tower". It's a lot of if()'s nested that resemble an Eiffel tower laying on the ground.

It's often a symptom of having the conditions nested at the wrong level so you end up testing something repeatedly in different branches.

Tommy Hallgren on July 21, 2012 2:41 AM

I used to use "a duck" with my dad when a kid and had to tidy my room, I soon learnt that no matter how good a job I did he would always pick up on something that could be done better, in time I used to leave something easy for him to pick up on that I could quickly change!

Zharrt on July 21, 2012 2:47 AM

"Fragile" - A software project using traditional "waterfall" lifecycle but called "agile" by the project managers.

Ballmw on July 21, 2012 3:00 AM

Fear driven development isn't when they subtract resources from the project - it's when they add them (and normally new hires at that).

Gizmo on July 21, 2012 5:15 AM

Any good jargon for the practice of using a (D)VCS as your personal save-every-three-minutes notepad, as revealed by a string of commits such as:
"10:23: Finished $FOO"
"10:26: Forgot temp. print"
"10:29: Oops"
"10:31: Will I ever get this right"
"10:34: One more fix"
...

Lu Dicrus on July 21, 2012 5:16 AM

So basically you removed the content from stack overflow and put it here for page views. Doesn't seem right to me.

How about creating a stack overflow section for questions like these? http://meta.stackoverflow.com/questions/73455/popular-deleted-questions-list

I shouldn't have to need 10k to be able to see them. But creating a new section was too obvious for you, wasn't it? You just had to delete them. *smh*

Guilherme Rdems on July 21, 2012 5:31 AM

386 answers for that crap and none for [this question](http://stackoverflow.com/questions/11592009/understanding-assumptions-about-machine-word-size-in-analyzing-computer-algori) of mine .

D on July 21, 2012 6:42 AM

We've started using "Jenga Stack" for the mental model you have to build up to work on complex code. This leads to statements like "Don't interrupt me right now... I've got a huge Jenga Stack built."

As far as Yoda Conditions, I hate them. Increased cognitive load (at least for english speakers, this is now how you normally think) to get around a quick of the language design and the compiler. C compilers have thrown warnings for assignments in if statements for YEARS.

Benvonhandorf on July 21, 2012 7:32 AM

Kinda funny...almost the same post on another blog (from about a year ago) using a lot of the same exact images...http://www.dodgycoder.net/2011/11/yoda-conditions-pokemon-exception.html

Josh Love on July 21, 2012 8:05 AM

22. Protoduction

Where I work we call that 'prodvelopment'.

Used to be an infestation of such.

"It's only for the short term" "It's not important enough to rate the full prod-dev stack" "We'll replace it with the _real_ system next quarter"

For a while the senior management in our IT shop were all ex-consultant. But you could probably guess that.

bdunbar on July 21, 2012 8:13 AM

I actually invented one at my workplace, for puzzle solving rather than programming---"piano": I had been stewing over the problem a while, then decided to take a break and go down the hall to get a cup of coffee, and while pouring the coffee, the solution just dropped on me like a cartoon piano would on Sylvester---sprung into my mind fully formed when I wasn't even thinking about it. After telling this to others, using the metaphor to explain what it felt like to me, suddenly the workplace is full of people having piano moments when they solve problems like that.

Not to be confused with "viola", where the solution is really simple--you solve it as soon as you see the problem, and using bad French, you announce, "Viola!"

Todd Vance on July 21, 2012 8:29 AM

Why is "Heisenbug" included in a list of the top 30 "most likely candidates for actual new programming jargon"? It's in the bloody Jargon File. It has a wikipedia entry, which you even linked to.

John Bange on July 21, 2012 9:09 AM

Our "hooker code" is "George Michael", as in "that [feature, app, block, whatever] goes down more often than George Michael in a public restroom".

I coined it, AFWIW I actually think George is kinda cool, but still...

John on July 21, 2012 10:41 AM

I think your description of the Smurf bug is wrong. It's not a problem that a whole bunch of objects share the same prefix, e.g. SmurfUser, SmurfUserOption, SmurfUserHistory... but when the prefix is the same as the classes' namespace... and you end up doing this:

Smurf.SmurfUserOption
Smurf.SmurfUserHistory
Smurf.SmurfUserAddress

etc etc.

Philliprosstaylor.wordpress.com on July 21, 2012 12:26 PM

Classic. I like your choice of illustrations.

Jeddak on July 21, 2012 2:29 PM

Some time ago, I came up with "feral code", i.e. code that's gotten so wild it doesn't obey you anymore. Don't ever try taming it, even approaching it, don't try to predict its behaviour... In short, the only viable path out of the problem is to get rid of the feral code for good.


Bgolinvaux on July 21, 2012 2:50 PM


function Inc(x) {
globalspace->something->completlydifferent = 'not so good';
return +x;
}

Roger Keulen on July 21, 2012 3:20 PM

Program an interface not an implementation.

Roger Keulen on July 21, 2012 3:23 PM

'Duck' is from Robert Venturi's architectural theory book Learning from Las Vegas, 1977

Zach on July 21, 2012 4:35 PM

Great list. We have a few we use around the office that are related to code and others related to working at a large organization. I challenge you to guess what a "pressed fruit basket" is as regards a manager's office. I use "duck", but I don't think I'd ever use "mad girlfriend bug" in front of my business unit given the preponderance of women. Or at all, given it's sort of rude to many programmers I respect. I see Interfect Prime thought the same thing.

Snrky Snrky on July 21, 2012 5:30 PM

great post

Mustapha Barki on July 21, 2012 7:07 PM

One of the few things I don't love about StackExchange is the occasional drool slurping knowledge-elitist pretending that the site is some kind of library of congress or ivory tower to be kept innocent of things not perfectly fitting to the Q/A format. It's particularly bad when people use an acronym to refer to the person asking the question - WTF, seriously?

StackOverflow is one of the best things I've seen for the software development community in my 13 years in the field. It's great because it not only has what I need when I need it but it also has the occasional spirit-lifting humor like this.

I'll take HUMOR over HUBRIS any day -- don't throw the baby (above) out with the bathwater.

(And this list of 30 is hilarious!)

Kingdango on July 21, 2012 7:40 PM

To all of you who got annoyed at the question being deleted, you can all just make your own stack exchange site, or propose for a new one on area51.stackexchange.com. So I figured I would just go ahead and do it. Hopefully enough people will like the idea to actually make it come to life.
http://area51.stackexchange.com/proposals/42460/off-topic-humor

Alexander Knopf on July 21, 2012 10:52 PM

I liked the idea of demotivating fun of SO. It happened a lot that when I started with SO and I used to post weird and stupid questions, people used to make fun. A little fun is fine but it should not make you sound as if you have done something very stupid. Having said that, I invite you to have a look at my new blog Jeff.

Fahad Uddin on July 22, 2012 12:02 AM

Oh, and the Yoda condition example isn't the classic one; the real reason Yoda notation sprung up is because of the idiomatic usage of

CONSTANT.equals(variable)
in Java, especially with Strings but also wrapped primitives like Integer, so that if the variable reference is null you don't get a NullPointerException. Using Yoda notation for primitives is generally not done as it doesn't read well.

Gizmo on July 22, 2012 1:07 AM

12. Nopping

In the 90s this term was used to describe a style of cracking whereby the cracker would short circuit the license check by writing 0x90 (the assembler NOP instruction in Intel assembler) over the code that calls the license check function.

Nopping was a derogatory term since real crackers don't change the existing code. Real crackers understand the key generation process and write key generators.

Mike Janzen on July 22, 2012 7:53 AM

The reason you *have* to have this sort of post is because the moderators are far too delete-happy. That's going to be the ultimate destruction of the entire StackOverflow ecosystem as the deletionists piss off all the contributors by deleting everything. Why not save time and delete the entire site?

Tangurena on July 22, 2012 8:45 AM

#29 is brilliant!

Dan Riti on July 22, 2012 3:39 PM

@js - Is that all what you did for last twenty years? Changing other people's code into "Egyptian Style"? What a moron.

Sean on July 22, 2012 4:54 PM

How come nobody ever asks why can't Reddit be more like Stack Exchange instead of why can't Stack Exchange be like everyone else?

Why do people fight so hard to make Stack Exchange be something it wasn't designed for when the things they fight for already exist in every corner of the Internet?

James Mortensen on July 22, 2012 5:09 PM

One of the very many things that I love about Go is that it mandates Egyptian style braces. And it does so for a very good reason, I might add.

Adam on July 22, 2012 6:47 PM

I'll throw out the "Amsterdam Report". Something we started around our office...

End user reports a bug such as "The values on screen X are wrong" - without providing any additional information...

I equated it as the user was trying to drive from LA to New York - and they ended up in Amsterdam - and they have no idea (or at least didn't describe) why/how they ended up there.

Thus anytime an "Amsterdam (Bug) Report" comes in - it's generally greeted with a developer saying, "Welcome to Amsterdam!"

CoachDench on July 22, 2012 8:54 PM

I could have lived at a college when studying at university, which by my reading of Wikipedia is the same as a "frat house" in US-speak. http://www.usq.edu.au/accommodation/steelerudd

So more examples of different jargon in different places? :)

hood on July 22, 2012 9:15 PM

Years ago when I was working in Ireland I developed a habit of marking anything not yet configured in a configuration file and in code with the string "here be dragons".

[mail servers]
pop="pop.mycompany.com"
smtp="here be dragons"

This had the simple advantage that one could search all config files for "dragons" to find items not yet configured (maybe the SMTP server wasn't known yet but now is).

After a while I and later others started referring to a status where an application was installed but not yet configured as having dragons, as in "Module X is installed but some dragons remain".

Now in Switzerland another interesting term developed, more or less by accident. The German equivalent of the English term "text book" (as in "ideal") is "picture book". Our test environment installation people have a habit of taking screenshots of anything that didn't work or confused them during installation of our application. (That was very useful.) They then sent us the screenshots so we could resolve those issues or explain them away.

And now an installation routine that is particularly buggy is referred to as a "picture book installation" (again, think "text book installation").

Ajbrehm on July 23, 2012 1:44 AM

Only 2k LOC in a megamoth? I've worked on code which had one method which was ~10k LOC :( It also had up to 17 levels of nested conditional/loop. This is what happens when assembly programmers are let loose on higher-level languages without any reigning-in :P

David Gardner on July 23, 2012 1:59 AM

In my first job we had to write "bus-proof" code. That meant plenty of documentation and everything saved safely into config control.

The idea is that anyone on a project could be knocked down by a bus on the way home, and the project simply must go on with nothing lost.

Jason Judge on July 23, 2012 2:22 AM

Instead of rubber ducking, we use the Inflatable Programmer: the one that sits down next to you, listen to your explanation, says nothing and you realize where the problem is. When you turn to thank him, he looks back with empty eyes and mouth wide open.

Francesco Pongiluppi on July 23, 2012 4:33 AM

Dunno if this is new or not "Chernobyl code" for code that seals old legacy stuff in concrete to provide a new API or calling mechanism whilst hiding the old implementation details.

Also, is there a name for C++ code written by a Java developer? You know, where they are wordy (smurfy) as hell and bring across all the introspection naming conventions when introspection isn't available?

Liversedge on July 23, 2012 5:05 AM

> And we have "hooker code", which relies on the idea of prostitutes as > unclean and unsafe.

Ah, now i get what they want to imply.

The first association i had was something along "you have to pay every time", like Mac-appstore vs. a debian repository.

Maybe it's a regional thing, i'm from "liberal" Europe ;)

> This language says a lot about programmer culture.
> We have "Jimmy", the clueless new programmer, who is male
> because programmers are male by default.

Which is, at least in most countries i know of, just a true observation. Furthermore, if it were Jane, i bet that would lead accusations of implying female programmers are less competent.

So, what name should we use to antropomporhize Cluelessness? As Jimmy's sigh proves, _no_ name does not "target" at least one person.

> We have the "mad girlfriend bug", which programmers can empathize
> with because they are straight males who know what it is like to
> have a mad girlfriend.

But, besides the empathizing, it communicates a recognizable metaphor, that, i'd argue, even asexual people of any sex will get, because of it's pervalence in sit coms, movies etc.
It's like "Herculean Task", it doesnt matter that the Greek Gods are a myth as long as the meaning is transported.

I don't particularly like the "Hooker Code", because it seems to me like bitching about Prostitution witout adding worth to the metaphor, but objecting die Jimmy seems a little bit paranoid to me.

Keppla on July 23, 2012 6:00 AM

"I didn't wrote that code! The Me In The Past did!".

You In The Past – it's not you: you don't know what he did and why. Maybe that You In The Past person was kind enough to leave messages (comments) to other developers (including you now), but you can't be sure. One thing you should do: write comments and documentation NOW so that other developers (including the You In The Future) will be able to understand it!

Francesco Pongiluppi on July 23, 2012 6:57 AM

@js I never comment on blogs but I had to because of your terrible comment. What you have said has shown everyone that you are a bad, stereotypical, wannabe programmer. Any good programmer will use the style they see already in the project they are on. And if they are lead they can choose (usually discussing it with the team or using company policy) the style to use. You don't just say some style is better and everyone using that style is an idiot for using it. I personally like brackets on new lines. The reason? I have worked like that on projects for years, it is always the style I see. But when I see projects with Egyptian style (which you seem to also take offense to it being named that... I mean really?) I adapt (by pressing enter less!) and use that style.

Robbo on July 23, 2012 7:06 AM

Speaking of Egyption Brackets, I recently wanted to post a SO question (but don't have the nerve) asking why people still use Egyption Brackets because I thought that style died out years and years ago especially after Code Complete.

Brad Rembielak on July 23, 2012 7:27 AM

I still use K&R formatting. But then I started writing like that in 1985. It really doesn't matter, the code compiles just the same.

But I guess some devs are more interested in presentation more than content -- says a lot about them as developers really.

Liversedge on July 23, 2012 8:01 AM

Stack Overflow and Stack Exchange should promote good questions instead of closing or deleting questions.

Or make a good designated place for deleted "too fun" questions to live! StackOverflowOverflow.

Usernamethree on July 23, 2012 9:14 AM

I hadn't heard "Rubber Ducking." We call it "Code Therapy." You describe your coding problem to a workmate, and by the time you're done describing it, the answer has occurred to you.

Dtaflin on July 23, 2012 9:59 AM

Lemon
The parentheses without any parameters between them (). Used mainly for function calls. Either use a lemon to execute the function, or you'll get a pointer. This term was coined by my 9 year old daughter when she was reading code out loud over my shoulder.

Danmar on July 23, 2012 10:21 AM

Yoda Exception Handling: Do, or do not; there is no try.

Daniel Schaffer on July 23, 2012 10:41 AM

I have a term for a particular type of overstuffed function or god object. I call it the 'duties as assigned.' Like an employee that gets hired to do a simple job, and then finds out that his job description also includes 'duties as assigned.'

Had a guy on a project who was supposed to write a function to do one simple thing, yet he decided to also use that function to accomplish every other task he felt needed to be achieved in the project.

Sledgehammer on July 23, 2012 12:22 PM

Can I translate this to spanish? I want to use them around the place, but some of these are way too english for people to understand.

Oh and here in the office I coined what we call a "Maraña China" or "Chinese Mess" for when a code is s baly written and unformatted, that's basically unreadable or impossible to understand what it does.

Luis Robles on July 23, 2012 12:56 PM

Brad Rembielak said:

Speaking of Egyption Brackets, I recently wanted to post a SO question (but don't have the nerve) asking why people still use Egyption Brackets because I thought that style died out years and years ago especially after Code Complete.

Actually Code Complete advocates the Egyptian style as I recall, which is one reason I started using it when writing C/C++ code. The reasoning is it makes blocks easier to distinguish if their shapes are like this:

MMMMMMMMMMM
   MMMMMMM
M

As opposed to this:

MMMMMMMMMMM
M
   MMMMMMM
M

And frankly it better matches many other languages like Ruby, Python and JavaScript. In fact it seems most JavaScript these days is written that way.

So while the name is perfectly fine, to act like this style is bad or out-of-date just shows one as being an unexperienced programmer.

Ryan Leavengood on July 23, 2012 1:05 PM

Yoda Conditions are a useful way to force the type of the comparison in dynamic languages, since the left-hand side usually gets to establish the type of the comparison when it could otherwise be ambiguous.

$num = "5";
if(5 == $num) { ... }

Even in statically-typed languages, you'll often have to cast a type, and Yoda Conditions make that more readable than a big Lispy pile of parentheses.

if(1 == (int)dr["num"]) { ... } // already has two pair parens
if(((int)dr["num"]) == 1) { ... } // too many parens

Stateful mental parsing of deeply nested parentheses seems a bigger problem than some Anglocentric difficulty with determining if two things are equal.

brianary on July 23, 2012 3:04 PM

@js: I got in big trouble on one project when I "cleaned up" another programmer's code; mainly, bracket indentation. After much bruhaha, I ended up reverting all of my changes and changed my own style to fit the de facto project usage.

Gary Bivin on July 23, 2012 3:04 PM

SQL used to actively promote Yoda conditions when you needed to compare a constant with the result of a subquery:

select stuff from foo
where 500 = ( select sum(cost) from bar where id = 1 );

It used to be that you simply couldn’t write the above WHERE expression in non-Yoda form, but things seem to have improved in recent years (e.g., the non-Yoda form now works in both Oracle and PostgreSQL).

Why? Because that’s what the standard said. Orthogonal language design? Who needs that?

Nstanger on July 23, 2012 3:24 PM

don't touch my favourite Yoda conditions! it creates compiler error when you forget to add double == there.

Andrej Kvasnica on July 24, 2012 1:54 AM

meta-debugging /me-ta-de-bug-ging/

Verb: The practice of debugging by incessantly asking another programmer how to fix your bug.

Synonyms: stupid officemate - clueless programmer - irritating developer

Erle Czar Mantos on July 24, 2012 2:52 AM

I love these -- thanks to everyone who shared.

FYI, the "duck" is also known as a "hairy arm." The reference is from commercial art, where the artist purposefully depicts a lovely model with one hairy arm, the goal being to afford his boss a modicum of "added value."

Lambetd on July 24, 2012 5:16 AM

Pachinko code

Long extraneous code coded with multiple conditional statements that allows control to fall through going in and out of conditions.

thepurpleone on July 24, 2012 5:48 AM

@Lu Dicrus
"Dear Diary Version Control" for the practice of using a (D)VCS as your personal save-every-three-minutes notepad.

Ben Tatham on July 24, 2012 8:10 AM

"Received a Banana"

I was trying to explain to a sales guy that when we asked what to do on failure, we did not mean that we received a "No" from the api, as in he could not sell, where a "Yes" would be success, but that we considered both "Yes" and "No" success, and we considered silence (api down), or "Banana" (unexpected garbage) as failure.

There are four answers to a yes/no question.
Yes, No, Silence, Banana

Thus our it/networking team starting using the phrase "Got a Banana" whenever the incoming response made no sense.

Jwindberg on July 24, 2012 9:53 AM

Egyptian code sucks because (a) it doesn't visually diagram variable scope the way the alternative does, and (b) because when things get hairy, the more complex a block is, the more confused the brackets and the programmer get. There have been many times I've fixed a bug just by new-lining Egyption brackets, instantly revealing that the original programmer wasn't in the part of the loop he thought he was.

Leekirkhawley on July 24, 2012 12:50 PM

Hey #15! Pretty sure this is the most famous I'll ever be.

Mike Robinson on July 24, 2012 3:26 PM

This article is a damn plagiarism. Here's the older source that includes all the "fun stackoverflow jargon" http://www.gamasutra.com/view/feature/6504/a_game_studio_culture_dictionary.php

Morphineoverdose on July 24, 2012 11:50 PM

i like to describe code as brokeass when it is so jacked up you can't do anything with it ...
...and hackasm when you know you hacked something but it felt great pulling off a solution ...
...and he verne troyered the code ... taking a big-ass class and making it like 3 lines...

Juniorparticle on July 25, 2012 8:17 AM

@Morphineoverdose, that article was not even remotely similar to this one, with the exception of two terms: Egyptian Brackets and Yoda Conditionals.

Deany Nasseri on July 25, 2012 8:51 AM

I know that Baklava has more layers, but I prefer the term lasagna code because of the obvious relation to spaguetti code.

Daniel Serodio on July 25, 2012 11:51 AM

More comments»

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been posted. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment