Компас личного обучения

Вступление #

Фронтенд, наверное, одно из самых быстротечных направлений в IT. Каждые пару месяцев выходят новые фреймворки, появляются новые библиотеки, а YouTube завален рекомендациями, хаками, типсами и так далее. И если не знать, что для фронтенда такое хайполюбие — это нормально, это может показаться безумием. Можно почувствовать FOMO от того, что ты что-то упускаешь. Это может вызвать тревогу, боязнь отстать от жизни и трендов. И нюанс в том, что ты не можешь успеть за всем, изучить всё. Но я считаю, это и не нужно делать.

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

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

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

Визуальное представление осей и секторов

Движение вширь + внешняя референция = тренды #

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

Плюсы этого сектора: расширение кругозора и инструментария. Минусы: всё знание очень поверхностное и сводится к копипасте из документации, вопросам в чат-GPT и методу научного тыка. К тому же это всё очень недолговечно.

Это примерно как при инвестициях на стадии ICO — ты никогда не знаешь, не загнётся ли компания через пару месяцев работы или это будет условный новый Google. Так же и с мейнстримом в разработке — ты никогда не знаешь, как долго будут поддерживать ПО, будут ли его развивать, будут ли под него вакансии. И даже если ты будешь его использовать — научишься ли ты хорошим практикам и правильным паттернам, или условно будешь копаться в чьей-то выпускной работе или pet-проекте, сделанном ради репутации, хайпа или резюме.

Движение вширь + внутренняя референция = альтернативы #

Тут ты сам себе придумываешь и выбираешь, что учить. То, что лично тебе интересно, полезно или просто по фану. Это может быть всё что угодно — от повторения школьной геометрии до изучения Scheme по старой доброй SICP.

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

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

Движение вглубь + внешняя референция = стандарты #

Тут седобородый старец или условный дядюшка Боб будут тебе рассказывать, что такое настоящий, хороший, чистый код. Тут — накопленный опыт поколений; выводы, постулаты и традиции громких авторитетов в этой области. Редуцированный опыт людей, которые общепризнанны как мастера в своей области. Тут же — всякие сертификации, инструкции, стайлгайды, принципы SOLID, KISS и DRY.

С одной стороны, это всё нужно знать, чтобы считаться условным “порядочным программистом”. Так сказать, чтобы не упасть в грязь лицом. Чтобы не выстрелить себе в колено, ну и чтобы не занесло на поворотах в кураже экспериментов.

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

Движение вглубь + внутренняя референция = синтез #

Этот сектор очень похож на “альтернативы”, только акцент тут — на глубине. Глубокое изучение, фундаментальные основы. Понимание базовых идей и концепций, чтобы потом из них, как из кирпичиков, построить что-то большее. Декомпозиция, анализ и рекомпозиция. Тут же движение от более абстрактных уровней к менее абстрактным.

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

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

Что я выбрал для себя #

Лично я пришёл в своё время в сферу IT из желания заработать денег, плюс мне было интересно. И я быстро понял, что меня интуитивно тянет в сторону альтернатив и синтеза.

Пару-тройку лет назад я решил идти таким путём:

  • основной фокус на секторе “синтез”;
  • дополнительный — на секторе “альтернативы”;
  • попутно, минорно — “стандарты”;
  • и от случая к случаю — “тренды”.

Для синтеза мне очень нравится программа этих ребят: https://teachyourselfcs.com/.
Сильнейшая альтернатива для меня — это функциональное программирование: PureScript, Haskell, lambda calculus и теория категорий. Для стандартов — можно легко нагуглить классических авторов. Ну а тренды помогает поддерживать YouTube + ревью новостей и блогов каждые ~6 месяцев.

Как-то так.