Поиск ответов на вопросы и решение проблем с помощью Гугла — важнейший навык для программиста. Большинство проблем, с которыми сталкивается новичок, уже решены и описаны. Нужно лишь научиться находить эти решения и ответы.

Сайты

Основные сайты с ответами на вопросы:

Язык

Как показывает практика, в самом начале своего пути немалая часть программистов пытается найти ответы, задавая вопросы поисковой системе на русском языке. Иногда так можно найти ответ, но в большинстве случаев — нет. Главный язык программистов — английский, весь мир говорит именно на нем. Количество информации в англоязычном сегменте на порядки больше, чем в русскоязычном. К тому же она свежее. Учитесь формулировать свои мысли, а в случае поиска — набор слов, на английском. Заодно быстрее изучите терминологию.

Поисковая система

Связано с предыдущим пунктом. Искать нужно в Гугле. Яндекс хоть и хорош для определенных задач, все же англоязычный сегмент — не его основной рынок, и там он значительно уступает Гуглу. Например, вы заметите, что через некоторое время Гугл адаптируется к вашим запросам и начнет показывать более релевантные ссылки. Он вполне способен понять, какой язык программирования вы предпочитаете, чтобы показывать ответы, применимые именно к нему.

Еще один важный момент. Гугл даже лучше, чем специфические поиски конкретных сайтов. Если вам нужно что-то на том же Гитхабе, то лучше сформировать правильный запрос в Гугле и получить результат лучше и быстрее. Ниже, в разделе «язык запросов» об этом рассказано подробнее.

Язык запросов

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

Полный список можно найти на сайте поддержки Гугл.

Поиск библиотек

Подавляющее большинство библиотек находятся (говорят, «хостятся») на Гитхабе. Предположим, понадобилось найти библиотеку для выполнения HTTP-запросов в JavaScript. Для этого можно сформировать следующий запрос: github js http client. Гугл выдаст десяток ссылок на разные репозитории. Конечно, можно использовать и язык запросов: site:github.com js http client, но чаще всего достаточно просто указать github.

Точно такая же стратегия поиска может использоваться для библиотек с известным названием: github express.

Поиск по сообщению об ошибке

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

There was 1 failure:

1) App\SolutionTest::testResult with data set #2 (0, 2, 2, 1, 2)
Failed asserting that '1' matches expected 0.

/usr/src/app/tests/App/Tests/SolutionTest.php:15

FAILURES!
Tests: 3, Assertions: 3, Failures: 1.
Makefile:2: recipe for target 'test' failed
make: Leaving directory '/usr/src/app'
make: *** [test] Error 1

В этом выводе много текста, но реальное сообщение об ошибке только одно: Failed asserting that '1' matches expected 0.. Конкретно в этом случае примерно понятно, что не так и куда смотреть (в стектрейсе ниже указан файл и строчка). Но так бывает далеко не всегда. Если вам удалось точно идентифицировать сообщение об ошибке, то не лишним будет сделать еще кое-что. Часто подобные сообщения индивидуальны. В них подставляются конкретные значения каких-то параметров, относящихся именно к вашему окружению. Например, пути до файлов. Соответственно, если вы будете искать по всему тексту ошибки, то скорее всего Гугл ничего не найдет. Например, в сообщении выше такими параметрами являются '1' и 0. Если очистить фразу, то получится Failed asserting that matches expected. Именно её и надо искать. Не лишним бывает добавить имя языка: php Failed asserting that matches expected.

Поиск по поведению

Нередко сообщение об ошибке либо отсутствует, либо не может привести к правильному ответу (потому что оно — следствие, а не причина). В этой ситуации нужно проявить креативность и составить предложение на английском языке. Набор ключевых слов тоже подойдет. Если поиск не увенчался успехом, то к поисковой фразе полезно добавить site:stackoverflow.com. Stackoverflow — место, где есть ответы практически на все подобные вопросы.

Если известно, к какой библиотеке или программе относится ошибка, то полезно найти её репозиторий на Гитхабе и поизучать раздел Issues. Если ошибка действительно есть, и она актуальная, то почти наверняка о ней уже кто-то отписался.

Официальная документация

Поиск — это хорошо, но никогда не забывайте про официальную документацию используемых инструментов (в том числе языков программирования). Официальная (и не только) документация, как правило, делится на несколько видов:

  1. Getting Started — небольшое (не всегда) пошаговое руководство по созданию минимально рабочей версии. Первым делом нужно искать именно этот документ. Он позволяет быстро стартануть чтобы посмотреть инструмент в деле.
  2. Guides — описания компонентов рассматриваемого инструмента. Написаны в повествовательной манере, что позволяет их прочитывать от и до. По гайдам удобно изучать большие блоки.
  3. API — сухая документация по всем возможным функциям приложения. В нее имеет смысл смотреть только для поиска ответов на конкретные вопросы.
  4. Tutorials — в отличие от гайдов, направлены на различные варианты использования инструмента.

Кирилл Мокевнин