Почему вы никогда не выучите все фреймворки

Когда вы в последний раз чувствовали себя настоящим экспертом в разработке? Лично я — где-то в тот момент, когда впервые написал программу, которая завершилась без ошибок. Программирование — это как бесконечный ремонт дома, в котором ты уже живёшь. Ещё вчера тебе казалось, что новая крыша будет решением всех проблем. А сегодня оказалось, что появились окна с автоподогревом, и без них дом вообще не дом. И, конечно, все соседи уже поставили такие.

Когда я только начинал писать код, казалось, что всё устроено достаточно просто. Выучил язык, разобрался с парой библиотек, написал несколько алгоритмов — и ты уже молодец, программист. Но со временем это ощущение исчезло. Теперь я захожу в Telegram или читаю очередной техноблог, и мне кажется, что все обсуждают что-то, в чём я ещё не разобрался: вышел новый фреймворк вроде Bun.js, обновилась спецификация языка (JavaScript ECMAScript 2024), релизился Webpack 6. А кто-то успел протестировать какой-нибудь новый линтер. И на фоне этих ярких изменений я смотрю на свой рабочий проект и задаюсь вопросом: а смогу ли встроить в свои проекты весь этот сверхсовременный стэк, да и нужен ли он вообще.

Программисты как спортсмены

Одно из самых сложных (и интересных) качеств нашей профессии — её неспособность остановиться. Если в разработке и есть что-то постоянное, так это скорость изменений. Мы живём в индустрии, которая развивается быстрее, чем любая другая — каждый месяц:

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

И вот это постоянное сравнение — как и в профессиональном спорте — может либо стимулировать, либо разрушать.

Да, мы живём в мире, где на нас всегда давят дедлайны и новые фреймворки. Но признайтесь: ведь круто поспорить с коллегами, нужен ли вашему проекту новый "лёгкий" инструмент, о котором вы потом будете жалеть весь следующий квартал

Фреймворк недели. Или как технологии бегут быстрее нас

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

Новые "убийцы технологий" появляются быстрее, чем ты успеваешь допить кофе и открыть вкладку с их докой. А к моменту, когда ты делаешь последний глоток, уже появляется другой материал с кричащими заголовками про то, что и на "убийцу" нашелся еще более ультимативный конкурент. Помните, как NoSQL заменил все эти устаревшие и неактуальные подходы реляционных баз, создав прекрасный мир без PostgeSQL/MSSQL/...? А как шарповый Blazor уничтожил JS, TS, да и вообще всю фронтовую разработку?

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

Жизнь программиста — это постоянный выбор: что выучить, а что пропустить. Kubernetes выглядит как сложный монстр, но нужен ли он вам в вашей реальной работе? Может быть, прямо сейчас проще сосредоточиться на углублении знаний в вашем стекe или на освоении TypeScript?

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

Формула давления: почему нам кажется, что мы всегда отстаём

Ключевая проблема, с которой сталкивается большинство разработчиков, — это восприятие времени. На вас давят дедлайны. Это накладывается на восприятие обучения: нам кажется, что новые инструменты стоит освоить немедленно, ведь "это должно было быть сделано ещё вчера". А если вы проводите время на GitHub, Hacker News или Reddit, то вокруг сплошь истории успеха:

Но это иллюзия. Реальная жизнь не такая. Никто не публикует гифки, как он 3 дня пытается понять, почему у него не работает docker-compose. Никто не выкладывает посты о том, как 2 часа бился головой о стену, пока не запустилась база данных для тестов. Мы видим только результат, а не путь. И мы себя сравниваем с этим "отредактированным образом".

GitHub — это как Instagram для программистов, только вместо красивых фоточек еды здесь проекты с идеальным кодом, из-за которых забываешь, что реальная жизнь чуть менее гламурна. Никто не выкладывает stories "пять часов дебага, а причина оказалась у меня в кэше".

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

Как справиться с этой гонкой

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

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

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

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

Как выбраться из "гонки"

Вместо заключения

Мне нравится думать, что программирование — это профессия, в которой ты будешь узнавать и расти до самого конца. Это нескончаемая гонка с самим собой. Только она не про то, чтобы стать лучшим на какой-нибудь конференции или блеснуть на собеседованиях. Это про то, чтобы каждый день спрашивать себя: "Что нового я могу понять и создать?"

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

Да, мы всегда будем немного отставать от реальности, но это не повод останавливаться. Ведь самое лучшее в этой работе — это процесс. Всё, что вы делаете, — это шаг вперёд. Как сказал один мой коллега:

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

PULS.LV Professional rating system