Как правильно задавать вопросы, или "Проблема XY"
Вы читаете свежую версию статьи. Мы обновили материал, изначально опубликованный 7 января 2017 года.
29К открытий29К показов
Что за «Проблема XY»?
Это ошибка, которая зачастую приводит к бессмысленной трате времени как просящего о помощи, так и тех, кто пытается ему отвечать. Её ещё называют «Проблемой Молотка». Суть её, если коротко, заключается в том, что люди склонны спрашивать о своих неудачных попытках решить проблему, а не о самой проблеме. В итоге получается примерно так:
- Человек хочет сделать X;
- Он не знает, как сделать X, но догадывается, что к успеху может привести выполнение Y;
- Тем не менее человек не знает и то, как сделать Y;
- В этот момент он решает попросить помощи у других людей;
- Все пытаются помочь человеку с проблемой Y, удивляясь и не понимая, зачем кому-то вообще это может быть нужно;
- После длительных расспросов и ценой уймы потерянного времени наконец-то становится понятно, что человек на самом деле хотел решить X, а Y никак ему помочь не сможет.
А почему «Проблема Молотка»?
Из-за наглядного, хоть и утрированного, примера:
А можно каких-нибудь более жизненных примеров?
Конечно:
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К открытий29К показов