Що за "Проблема XY"?
Це помилка, яка часто призводить до безглуздої витрати часу як прохача про допомогу, так і тих, хто намагається йому відповідати. Її ще називають "Проблемою Молотка". Суть її, якщо коротко, полягає в тому, що люди схильні питати про свої невдалі спроби вирішити проблему, а не про саму проблему. У підсумку виходить приблизно так:
- Людина хоче зробити X.
- Він не знає, як зробити X. але здогадується, що до успіху може привести виконання Y.
- Проте, людина не знає і те, як зробити Y.
- У цей момент він вирішує попросити допомоги у інших людей.
- Всі намагаються допомогти людині з проблемою Y. дивуючись через те, що незрозуміло, навіщо комусь взагалі може бути необхідно таке.
- Після тривалих розпитувань і ціною безлічі втраченого часу нарешті стає зрозуміло, що людина насправді хотів вирішити X. а Y зовсім ніяк йому допомогти не зможе.
А чому "Проблема Молотка"?
Через наочного, хоч і перебільшеного, приклад:
А можна якихось більш життєвих прикладів?
n00b. Як мені вивести останні три символи файлу?
feline. Ну, наприклад, так: echo $
feline. А навіщо три символи? Що треба щось?
feline. Може, розширення файлу?
feline. Так і говори прямо, чого хочеш!
feline. Не факт, що кожне ім'я файлу має трибуквенне розширення.
feline. Так що тупо взяти три останніх символу - це не вирішення проблеми.
feline. Потрібно так: echo $
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 варто дотримуватися наступних нескладних правил:
- Надавати про вирішуваному питанні досить широку інформацію - крім самого невдалого прикладу варто написати, чого ви хочете домогтися в цілому.
- Якщо хтось просить у вас більше інформації про проблему, ймовірно варто цю інформацію надати.
- Завжди пишіть про те, що ви вже пробували робити, і чому від цього відмовилися. Це допоможе точніше визначити, що саме вам необхідно.
І пам'ятайте - якби ваші здогади завжди виявлялися вірними, вам би не потрібна була допомога, вірно?
До речі, ще корисними рекомендаціями по тому, як правильно ставити запитання, з нами поділилися наші друзі з Stack Overflow.
Петро Сокових. транслятор двійкового коду в російську мову