Хабрахабр

Быть фулстеком и не быть им

Я именно тот 40+ летний синглстек, который упоминался в нашумевшей статье. Когда я вижу таск, где бэкендер упоминает dTo, к которому нужно написать обвязку на фронте… Я запланировано выхожу из себя. Во-первых, я хорошо работаю, когда злой. А тут такой случай. А во-вторых (и это главное), я не хочу знать, что такое ДэТэО, где оно лежит и как с ним работать. Мне нужен только путь, метод, параметры и набор ответа. В терминах HTTP/REST. Я не хочу лезть в код бэка. Я даже не хочу догадываться о том, что исходя из имени класса dTo, можно легко вычислить путь.

Я не лезу в кухню бэка. Это вопрос уважения. Как это реализуют на бэке – это не моё дело, как я реализую работу фронта и где расставлю кнопки – не их. А когда сам ставлю задачу на бэк, то чётко расписываю интерфейс (опять же в терминах REST) и кратко описываю, зачем оно мне надо и как собираюсь использовать.

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

Что в нём хорошего, и как я до такого дошёл под катом.

Поехали.

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

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

S. P. Я пишу в основном о сеньорах, но всё можно спустить и на ступень ниже (у меня мало опыта работы мидлом).

Я использую термины технология и платформа (как синонимы), для языка программирования и/или фреймворка. PPS. «Глубокое знание языка» часто ничто, перед глубоким и практичным знанием библиотек (возможно, если не брать LISP/Hackel или С++ с извращениями). Это не случайно в контексте статьи. Конечно, часто люди имеющие знания в компьютерном зрении, как минимум, интересуются машинным обучением, а то и распределёнными вычислениями. Поэтому скажем Python+Hadoop, Python+CV и Python+ML – это разные технологии/платформы, на мой вкус. Но… чтобы стать классным специалистом на этих трёх платформах, совсем не достаточно быть спецом на одной.

  • Знания устаревают
  • Привычка учиться
  • Диверсификация
  • хайп
  • Целое помогает частностям

Итак.

Время жизни технологии

Любая технология живёт в среднем 5 лет* (*фантазии Автора). Потом либо её вытесняет что-то другое. Либо технология переходит на версию 2.0, декларативно идеологически совместимую с предыдущей, а не самом деле…

Более того: приходится ломать себя, отказываться от комфортных наработок и привычной логики. На самом деле, приходится учиться заново. Когда простая задача (в версии 1. Это больно, сложно и бесит. 0 требует адских костылей и тонны кода. 0), в версии 2. Проще, чем в 1. Потом, конечно, обнаруживаешь, что задачу можно было решить более чем просто. Просто не так, как привык. 0.

Поэтому, в разработке постоянно приходится учиться. В любом случае, есть пятилетний цикл, за который знания и наработки порядком обесцениваются. Остановился, отстал и востребованность падает. Бежать, чтобы только оставаться на месте, как а «Алисе в стране чудес».

Сидишь себе, кодишь без роздыху, нарабатываешь приемы, изучаешь тонкие фичи и «стандартные хаки». И что обидно, что учиться приходится рывками. Новая версия. А там… раз! А значит, и со своим работодателем будет сложно построить разговор, начинающийся с: «тут на рынке такая ситуация …» И половина знаний уже не нужна потенциальным работодателям.

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

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

0 к тому моменты просмотрены гайды и даже были попытки чего-то кодить. Да, по технологии 2. Потому что на работе, есть задачи, а дома… уже вымотался на работе… Но если ты специалист хороший и ответственный, то на это было не так много времени.

А потенциального работодателя проблемы от костылей. Соответственно, тебя ждёт боль от новых граблей. И работодатели, гады такие, прекрасно всё понимают. Которыми ты хитроумно будешь обёртывать грабли. И не против, разделить с тобой затраты на твоё «очень быстрое обучение», «разумно» занизив з/п.

Нанять-то хотят, но не могут. Да, все хотят нанять готового спеца, у которого период «вкатывания», займёт пару дней (в идеале те пару дней, которые занимают формальности и настройка рабочего места). Ну, иногда бегают, но им особо бегать то не дают, сразу прихлопывают офферами. Не так много бесхозных хороших бегает по рынку.

И готовы брать на сеньорские позиции текущих миддлов с расчётом, что они быстро вырастут. Следовательно, работодатели готовы потерпеть и непрогнозируемые задержки от граблей и возможную боль от костылей. Поэтому собеседования часто не по технологиям, а потому, что раньше делали, какие проблемы были и как решали* (*Автор так думал на момент начала работы над статьёй, потом походил по собеседованиям с «напишите сортировку на листочке» и сейчас в задумчивости). Особенно, если эти миддлы уже бывали сеньорами и показывали результаты.

Взять и не пойти работать на платформу 2. И в этот момент, можно сделать хитрый финт ухом. Можно поискать (и найти работу!) на совсем другой платформе. 0.

Бред же, скажете. Да ну! Хмм,… я много раз так делал. Так не бывает. И, в отличие от героев известного телешоу, у меня получалось.

Да, нужно потратить время на изучение технологии и попробовать хоть что-то поделать. Да, иногда, приходится жертвовать з/п или возможной прибавкой к ней. Но рано или поздно работу находишь… Кстати, несколько раз было, что те, кто сперва мне отказывали – потом неоднократно перезванивали и заманивали разными плюшками. Придётся знатно побегать по собеседованиям и получить пачку отказов.

Самое вкусное оставлю под конец статьи, но и тут есть что сказать. Теперь вопрос – а зачем таки менять платформу?

Что лежит на поверхности:

  • безнадёжное устаревание технологии или выход технологии из «зоны хайпа»
  • банальная скука и замыленность

Просто через какое-то время технология, приносившая надёжный хлеб с маслом и икрой, может сдуться. Да так мощно, что и на хлеб ей заработать непросто. А то и не сдуться, а фактически помереть. И часто это нам демонстрируют в ещё институте, устраивая обучение некроплатформам. Я в 96 году застал Clipper и Supercalc (начал было писать, что это такое, но написав огромный абзац, стёр его – статья таки не по археологии, а ещё в 96году, оба эти продукта надо было преподавать археологам). А мы вместо того, чтобы усвоить урок (что ничто не вечно в IT) бурчали на преподавателей-дерьмомамонтоведов.

То есть рынок может массово отказаться от технологии и перейти на что-то иное. И даже если технология далека от смерти, она может просто выйти из «зоны хайпа». Я даже не буду приводить примеры – сами можете вспомнить их массу, даже если в IT всего пару-тройку лет.

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

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

И это менее сложно, чем пытаться выжимать профит из стремительно устаревающих знаний и умений (мой опыт говорит так). Выход тут один – выбирать из «пула хайпа» наиболее интересную для себя платформу и нырять в неё с головой. Приходится напрягать мозги: читать, разбираться, формировать инструменты и решения под свои задачи. И, что самое забавное, это интересно. И, заметьте, этот квест за деньги работодателя. Меня от такого часто просто прёт не по-детски.

Постоянно втыкаешься в барьеры и ограничения технологии. Да иногда, бывает, что новая технология совсем не заходит. Но изучение нового, как минимум в 2 из 3 случаев – это гораздо интереснее «клепания формочек».

Ты сам её построил и имеешь с неё много гитик. Дело в том, что на той работе, где ты давно, где тебя любят и уважают, есть одна проблема – колея. Знаешь, что планирует бизнес, знаешь какие новые системы будут сделаны на основе твоих разработок (бизнес любит готовые быстрые решения) и…
И это … скучно. Знаешь, как работает система, наработаны приёмы и инструменты, которые позволяют её расширять пусть не бесконечно, но в горизонте года точно. По которой бизнес мчит в финансовые дали, а ты просто обеспечиваешь поступательное движение локомотива ну и, иногда, капитальный ремонт… привокзального буфета. Потому что колея.

А тут ты: давайте не будем подвешивать рельсы на секвойях (тем более, что пока не все секвойи выросли). И даже если ты поменяешь работу, но не сменишь технологию, то… Вот ты приходишь на новое место, где люди пытаются делать смесь фуникулёра с броненосцем. Можно быстро сделать узкоколеечку для прототипа, потом, если что, перешьём полотно. Лучше используем шпалы типоразмером А1* (*реальный типоразмер) и рельсы марки МТ-ЛБ-70РХ* (*случайный набор букв и цифр).

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

Для бизнеса. На самом деле, наработанные решения – очень круто. И осыпает тебя если не плюшками, то безмерным уважением. Работодатель внезапно получает то, о чём влажно грезил долгое время. Но, опять же, скука и … ограниченный горизонт для использования «солидных наработок». Да, это тоже то, что стоит ощутить в жизни. Но тоже до поры до времени.
Я, попадая в долговременную колею, замечал за собой резкое снижение продуктивности и мозговой активности. Бизнес готов использовать и очень устаревшие решения, если они дадут быстрый профит. Меня любят, ценят,… а мне приходится со скрипом заставлять себя работать.

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

Работа в колее, несколько напрягает меня лично, поскольку привык быстро думать и принимать решения (пусть не всегда верные). Хотя… ладно, по-противоречу сам себе. Находить крутые или хитро-компромиссные решения, а то и с понтом предлагать заколачивать костыли (оговариваясь, что вообще-то так нельзя). Мне нравится решать задачи. А вот реализовывать решение – это уже скучновато.

В команде со мной работают ребята, которые тащатся от того, что они делают, а не от того «как». Но это мой склад ума. Я тоже этим страдаю наслаждаюсь, хоть и в меньшей степени.
Поэтому… научился сосредотачиваться на дельте сделанного, что даёт мотивацию. Им прикольно видеть в системе новую фичу и гордиться тем, что она появилась благодаря им. Посмотреть, что появилось, чего мне это стоило (заодно найти несколько мест, которые пора бы уже обточить напильником). Специально нахожу время, для того, чтобы просто поиграться с системой (не на проде, честно-честно). Оно даёт драйв, а положительные эмоции добираешь от закрытых тасков. Так же работе в колее помогают хобби.

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

Привычка учиться и любопытство

Разработчику приходится учиться постоянно. Да, это относится к любой профессии. Помню про тоже самое мне говорил стоматолог. Но стоматолог вряд ли столкнётся с ситуацией, когда в течение пары лет 80% клиник внезапно перейдёт на квазерный портализатор вместо бормашины. А за место у оставшихся бормашин (не выкидывать же) хитрые работодатели будут платить гроши.

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

И по скорости развития (и, к сожалению, деградации) делает любой бицепс как Ту-160 воробья. Мозг, это единственный орган, способный развиваться в любом возрасте.

Обучение новому – это как раз вид нагрузки, который наиболее благоприятен мозгу. И чем больше нагрузка, тем лучше форма (до определенного предела, конечно). Нагрузки по объёму сопоставимы, а по «вкусовым ощущениям» — нет. Чтобы сравнить: это как таскать мешки с картошкой на даче или «вес» в тренажёрке. Ну, если ты не садоводофил, конечно.

Плюс, во время тотального обучения не удаётся работать на всю катушку – в какой-то момент не хватает матчасти и приходится сменять «пахоту» на гайды. И чем больше учишься, тем лучше оно получается. Я, разбирая свой код, написанный в режиме 60-80 часовой рабочей недели, был в неком удивлении. Это как раз даёт отдых мозгу от совсем не полезных однообразных нагрузок, особенно в авральном режиме. Не было ресурсов мозга не только на то, чтобы подучить, а хотя бы вспомнить. От того, что не использовал не только новых, но вообще любых известных мне инструментов, которые не имели мощной наработанности. Ну, кроме тех вещей, без которых вообще никак нельзя было продвинуться.

Но последнее, не навсегда, а пока им пользуешься. Как говорят многие институтские преподаватели: высшее образование даёт две вещи – терминологию, чтобы разговаривать со специалистами и… умение учиться.

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

Диверсифицирование себя любимого

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

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

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

И последнее по порядку, но не по значеию

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

Какие вещи критичные, а какие нет. Кроме того, ты лучше представляешь систему в целом и понимаешь, как она будет дальше развиваться. Что можно и нужно сделать «softly», а где лучше хардкодить и не парится.

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

Плюс вожделенная для многих возможность.

Возможность работы фулл-стеком

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

Да, часто маленькие по объёму, но не по важности. Основная ниша фуллстека это маленькие фирмы и маленькие проекты. Сам сделал фронт, сам сделал мидл и сам запилил базу данных. Где ты царь и бог всего кода. И тут возможно два варианта:

  • тебя взяли на вырост системы
  • работодателя всё устраивает

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

Работа не бей лежачего, но начальство не в курсе, что зарплаты в IT постоянно растут. Во втором случае можно запилить ляльку и прозябать на поддержке. Но, если система действительно краеугольная для бизнеса, а бизнес адекватный, то чтобы не терять ключевого (и единственного специалиста) тебе могут сделать предложение… От которого сложно отказаться. А если и будет в курсе, то будет делать вид, что не в курсе. Варианты, по возрастающей мотивации:

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

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

Собственно работа фуллстека может приносить много-много рулезов, но…

Немного горечи

Пришло время вишенки на торте. Но в моей вишенке синильной кислоты немного больше нормы.

Переключение контекста. И вот в чём дело. Во всех двух взятых задачах. То, о чём мы очень любим говорить, когда летим по срокам во взятых задачах. И больнее всего бьёт по фулстекам. А оно и на самом деле существует.

Когда ты выходишь на грань неизвестного и начинаешь делать что-то, что вроде пока ещё никто не делал (ну или делал, но не писал про это в интернетах). Наибольшие зарплаты, самая интересная работа и быстрый карьерный рост на переднем крае. Либо когда у тебя противоречивые требования к интерфейсу и/или системе. Когда бизнес хочет чего-то, имеет на это деньги, но не знает, как оно должно выглядеть и иногда даже как именно работать. И для того, чтобы продвинутся, нужно находить какие-то нестандартные ходы и решения.

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

Со всем контекстом. А вот они обычно приходят, когда глубоко погружаешься в тему. Если ты погружен глубоко, то часто приходит фея-халява вся работа идёт в бэкграунде, а ты можешь просто гулять, кататься на велике, играть в хоккей, заниматься сексом, находиться в запое,… И щёлк! Необязательно всё время сидеть за монитором или над листами бумаги. И вот оно – решение, такое просто и очевидное.

Поэтому судьба фулстека – это либо крепкие средние продукы, либо перекосы в одной из частей. Но чем больше контекста ты переключаешь, тем озарений меньше. Либо и то и другое огонь, но сроки летят.
Плюс проклятые буридановы ослы. Гениальный фронт и средний бэк, летающий бэк и косяки на фронте. Повбивал бы. Которые ходя вокруг тебя и пихают под руку, то под правую, то под левую: давай это лучше на фронте запилим, а нет-нет, на бэке будет лучше.

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

Выводы

Я ни на чем не настаиваю* (*наглая ложь). Но по мне опыт и важность фулстековости несколько переоценены. А мультистековость наоборот фатально недооценена. Но владение несколькими аспектами разработки – это большой плюс. За это не будут отдельно доплачивать, да и на собеседованиях это не всегда даст серьёзное преимущество. Но работать становится веселее и проще. Кроме того можно всегда утереть нос понтующимся коллегам бэкендерам/фронтендерам в доброй дружеской беседе под пиво или борщ. И да, я сам рассматривая резюме считаю опыт в нескольких стеках плюсом (если он серьёзный) и вам того же советую.

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

На самом деле, когда я начинал писать статью (точнее через месяц после того как я вернулся к первым наброскам) у меня был прекрасный преоффер на фуллстека. Да, и в статье я немного наезжаю на фуллсттеков. А я так надеялся написать про фулстеков гадостей, а в конце статьи сказать, что я таки теперь фулстек. Прекрасный всем, кроме з/п, по которой мы так и не договорились. Но, увы, фронтенды рулят* (*по результатам моей мании величия и текущего основного стека).

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть