Пару лет назад я был переполнен злобой и отчаянием. Я был тем парнем, который сто лет просидел в одной большой компании, выгорел, но еще не узнал, какой за пределами гигантский рынок. Выгорание меня пугало. Я сомневался в своих скиллах и верил намекам начальства, что работу лучше этой хрен найдешь.
Я не знал куда деваться, превратил отчаяние и злобу в текст, и мне это понравилось. Понравилось настолько, что в глубине души я стал радоваться любому дерьму в своей жизни — только из дерьма получался хороший материал. Хуже того, я начинал искать дерьмо специально.
Но находить становилось все труднее, потому что на самом деле жизнь разработчика — это гребаная сказка. Мир вокруг прост и понятен, у тебя интересная работа, тебе всегда есть, где применить свои творческие позывы — и у тебя куча денег. Страха безработицы не существует — тебя в любой день ждет десяток вакансий. Нет боязни кризисов — зарплаты разработчиков растут быстрее всех в стране, а если что-то пойдет не так, ты просто находишь работу, где зп привязана к баксу или выбираешь релокейт. Это индустрия, где любые трудности за тебя решат специально обученные люди. Просто щелкай таски хотя бы пару часов в день.
Мы сидим тут как престарелые европейцы и ворчим на табуны необразованных трудовых мигрантов, которые валят к нам за деньгами из своих дурацких недопрофессий.
В какой-то момент, на пике благополучия, я написал свой самый нахальный текст. Он получился не от того, что в моей жизни было реальное дерьмо, а потому что дерьмо находить не получалось, и это меня бесило. Написал и понял, что хватит с меня этих глупых статей. Решил стать взрослым и серьезным дядькой, как мне советовал каждый третий комментатор.
Всерьез занялся работой, а не спустя рукава. Настроил планов. Согласился наконец слетать с женой и друзьями в отпуск (я ненавидел даже мысль об отпуске), купил билеты. Расслабился и постарался начать жить, как человек. Даже на машине стал ездить медленно и осторожно. И вот здесь-то меня и нашло дерьмо, которое я так долго искал. Но на этот раз я был ему не рад.
За неделю до нового года меня жестко уволили из конторы, где через месяц я должен был стать тимлидом. Было неприятно, но не страшно. Какие проблемы — найдем новую. Но работа нужна была прямо сейчас, а рынок уже вошел в режим «давай после праздников». Я согласился на проектную работу и частичную занятость, тратил на нее пару часов прямо в поездке, сразу же получал кэш и был спокоен.
Но проектная работа — это работа, которая скоро кончится. Я стал искать постоянное место заранее, и не мог понять, что происходит. Рынок меня избаловал, раньше я ходил только на те собесы, куда меня позвали из-за статей — чтобы не пришлось никому ничего объяснять. Не то чтобы я был очень хорош технически, но я достаточно неплох, чтобы не обсираться на собесах.
И вот вчера было десять предложений в день, а сегодня вдруг ноль. Я ждал, что карантин породит кучу удаленки, а он породил пустеющий хэдхантер, игноры и отказы. Вчера было смешно себе представить, что откликнувшись на вакансию получишь «нет», сегодня ты ничего другого и не получаешь. Сегодня если тебе написали «нет», это уже хорошо. Они хотя бы тебя заметили.
Кризис, сраный вирус, статья из-за которой меня запихали в блэклисты. Последнее хотя бы немного смешит: так и представляю злорадствующих эйчаров — «Больше не хочешь никогда работать? Ну вот и не работай». Они сто процентов думают, что я поджал хвост и как миленький прибежал проситься на работу, как только жизнь приперла.
Но я то знаю, кто из нас настоящий лицемер. Я не собираюсь идти на рынок с этой общепринятой успешноуспешной мантрой «о нет, что вы, конечно же я здесь не ради денег! Я с детства мечтал приходить в офис к 10 утра и клепать однотипные таски! Мне важны только ценности вашей компаний, деньги не причем». И я точно знаю, что если этим мистерам-горящим-глазам подарить миллиард долларов, они в ту же минуту насрут на стол начальнику, смотаются на край света и будут до старости поливать экзотические деревья в своем садике и любоваться звездами на лужайке.
Мы все с вами просто вынуждены работать, и нехрен на меня злиться из-за того, что у меня хватило яиц сказать правду вслух.
Я могу сто раз не хотеть работать, но когда ты разработчик, который лишился места в разгар кризиса, мир уже не прост и понятен — он вдруг похож на враждебно настроенную кучу дерьма, которая вот-вот присоединит тебя к себе. Когда у тебя хороший доход, ты быстро обрастаешь кучей обязательств, и вот уже твое базовое существование начинает стоить пять средних зарплат в твоём регионе. Я давно забыл, что такое страх остаться без денег, а сейчас этот страх есть. Многократно усиленный кризисом.
Но мне повезло — с одной из вакансий, на которые я откликался просто на всякий случай, пришёл положительный ответ. Они хотя бы готовы были со мной поговорить.
Вакансия на фулстека, бек на шарпах, фронт на тайпскрипте. Я не бекендер и не фронтендер. Я называю себя фулстеком, потому что знаю как C#, так и джава/тайп скрипт. Но я почти не делал бекенд или фронтенд — я делал библиотеки, десткопы и мобилки.
Мы созвонились и быстро сошлись, что нужно тестовое задание. Простейший крад, неткор, фронт на чём-то из большой тройки. Ну, думаю, оффер у меня в кармане. Никто и ничто не расскажет про мой скилл лучше, чем мой код. Я не смогу обосраться на собесе, когда за моей спиной стоит продуманное, четкое решение поставленной проблемы.
И я был прав, я не обосрался на собеседовании. Я обосрался пока делал тестовое.
Я не бекендер, поэтому не особо себе представляю архитектуру таких штук. Но я разработчик профессионал, я тупо пошёл в гугл, и спросил — как делается веб апи на нет коре. Гугл ответил статьями на мсдн и постами в технобложиках. Я хорошенько всё это изучил и понял, что мне нихрена не нравится подход, принятый в индустрии.
Как они там валидируют данные? Атрибуты? Индустрии больше 30 лет, а мы всё ещё не можем определиться с единым подходом для валидации. Окей, атрибуты. Ставишь MinLength на проперть, а оно не работает потому что ну нет в базе данных такого констрейнта и всё тут. Хочешь чтобы валидировалось — или колбась свой собственный атрибут и встраивай его в кишки EF, или валидируй в сервисах. В задницу атрибуты.
Как они работают с сервисами доступа к данным? Никак, у них нет таких сервисов. Они юзают паттерн репозиторий, а мне это не подходит.
Ладно, IoC — объективно хорошая штука. Но объясните какого черта вы херачите эти репозитории без конца и края? Встраивание их друг в друга, делаете обёртки репозиториев над репозиториями, посыпаете это всё тоннами DTO для того чтобы просто передать базе данных свой проклятый «SELECT TOP 1 FROM… WHERE Id = 10». Что вы там говорите? Тестируется? Мок можно написать? Не то чтобы у меня была такая уж куча опыта, но я ни разу не видел, чтобы система на сервисах была хорошо протестирована с моками. Мокать эту вашу тучу репозиториев над репозиториями и тратить на это две рабочих недели никому не уперлось — и в первую очередь клиенту и менеджеру, который два митинга назад топил за юнит-тестирование и чуть ли не TDD, пока не увидел эстимейты. А на тест-архитекта у вашей «молодой и успешной компании» денег нет.
Для любого крада на любой чих я обязан делать внешний DTO в придачу к остальному десятку, который специально будет использоваться только в контроллере. И не дай бог использовать наследование. Один раз смешаешь сущности — потом ногу сломаешь распутывать. А если юзаешь EF-ную сущность как DTO, то идешь вон. Прокси и вызов attach/detach в самых неожиданных местах тебе обеспечены.
Окей, придумали автомаппер. Но не научились им пользоваться и фигачат статическую конфигурацию, которая потом, конечно же, совершенно внезапно окажется завязана на инстанс DataContext, который — вот сюрприз — придется положить в HttpContext.Current. А потом ещё удивляемся почему все сеньоры убегают с криками, когда им предлагают поучаствовать в переводе проекта на .NET Core.
Боги, зачем я все это знаю? Я не бекендер, я еще не отрастил себе толстую кожу, которая защищает от лишних сомнений, когда используешь принятое у всех бекендеров хреновое решение.
С другой стороны — люди нанимают синьора. Им не нужен чел, который бездумно шлёпает как все — они, Фил, хотят, чтобы ты немного подумал. Но я не могу немного. Я сразу начинаю придумывать какую-то совершенно новую систему, последовательный, мощный подход.
Я разделил приложение на три сборки — дата, бизнес и веб. Слои четко отделены друг от друга, всё что должно быть инкапсулировано — у меня инкапсулировано. Никто кроме слоя данных не может инстанцировать модели, всё под контролем. В итоге у меня три сборки на крад для одной сущности. Я идиот, переделываем. Они нанимают синьора, а не оверинженера.
Прошел уже пятый или шестой круг таких размышлений. В процессе я пишу код, который, кажется, становится всё хуже и хуже. Я быстро понял, что с таким подходом я никогда не доделаю тестовое. Пришлось себя убеждать — засовывай давай свое мнение себе в задницу, и делай как все.
Это далеко не первое тестовое в моей жизни. Я привык так: херачишь, как считаешь нужным, через пару дней рефакторишь один раз и отправляешь. Если я буду делать вечно — лучше не получится. А если оно не зайдёт работодателю — ну и слава богу, значит мы не сработаемся.
Теперь правила изменились. Работа нужна мне как воздух, я начинаю писать такой код, который по-моему они хотят видеть, вместо того, который считаю нужным. Я давно забыл это мерзкое ощущение. Одно дело, сомневаться в своих решениях, когда ты боишься писать плохой код. И совсем другое дело, когда ты пишешь код специально так, чтобы он кому-то понравился.
Когда у тебя что-то не получается в разработке, тебе сразу начинает казаться, что вся проблема в тебе. Что это ты ничего не знаешь, все остальные, мать их, умеют работать программистами, а ты не умеешь. Это иррациональный, необъяснимый ужас, что ты всю жизнь себя обманывал, он очень быстро усиливается.
Да, я знаю, что нельзя годами строить системы и быть не настоящим разработчиком. Да, я знаю еще кучу аргументов, но страх намного сильнее. И сейчас он подкреплен финансовой ямой — я уже не играю в видеоигру, а серьезно рискую сделать свою семью бедной. И единственное оружие, которое у меня есть, чтобы этого избежать — мой скилл, вера в который испаряется на глазах.
Сейчас мне стало страшно как никогда, потому что я не просто понял, а прочувствовал — подтверждением моего скилла всегда был дружелюбный разжиревший рынок. Как только я становился каплю подкованее, рынок моментально меня награждал деньгами и новыми возможностями. А сейчас, когда штормит рынок, то и я оказывается могу стать никем. Не будет рынка, не будет и моей крутизны.
Вся моя уверенность в том, что я имею право принимать какие-то решения, что у меня есть какой-то опыт и основания для этого — разлетелась, когда условия рынка труда изменились. И вот уже разработчик — это не интеллектуальная элита, а инженер из советского НИИ. Дешевый и тупой. Я не могу договориться с собой и сделать элементарное тестовое, потому что страх сделал меня профнепригодным.
Последний сделанный мой вариант бека — эталонное решение. Всё по гайдам. На это ушли все без остатка моральные силы. Я мог бы отправить то, что уже сделано, но я предпочел выкинуть это говно в мусорку, и ничего больше не делать.
Написать тестовое так, как от меня ждут — для меня это сделка с совестью. Я отступаюсь от своих принципов и пишу код, который считаю плохим. А писать как хочу я не могу, потому что мне страшно. Я боюсь, что если титаническими трудами и сделками с собой вымучаю это тестовое и получу в ответ «парень, ты сделал какую-то хрень, ты нам не подходишь», моя вера в себя упадёт настолько, что я даже по собесам не смогу ходить
Меня снова переполняет отчаяние, но вместо злости теперь страх.
Что дальше? Я пойду с горящими глазами рассказывать, как всю жизнь мечтал ходить в офис к 10 тура и клепать однотипные таски?
Теперь вместе с arttom я веду подкаст «Мы обречены». Там все как в статьях — максимально напрямую о разработке, индустрии, бабле, собесах. Первый выпуск вот
PeterPP
Ну и Хрюшек надо пожалеть, по сравнению с программистами, им реально будет плохо, но те кто останется, будут свой синдром вахтёра включать на полную.
В интересные времена живём. Куча стартапиков на жирных рынках схлопнулась (кричат SOS — Save Our Startups). Месяц назад, разработчиков с руками отрывали, а через пару недель по десятку на одно место будет стучаться.
Graf54r
через пару месяцев, или в худшем случае лет, все вернется.
PeterPP
Вернётся конечно, не через пару месяцев, но через годик должно. Но некоторым вкус смузи придётся на это время забыть, хотя мне он и так не очень нравился.
Fox_exe
Да, вовремя я взял «Перерыв» на годик: Понял, что выгораю. Накопил денег на год вперед, уволился и сейчас просто отдыхаю… Понемногу офигивая от того, что происходит в мире…
MykolaPetiukh
Надо было уехать на острова для информационного детокса, и вернуться в совсем другой мир
faoriu
Ну или лишние деньги инвесторов оттянут бонды, снова ставшие привлекательными после репрайсинга
nikolayv81
Совсем не факт, инвесторы ждали что пузырь лопнет но большинство верило что это будет чуть позже, "после" будет детальный пересмотр, в том числе бизнес моделей того во что вкладываться и кто знает, вполне может оказаться что большинство признает ИТ стартапы зоной с
одним из самых высоки уровней риска.