Что это такое?
Проблема XY (Ошибка молотка, Ошибка XY, Вопрос XY, XY Problem) — это когда вы спрашиваете о своей попытке решить проблему, а не о самой проблеме. В результате вызванного недопонимания все стороны теряют огромное количество времени и сил.
- Субъект хочет X.
- Субъект не знает как сделать X, но думает, что решение заключается в Y.
- Субъект не знает как сделать и Y.
- Субъект спрашивает помощи по Y.
- Другие пытаются помочь субъекту с Y, но несколько в замешательстве, потому что Y кажется очень странной проблемой.
- Спустя множество сообщений и кучу потерянного времени, оказывается, что субъекту нужна помощь с X, а Y даже не является подходящим для X решением.
Проблема XY возникает, когда люди слишком фокусируются на своём решении, и не могут отступить и пояснить суть своей проблемы.
Как этого избежать?
-
Старайтесь прилагать к описанию вашей попытке решения контекст проблемы целиком.
-
Если вас просят дать больше информации — сделайте это.
-
Если вы уже отмели какие-то варианты, расскажите, почему вы так поступили. Это позволит получить представления о ваших требованиях к решению.
Помните: если вы считаете, что действительно нашли решение, и просто не знаете, как его реализовать — то тут явно что-то не так.
Примеры
Пример №1
valera2000 требуются не последние три символа в названии файла, а расширение того — так почему бы сразу не спросить об этом?
<valera2000> Как получить последние три символа в названии файла?
<mary_goes_round> Если название в переменной foo, то: echo ${foo: -3}
<mary_goes_round> Но почему три? Тебе точно требуется ИМЕННО это?
<mary_goes_round> Может, расширение файла?
<valera2000> Ага.
<mary_goes_round> Нет гарантии, что расширение в названии файла будет состоять из трёх символов.
<mary_goes_round> Так что просто их взятие будет работать лишь в определенных случаях.
<mary_goes_round> echo ${foo##*.}
Пример №2
Если бы Валера начал с того, что он хочет предотвратить определение его ОС, диалог мог бы стать намного короче и продуктивнее.
Валера: ‘nmap -O -A 127.0.0.1’ выдаёт несколько линий с ‘OS:’. Можно это как-то изменить?
Маша: Глянь исходный код nmap, найди как оно определяет Линукс, и перепиши стэк TCP/IP так, чтоб nmap не мог определить ОС.
Валера: Ага… Но я вообще не разбираюсь в API систем Линукса.
Маша: Ну, nmap определяет по тому, как оперирует стэк TCP/IP. Так что способа изменить это дело нет, кроме как переписыванием стэка.
Валера: Я очень хочу избежать вывода этих сообщений. Может, iptables справится с этой задачей?
Маша: Можешь просто не использовать определение ОС или сканирование версии в nmap.
Валера: Я хочу скрыть свою ОС от других, а не перестать видеть чужие.
Оригинал ··· Репозиторий