Как правильно задавать вопросы

В некоторых уроках или упражнениях может быть сложно разобраться. В таких ситуациях мы рекомендуем задавать вопросы в разделе «Обсуждение». Специалисты поддержки отвечают на сотни обращений в день и обработали уже более 40 тысяч вопросов.

Почему появилась эта статья

У новичков есть заблуждения относительно опытных программистов. Многим кажется, что разработчик может лишь взглянув ошибку или просто прочитав вопрос определить причины ошибки и подсказать решение. Если бы это было правдой, чтобы помогать студентам, мы должны были бы:

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

Но мы так не можем :)

Из-за недостатка информации в плохо сформулированном вопросе приходится тратить больше времени на его понимание, а обсуждение затягивается для выяснения деталей. Поэтому рекомендуем следовать простому, но важному принципу:

Для получения быстрого и качественного ответа, вопрос должен быть правильно сформулирован и содержать максимум необходимой для решения информации.

Примеры

В этой статье мы покажем примеры неправильных вопросов, реакцию специалиста на них, опишем логику рассуждений и подскажем, как задавать вопросы правильно.

Покажите код

Вопрос студента: У меня не работает код.

Реакция: Какой код? В упражнении, примере из теории или из самостоятельного задания? А где запускается этот код: в редакторе Хекслета или на домашнем компьютере? Не работает — это значит, что не запускается, или запускается, но выдает неправильный результат?

У вопроса отсутствует контекст и данные, которые можно анализировать. Без контекста невозможно понять о чём идёт речь. И даже зная контекст, нужно понимать, какие действия были выполнены и к каким результатам они привели. Допустим, у студента ошибка в решении упражнения, в таком случае он может сохранить своё решение в код-ревью, чтобы показать код и результат его запуска.

Как правильно задать вопрос: Решил задачу в практике, но код прошёл два из трёх тестов. Я добавил отладочную печать на каждый шаг и вижу, что на шаге 3 данные не изменяются, как надо. Помогите понять почему. Ссылка на код-ревью.

Опишите свои действия

Вопрос студента: Выполняю второй пункт самостоятельного задания про работу с файловой системой. Всё работает, но вместо результата работы возвращается ошибка, что нет прав.

Реакция: Всё работает или не всё? Каких прав нет: на чтение или запись файлов? Почему нет текста ошибки?

Собственная интерпретация ошибки студентом вносит ещё больше путаницы. Это похоже на консультацию у врача по телефону. Информация о том, что у пациента болит нога, ничем не поможет врачу, пока не будут сделаны снимки и анализы. Так же и в программировании: пока нет кода и результатов его работы, диагностировать неисправность по одному лишь описанию очень сложно. Если студент опишет свои действия и их результат, то будет проще понять истинную причину ошибки.

Как правильно задать вопрос: Выполняю команду ./bin/run из второго шага самостоятельного задания и получаю ошибку bash: ./bin/run: Permission denied. Подскажите, что это значит и как исправить?

Расскажите, где запускается код

Вопрос студента: Запустил последний пример из теории у себя на компьютере, но он возвращает ошибку. (Прикреплен скриншот текста ошибки и кода).

Реакция: Какая операционная система? Какой командой запускался код? Какая версия интерпретатора установлена на компьютере?

Даже если предоставлена информация про код и способ его запуск, нет никакой гарантии, что получится разобраться с настройками компьютера студента. Причины могут быть в настройках BIOS, отсутствии каких-то библиотек на ПК или других специфичных ситуациях, вплоть до зависимости от железа. Можно попробовать задать такой вопрос в нашем Слаке. Возможно, с подобной ошибкой уже разобрался другой студент. Но нужно быть готовым выполнить всю локальную настройку самостоятельно.

Как правильно задать вопрос: Запустил код из теории у себя на компьютере, но он возвращает ошибку. Выполнял запуск кода в терминале VS Code на Ubuntu 18.10, версия языка: 3. Вот исходный код на Гитхабе, там же есть текст ошибки в файле .log: ссылка.

Поделитесь результатами отладки

Вопрос студента: У меня не работает код, посмотрите в чём ошибка. Ревью: ссылка.

Реакция: И как разобраться с этим кодом? Оставил бы хоть какие-то рассуждения почему код не работает. Он пытался его дебажить? Не вижу ни одного места с отладочной печатью.

Даже опытный разработчик не способен исполнять код в уме или, просто взглянув, указать на место ошибки. Единственный способ разобраться — это отладка и рефакторинг. Студенты однажды придут в реальные проекты, где кода будет в разы больше и он будет гораздо сложнее. Поэтому мы только даём подсказки и советы, но не занимаемся отладкой кода и его исправлением. Посмотрите это видео про отладку, где рассказывается, почему это важный инструмент для каждого программиста: https://www.youtube.com/watch?v=9iwYRcw3A8A

Как правильно задать вопрос: На некоторых тестах код прерывает выполнение. Я добавил отладочную печать и увидел, что цикл выполняется несколько раз и потом прерывается. Подскажите, где может быть ошибка: ссылка на ревью.