Почему великие разработчики на самом деле сосредотачиваются только на двух навыках: как выучить и овладеть основами

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

Хорошие разработчики умеют быстро находить и изучать новую информацию по мере необходимости.

Эффективное обучение

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

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

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

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

Мастерство основ

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

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

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

Все это способ сказать, что лучшие разработчики полного стека умеют сосредоточиться на овладении эффективными методами обучения и создании прочной основы для фундаментальных навыков. Вот как они производят впечатление обладателей стольких знаний, хотя на самом деле они только что овладели способностью находить и применять знания по мере необходимости. В Launch School, где я являюсь инструктором, я много времени провожу, рассказывая об этом студентам. Многие начинающие разработчики беспокоятся о том, как им следует изучать все технологии, о которых они слышат от друзей или читают в списках вакансий. Я говорю им, что все это не имеет значения - не вначале. Конечно, со временем вам, возможно, придется изучить React, или Elixir, или один из множества других инструментов; однако это знания, которые вы можете получить, если и когда необходимо, но только если у вас уже есть прочный фундамент основ и эффективных методов обучения.

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

Крис - инструктор в Launch School, онлайн-школе для инженеров-программистов. Эта статья изначально была опубликована как ответ на вопрос на Quora. Он повторно размещен здесь для читателей со средним уровнем знаний с тем же вопросом.