Typical Hipster Office
Typical Hipster Office

Have you ever been to one of those fancy parties those Dot-Com people throw? You know the ones: It’s at their office in some scary part of SoMa. The building used to be a wool cannery, but now that the company has 80 dicktillion bucks they’ve installed a skateboard ramp and drive-thru Kombucha stand.

Typical Hipsters
Typical Hipsters

You’re surrounded by 30-something single men who are trying hard to look like 20-something androgynous women. They’re all wearing wool caps and their younger sisters’ jeans, sipping gold-plated champagne and complaining about how it’s just not as good as that PBR that had last night at that one bar in the Tenderloin.

They’re all talking about computer programming. You’re not a programmer.

But you can fake it with these three simple phrases.

 

“Yak Shaving”

 

Hairy Yak
Hairy Yak

Yak Shaving is the work you have to do before you can do the work you have to do. It is the layer of civet cat feces you have to sort through before you find the coffee beans. Wiktionary says it is “Any apparently useless activity which, by allowing you to overcome intermediate difficulties, allows you to solve a larger problem.”

A good real-world example is this:

You need to steam-clean your carpet. But before you do that, you need to move all the furniture to another room. But before you do that, you need to make space in that room for the furniture. But before your do that, you have to clean that room. But before…

 

The thing you need to do is to steam-clean the goddamned carpets, but the bulk of the actual work involved isn’t doing the actual cleaning, it’s getting ready to clean.

When a programmer uses the phrase “yak shaving”, it’s generally meant to be insulting. It implies that he doesn’t have time for this kind of faffing-around and that this seemingly-redundant work should have been done before by someone else or, more likely, shouldn’t have existed in the first place.

How to use this phrase to fit in:

Some Programmer: .. and in the end I spend two days and write my own JSON parser to decode the statuses.

You: Sounds like a lot of yak shaving!

Some Programmer: Yes, exactly!

 

“Cargo Culting”

 

A little backstory:

Out in the South Pacific there is an island called Tanna which used to host a large number of US Soldiers during World War II. When the soldiers came they brought with them goods from the west that the native people had never seen, and this “cargo” was greatly sought after.

But when the war ended and the US military left, so did the supply of “cargo”. So, in order to encourage the soldiers to return to Tanna, the native people started to build symbolic aircraft landing strips and control towers. They also started wearing hand-made military uniforms and staging parades as they had once seen the soldiers do, all in hopes that the cargo would return and along with it the prosperity they had once known.

John Frum "cargo" cult and their ceremonial flag raising
John Frum "cargo" cult and their ceremonial flag raising

So, cool story bro, right? What does this this have to do with programming?

When people use the term “cargo culting”, as a verb, they mean that someone is doing something because they expect a certain result but don’t really understand what is actually going on.

An example of this in programming is when a novice programmer will cut-and-paste from one project to another and include a lot of code that doesn’t have any real use inside the new project. But, because the programmer doesn’t understand what the code does, they bring it all over in hopes that it will work the same way as it did in the old program.

A real-world example is another “cool story, bro”:

Back when supermarkets had doors that automatically opened when you stepped on the black rubber square in front of them I had a niece who saw this and thought it was *squeee* AMAZING. She was 6-years-old, so she didn’t understand the concept of pressure sensors, but she decided she wanted an automatic door in her bedroom.

One day she cut out a big black square of paper and put in in front of her door, but was driven to tears them the door wouldn’t open when she jumped on the square! For her, the square was the thing that opened the door and she didn’t know that there was a lot more to the automatic door than just the parts she could see.

 

How to use this phrase to fit in:

Some Programmer: .. and then he got mad because he thought installing the MySQL Ruby Gem would also install the MySQL server.

You: Newbies cargo-cult like that all the time, he’ll get over it.

Some Programmer: Yeah, you’re right. But I’M the one who has to teach him!

 

“Bikeshedding”

Bike Shed
Bike Shed

 

“[you can] get approval for building a multi-million or even billion dollar atomic power plant, but if you want to build a bike shed you will be tangled up in endless discussions.” — Poul-Henning Kamp

A bike shed (or bikeshed if you prefer) isn’t a euphemism; they literally mean “a shed to store a bike in”. But when programmers use the term as a verb (“bike shedding”) or as a noun (“it’s a bike-shed!”) they mean that they think people are arguing over something that really doesn’t matter.

The real world example is actually the genesis of the phrase:

“A bike shed on the other hand. Anyone can build one of those over a weekend, and still have time to watch the game on TV. So no matter how well prepared, no matter how reasonable you are with your proposal, somebody will seize the chance to show that he is doing his job, that he is paying attention, that he is *here*.”

Of all the phrases here, “bike shedding” may be the most dangerous. “Yak shaving” implies there is something wrong with the problem, not the programmer. Accusing someone of “cargo culting” will likely turn in to a spirited argument on design patterns. But insisting someone is “bike shedding” on a particular topic implies that person is doing something intentionally contentious.

How to use this phrase to fit in:

Some programmer: Hoskins is saying we should put the scripts in the “/bin” directory, but Jones says “/scripts”, and we can’t go any further that’s decided.

You: Can’t they stop bike-shedding and just move on!

Some Programmer: Yeah, then we could start shaving the real yaks…

 

Compound Bonus Phrases

 

“He was trying to shave the yak by cargo-culting code from another project.”

“They’re just bike shedding over which yak to shave first.”

“I know it’s cargo-culting, but I need to copy over the whole code base because I don’t have time to shave the yak right now.”

Credit where it is due: this post was inspired by Brandon Hays.