The XY Problem

XY-проблема — это ситуация, когда человек спрашивает не о своей настоящей проблеме (X), а о каком-то частном способе её решения (Y).
В итоге тратится огромное количество времени и сил — как у человека, задающего вопрос, так и у тех, кто пытается помочь.

Как это происходит

  1. Пользователь хочет сделать X.
  2. Он не знает, как сделать X, но думает, что сможет добиться результата, если выполнит Y.
  3. Однако он не знает, как сделать Y.
  4. Пользователь спрашивает, как выполнить Y.
  5. Другие пытаются помочь с Y, но им непонятно, зачем это вообще нужно.
  6. После множества попыток и потраченного времени наконец выясняется, что на самом деле нужно было X, а Y вообще не подходит для решения задачи.

Проблема возникает тогда, когда человек зацикливается на своём предположительном решении и не объясняет исходную задачу целиком.

Как избежать XY-проблемы

💡 Помните: если бы вы точно знали, что ваша идея правильная — вы бы не спрашивали совета, верно?

Примеры

Новичок на самом деле хочет получить расширение файла, но спрашивает, как вывести последние 3 символа имени файла.

<bob> Как вывести последние три символа имени файла?
<feline> Если имя в переменной: echo ${foo: -3}
<feline> Почему именно три символа? Что ты на самом деле хочешь сделать?
<feline> Хочешь получить расширение файла?
<bob> Да.
<feline> Но не у всех файлов расширение состоит из трёх букв.
<feline> Так что просто взять три последних символа — плохое решение.
<feline> Попробуй так: echo ${foo##*.}

Если бы Анджела сразу сказала, что хочет скрыть тип своей операционной системы, разговор был бы гораздо короче и полезнее.

Angela: Команда "nmap -O -A 127.0.0.1" выводит строки, начинающиеся с "OS:". Как это изменить?
Obama: Посмотри исходники nmap, найди, как определяется Linux, и перепиши стек TCP/IP, чтобы он вёл себя иначе.
Angela: Но я не знаю API Linux.
Obama: Отпечаток nmap основан на поведении TCP/IP-стека, по-другому не получится — только переписав его.
Angela: А может, iptables это умеет?
Obama: Просто не используй определение ОС или сканирование версий.
Angela: Мне нужно, чтобы другие не могли узнать тип моей ОС.

первоисточник: https://xyproblem.info/