Откуда растут ноги ИТ-шной любви к модным технологиям?
Публичный постГде, как не здесь можно обсудить этот вопрос...
К вопросу я пришел вот с какой стороны. У меня много разных клиентов, многие из них - это ИТ-компании разной степени известности. Так или иначе приходится касаться разных их болей и в частности - боли и недовольства разработчиков своей компанией.
Чуть ли не везде всплывает боль: "В нашей компании сраный легаси, а я хочу все эти модные фреймворки и кубернетесы с микросервисами".
И я начал думать, откуда идут корни этой страсти ко всему новому.
Первый вариант причины - прямолинейный: я хочу все эти модные фреймворки чтобы написать про это в резюме чтобы поднять себе цену чтобы перейти в другую компанию и хотеть модные кубернетесы с микросервисами уже там.
Второй вариант более глубокий и опирающийся на потребность каждого умного человека в самореализации: я хочу видеть, что занимаюсь реально крутыми вещами, а не всяким говном.
Вещи могут быть круты по-разному. Например, ты пилишь какую-то шнягу и она помогает миллионам людей по всему миру, люди от этого прутся и всякий раз, когда в разговоре появляется повод сказать что ты делаешь на работе все говорят: "вау! это офигенно!". Если вдруг такое получается, то, наверное, тут уже пофиг на новомодность технологий...
<флэшбек в прошлое>
Помню свою первую ИТшную работу... Мы делали софт для самолетов. Самолеты - пипец какая консервативная индустрия. В 2005-2007 на одном из довольно модных (по тем меркам) проектов у нас был Visual Studio 6.0!!!
А потом к нам попал на поддержку проект, написанный поверх БД ingres (не тот ингрес, который опенсорсный, а тот, который еще был проприетарным и умер) на экзотическом, древнем как говно мамонта языке OpenROAD 4GL 1.0. На момент создания в начале 90х он продавался как революционная технология быстрой разработки! Там можно было UI создавать мышкой!!! Ну тем счастливчикам, у кого был этот революционный инструмент взаимодействия с ПК.
Правда, добавляя на окно очередной контрол, все существующие разбегались по углам, заставляя играть в сраные пятнашки.
На каком-то паскалебейсике можно было писать код в этой системе, в которой в принципе не было никакой возможности версионирования.
За окном шел 2005й. Мы уже знали про всякие отжаилы, непрерывную интеграцию (правда, Jenkins тогда еще был Hudson), а тут приходилось заниматься этим палеопрограммированием. Но это же были самолеты!!!! А самолеты - это по определению круто!
</флэшбек в прошлое>
Но не всем везет видеть крутость того, что они делают. Ты кодишь какую-то хуйнюшку к модулю выплагинивания парсеров джейсона и полной картинки вообще не видно. Кто наш пользователь? Какую его проблему решает мой код? Есть ли вообще эта проблема и этот пользователь? Хоть один?... В большинстве случаев хрен его знает.
Василий из бизнеса вежливо, но матом попросил нас это разработать, менеджер Антон после нытья о нехватке людей и изобилии технологического долга согласился, Мария из аналитиков написала требования, я это все закодил, Григорий прочитал требования, протестировал и после того, как я все переделал как надо мы это отгрузили Ольге из сисадминов. Что произошло с этим дальше мы не знаем, так как надо другие парсеры выплагинивать.
Так вот, у меня есть гипотеза, что если бы мы понимали что же в итоге мы закодили и:
- сколько людей этим воспользовалось И/ИЛИ
- сколько денег мы этой шнягой заработали / спасли нашей компании И/ИЛИ
сколько мне дадут премиицепочкой чтобы что нам бы показали как то, что я делаю, связано с целью компании и счастьем человечества
То наше либидо к новомодным технологиям существенно бы снизилось.
Как вы думаете, на сколько это правда?
Какую бы часть вашего стремления к новомодным технологиях могло бы перекрыть понимание конечной пользы того, что вы делаете?
Будет здорово, если вы ответите цифров в этой анкете, а буквами ниже в комментариях. И если у меня получилось гуглодоковое чудо, то ниже будет живая (но с небольшим запозданием) гистограмма распределения ваших ответов:
https://docs.google.com/spreadsheets/d/e/2PACX-1vRO8gI3ZfxGdIuUDeulhatCyTAbK52siiGyoJVnCj7g2MktCxi71MSOMVmIIvc1LskGb9ETQ96Vlv3J/pubchart?oid=1280512598&format=image
Понятно, что здесь есть еще и третий вариант: искренняя и иррациональная любовь ко всему сырому глючному новому и прогрессивоному...
А еще четвертый и пятый, и какие-нибудь хорошие люди уже описали их в комментариях...
Хмм, не нашел своего варианта, напишу его.
Мне кажется, тут всё просто — айтишники это инженеры, а инженерами становятся потому что в детстве обожали копаться и разбираться во всяком новом и неизвестном. Познавать мир. В общём-то всё.
То есть это не инженеры любят новое, а люди, которые любят пробовать и создавать новое, с большей вероятностью становятся инженерами по жизни.
С айтишниками сейчас сложнее, потому что область сильно размылась и захайпилась, но суть наверное пока остаётся.
Не согласен со всеми комментаторами кроме парня который сказал что стремление к новому — общечеловеческое.
В стиле инженеров все занялись оверсинкингом и пытаться рационализировать почему то что они бездумно кидаются на новую цацку это проявление "хорошего", инженерного качества: любознательности и стремления познавать новое.
А причина может быть значительно более простой—"новые" технологии это такой способ сигнализировать миру что ты шуршышь по трендам. Проще говоря если ты идешь на конференцию и слушаешь там про новый ингресс контроллер для пубернетиса то тебе тоже его хочется, потому что он есть у других а не потому что ты инженер который любит ковыряться в новом.
Вот твиттер тред в котором человек объясняет эту концепцию на пальцах:
https://twitter.com/awilkinson/status/1451256182329548802
Я работаю уже около 15 лет и совершенно абсолютно уверенно могу сказать что никакие "новые" технологии не увеличили скорость разработки, не улучшили developer experience, не решили никакие боли, а в случае фронтенда — наоборот, привнесли огромный пласт надуманных проблем.
Кроме разве что контейнеров, но это больше девопсячьи дела, программисту по большому счету все равно как раскатывается его сервис—через деб пакеты или докер имеджи.
P.S.: вастрик клуб сделан на скучных старых технологиях—джанге и постгресе. Think about it.
Есть еще важный момент с точки зрения найма. Сейчас компании конкурируют за хороших кандидатов, соответственно у кандидатов есть возможность выбрать из разных вариантов. При прочих равных возможность работать на новых технологиях это вроде как плюс, поэтому компаниям выгодно по возможности все-таки в каком-то количестве эти новые технологии использовать.
Даже если сейчас все работает на perl и все ок, то нанять новых людей на такой проект намного сложнее, чем если у вас модные python/go/etc.
Есть еще один очень простой вариант. Новые технологии появляются в попытке решить какую-то частую боль. Если много разработчиков видит, как эта боль теперь решается легко и просто, технология становится модной.
Сидеть с этой болью на старых технологиях и видеть, или предполагать, как легко и просто ее решают в большом мире - грустно.
Ну и да, вполне очевидная карьерная стратегия. Если технология открывает большую область, налитую деньгами и интересными задачами, то почему б не изучить. Если, конечно, на то есть душевные ресурсы.
P.S. Во всеобщую пользу, кстати, почти не верю. Т.е. неплохо иметь что-то затыкающее экзистенциальные вопросы. Но по большому счету, мне важнее процесс разработки, а не результат.
Я бы попробовал учесть и другую возможность. Вот несколько предпосылок
В итоге имеем следующее: если система живёт уже более N лет (N сильно зависит от стека), то есть довольно высокая вероятность, что там спагетти-код, костыли, хаки и все прочие радости, которые делают жизнь простого разработчика чуть менее радужной. Я допускаю, что в индустрии просто появилась такая вот эвристика - старый проект, плохой код, неприятно работать.
Но оценить сложность и срок жизни проекта сложно. Так-то можно и за год сделать из проекта нечитаемое говно. И люди просто смотрят на понятные для себя штуки. Старая джава - считай старый проект - считай плохой код. Хотя при этом, хорошо спроектированная и поддерживаемая система даже на старых технологиях может быть не менее приятно в работе, чем написанная на прошлых выходных на языках отобранных лучшемы хипстерами вашего города.
Мне новые технологии малоинтересны, и почти в любой момент времени карьеры меня полностью устраивал текущий стек. Но если сидеть только на нем и не гнаться за модой - то в лучшем случае не будет повышения дохода, а в худшем вообще останешься на обочине.
Так что я их на 70% учу и применяю именно из-за этого фактора.
Если посмотреть на последние лет 10 развития технологий - то есть те, которые реально упрощают жизнь, а есть те, без которых и так вполне нормально было.
У меня нет тяги к новым технологиям, это гарантийный случай?)
Программировать на Фортране тоже не тянет, но на работе (если я принимаю решение) я всегда беру то, что решает проблему и с чем знакома команда разработки (в идеале).
Потому что айтишники тоже люди и страх быть немодным и остаться на обочине сильнее лени/рациональных причин/whatever.
По той же причине почему люди бегут использовать тикток/клабхауз/новый айфон когда они выходят
😱 Комментарий удален модератором...
Вспомнил два примера освоения новых технологий:
В обоих случаях делал это потому что новая альтернатива показалась объективно лучше, логичней, проще и удобней.
Так что видимо я отношусь к третьему варианту, хотя бы не сказал что иррационально люблю всё новое. К Golang не хочу прикасаться, например.
Разработка — молодая отрасль, появление новых инструментов и абстракций, как правило, оправдано и не объясняется лишь модой.
Старые приложения дешевле выкинуть и написать заново. Весь софт рано или поздно будет переписан на новом стеке. Вдобавок, каждый день потребность в разработке нового софта растёт.
Комфортное положение для прикладного разработчика — это быть в той точке, где в настоящий момент накапливается свежий опыт. Это значит, что ты быстро найдёшь решение для любой актуальной проблемы. Долго в легаси-пузыре не пробудешь, большинство нюансов возникает на стыке технологий — не найдётся Stripe SDK для хромого паскаля.
Условные интернет-магазины, которые работают в докере на кубернетесе, существуют по той же причине, по которой и лампочки с линуксом — это только первое время выглядит парадоксально.
Мне просто нравится, когда в работе мало типовых задач и много тасок вида «ты никогда это не видел, пишешь на другом языке и не понимаешь половины написанного, но допили сюда вот такой модуль пожалуйста». Наверное, с опытом на родном стеке такого становится меньше и новые технологии - это способ снова получить те самые ощущения.
Vue.js и Kubernetes достигли стабильной версии ещё в 2015 году. Это не новые технологии.
Одни проверенные временем инструмены заменяют на другие проверенные временем, потому что новые мощнее и экономят время и вычислительные ресурсы. Где конфликт?
😱 Комментарий удален его автором...
Зависит от классовой осознанности работника и склонности к тщеславию. Количество юзеров, заработанные деньги компании, польза человечеству - это все абстрактные вещи, имеет смысл задавать себе вопрос "сколько я готов доплачивать из своей получки за это". Делать мир лучше софтом - сложно, гораздо эффективнее будет максимизировать свой доход и орудовать уже им
Вообще мне так видится стратегия человека-программиста
Ты в любом случае что-то продаёшь, надо осознавать что именно
Мне кажется, тут вполне значимую роль играет стремление научиться чему-то новому, старое уже известно, нет каких-то неожиданных открытий или есть какие-то неприятные вещи с которыми охота реже сталкиваться
😱 Комментарий удален его автором...
Две основные причины
Эти обе причины еще долго будут давать мне на хлеб с маслом. А чем дальше тем чаще на этом бутере будет икра.
Я бы добавил вариант переоценки пользы от нового, мол, как только перейдем на XXX - жить станет лучше, жить станет веселее.
Сталкиваясь с неудобствами старых технологий каждый день, и вспоминая/читая обновления об удобностях и вкусняшках новых, очень легко переоценить фактическую пользу перехода/применения.
Когда же пытаюсь что-то взять и сделать используя новый язык/либу/сервис, то сталкиваюсь с реальностью, и понимаю что у меня только создается иллюзия того что новым сделать проще, скорее интересней, так как что-то новое можно пощупать, но сложность редко уменьшается, так она зачастую в домене (по крайней мере, у меня так).
Вот думаю о твоем вопросе и понимаю, что мне, как веб разработчику средней руки, нет смысла не стремиться за новыми и востребованными технологиями. Чем больше модных базвордов в резюме, тем больше предложений о работе и зарплаты выше -> тем меньше я переживаю о своих перспективах и завишу от текущего работодателя.
Сидеть на легаси это как питаться фаст-фудом -- опасно.
Перекроет ли для меня понимание конечной пользы стремление к новомодным технологиях? Абсолютно нет, для меня эти вещи вообще никак не связаны.
На самом деле неприятный опыт работы в маленьком местном сервисе научил меня не забывать что я просто помогаю решать бизнес задачи при помощи кода и не имею никакого другого отношения к продукту и бизнесу.
А вот что может перекрыть, так это высокая зарплата и много свободного времени, которое я могу тратить на изучение нового :D
Как по мне, причин несколько:
Профессиональный рост
Спорить об этом можно долго, но новые тулы/фреймворки/либы все-таки решают какие-то новые/появившиеся проблемы/вызовы или решают старые боли, но эффективнее. Конечно, можно в 2021 запиливать приложение на ASP.NET 2.0 потому что "я решаю бизнес-задачи, а не гонюсь за модой", но в сравнении с каким-нибудь реактом такое приложение будет выглядеть уныло. Со временем и заказчик об этом догадается! )))
Community
Поскольку мир не стоит на месте, то все профессиональное сообщество смещается на новые тренды и фреймворки. И если ты сидишь на легаси, то со временем становишься "один в поле воин".
IT-тусовки
Вытекает из предыдущего, но все же стоит отдельного упоминания. Так вот, если решая бизнес-задачи остаться в прошлом, то автоматически выпадаешь из контекста и с коллегами поговорить уже будет не о чем. А это замедляет и профессиональный рост, и дальнейшую карьеру, да и вообще жить станет скучно! ))