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

В кризис я потерял работу и теперь боюсь писать умный код, чтобы не распугать последние вакансии — IT-МИР. ПОМОЩЬ В IT-МИРЕ 2020

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

Я не знал куда деваться, превратил отчаяние и злобу в текст, и мне это понравилось. Понравилось настолько, что в глубине души я стал радоваться любому дерьму в своей жизни — только из дерьма получался хороший материал. Хуже того, я начинал искать дерьмо специально.

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

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

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

Всерьез занялся работой, а не спустя рукава. Настроил планов. Согласился наконец слетать с женой и друзьями в отпуск (я ненавидел даже мысль об отпуске), купил билеты. Расслабился и постарался начать жить, как человек. Даже на машине стал ездить медленно и осторожно. И вот здесь-то меня и нашло дерьмо, которое я так долго искал. Но на этот раз я был ему не рад.


За неделю до нового года меня жестко уволили из конторы, где через месяц я должен был стать тимлидом. Было неприятно, но не страшно. Какие проблемы — найдем новую. Но работа нужна была прямо сейчас, а рынок уже вошел в режим «давай после праздников». Я согласился на проектную работу и частичную занятость, тратил на нее пару часов прямо в поездке, сразу же получал кэш и был спокоен.

Но проектная работа — это работа, которая скоро кончится. Я стал искать постоянное место заранее, и не мог понять, что происходит. Рынок меня избаловал, раньше я ходил только на те собесы, куда меня позвали из-за статей — чтобы не пришлось никому ничего объяснять. Не то чтобы я был очень хорош технически, но я достаточно неплох, чтобы не обсираться на собесах.

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

Кризис, сраный вирус, статья из-за которой меня запихали в блэклисты. Последнее хотя бы немного смешит: так и представляю злорадствующих эйчаров — «Больше не хочешь никогда работать? Ну вот и не работай». Они сто процентов думают, что я поджал хвост и как миленький прибежал проситься на работу, как только жизнь приперла.

Но я то знаю, кто из нас настоящий лицемер. Я не собираюсь идти на рынок с этой общепринятой успешноуспешной мантрой «о нет, что вы, конечно же я здесь не ради денег! Я с детства мечтал приходить в офис к 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 я веду подкаст «Мы обречены». Там все как в статьях — максимально напрямую о разработке, индустрии, бабле, собесах. Первый выпуск вот

Специально для сайта ITWORLD.UZ. Новость взята с сайта Хабр