Искусство находить собственные ответы

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

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

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

Итак, как следует искать ответы на свои собственные вопросы? Хотя Google — это место, где можно найти множество ответов, он не является инструментом обучения, если только мы не делаем его таковым намеренно.

Разберитесь со своими вопросами

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

Начало поиска с поиска более полного определения используемого кода предоставляет разработчику ряд инструментов:

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

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

3) Вы начнете формулировать свои вопросы таким образом, чтобы получать более целенаправленные ответы.

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

Разумно выбирайте источники

В Интернете каждый найдет что-то для себя… включая плохие ответы на плохие вопросы. Такие сайты, как Stack Overflow или GitHub Issues, имеют свое применение, например, быстрое напоминание о том, как что-то работает, или получение рекомендаций по ресурсам, которые вы можете использовать для более глубокого изучения темы. Однако, если практика копирования и вставки решений из чужого кода станет рутиной, это, вероятно, вызовет технический долг, который вызовет раздоры в будущем. Хорошие ресурсы найти нетрудно, и они могут иметь огромное значение в том, как мы думаем о наших вопросах.

Документация

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

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

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

Понимание формата документации также является полезным инструментом при обучении навигации по этому ресурсу. Большинство документов включают раздел «Привет, мир», раздел API и раздел учебника или пошагового обучения. Вы можете наблюдать, как друг или наставник сразу переходит к разделу документации по API, чтобы быстро найти нужный метод. Эта способность сканировать документ в поисках недостающей ссылки в вашем коде — это навык, который приходит со временем и с опытом. Никогда не будет лишним потратить время, необходимое для внимательного прочтения раздела «Привет, мир» и «Учебник», когда вы знакомитесь с набором технологий. Даже если учебник не дает явного ответа на ваш вопрос, он, скорее всего, поможет вам понять, как определить правильный ответ, если/когда вам нужно просмотреть API.

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

Блоги

Технические писатели существуют, чтобы добавить человеческий фактор в процесс обучения. Блоги могут быть прекрасным источником простых объяснений сложных концепций. Поскольку блоги не проверяются в той же степени, что и официальная документация, они часто могут быть чрезмерно упрощены или введены в заблуждение. Будьте готовы участвовать в блоге, как если бы вы разговаривали со случайным человеком на конференции. Задавайте вопросы, сверяйтесь с другими ресурсами и получайте рекомендации от людей, пользующихся доверием по теме.

Поиск человека

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

Сузьте рамки вашего вопроса:

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

Дайте контекст:

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

Задайте уточняющие вопросы:

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

Если вы это знаете, научите этому

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

Технология растет и развивается не за счет отдельных случаев личной изобретательности, а за счет коллективного процесса командной работы и сообщества. У всех нас разные способы обучения и самовыражения. Как только вы найдете то, что работает для вас, позвольте нам (сообществу разработчиков) поучиться у вас. Найдите темы и проблемы, которые вас интересуют, и поучаствуйте в беседе. Являетесь ли вы опытным разработчиком или новичком, специалистом или универсалом, нам всем будет полезно услышать разные точки зрения. Ведите блоги, участвуйте в дискуссиях, наставляйте младших разработчиков, задавайте вопросы. Это приносит пользу вашему собственному учебному процессу, заставляя вас думать о концепциях по-другому, а также укрепляя сообщество в целом.