Як правильно задавати питання, чи проблема xy

Як правильно задавати питання, чи проблема xy

Що за "Проблема XY"?

Це помилка, яка часто призводить до безглуздої витрати часу як прохача про допомогу, так і тих, хто намагається йому відповідати. Її ще називають "Проблемою Молотка". Суть її, якщо коротко, полягає в тому, що люди схильні питати про свої невдалі спроби вирішити проблему, а не про саму проблему. У підсумку виходить приблизно так:

  • Людина хоче зробити X.
  • Він не знає, як зробити X. але здогадується, що до успіху може привести виконання Y.
  • Проте, людина не знає і те, як зробити Y.
  • У цей момент він вирішує попросити допомоги у інших людей.
  • Всі намагаються допомогти людині з проблемою Y. дивуючись через те, що незрозуміло, навіщо комусь взагалі може бути необхідно таке.
  • Після тривалих розпитувань і ціною безлічі втраченого часу нарешті стає зрозуміло, що людина насправді хотів вирішити X. а Y зовсім ніяк йому допомогти не зможе.

А чому "Проблема Молотка"?

Через наочного, хоч і перебільшеного, приклад:

Як правильно задавати питання, чи проблема xy

Як правильно задавати питання, чи проблема xy

А можна якихось більш життєвих прикладів?

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.

Петро Сокових. транслятор двійкового коду в російську мову

Схожі статті