Как задавать вопросы ментору или старшему разработчику

Illustration of a person sitting on the ground, leaning against a wall, absorbed in reading a book. They are dressed casually with a highlighted scarf and sneakers. Illustration of a person sitting on the ground, leaning against a wall, absorbed in reading a book. They are dressed casually with a highlighted scarf and sneakers.

Если не знаешь, надо не бояться, а узнавать

Поговорим о правилах общения разработчиков. Точнее, разработчиков помладше и разработчиков постарше. Неважно, идёт ли речь об отношениях “учитель-ученик” или “синьор-джуниор”, есть определённые способы улучшить коммуникацию между вами и более опытным программистом.

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

Не задавайте вопросы

В первую очередь нужно убедиться стоит ли тратить своё время и время коллеги\ментора на этот вопрос. Поэтому стоит сначала задать несколько вопросов самому себе:

  • Изучил ли я документацию к использумой технологии?
  • Потратил ли я несколько часов на чтение исходников или решение проблемы каким-нибудь ещё путём?
  • Проверил ли я гугл на наличие нужной информации?

Какие ресурсы лучше всего подходят для самостоятельного изучения программирования? У нас есть статья про это Читать

Если на все эти вопросы можно дать утвердительный ответ, то помощь коллеги\ментора и правда необходима. Переходим к следующему пункту.

Расскажите о том, что пытаетесь сделать

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

Расскажите о том, что вы уже попытались сделать

Будет удобнее, если человек, к которому вы обратились за помощью, будет знать всё, что вы уже попытались сделать. Это сэкономит вам обоим время, потому что ему не придётся предлагать решения, которые уже были опробованы и точно не сработают.

Рассказывать о своих попытках нужно максимально подробно, прилагая ссылки на используемые материалы, форумы, StackOverflow и т.п.

Предоставьте примеры кода

Обязательно покажите разработчику код, который у вас не работает. Ни в коем случае не пишите “я написал приложение и оно не работает”. Что именно не работает? Какое сообщение об ошибке? Что в логах?

Используйте сервисы вроде gist.github.com или pastie.org для публикации кусков кода. Чем больше опубликуете и покажете вашей жертве, тем лучше :)

Задайте вопрос

А теперь самое важное: избегайте всеми силами простого “Что мне делать?”. Предоставьте варианты. Составьте список из возможных решений проблемы и спросите подойдёт ли какой-нибудь из них.


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

Я всегда стараюсь потратить минимум несколько часов на решение проблемы самостоятельно. Только так можно чему-то быстро научиться. Цените ваше время и время коллеги\наставника и учитесь решать проблемы самостоятельно. :-)

P.S. Интересно, а эти рекомендации подходят для других областей?