Почему поиск бывает полезнее знания

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

Несколько месяцев назад я просматривал посты в учебной группе freeCodeCamp моего родного города. Вдруг на глаза мне попалось нечто интригующее…

 

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

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

 
 

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

Что же заставило меня изменить свои взгляды? Много что. Но здесь лишь несколько основных вещей.

Озарение 1. Запоминание всего — трата времени и ресурсов

Не верите мне? Можете почитать топик на Quora, где сотни других программистов придерживаются того же мнения, что и я.

Я не мог бы выразить эту мысль лучше, чем этот парень:

«Никогда не запоминайте то, что можете подсмотреть» - А. Эйнштейн.

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

Язык

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

Позвольте мне привести наглядный пример.

В прошлом декабре я слушал дискуссию на CSSDay в Фениксе и услышал, как докладчик обронил фразу, которую я уже не раз слышал в разных вариациях:

«Запоминайте только то, что используете в повседневной работе. Для всего остального достаточно помнить, где это подсмотреть.»

Эта концепция стала самым большим благом для моей карьеры программиста.

поиска

Раньше я старался удержать в памяти все. Концепции, синтаксис, лучшие практики, все это было очень сложно заучить. Я всегда считал себя умным человеком, которому легко дается учение, и в то же время я наивно полагал, что столкнулся с первым вызовом моему и интеллекту, достойно принять его я не смог.

Тогда меня осенило: вместо того, чтобы беспокоиться о том, как написать это, надо просто сфокусироваться на понимании того, как оно работает. Я перестал обращать внимание на синтаксис и радостно начал строчить тонны псевдокода. И как только я почувствовал, что близок к решению, пришло время для поиска!

Это возымело ровно тот эффект, на который я рассчитывал. Больше я не мучился над запоминанием методов для добавления элемента в конец массива. Вместо машинального запоминания я сосредоточился на том, какое действие мне нужно произвести. Когда нужно было добавить элемент в начало массива, оказалось гораздо проще вбить «добавить в начало массива JavaScript», чем пытаться самостоятельно вспомнить разницу между shift(), unshift() и pop().

Вместе с ощутимой экономией времени проявились еще несколько плюсов:

  1. Я обнаружил, что могу изучать новые языки гораздо быстрее, потому что (сюрприз, сюрприз) большинство концепций не зависят от языка;
  2. Мое понимание этих концепций значительно углубилось.

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

Озарение 2. Вы можете учиться на чужих ошибках вместо того, чтобы совершать их самому

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

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

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

При поиске вы больше учитесь

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

И знаете, что? Это работает очень хорошо. Начав свой путь разработчика в мае 2015, я получил первую работу в сентябре 2016.

Менее чем за 18 месяцев я прошел путь от весьма поверхностного понимания HTML до написание скриптов для Ansible, бэкенда на Ruby on Rails и создания компонентов интерфейса с помощью React.

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

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

Единственный способ излечиться от невежества — задавать вопросы.

автор текста  Библиотека программиста 

взято с сайта https://proglib.io

Яндекс.Метрика Рейтинг@Mail.ru