The YX Problem

The youngest kid digs building cardboard houses. In that brief interval between the unboxing of some large item for the house, and the time it takes to break down the packaging for disposal, he emerges from the shadows, a Jawa furtively dragging boxes up to his bedroom for scrap. There, he’ll cut, gouge, tape and zip tie the cardboard to whatever favela of a prior design he’d already erected. Where we see trash, he sees a remodeling project.

One time, he struggled with a particular feature and asked for help. Being lazy, his vision was that rather than have to drag a box of candy into the kid-cave with him, or reach for a box, he’d instead make a little trigger that would dispense a piece of candy from a hopper with the flick of a finger, letting gravity do the work of delivering sugar to his gullet.

The problem? The trigger mechanism would stick open; candy would pour through, and instead of a Mike and Ike or a Buncha Crunch morsel being dropped, he’d end up being showered with candy. His question: how do I make the trigger mechanism close faster?

I thought for a bit. There were a lot of ways I could answer.

###

My hesitation came from years of asking and answering problems in situations involving an imbalance in knowledge, and I could see the traps. Online forums describe this phenomenon as the “XY Problem.” The XY Problem involves someone asking for a solution to a problem they’re having with a particular aspect of their solution (the X), rather than asking for help with the bigger picture or actual problem they’re trying to solve (the Y). Wikipedia describes the XY problem as a problem in communication, while StackOverflow, otherwise known as Our Lady of Perpetual Protocol and Pedantry, tends to see the earnest askers-of-X as serial birthday-cake-poopers. The typical manifestation of the XY problem from a communication standpoint is that the askers are peppered with questions and comments about the context, often with one or more intonations that can be berating, sarcastic, officious, or mocking: why do you want to do X, why would anyone want to do X, if you’re really asking about Y, then ASK FOR WHAT YOU WANT, etc.

David Gerard calls this knee-jerk response the YX problem. The YX problem is the overreaction to XY problems: it’s basically (“actually?”) a form of #geeksplaining—a fervent belief that every forum question is is at its heart an XY problem, and then in turn refusing to answer X, while shaming the questioner as naive or incompetent because they didn’t frame enough of the context of the Y problem (whether there even is a Y problem or not.) StackOverflow is notorious for this, closing questions quickly—which is why, when the problem you’re Googling is in fact X, that you so often find that the StackOverflow questions are prematurely closed, and the X answers that managed to slip in aren’t as fully developed or discussed enough to help you with X. It’s the HTTP 400 Bad Request response of Q&A forums.

I confess to the Almighty StackOverflow (and to you, my brothers and sisters), that I have sinned on both sides of the XY and YX problems in my career. I’ve decided that personally, the antidote to the YX problem is to engage XY problems by giving the questioner the benefit of the doubt that the problem may in fact be X, and first answering the question at hand. Then, if there’s suspicion that maybe there is a Y problem lurking, offer some general speculation about solutions to classes of related Y problems, and point to other considerations when solving X.

To StackOverflow’s credit, they’re starting to recognize the toxic culture they’ve allowed to arise. But they have a long way to go to catch up with some of the healthier cultures out there who in practice live up to their cultural ideals and offer much more pleasant interactions.

###

I end up offering the kid some tips on adjusting the rubber bands on his dispenser trigger, and try to point out how some sort of stop controlling the size of the dispenser’s opening might help. I’m no mechanical engineer, and he’s better than me spatially. He’ll figure it out, I hope.

I could have responded differently. I could have wasted a lot of breath taking the YX track. Why do you want to eat candy in a cardboard box? Why do you even want to eat candy? Why are you building this with cardboard instead of wood, a far superior medium? It sounds like you’re hungry, why don’t you eat a banana instead?

The kid comes back later in the day after tinkering on several iterations and working through a number of dead ends. With some embarrassment, he hands me the box of candy and points out that the candy box designer had already more or less solved the problem by offering a little pre-perforated corner one could punch out, its dimensions carefully tuned to dispense a candy or two at a time with a little shake, using the friction and odd shapes of the candy inside to limit the rate of flow. This opened up new design possibilities to him, changing the dispensing solution to something that might be built with a simple lever to oscillate and a counterweight to deactivate.

Instead of unleashing some existential rant, or beating him down with an interminable Socratic exercise, or pointing him to the long history of coin-operated gum ball machine design, I answered the question at hand. And that gave him the opportunity to stay engaged, to explore a solution space, to hit walls and reassess what tools and knowledge he had at his disposal, and ultimately, to solve the problem on his own.

Rust: If You Get Stuck

If you get stuck trying to pick up Rust, reach out. The Rust Community has many good resources, and is the least toxic development community I’ve ever seen, but you’re always free to contact me for any question–the only way I’m going to get any better is to move on from the “see one, do one” and into the “teach one” world. Hit me up on Twitter @csfinn, or work if you’re from there.

I’m close to going all in on Github; the community seems more interesting and plays to my better nature, rather than against it. I’ve been spending a bit of time watching various Twitch.tv creative channels, and I am starting to think that the only way out of this attention deficit mess that click-for-eyeballs social media has created is to primarily communicate through published works and mediated interaction (queues). Longer poston this topic in the works. The basic idea is to create a “creative API” that boxes input and output in a way that encourages creativity while deterring distraction and non-productive behaviors on either side of the transaction. More later.

Wa-Tor: Rust

Just posted a couple of new repositories today in anticipation of tomorrow’s tech talk at work. They include:

You can mess around with the WebAssembly version here: Rust, WebAssembly and Wa-Tor

More details in the project READMEs; finishing up the talk tonight, and hoping to have links to the text, presentation and maybe even the video later.

Fun times.

Getting Started

I write a lot, but publish little that goes beyond a small circle of co-workers and family. This blog is a start at publishing more, on a platform that isn’t corporate-owned or driven by generating advertising revenue for social media behemoths.

I have some general ideas of what I’ll be writing about. Although there’s nothing currently in the queue, you might be able to get a taste by checking out my now page.