This isn't necessarily restricted to software engineering, but I'm asking here because I'm curious to know if there's a specific phrase used within the context of SE, as it's where most of my Q&A activity is performed..

For a long time I've used various community-help resources such as SE, EE, forums, even IRC and similar, places and overwhelmingly I find that people come asking for help do so in one of two ways:

  • The have a set of requirements for inputs and outputs or some kind of program spec, no idea how to get from one to the other, so theyre asking for help, pointers, or someone to do it for them
  • They have had a stab at implementing a solution, and it sucks - it's not to spec, does things in a terrible way, only works half the time etc

Those in the second group are sometimes harder to help because they're emotionally invested in their crap solution - it's taken hours to write, it looks like it might be the thing they need if they can just work out that last bug.. But really it needs throwing away and doing over, better. They will, however, pester for help fixing their broken solution, rather than accepting offers of help solving the actual problem

Is there a name for the concept, either:-

  • for the notion of "fix the problem not the problem with that broken solution" or
  • a (possibly particularly SE oriented) name for the emotional affliction that prevents them from taking this better way/throwing all that junk code out and starting over etc

I'm curious because I'd like to be able to say "this is a recognised phenomenon called XYZ, have a read up on it and how it's harmful to your overall development as a software engineer and how you should avoid it.. then come back and we can fix the actual problem" in a SE flavoured way (like, I'm sure teachers have their own context word for cardboard analysis/rubber duck debugging).

(ps; I really struggled with tags for this one, open to suggestions [including "not a good fit for SE"])

  • 1
    Ironically, the common name on SE for "What are you really trying to achieve?" is, in fact, the "XY problem". – Kilian Foth Dec 7 '17 at 12:00
  • 1
    It's the "XY solution!" :) – Caius Jard Dec 7 '17 at 12:01
  • 'Firefighting'? – Ewan Dec 7 '17 at 12:01
  • 1
    is it 'JFDI' ?? ?? – Ewan Dec 7 '17 at 12:02
  • Fixing the symptoms of a bad design is a palliative effort. Fixing the root cause by using a better solution is a curative effort. But I'm not sure that really answers your question. You also touch on the idea of not using anti-patterns to solve a problem. I don't think there is a standard phrase for "you are using an anti-pattern; throw it away and start from scratch with a proper solution", which seems to be what you are looking for. – David Arno Dec 7 '17 at 12:31

Expanding on a comment by Caius Jard, I think this is the XY problem.

The XY problem is asking about your attempted solution rather than your actual problem.

That is, you are trying to solve problem X, and you think solution Y would work, but instead of asking about X when you run into trouble, you ask about Y.


I agree that this is probably an XY Problem, but I think the reasoning behind it is an example of the sunk cost fallacy. The gist of it is, "I've put so much time/effort/money into this that I can't quit now! If I do, it will all have been for nothing!" Or as they put it:

a human behavior pattern in which an individual or group—when faced with increasingly negative outcomes from some decision, action, or investment—continues the same behavior rather than alter course.

  • The sunk cost fallacy is the actual problem, while as the XY Problem is the behaviour born from their fallacy. You could make this answer self-contained if you explained a little what the XY Problem is, though I realise it's been explained in the other answers as well so is a little redundant. – Erdrik Ironrose Dec 8 '17 at 9:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.