Будьте безжалостны. Избавьтесь от шума и сосредоточьтесь на главном

Что вы делаете, когда слышите о новом горячем событии в программировании?

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

Иногда вы можете даже научиться - посмотрите несколько руководств, просмотрите документацию, поиграйте с ней.

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

Вывод прост - слишком многому нужно научиться; как ты мог справиться со всем этим?

Ты не можешь.

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

Почему ты учишься

Вы хотите выучить новый язык программирования в этом году?

Может быть, вы лучше освоите новый фреймворк? Библиотека?

Почему?

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

Вот причины. Но есть ли у них веские причины? Не обязательно.

Возможно, вам захочется узнать что-то новое, даже если оно бесполезно. Мне это нравится. Но если у вас мало свободного времени (а у кого много свободного времени?), И вы хотите продолжить свою карьеру, учиться ради развлечения вам не удастся.

Есть только одна веская причина для изучения нового навыка - использовать его.

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

Время - ваш самый ценный актив; не выбрасывай это легко. Узнавать неправильные вещи так же непродуктивно, как смотреть Netflix. К тому же это менее увлекательно. Так что не тратьте время зря и не обманывайте себя, думая, что вы добиваетесь прогресса.

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

На что стоит ваше время?

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

Используемые навыки

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

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

Освоение инструментов, которые вы уже используете, дает два основных преимущества: вы мгновенно используете новые знания и получаете деньги (или, скорее всего, получите деньги) за свои навыки. Это и ежу понятно.

Навыки, смежные с вашими текущими навыками

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

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

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

Навыки, которые вы будете использовать

Иногда вы не хотите углубляться в свои текущие навыки, и в смежных областях нет ничего интересного. Что делать сейчас? Бьюсь об заклад, у вас есть идея для приложения.

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

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

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

Основы

Вы можете чувствовать себя потерянным и не знать, на чем сосредоточиться. В этом случае соблюдайте одно простое правило:

В случае сомнений сосредоточьтесь на основных принципах.

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

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

Что не стоит вашего времени

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

Новый горячий язык (фреймворк / библиотека)

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

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

Значит ли это, что нужно отказаться от всего нового? Нет.

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

Специализация на новом - это стратегия высокого риска и высокого вознаграждения, поскольку вы можете быстро стать экспертом, но это также может напрасно тратить ваше время.

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

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

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

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

Вы можете использовать более простые абстракции над D3; у некоторых из них может быть решение всех ваших проблем и выполнение работы.

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

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

Навыки, не связанные с вашим набором навыков

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

Я фронтенд-разработчик, специализирующийся на React, с некоторым опытом работы с бэкэндом, который пытался изучать такие разнообразные вещи, как машинное обучение и творческое кодирование. Я также потратил некоторое время на изучение Vue, Svelte и Angular.

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

Не повторяй мою ошибку; изучите вещи, дополняющие ваш набор навыков, а не просто случайные вещи, которые звучат круто.

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

Отклоняющийся язык (фреймворк / библиотека)

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

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

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

Вы готовы сосредоточиться на главном? Это может быть болезненно, но оно того стоит.