Transcription
IT - это не только кайф и свобода, но и болото из техдолга, недоверия и вечных. У нас так не принято. И пока толпы штурмуют джиновские позиции, тру айтишники подумывают о том, что пора бы из IT выходить. Оставайся до конца, и ты узнаешь, почему так происходит.
Если вы только заходите в IT, то наверняка полны надежд. Курсы вам обещали свободу, большие зарплаты и всё в этом роде. Мы тоже когда-то во всё это верили и хотели менять мир, но реальность оказалась немножечко прозаичнее. Мы здесь не будем говорить, что всё пропало и отрасль плохая и работать здесь не нужно. Но с тем, о чём дальше пойдёт речь, вы наверняка столкнётесь. Мы не будем здесь говорить про всякую банальщину типа сложных собесов, сроков, давления. Это и так все знают. Давайте лучше занырнём чуть поглубже.
Начнём с неожиданного. Айтишечка на самом деле очень консервативная среда. Вы мне сейчас можете сказать: "Ты, чувак, вообще с какого дерева упал? Это же хай-тек, новые технологии, искусственный интеллект и всё в этом духе". Мм, с одной стороны, да. Но с другой, есть интересный момент. Мы занимаемся обучением людей, то есть мы занимаемся повышением квалификации разработчиков. И самый частый вопрос, который нам задают наши слушатели: "А как нам теперь это всё внедрять?" Мы рассказали про какие-то подходы, методологии, технологии, и ребята нас наслушались и пошли пытаться это всё внедрять. Естественно, у них ничего не получается. И неважно, с какой степенью проработки ты придёшь, то ли это просто на словах, или это уже какой-то прототип или, может быть, план с метриками, тебе скорее всего скажут: "Нам это не нужно, мы будем работать, как работали". И, честно говоря, уже местами опускаются руки. Думаешь: "А зачем мы тогда людей вообще учим?"
Получается, что внешне меняются какие-то инструменты, базы данных, фреймворки. Но обратите внимание, что качество изделий остаётся на том же уровне, что и всегда. То есть наши программы дырявые, глючные, а изнутри они ещё и не поддерживаемы. Разрабам в кайф менять инструменты, то есть поменяли одну базу данных на другую. Но вот саму суть, то есть это методологии, процессы, подходы, всё это остаётся неизменным. Их менять гораздо сложнее. Да и зачем это делать, если красивую строчку в резюме не добавить? Возможно, есть где-то убеждение, что нужно выбрать правильный фреймворк, базу данных, и вот тогда точно станет всё хорошо. Если честно, мы сами когда-то так думали, но перебирать фреймворки - это всё равно, что менять препараты для похудения вместо того, чтобы перестать жрать в три горла и пойти в зал.
Идём дальше. Если копнуть чуть поглубже, то выяснится, что айтишечка представляет из себя какую-то смесь народных примет по вере и карго-культов. Ну вот вспомните, к примеру, микросервисы. На волне популярности их пихали надо и не надо в те места, где они были действительно нужны, и там, где они создавали больше проблем. То есть не было никакого обоснования для применения этих микросервисов. Просто так было модно. И люди действительно говорили, типа: "Ну как же мы в 2000 там восемнадцатом году без микросервисов?" А то, что мы пытаемся решить проблему, которая на самом деле не существует, и тем самым создаём новую, это ничего, это в порядке вещей. Или же давайте вспомним какой-нибудь Agile. Вот это самый, мне кажется, классный пример карго-культа. Уже никто не помнит, зачем это всё создавалось. Какую проблему мы решали. Самое главное - нанять скрам-мастера обязательно татуированного и с окладистой бородой. И тогда вот точно всё будет здорово, сроки будут соблюдаться, а фичи мы будем вообще плодить просто как из пулемёта. Ну, естественно, так не работает. Ну и, кстати, микросервис тоже отчасти можно отнести к такому карго-культу.
А ещё, оказывается, есть неявная связь между методологиями, практиками и всеми вот этими классными вещами. Я вот очень часто привожу в пример Trunk-based development и приведу его ещё раз. Trunk-based development - это когда мы разрабатываем через единую ветку, что-то такое из далёкого прошлого, но на самом деле этот подход довольно популярен сейчас. И чтобы его внедрить, нам нужно, например, хорошее тестовое покрытие. А тестовое покрытие мы не можем сделать, если у нас дизайн приложения этому не позволяет. А ещё мы не можем запускать тесты, если у нас, например, нет подходящей инфраструктуры. И автоматизация у нас должна быть на высоте. И выясняется, что для того, чтобы просто внедрить такую, казалось бы, простейшую вещь, как trunk-based develop, куда уж проще, коммитить просто в мастер или там в develop, в trunk, как сейчас модно эти ветки называть, и всё, и будет тебе счастье. Но оказывается, нифига. Нужно соблюсти кучу условий, а ещё и команда должна быть соответствующей квалификации. То есть так просто у вас ничего не взлетит. И вот люди попробовали такие: "А это всё ерунда, ни черта не работает, давайте выкинем". И вокруг вот этих подходов постепенно образуется такая вот аура, что это всё не работает. Это из каких-то умных книжек, которые пишут дядьки, которые код-то никогда в жизни не трогали.
Или другой пример - это Domain-Driven Design. Очень часто обращают внимание только на тактические паттерны. Пощупали их, посмотрели, попытались внедрить. Сложно, ничего непонятно, профита от этого никакого. Давайте выкинем, всё это ерунда. И просто ничего не работает. А на самом деле Domain-Driven Design может взлететь только, если у вас налажена коммуникация с экспертами предметной области, там, с пользователями, в общем, с кем угодно. Это в первую очередь как раз-таки про коммуникацию, не про код как таковой. Это уже там последствия, можно сказать. Получается, что если посмотреть внимательно, то разработка - это вот реально какой-то ворох примет, поверий, карго-культов. А чтобы всё это сделать стройным и красивым, нужно потратить довольно большое количество времени. Это реально, но нужно поднапрячься. Ну, мы, конечно, этого делать не будем. Лучше дождёмся AI, такую, в которую можно будет впихать весь наш проект, и тогда мы точно заживём, весь наш говнокод самостоятельно рассосётся, и фичи будут вылетать просто как горячие пирожки из печки.
Кстати, если вы хотите обрести систему в голове, то рекомендую подписаться на наш Telegram-канал. Мы как раз-таки на этом специализируемся и заодно вам расскажем, как разрабатывать без боли и сожалений. А мы продолжаем.
Давайте теперь поговорим про техдолг. Наверняка вы уже слышали про такое понятие. Техдолг - это такое решение, которое позволяет нам, допустим, ускорить какие-то сроки разработки, сделать что-то быстрее. Но долгом это названо неспроста. Мы берём у кого-то взаймы, у чего-то точнее, и потом должны будем отдать. Причём проценты по кредиту считаются по сложной формуле. То есть это сложный процент. Мы можем сделать какой-нибудь костыль или что-то в этом роде, быстренько зарелизиться, а потом этот костыль исправить. Ну, на самом деле, да, оставить этот костыль как есть. Кого мы обманываем? И вообще сам по себе техдолг - это не зло. Иногда им стоит пользоваться. То есть вот вы берёте кредит на развитие производства, можно воспринимать его примерно таким образом. И сам техдолг бывает разных видов. Он бывает преднамеренный и непреднамеренный.
Печальная новость заключается в том, что какая бы скилловая команда ни была, этот техдолг образуется обязательно. Где-то мы не знали всех обстоятельств, то есть мы не знали наперёд, что будет происходить. Где-то нам не хватило квалификации. И при том, что мы действительно старались, где-то что-то пошло не так, где-то пошли на какой-то компромисс. И, в общем-то, ещё раз повторю, даже у самых опытных и скилловых команд техдолг образуется. Даже просто по банальной причине: у нас меняются внешние обстоятельства, но при этом адаптироваться к новым обстоятельствам нам не дают. То есть у нас было какое-то техническое решение, оно так и будет работать в новых условиях, хотя к этому наша программа совсем не подготовлена. Ну, наш программный комплекс.
Приведу пример. У нас был, допустим, магазин какой-нибудь продуктовый на первом этаже, и мы сдаём его новому арендатору. Там сейчас будет ночной клуб. Соответственно, что произойдёт с этим магазином? Там будет какая-то перепланировка. Уберут все полки, естественно, кассы и сделают всё совсем по-другому. На это время магазин уже работать перестанет, ночной клуб ещё работать не будет. В случае с айтишечкой гости будут танцевать прямо между полок, периодически спотыкаясь об кассу и продукты, которые ещё не успели вывести. Ну, потому что система же работает и деньги терять не хочется. Неважно, что она уже не подходит под сложившиеся обстоятельства. И даже грамотное решение в итоге идёт на дно. При таком подходе тут ничего не поделать.
И да, техдолг платит лично разработчик. Вот прямо лично. Это плата своими нервами, временем, стрессом, сожжёнными мозгами. Никакой менеджер с вами по ночам сидеть и править баги не будет. Он будет сладенько спать, а вы будете разгребать это всё самостоятельно.
А теперь про синдром самозванца. Вы мне сейчас скажете: "Ты же обещал, что не будет никакой банальщины, пожалуйста, не торопитесь". Тут с синдромом самозванца, я думаю, все хорошо знакомы, как минимум слышали про него. И классно, если вам удалось задавить самозванца внутри себя. Но синдром самозванца присутствует в том числе у условного заказчика, то есть там продукт-менеджера или действительно настоящего заказчика, кто заказывает у вас софт, но только относительно вас. То есть нас, разработчиков, считают самозванцами, незаслуженно получающих большие деньги. И нам больше, на самом деле, не доверяют. Обещали сделать в срок, сроки просрали. Обещали, что рефакторинг поможет, выделили на это время, он не помог. Обещали, что не будет критических дефектов, тут вообще ничего не работает и даже не запускается. Обещали, что переезд на новый фреймворк всё починит. Ничего не починилось. Отчасти мы сами виноваты. Отчасти так сложились обстоятельства. Но теперь этот условный заказчик лезет в нашу работу, говорит, как нам делать, даже если ничего в этом не понимает. Просто вот не видел никогда в жизни компьютер. Собственно, заказчик не воспринимает нас как профи, а воспринимает как каких-то, наверное, дорогостоящих бездельников. Может, в других отраслях также, я не знаю. Есть подозрение, что что-то похожее происходит, но нам предстоит сделать немало, чтобы обратно завоевать доверие.
А теперь самая мякотка - это политика. Та самая политика с корпоративными войнами, жонглированием ответственностью и подсиживанием друг друга. Вы можете спросить: "А мы-то вот сидим тут душные за своими компьютерами и причём тут мы? Как это нас касается? Большие дядьки между собой дерутся за более сытную пайку, а мы вообще тут как бы не при делах". Но политика влияет на технические решения тоже, к сожалению. Как вам, например, идея сделать два практически идентичных сервиса, которые делают одно и то же, просто потому, что два начальника между собой не поделили любовницу или любовника, скорее? Что нам в этом случае делать? Да, мы сидим и разрабатываем эти два идентичных сервиса, а потом чиним, скажем, неконсистентность в 2 ночи. Всё разъехалось, и клиент верещит, что у него в одной части системы одни данные отображаются, в другой части - другие. Опять же, этот начальник с вами сидеть не будет, ему абсолютно плевать, и он даже не знает, э-э, скорее всего, о вашем существовании.
Или другой пример: писать полтора года систему и, э-э, выкинуть её в помойку, ехать на старых костылях. Просто потому, что, опять же, эти два начальника подрались друг с другом на корпоративе, и теперь один заблокировал решение другого, а вы от этого пострадали и дальше будете ковыряться в говнокоде вместо того, чтобы запустить новую подсистему, которая этих недостатков лишена. Это всё реальные примеры и далеко не самые страшные. Вы можете пострадать гораздо сильнее. Конечно, какое-то время можно всю эту политику не замечать, но однажды она вас обязательно коснётся.
А теперь мой такой личный пункт. Считайте это брюзжанием старого деда. Но я помню те времена, это было примерно лет 20 назад, может быть, чуть меньше. IT-сфера тогда только начинала своё существование. Тогда не было ни доставок, ни маркетплейсов, ни банкинга, даже не было ни Госуслуг, ни такси. И всё, что у нас было - это ICQ, какие-то другие виды мессенджеров и чатов, старый добрый интернет вида Web 1.0. И те, кто начинал свой путь тогда, не получал много денег, но уже видели, какие безграничные возможности даёт айтишечка. Мы были студентами или школьниками даже ещё на тот момент. Даже нам уже было видно, что в целом можно создать со своими корешами какую-нибудь компанию, сейчас это называется стартапами, и действительно что-то поменять. Такие примеры были у нас перед глазами.
Потом была стартап-лихорадка десятых годов. Те времена уже, к сожалению, прошли или к счастью. Получается, что ты больше не можешь сделать высокотехнологичный бизнес с братюнями. Ты можешь открыть пиццерию, но вот новый ВКонтакте, YouTube или тем более ChatGPT у тебя уже не получится. Почему так? Потому что во все ниши зашли корпорации. И командой в два-три человека конкурировать не вариант, а это будет очень сложно, но, скорее всего, вы просто не вывезете требования к продуктам, именно современные требования. И если нет каких-то больших инвестиций, то большую команду профессионалов не собрать. Всё, что осталось - это, ну, обычная работа в гигантах, где, возможно, тебе будут впаривать корпоративный булщит под соусом причастности. "Работа нас сплотила, в единстве наша сила". А на самом деле ты будешь работать на обычной джесоно-развесочной фабрике.
В этом, наверное, нет ничего плохого. И, наверное, даже это хорошо. Почему? Да потому что на самом деле наши мечты воплотились в жизнь и тем самым умерли. Теперь айтишечка предлагает тебе чуток развлечений с фреймворками, деньги, статус, но, наверное, ничего больше. Хотя, как посмотреть, это чисто моё субъективное мнение, ваше может отличаться. И вот, кстати, сейчас выглядит так, что приоткрылось окно возможностей с появлением всяких AI-штук. То есть можно сделать какой-то продукт на основе искусственного интеллекта и как-то перепрыгнуть вот этот вот барьер. Ну, не знаю, посмотрим. Может быть, и искусственный интеллект окажется большим пузырём, который с большим грохотом лопнет.
И вот все вышеперечисленные проблемы заставляют задуматься. Некоторые из моих товарищей, которые в айтишечку пришли давным-давно, когда ещё не было ни зарплат, ни статусов, ничего, вот эти ребята думают о том, чтобы айтишечку покинуть. То есть их не устраивает текущее положение дел, несмотря на то, что доходы их довольно-таки серьёзные, некоторые осмеливаются это сделать. Выходят из IT, где-то, естественно, терпят понижение в деньгах, но при этом кайфуют. Я даже слышал такую историю, когда ребята устроились, если я не ошибаюсь, водителями автобуса. То есть дело было в США, потому что меньше стресса, а при этом они работают на государство, у них есть, кажется, налоговые льготы, какие-то плюшки. В общем-то, получается не намного меньше, но зато стало меньше стресса. Конечно, да, работа водителям - то ещё приключение, но, как они говорили, смену откатал и свободен. Не болит голова о том, что там нужно срочно какую-то фичу пилить или, э-э, какой-то баг не даёт заснуть. Просто покрутил баранку и спишь себе спокойно. Там в выходные жаришь сосиски и пьёшь разные пенные напитки.
Ну а большинство, в том числе я, остаются в отрасли. Ну просто потому, что больше мы ничего не умеем. Но, конечно же, не всё так плохо. То, что я рассказал, это не значит, что так везде. И не обязательно вы с этим столкнётесь. Ну, хотя, наверное, с большой долей вероятности. И вообще, это просто наш такой субъективный опыт. В целом айтишечка - неплохая отрасль, учитывая совокупность факторов. И всегда помните, что можно, вообще-то, выбирать, где работать. Не все компании одинаковые. Здесь команды, где уважают инженеров, где дают время на рефакторинг и реально ценят качество. Также нужно учиться влиять снизу, то есть внедрять какие-то маленькие изменения и улучшения в процессе, автоматизировать рутину, давать честную обратную связь. Иногда именно так и начинается изменение культуры, хотя это очень тяжело. Можно осознанно работать с техдолгом, требовать его учёта в планировании, показывать, во что он выливается, и объяснять это всё на языке бизнеса, что, в общем-то, тоже непросто. Обязательно нужно учиться фильтровать bullshit, то есть понимать, что всякие модные слова и методологии сами по себе не решат проблему, а инструмент выбирается под задачу, а не просто потому, что это модно, хайпово сейчас и всё в этом роде. Главное - перестать ждать идеальной среды и начать строить её вокруг себя. Только так вы сможете обрести хоть в какой-то мере душевное спокойствие относительно того, что вы делаете. А часть проблем, например, как построить у себя в голове систему, выплатить техническую ипотеку и внедрить изменения, мы вам поможем решить. Для этого подписывайтесь на наш Telegram-канал, на канал в Ютубе, пишите комментарии, с чего у вас бомбит, и увидимся.