Sometimes I go on project archeological digs with my clients through their projects, often focusing on their code bases. We sometimes run a “code bazaar”, where we set up a half-dozen machines with code to dig through, then walk in pairs from machine to machine, digging and taking notes. During these digs, I institute a key rule:

Ask “why?!”, but never answer.

What kind of “why” question? Why, the most perplexing one: Why the $%@# did we do this?! We feel free to ask the question, but we don’t answer it. If someone feels the impulse to answer it, someone says, “We don’t go there.”

This rule serves a dual purpose. By never answering “why”, we avoid the exercise devolving into wallowing and blaming. We avoid counter-productive actions like justifying, going on the defensive, and shifting the blame. This allows us to have an open, frank discussion of the project in a safe environment. Why, then, do we permit people to ask “why”? Simply put, we don’t deny human impulse.

You’ve experienced it. You’ve reviewed code, screamed “What the fuck?!” and shook your head. I recently read code that made me angry enough that I had to stand and walk around to calm down. (It assigned a field to itself. Don’t ask.) I understand the power of the impulse to recoil, then demand of the universe how it could allow such a thing to happen. For this reason, we permit each other to ask “why”, and even to do so in a loud, obnoxious, pained tone of voice. We simply don’t answer that question, and if someone tries, we remind them that “we don’t go there.”

Try it the next time you have to rummage through code, documents, or some other project artifacts as a group. Ask the group to agree on one rule: you can ask “why”, but you can’t answer it.

This principle is one of many tools I use to survive legacy code. Are you battling legacy code? Would you like to survive it? I believe I can help. Click here for more.

One More Thing…

One commenter raised a slight objection with this:

I agree with avoiding blame, but I often find value in trying to drill down a bit on the WHY?!?!?!? @eraserhd called this Code Archaeology, a term I love. Why is it this way? What am I missing? Sure, most of the time I’m just looking at a mistake, but a great many times I discover some subtlety that I glossed over in my haste to make this mess make sense.

I agree. Even when I encourage people not to answer, they can’t help but answer at least some of the time, and those discussions tend to be more of the archeology type, rather than the blaming type. Consider the “…but never answer” part a Novice Rule1 to help gain trust. First, we establish that we can react to the horrifying things we see without touching off a firestorm. After we’ve done that, then we turn these sessions into productive archeological digs.

Reactions

(Links to social media posts have become complicated since the X-odus of late 2024.)

This morning we loudly shouted "Who on earth wrote this #$%^&". The questions was refused an answer. We feel clensed. /cc @jbrains

— Marcin Floryan (@mfloryan) September 18, 2014

Dave Rooney offered a story as an apparent counterexample to this principle, but unfortunately, Storify died in 2018 and since the X-odus of 2024, the details appear to have been lost to history.

I made the mistake of answering when somebody asked “Why?!” today. I forgot my own advice: (a link back to this article)

— ☕ J. B. Rainsberger (@jbrains) September 7, 2017

Let me clarify. When someone genuinely and thoughtfully asks “Why?”, certainly that question merits an answer; however, a plaintive cry of “Why?!” (almost) never wants answer. Instead, it begs for us to hear it and acknolwedge the suffering in it. When I say “ask ‘why?!’, but never answer”, I mean this kind of “Why?!” I know that headlines generally don’t express this nuance, but then, we write headlines to attract attention and not to express nuance. That’s marketing.

Dave seemed to get the inflection of my nuance.2

Genuine question… which I think informs me about what you meant in the first place. :)

— Dave Rooney (@daverooneyca) September 7, 2017

Some thoughtful person suggested that on discovering confusing code, "ask why, but don't answer". As a means of being able to express frustration but let go of a need to attribute to an individual.

Anyone know what I'm talking about and who the author is?

— Graham Allan (@Grundlefleck) November 17, 2022

  1. A rule suitable for Novices in the Dreyfus Model sense of the term. Eventually, one learn when it’s OK to break the rule.↩︎

  2. This is one of my favorite Benny Hill lines. Yes; I have favorite Benny Hill lines. What of it?↩︎