Как задавать вопросы правильно
Хороший вопрос экономит время и вам, и тому, кто отвечает. Учимся формулировать так, чтобы помогли быстро.
Минимальный воспроизводимый пример (MRE) — наименьший кусок кода и данных, на котором проблема воспроизводится, без всего лишнего.
Почему «не работает» — плохой вопрос
«У меня не работает, помоги» заставляет помогающего вытягивать из вас детали по одной: что не работает? как запускал? что в ошибке? Это превращает помощь в допрос и тратит время обоих. Хороший вопрос содержит всё нужное сразу.
Структура хорошего вопроса
1. Что я делаю — цель и контекст
2. Что я ожидал — какой результат должен быть
3. Что получилось — фактический результат, текст ошибки
4. Что уже пробовал — чтобы не советовали очевидное
5. MRE — минимальный код/шаги для повтора| Плохо | Хорошо |
| «Почему падает?» | «При POST /orders ожидаю 201, получаю 500. В логе: KeyError 'user_id'. Шлю JSON без user_id специально. Должен ли бэк его требовать?» |
| «Git сломался» | «После git pull получаю конфликт в lockfile. Пробовал git checkout --theirs, не помогло. Как правильно разрешить?» |
Как собрать минимальный пример
Возьмите падающий код и удаляйте всё, что не влияет на проблему, пока она не перестанет воспроизводиться. То, после чего проблема пропала, и есть причина. Часто вы найдёте ответ сами в процессе — это называют «отладкой резиновой уточкой»: объясняя проблему, вы её решаете.
def average(numbers):
return sum(numbers) / len(numbers)
print(average([]))Вывод:
ZeroDivisionError: division by zero
Вот это — хороший MRE: три строки, любой может вставить и увидеть ту же ошибку. Не «вся функция обработки заказа на 200 строк», а минимум.
Как работает под капотом
Когда вы готовите MRE, вы делаете за помогающего самую дорогую часть — локализацию. Ему остаётся только узнать причину, а не воспроизводить вашу среду. Поэтому на хорошо оформленные вопросы (на StackOverflow, в чате команды) отвечают в разы чаще и быстрее: цена ответа низкая.
Правило «поищи 15 минут, потом спрашивай»
Баланс между «спросить сразу» и «копать вечно»: потратьте разумное время на самостоятельный поиск (ошибка в гугле, документация, чтение кода), чтобы не дёргать людей по тривиальному. Но не застревайте на полдня из гордости — застрявший на 4 часа джун дороже, чем вопрос на 5 минут.
Частые ошибки
- Скриншот текста ошибки вместо текста. По тексту можно искать и копировать, по картинке — нет.
- «Срочно!!!» без сути. Срочность не заменяет деталей.
- Личка вместо общего канала. В общем канале ответят быстрее и ответ останется другим.
- Не сказать, что уже пробовал. Получите советы, которые уже не сработали.
Итог
- Хороший вопрос содержит: цель, ожидание, факт, что пробовали, MRE.
- Минимальный воспроизводимый пример — главный инструмент: часто вы решаете проблему, пока его собираете.
- Текст ошибки — текстом, не скриншотом.
- Поищите сами, но не застревайте из гордости.