¿Qué es?
El problema XY consiste en preguntar por tu intento de solución en lugar de por tu problema real. Esto provoca una cantidad enorme de tiempo y energía desperdiciados, tanto por parte de quien pide ayuda como de quien la ofrece.
- El usuario quiere hacer X.
- El usuario no sabe cómo hacer X, pero cree que podrá apañárselas hasta dar con la solución si consigue hacer Y.
- El usuario tampoco sabe cómo hacer Y.
- El usuario pide ayuda con Y.
- Los demás intentan ayudarle con Y, pero están desconcertados porque Y parece un problema muy raro de querer resolver.
- Tras mucha conversación y mucho tiempo perdido, por fin queda claro que lo que el usuario quería de verdad era ayuda con X, y que Y ni siquiera era una solución adecuada para X.
El problema aparece cuando alguien se ancla en lo que cree que es la solución y es incapaz de dar un paso atrás y explicar el asunto completo.
¿Qué hacer al respecto?
- Incluye siempre información sobre el panorama general junto con cualquier intento de solución.
- Si alguien te pide más información, dásela.
- Si ya has descartado otras soluciones, explica por qué las descartaste. Eso aporta más información sobre tus requisitos.
Recuerda: si tus hipótesis de diagnóstico fueran acertadas, no estarías pidiendo ayuda, ¿verdad?
Ejemplos
Ejemplo 1
El novato no quiere en realidad los tres últimos caracteres de un nombre de fichero: quiere la extensión. ¿Por qué preguntar entonces por los tres últimos caracteres?
<bob> ¿Cómo puedo mostrar los tres últimos caracteres de un nombre de fichero?
<feline> Si están en una variable: echo ${foo: -3}
<feline> ¿Por qué tres caracteres? ¿Qué es lo que quieres DE VERDAD?
<feline> ¿Quieres la extensión?
<bob> Sí.
<feline> No hay ninguna garantía de que todos los nombres de fichero tengan
<feline> una extensión de tres letras, así que coger tres caracteres a ciegas
<feline> no resuelve el problema.
<feline> echo ${foo##*.}
Ejemplo 2
Si Angela hubiera empezado explicando que lo que quiere es impedir que otros detecten su sistema operativo, esta conversación habría sido mucho más corta y mucho más productiva.
Angela: «nmap -O -A 127.0.0.1» devuelve unas líneas que empiezan por «OS:». ¿Cómo lo cambio?
Obama: Mira el código fuente de nmap, averigua cómo deduce la parte de Linux y luego reescribe tu pila TCP/IP para que no funcione de una forma que nmap pueda detectar.
Angela: Ya, pero es que no sé nada de la API del sistema en linux.
Obama: Bueno, la huella que usa nmap se basa en cómo funciona la pila TCP/IP; no hay forma real de evitarlo salvo reescribiendo las partes correspondientes de dicha pila.
Angela: Necesito de verdad evitar esos mensajes. ¿Puede iptables hacer ese trabajo?
Obama: Bueno, no uses detección de sistema operativo ni escaneo de versiones.
Angela: Lo que quiero es impedir que otros conozcan el tipo de mi sistema operativo.
Fuentes
Esta página es la versión en español de xyproblem.info, que a su vez recoge el material de las fuentes citadas.