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

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

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

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

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

Но мы так не можем 🙂

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

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

Примеры

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

Покажите ошибку и код

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

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

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

Чаще всего при обучении на Хекслете студенты сталкиваются с ошибками при решении упражнений. В таком случае стоит сохранить решение в код-ревью — это лучший способ показать и код, и результат его запуска, и вывод тестов.

Если помощь нужна не с упражнением, код-ревью не подойдет. Но есть специальные сервисы, которые помогут показать код, текст ошибки и вывод тестов так, чтобы их было удобно читать. Вот некоторые из них:

  • Pastebin — подойдет для быстрого обмена фрагментом кода или других данных
  • Codesandbox и Codepen — для задач по фронтенду (HTML, CSS, JavaScript)
  • Replit — для бэкенда (Node.js, Python, PHP и многие другие языки)

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

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

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

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

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

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

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

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

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

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

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

Используйте отладочную печать

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

Реакция: Пытался ли студент решить вопрос самостоятельно? Дебажил ли он код? Он не хочет разбираться или действительно не разобрался?

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

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

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