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

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

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

Прежде чем задать вопрос 

Перед тем как обратиться за помощью, убедитесь, что вы изучили всю необходимую информацию по вопросу. Некоторые люди настолько ленивы, что им даже не приходит в голову самостоятельно поискать ответ в интернете. Они просто заходят на форум какого-либо сообщества, например Stack Overflow, и размещают свой вопрос. Причем вопросы могут быть очень глупыми, например о том, как научиться программировать или установить пакет npm. 

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

Прежде чем задать вопрос, вы можете: 

  • поискать материал в интернете; 
  • ознакомиться с официальной документацией и информацией на форумах; 
  • обратиться с вопросом к более опытному знакомому, если не сработали первые два варианта. 

Если вы предприняли все эти действия, но решения так и не нашли, то теперь самое время задать ваш вопрос. При этом следует упомянуть весь объем проделанной работы.

Ищем информацию в интернете 

Поделюсь с вами одним наблюдением. Дело в том, что моим коллегам-программистам свойственна одна общая черта — все они действительно пытаются найти информацию в интернете перед тем, как обратиться за помощью. И самое удивительное, когда они уже просят о помощи, их коллега/друг находит ответ. 

Как же так получается, что два человека ищут ответ на одной платформе, а решение находит только один? 

А всё потому, что он правильно формулирует вопрос. 

Убедитесь, что ваш поисковый запрос содержит только необходимые выражения и термины. Допустим, вы хотите узнать, как вставить картинку на HTML-страницу. Ваш запрос может выглядеть так: “Как вставить картинки на веб-сайт?” или так: “Как добавить картинки на HTML-страницу?”. Очевидно, что последний вопрос сформулирован лучше, так как он более точен и детален. 

Как правильно сформулировать вопрос 

Задаем правильный вопрос в правильном месте 

Обратите внимание на то, где вы размещаете вопрос. Скорее всего, вас не примут всерьёз или проигнорируют, если вы: 

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

Размещаем четкие скриншоты / сообщения об ошибках 

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

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

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

Используем такие веб-сайты, как Stack Overflow 

Stack Overflow — это самое крупное и авторитетное интернет-сообщество разработчиков, которое создает прекрасные условия для обучения, обмена знаниями по программированию и профессионального развития. 

Чтобы ваш вопрос по достоинству оценили, постарайтесь сформулировать его с учетом рекомендаций, предложенных в разделе “Вопросы”. Низкая оценка на ваш вопрос обеспечит вам плохую репутацию на Stack Overflow. На данном ресурсе не рекомендовано размещение скриншотов кода/ошибки, поэтому делайте это в формате текста.

Формулируем вопрос четко и по сути 

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

Переходите сразу к делу, не ходите вокруг да около и не тратьте время хороших людей:

  1. упомяните среду выполнения программы;
  2. опишите признаки проблемы или ошибки точно и понятно;
  3. если возможно, обеспечьте способ воспроизвести проблему в управляемой среде;
  4. включите точный текст сообщения об ошибке, а в идеале скопируйте его непосредственно из того места, где он содержится: из логов, консоли или веб-страницы;
  5. если вам нужна помощь с фрагментом кода, предоставьте его образец. Код не обязательно должен быть точным, но он не должен семантически отличаться от фактического. Например, в порядке вещей не показывать особо важные значения кода, но не следует менять или перефразировать такие его части, как условия цикла. 

Что делать, если вы не получили ответ? 

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

Если вы все-таки не получили ответ на вопрос, не принимайте это на свой счет. Возможно, участники адресуемой группы просто его не знают. Отсутствие ответа вовсе не значит, что вас проигнорировали, хотя со стороны может так и показаться. 

Если проблему всё же необходимо решить, то можно обратиться за платной помощью. К вашим услугам множество коммерческих компаний как крупных, так и не очень. И пусть вас не смущает мысль о необходимости заплатить за помощь! В конце концов, если прогорит прокладка головки блока цилиндров автомобильного двигателя, вы, скорее всего, отвезете машину в автосервис и заплатите за ремонт. Даже если ПО вам ничего не стоило, не следует ожидать, что его поддержка также всегда будет бесплатной. 

Пишите код и будьте счастливы! 

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Mahdhi Rezvi: The Smarter Way of Asking for Programming Help

Предыдущая статьяЭффективное или частное хранение данных с помощью JavaScript WeakMaps
Следующая статьяML-инженер или специалист по обработке данных? (Закат науки о данных?)