Pull to refresh

Как выживать в изменяющемся мире разработки

Reading time4 min
Views22K

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


Взять к примеру, мир фронтенда. Со знанием JavaScript пятилетней давности сейчас хорошую работу не найдешь. Сейчас RequireJS + Grunt не прокатят, надо знать React, Webpack, современный ES или TypeScript и т.д. Причем в следующем году многое уже снова устареет.


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


Что же делать? Делать pet projects по ночам? Или пытаться сменить направление развития на более стабильное во времени?


Особенно часто этот вопрос встает у программистов с детьми. Как оставаться актуальным на рынке в долгой перспективе, не тратя на это всё личное время?


Уйти в руководство


Преимущества:


  1. Иногда достаточно знать технологии по верхам (это зависит от вида руководства, team lead, tech lead, CTO и т.д. — совершенно разные обязанности)
  2. Можно выбирать технологический стек самому.

Недостатки


  1. Не знать детали технологий пожалуй можно лишь менеджменту верхних уровней. Простой тимлид должен всё знать, никуда не денешься. Tech lead должен знать лучше всех.
  2. Эта работа многим не по нутру. Управление людьми — это совершенно отдельная профессия, не имеющая ничего общего с программированием. Многие туда стремятся, но, едва попробовав, с радостью возвращаются обратно к коду.
    Если одним из поощряемых качеств простого программиста является суперконцентрация на сложной задаче, то здесь наоборот: зачастую жонглируешь задачами, толком не вникая в реализацию (просто нет на это времени).
  3. Даже если ты выбираешь стек сам, то ты не будешь делать радикальных изменений в проекте (переписать с PHP на Rust), потому что для этого всё так же не будет ресурсов. Когда ты отвечаешь за всю "техничку", то понимаешь это как никогда.

Уйти в суперстабильные или зарегулированные компании


Говорят, до сих пор где-то в банках и нефтянке пилят на Java 7 и горя не знают. И такой работы там еще на 100 лет.


Недостатки тоже очевидны: скукота, бюрократия. Ну и если вдруг стабильная компания внезапно умирает, а так тоже бывает, то на рынке труда с java 7 будет сложновато.


Полумёртвые языки


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


Недостатки: древние языки ужасны, и инструменты для них ужасны. Перспективы не ясны, вполне возможно язык доумирает до конца.


Развивать ядро базы данных или линукса


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


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


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


Изменение мышления работодателя


Это из серии несбыточных мечт, но всё же.


Если человек знает три языка и две базы, сколько ему нужно времени, чтобы начать писать на четвертом подобном? Очень мало. Тем не менее в вакансиях как мантру пишут что-нибудь такое: "опыт работы на java от трех лет". Я предлагаю работодателям писать так: "опыт работы на java от трех лет или выполнение тестового задания". Вам ведь ехать, а не шашечки.


Подкину немного на вентилятор: php-шник с десятилетним опытом, который хорошо знает ООП и, допустим, писал на typescript, запросто пересядет на java. Там даже ключевые слова одинаковые: class, interface, extends, implements и т.д. Принципы SOLID ровно те же.


И возможно через 2-3 месяца будет писать не хуже, чем 3-летний труъ джавист. Потому что уже умеешь писать сложные SQL-запросы, знаешь стандарт HTTP, умеешь верстку и JavaScript и прочее. Конечно, там есть 100500 нюансов, многопоточность и т.д., но если ты за 10 лет привык решать проблемы, то разберешься уже с чем угодно, дайте только мануал полистать.


На первых порах кто-то должен бить по рукам, но это всё равно не сравнимо с полным новичком в профессии.


Смена деятельности


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


Можно начать своё дело и делать вообще что угодно. Правда и риск максимальный: 9 из 10 таких начинаний обычно прогорают. Ну и саморазвитие здесь обычно также в приоритете )


Постоянная смена работы


Если менять работу раз в год-два, то точно будешь востребован на рынке. На одной работе изучил React, на другой Postgres и т.д. Однако недостатков тут тоже много. Карьеру построить сложнее; всё время надо притираться к новой команде и начальству; придется объяснять на собеседованиях, почему ты такой "летун"


Путь компромисса


Если мы не можем решить проблему, то можно её ослабить. Например, хотя бы какую-то часть кода продукта осовременить и т.д., ведь иногда можно найти выгодные для бизнеса изменения. Ну и по мелочам тоже: переехать с Grunt+RequireJS на Webpack+ES Imports — дело одного дня, а дальше уже можно спокойно использовать современный JavaScript.


Тайм-менежмент


Если изучать новое интересно, но нет времени, то зачастую можно что-нибудь придумать. Я, к примеру, стараюсь ездить до Питера на электричке (живу рядом с Павловском). Это около 40 минут времени туда и столько же обратно. Вполне можно успеть сделать пару "помидорок" по интересной теме. Ну или просто почитать книжку. Сейчас, например, пишу эту статью )


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


Вместо вывода


Эта статья не попытка научить жить в стиле дурацких статей а-ля "7 способов разбогатеть, ничего не делая". Наоборот, я с удовольствием научился бы чему-нибудь полезному из комментариев. Так что welcome!


Больше полезного можно найти на telegram-канале о разработке "Cross Join", где мы обсуждаем базы данных, языки программирования и всё на свете!

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 34: ↑25 and ↓9+16
Comments60

Articles