Карта дня, май, перетяжка
Карта дня, май, перетяжка
Карта дня, май, перетяжка

Как правильно задавать вопросы, или "Проблема XY"

Аватарка пользователя Gregory Bass
Отредактировано

Вы читаете свежую версию статьи. Мы обновили материал, изначально опубликованный 7 января 2017 года.

29К открытий30К показов
Как правильно задавать вопросы, или "Проблема XY"

Что за «Проблема XY»?

Это ошибка, которая зачастую приводит к бессмысленной трате времени как просящего о помощи, так и тех, кто пытается ему отвечать. Её ещё называют «Проблемой Молотка». Суть её, если коротко, заключается в том, что люди склонны спрашивать о своих неудачных попытках решить проблему, а не о самой проблеме. В итоге получается примерно так:

  • Человек хочет сделать X;
  • Он не знает, как сделать X, но догадывается, что к успеху может привести выполнение Y;
  • Тем не менее человек не знает и то, как сделать Y;
  • В этот момент он решает попросить помощи у других людей;
  • Все пытаются помочь человеку с проблемой Y, удивляясь и не понимая, зачем кому-то вообще это может быть нужно;
  • После длительных расспросов и ценой уймы потерянного времени наконец-то становится понятно, что человек на самом деле хотел решить X, а Y никак ему помочь не сможет.

А почему «Проблема Молотка»?

Из-за наглядного, хоть и утрированного, примера:

Как правильно задавать вопросы, или "Проблема XY" 1
Как правильно задавать вопросы, или "Проблема XY" 2

А можно каких-нибудь более жизненных примеров?

Конечно:

n00b: Как мне вывести последние три символа файла?feline: Ну, например, так: echo ${foo: -3}
feline: А зачем три символа? Что надо-то?
feline: Может, расширение файла?n00b: Да.feline: Так и говори прямо, чего хочешь!
feline: Не факт, что каждое имя файла имеет трехбуквенное расширение.
feline: Так что тупо взять три последних символа — это не решение проблемы.
feline: Нужно так: echo ${foo##*.}

Или…

Angela: ‘nmap -O -A 127.0.0.1’ возвращает несколько строк, начинающихся с ‘OS:’. Как изменить это?
Obama: Глянь в исходники nmap, отыщи то место, где оно определяет ось, и перепиши TCP/IP стек, чтобы тот ничем не выдавал nmap операционную систему.
Angela: Круто, но я ничего не знаю про api linux’а.
Obama: Очень жаль, но, похоже, кроме как переписать TCP/IP стек, никакого выхода нет.
Angela: Но мне ооочень нужно избежать подобных сообщений :с Может iptables мне поможет?
Obama: Ну, ты можешь просто не использовать обнаружение ОС, в чём проблема?
Angela: Я хочу, чтобы и другие не могли узнать, какая у меня операционка.

Да, похоже, так можно потерять немало времени. И какая же мораль?

Чтобы избежать проблемы XY, стоит придерживаться следующих несложных правил:

  • Предоставлять достаточно широкую информацию  о решаемом вопросе — кроме самого неудачного примера стоит написать, чего вы хотите добиться в целом;
  • Если кто-то просит у вас больше информации о проблеме, вероятно, стоит эту информацию предоставить;
  • Всегда пишите о том, что вы уже пробовали делать и почему от этого отказались. Это поможет точнее определить, что именно вам необходимо.

И помните: если бы ваши догадки всегда оказывались верными, вам бы не нужна была помощь, верно?

Следите за новыми постами
Следите за новыми постами по любимым темам
29К открытий30К показов