Недопитый чай с лимоном
Украшает грязный стол
Ну да, я стою пару миллионов
Скоро буду стоить сто.
(c) LSP, «10 негритят»
Я помню, что когда-то денег не было. А потом я стал перспективным олимпиадником – и оказалось, что умных школьников заваливают грантами и премиями. Это сравнительно дешевое (потому что олимпиадников не так уж и много) и при этом хорошо выглядящее в новостях проявление альтруизма. В общем, спасибо деду за неэффективную систему поощрений.
За один всерос я получил 150 тысяч рублей. За другой, год спустя – 500,000. В Вышке мне полагалась московская стипендия размером 6.5 тысяч в месяц, и яндексовская, 20 тысяч в месяц. И это – с учетом того, что я отказался от президентского гранта сопоставимых размеров, который обязывал бы меня работать в России еще пару лет после выпуска. Правда, стипендии выдавались только на первый год, после чего я оставался с дефолтной вышкинской стипендией в 1800 рублей.
В общем, я пришел в универ, имея денег на пару лет вперед и «пассивный доход» от стипендий. Примерно тогда же перестал брать деньги у родителей – правда, не скидывался за продукты и не платил коммуналку.
Когда мы пришли первого сентября в Вышку в роли первокурсников, Дядя Женя встретил нас словами «пожалуйста, не идите сразу работать». Он нас предостерегал, что первые курсы очень жесткие, учиться будет сложно, а предложения о работе появятся в ближайшее время. Я тогда решил, что вопросы работы и стажировок отложу хотя бы до конца первого курса.
И сразу пошел преподавать. Ведь преподавание не считается работой, если не фуллтайм, правда же?
Дом-учеба-работа-дом
Из поколения в поколение
У моих олимпиадных успехов была ровно одна причина – хорошие кружки, на которых было и сложно, и полезно, и весело. Кружки делались в разных местах, но примерно одним и тем же набором преподавателей. И в эту группу преподов зазывали прямо с выпускного.
Это связано с тем, что чем более ты взрослый – тем, скорее всего, хуже разбираешься в школьных олимпиадах по программированию. Студенческие олимпиады не очень похожи на школьные по своему формату, а в универе и на работе программирование вообще другое – олимпиадник пишет 300 строк за 30 минут, а на работе и 100 строк за 8 часов может считаться слишком высокой, вредной производительностью. Это связано с тем, что олимпиадный код постоянно пишут, а промышленный постоянно читают. Вот и приоритеты разные.
После выпуска ты не только переучиваешься с «олимпиадного» на «нормальный» – ты еще и тупо устареваешь. Олимпиады по информатике прогрессируют невероятно быстро – продвинутые темы пятилетней давности сегодня считаются классическими. Задачи международной олимпиады из нулевых спокойно решаются нынешним призером всероса, которому до межнара, вообще-то, еще далеко.
Поэтому заметная доля преподов – студенты, которые пока что не забыли то, что ботали для всероса.
Я, соответственно, с первого курса пошел преподавать в Тинькофф Поколение, делать параллель A’ с нуля. Причем это буквально было подкладывание рельсов под запущенный курс – мы каждую неделю готовили новую лекцию и комплект задач. Нужно составлять экзамены, отвечать на вопросы школьников «Почему мой код не работает?», эмоционально поддерживать их перед важными олимпиадами – много что, в общем.
Неделя сурка
Вообще, я очень сильно удивился тому, сколько вещей нужно делать и обсуждать за кадром – по факту, непосредственно занятие занимает меньше времени и сил, чем подготовка материалов и техподдержка. Это отдельный челлендж – в самый разгар контрольных в универе идти проводить зачеты. И хотя бы пару раз в день кто-то из учеников просит посмотреть решение и помочь с задачей. Ух, сколько я плохого кода читал на регулярной основе, вы бы знали! Зато нагрузка была гибкой, поэтому она хорошо совмещалась с учебой.
Стажировка
Ко второму курсу я решил съехать от родителей — потому что у меня не было своей комнаты дома, а во время локдауна все сходили с ума. И я прикинул, что нормально было бы перед этим выйти на стажировку – чтобы и денег подзаработать, и резюме пополнить.
Изначально я хотел стажироваться летом, но стал жертвой ковида. Как настоящий ПМИшник, я был твердо уверен, что всегда можно пойти в Яндекс на летнюю стажку. Но Яндекс остановил найм с началом ковида, и меня развернули после примерно второго собеса. Ближе к лету найм частично разморозили. Я попробовался еще раз – меня опять развернули, потому что на освободившиеся 1.5 места нашли кого-то другого. Так что у меня не оказалось стажировки на лето.
В середине лета я попробовал спросить, ищет ли кто-то в Т стажеров. Мне сказали, что есть позиция, на которую я идеально подхожу, и скинули вакансию со словами javascript и php в описании. «Подождите, произошла чудовищная ошибка» – пишу я, – «я же кроме своих си плюс плюсов ничего не знаю». Мне очень уверенно ответили, что команда уже посмотрела резюме и сказала, что меня надо звать на собес. Поэтому перед собесом я чуть-чуть почитал про JS и думал, как буду выкручиваться по поводу того, что ничего не знаю про фуллстек-разработку.
Оказалось, что в описании вакансии, скопированном с внутреннего портала, лежала какая-то лажа (haha, classic), и на самом деле отдел рекламных технологий искал себе стажера на C++, чтобы делать высоконагруженный бекенд. Со мной на собесе просто поразговаривали, дали какую-то простую задачку на знание языка, обсудили битовые операции и составили примерный чеклист, что я знаю и что не знаю. В целом, можно уверенно говорить, что я не знал ничего :)). В лучшем случае – про что-то слышал.
Меня приняли (во многом, думаю, из-за хороших отзывов от образовательных проектов). Как-то так начались мои два года разработчиком в Т.
Оцените лавинообразность истории — без преподства я бы не нашел стажировку, без всероса не нашел бы преподство, без кружков не взял бы всерос, а кружки для меня открыли вполне конкретные преподы лет в 15, с которыми меня свела воля случая.
На джуновских и стажерских позициях происходит примерно одно и то же — ты ничего не понимаешь, задачи могут быть сколько угодно простыми, ты все равно в основном пытаешься разобраться, что происходит вокруг, и невероятно тупишь.
Мне достался не самый простой проект для этих целей, потому что наши сервисы были в пользовании кучи разных отделов, каждый отдел ими пользовался по-своему, и все было достаточно запутано. Сервис А мог брать данные с сервиса Б, дергать скрипты на lua, другой сервис запускал скрипты не perl-e, все это вокруг какой-то кодогенерации на протобуфах, и даже просто запустить код было нетривиальной задачей, если до этого ты делал только g++ main.cpp -o main
.
Я помню, что первую дурацкую задачу вида “прокинуть конфиг-параметр” я решал недели две, постоянно дергая своего ментора и ничего не понимая. Ну, что поделать, такая жизнь. После этого я в основном занимался какой-то текучкой. Иногда бывает так, что стажера зовут на конкретную трехмесячную задачу, но меня позвали скорее на трехмесячное разгребание минорных задач из бэклога. А после стажировки позвали в штат!
Для меня, как студента, парт тайм был крутой возможностью постепенно прокачиваться в разработке. В моей команде было два мощных синьора, у которых можно было учиться. И они же меня менторили – им можно было писать в случае затыков, описывать проблему – и, если сходу решение не придумывалось, идти совместно разбираться, чтобы я не оставался один на один с проблемой.
Большую часть времени я, как джун, делал всякие неприоритетные задачи, по которым можно было не подгонять и было позволительно набить шишек. Еще я много помогал с инфраструктурой, типа обновлений логгеров или прикручивания метрик, где требовалось заниматься бесконечной копипастой по всей кодовой базе. Более серьезные приколы тоже были, но за два года их набралось не так уж и много. Смешно было, когда я месяц занимался задачей, которая нужна была для починки какого-то бага у пользователей из Гренландии. И еще я прикольный R&D делал, который параллельно защитил в универе как курсовую.
Я бы сказал, что нормально так рос по скиллам и погружению в проект – и, условно, где-то через год вполне разбирался в наших сервисах, мог какие-то вещи поддерживать, спокойно разрабатывать новые фичи. Причем это забавно в том смысле, что ты не становишься техническим гуру. Ты скорее просто понимаешь, как все устроено – какие есть процессы, пайплайны, какая архитектура у сервиса и куда смотреть в разных случаях. Банально запоминаешь, что делать, если уронил прод. Ах, сколько раз я ронял прод, вы бы знали…
По деньгам и времени история была такая — я мог линейно масштабировать ЗП в зависимости от своей парт тайм загрузки. На втором курсе я работал 24 часа, на третьем курсе 30 часов, летом работал 40. Моя ставка, как у джуна, обновлялась раз в полгода. У меня всегда были хорошие отзывы, поэтому я постоянно рос по выплатам. ЗП поднимали нормально так, типа на десятки процентов. Увольнялся я сразу после последнего повышения, имея чуть ли не мидловую зарплату на джуновской позиции. И, в общем-то, имея уже достаточно опыта, чтобы заниматься разработкой дальше, апгрейдясь в мидла.
Работа во время учебы
У работы во время учебы был большой плюс – она подсвечивала, зачем вообще нужно учить то, что я учил в универе. Становилось понятно, что и как устроено, появлялось глобальное представление об индустрии. И вообще, работа с учебой хорошо шли в связке – практика, которую ты получаешь на работе, очень помогает в универе, когда нужно что-то практическое сделать. А теоретические знания из универа лучше усваиваются через привязку к практике на работе.
У работы во время учебы был большой минус – она занимала кучу времени и делала планирование невероятно сложным. На работе есть встречи, которые могут пересекаться с парами. Работа занимает дневное время, в которое периодически возникают другие дела. Работа – это нормальный такой коммитмент, который не просто нужно укладывать в расписание – он и начинает определять твои планы.
Одним глазом пишешь код, другим смотришь лекцию – все как мы любим
Моя учеба однозначно просела из-за того, что я начал работать. Как минимум, я не мог уделять ей продуктивную часть своего времени, и садился за кучу вещей по ночам.
В это же время мотивация учиться скорее выросла. Ну, как выросла – я стал примерно понимать, что программистская карьера заметно скучнее учебы. Программировать на работе норм, когда у тебя помимо нее другие челленджи возникают, но без внешних челленджей там сложно поддерживать хорошую концентрацию интересных вещей. А откуда брать челленджи, если не из универа?
Я стал больше думать про свою карьеру как про некоторую «hot/crazy» диаграму, но только в терминологии интереса и денег. Задачи на работе – полезны бизнесу, но большую часть времени не очень интересны сами по себе. А универ – это такое место, где можно легально делать почти любые бесполезные вещи – главное, чтобы тебе было интересно и ты мог обосновать их минимальную абстрактную полезность.
И поскольку я больше движим интересом, чем деньгами, для меня статус программиста-студента оказался первичным, а статус программиста-работяги вторичным. Тем не менее, мне понравилось, как совмещение работы с учебой позволяло брать лучшее от каждой из траекторий.
Гигачад-преподство
Параллельно с работой я продолжал вести кружок. Суммарно я продержался там три года – в какой-то момент, когда мы съехались с Люсей, стало тупо тяжело совмещать личную жизнь с тем, чтобы тратить рабочую неделю на работу и учебу, а в один из выходных стабильно уезжать вести кружок на весь день. Даже с учетом того, что после первого года основная методичка не менялась, текучка отнимала слишком много сил.
Другие образовательные проекты тоже были. Иногда ко мне приходили знакомые с просьбой порепетировать к олимпиадам или ЕГЭ. Я обычно не отказывал. До начала карантина я пытался вести какой-то кружок в своей школе – но там вышло так себе. Пробовал запустить свой бесплатный мини-курс – но уперся в то, что во время учебы никак не получалось нормально отшлифовать материалы, потому что учеба с работой съедали все время.
Мне было забавно, что все преподство, кроме какого-то фуллтайма в образовательных организациях – это такая халтура, которую делают вместе с чем-то еще. Например, некоторые чуваки вполне себе читают похожие курсы в разных универах параллельно. Более того, когда ты в одном месте что-то делаешь, тебя начинают звать в другие проекты на похожую халтуру – получается такой лавинный эффект, и в какой-то момент нужно либо переставать делать все подряд, либо становиться гуру халтуры.
Благодаря такой куче халтуры я неплохо монетизировал свое знание дерева отрезков и алгоритма Дейкстры. И лекции единичные регулярно звали проводить, и задачи на олимпиады делать, и со всякими контестами на отборы на курсы помогать. Даже тинькоффский аналог Advent of Code провели пару лет назад.
В эмиграции я почти перестал таким заниматься. За последние полгода только провел один курс по алгоритмам для студентов из регионов – и, с одной стороны, зафиксировал для себя, что я хороший препод, который может сделать масштабный курс с нуля; с другой стороны, выгорел, потому что соглашался вести этот курс задолго до его начала, и мои спрогнозированные затраты на учебу и работу на соответствующий семестр были в два раза ниже реальных.
Основной проблемой для меня оказалось то, что преподавание приносит мало видимой пользы. Кому-то расхочется учиться после третьей лекции. Кто-то займется чем-то более интересным для себя. Кто-то настолько мотивированный и старательный, что его можно было бы не учить вообще. И все поголовно забудут материал через несколько лет, потому что он им не был нужен по жизни.
Глобальная бессмысленность преподства компенсируется тем, что оно явно помогает твоим студентам – уж если не глобально, то для достижения их целей на ближайшее время. Плюс в преподстве очень прозрачная обратная связь – либо на тебя будут ругаться, либо будут благодарить. Ну и мне прикольно что-то рассказывать и общаться со студентами. Осенью вот семинары в Вышке вести буду, судя по всему.
Ищу работу из эмиграции
В первые две недели после начала войны я переехал в Грузию и надо было что-то делать. Оставлять свой доход в рублях было неразумно. Так что я начал искать новую работу и обсудил с тимлидом, что скоро свалю.
В этом плане я был в жутко неудачном положении – у меня было полтора года опыта, который плохо матчился с потребностями рынка. Вот я писал бекенды на C++, но бекенд пишут обычно на условном Go. А на C++ делают игры или что-то embedded, а я, наоборот, уже не писал такое. И еще я студент без высшего.
Я закинул посты про поиск работы в знакомых, ликденин, вастрик клуб и пошел откликаться на вакансии. У откликов конверсия невероятно низкая. Какие-то собесы вроде были, но проходило средне. Даже если я справлялся норм, то все равно разворачивали, потому что опыт не подходил под вакансию, или потому что его было мало. Посты дали хороший результат – я был тогда согласен на любой оффер, и получил через посты аж два – парсить данные из твиттера в один криптостартап и пилить инфраструктуру в крипто-HFT у моих знакомых. (Примечание: High Frequency Trading – это автоматическая торговля на бирже)
Помню, что еще был в шаге от оффера в EPAM, в котором меня два часа гоняли по плюсам, оценили на мидла, и уже в конце процесса выкатили какой-то дополнительный собес, на который ко мне тупо никто не пришел. Помню, как сидел в их фирменном зуме с пятнадцатиминутным таймером, который отсчитывал, когда мне можно уйти с непроведенного собеся. Ну и потом сказал, что больше не заинтересован: жутко неприятно было, что при найме компания ведет себя так, будто у них работать такая честь.
И я пошел к своим знакомым, которые делали чилловый HFT. Я проработал там месяца четыре. Занимался какой-то инфраструктурной разработкой на Rust-е, чтобы данные от криптобирж гонялись откуда надо куда надо. Обычно в HFT ты занимаешься какой-то не очень прикольной перегонкой данных, работаешь по 12 часов в день и получаешь кучу бабок. В нашем случае мы сильно зависели от ситуации на рынке и задач было не супер-много. А когда я пришел, крипторынок подутих, и мы стали зарабатывать мало. Так что в нашем HFT я работал не очень много, но и получал тоже мало.
Когда стало понятно, что я за мало денег делаю то, что еще и не очень прикольно, я заколлил повторно поиск работы. Меня звали куда-то практически одни HFT, потому что я олимпиадник, которые обычно там хорошо раскрываются. Я сходил на пару собесов – но везде натыкался на какие-то плохие процессы. В одном месте меня зовут, а уже на техническом собесе выясняется, что это не в штат, а на стажерскую программу, для которой я слишком сильный. В другом месте меня почему-то посчитали синьором, которым я не был, и чувак на собесе меня так разваливал, что я после звонка чуть не плакал. Причем, это же не мой косяк, что мне тупо не сказали ожидаемый уровень скилла (я бы сам не пошел собеситься в HFT на синьора, я не самоубийца), это его косяк, что он самоутверждается за мой счет, когда я не тяну задачи, которые и не планировал тянуть.
Параллельно я нормально собесился в какие-то продуктовые компании, но они морозились, потому что я без диплома был – вот когда получите, тогда и приходите!
По итогу меня через знакомых нашел стартап, в котором я и сейчас работаю. И, в общем-то, меня скорее прикалывает формат стартапа – одной из ключевых метрик является скорость разработки, и поэтому можно делать больше разных задач в единицу времени. Ну и технические задачи, соответственно, тоже другие – как решить продуктовую проблему достаточно хорошо в сжатые сроки?
Но как бы прикольно не было, к концу третьего года карьеры мне в целом разонравилось работать.
Жалуюсь на капитализм
I’m good at working smarter
But I’m even better at not working at all.
(c) Ian McConnell, «Lazy»
Важная вещь про работу заключается в том, что работа занимает слишком дохера времени. И, в общем-то, если тратишь на работу много времени, в какой-то момент уже не важно, сколько можно получать на рынке за час твоего времени – ты бы лучше этот час оставил себе.
Всегда, конечно, есть вариант работать на себя – но это еще больше проблем с тем, чтобы разделять жизнь и работу.
А работа в найме не работает по законам спроса и предложения. У людей нет варианта не работать, потому что тогда им будет нечего есть, поэтому бизнес может диктовать свои условия. Типа 40-часовой рабочей недели по умолчанию, хотя всем было бы лучше, если бы все эффективно отрабатывали 20-30 часов и расходились по своим делам.
Так еще и работники наебывают работодателя, как могут, не делая ничего. Подавляющее большинство людей на рынке труда имеют отрицательную производительность – они не приносят пользы, свою работу делают плохо, и за ними постоянно нужно доделывать. Они уходят на обед на три часа, игнорят сообщения в личке в рабочее время, срывают сроки. Поэтому часто издержки на стул, который человек просиживает, выше профита от его работы.
Поэтому обычно, если ты просто качественно делаешь свою работу, ты уже x2 работник. А если делаешь с энтузиазмом, то и все x10. К сожалению, бизнес тебе при этом не начинает платить x10 – он считает годы опыта, ждет следующего квартала для обновления договора, и так далее. И вообще, бизнес не хочет создавать большой разрыв между x10-челами и работниками с отрицательной продуктивностью, чтобы они не увеличивать напряжение среди сотрудников. Всем удобно, когда есть роли, которые диктует рынок, и единственное, на что ты влияешь качеством своей работы – насколько быстро ты апгрейднешь свою роль. Еще обязательно существует такая роль, после которой особо некуда расти.
Мне кажется, что было бы разумнее называть карьерную лестницу карьерным эскалатором. Ты можешь качать свои скиллы и бежать по ней быстрее, но в целом можно не делать вообще ничего и тебя все равно поднимет до нужного этажа, тупо на годах опыта. Самое сложное в этом процессе – не выбрать неудачный эскалатор, который ведет куда-то не туда.
В общем, мне, как мощному работяге, не нравится такая система – тебе невыгодно работать эффективно, потому что ты можешь работать неэффективно за столько же денег. Карьерный рост медленный и, хоть и зависит от того, как вовлеченно ты работал, но все равно упрется в один и тот же потолок в среднесрочной перспективе. И ты в любом случае продаешь компании больше времени, чем хотел бы продавать, а меньше никто покупать не готов.
Проклятое айти
Айти оказалось очень забавной сферой по ряду причин.
Во-первых, она жутко непрозрачная для внешнего наблюдателя. Поскольку сфера только формируется и большая часть людей ничего не знает ни про разработку, ни про компьютеры, можно достаточно легко объяснить своему боссу, что ты не в Доту играешь на удаленке, а ресерчишь причины сбоев и работаешь над улучшением перформанса.
Во-вторых, в ней спрос на кадры оказался выше предложения, за счет чего в том же СНГ стали платить адекватные деньги, а не стандартные 30 тысяч в месяц. И для людей из бедных регионов это уже достаточная причина, чтобы все резко начали переучиваться.
В-третьих, большую часть программирования можно свести к поиску информации в интернете и копипасте. Этого практически всегда достаточно для задач на микро-уровне. А до макро-уровня никому нет дела, потому что у бизнеса приоритетом является срочность, а не качество.
И мы пришли в точку, где айтишники стали отдельным социальным классом, к которому все хотят примазаться через разные экспресс-курсы. Мы меняем работу раз в полгода, потому что это самый эффективный способ поднимать зарплату. Мы генерируем тонны строк отвратительного кода, и за счет навыков самопрезентации получаем лейбл синьора, не зная, где применяется UDP.
Сломано вообще все:
- Сломан найм, который смотрит на тебя в неверных категориях. Моим любимым вопросом является вопрос рекрутеров о версии C++, на которой работает кандидат. Причем, если ты говоришь не самую новую версию, то всегда какое-то снисхождение в ответ слышно, типа ладно, ничего страшного. Как будто половина новых фичей не лежала в boost-е годами.
- Сломан лейблинг на синьоров, мидлов и джунов – который грейдится не по функциям в команде и ответственности, а по абстрактной крутости. Это же очевидно, что можно справляться с синьорскими задачами в месте с низкой инженерной культурой и не тянуть мидловые задачи в сильных командах.
- Сломаны системы поощрений, которые не успевают за ростом сотрудника и увольняться экономически эффективнее, чем работать.
У меня, например, есть достаточно знакомых, которые берут две фуллтайм работы, чтобы на каждой работать по два часа в день и зарабатывать свои six digits (Примечание: Так принято называть зарплаты от 100,000$/год). И это, как бы, good for them, но меня бесит каждый день оправдывать самому себе этот выбор – что я сейчас делаю что-то, что мне интересно, за разумные деньги, а не пять скучных халяв за дорого.
Про будущее
Поскольку ты каждый день торчишь на работе, работа является твоей основной активностью, некоторым делом твоей жизни. И в этой парадигме вообще очень тупо работать над чем-то дурацким за деньги. Хотелось бы, чтобы работа имела какой-то смысл и устраивала тебя. Работать исключительно ради денег тоже тупо, потому что это все равно, что проводить половину жизни в подготовке к отдыху от нее же. Какой-то замкнутый круг.
Про это сложно думать, пока ты в универе, потому что универ является основным фокусом, а работа чем-то рядом. Но, вообще-то, я страшно боюсь момента, когда учеба закончится, и останется только работа. Это будет значить, что мне нужна будет работа, которая не любая работа, а хорошая работа, устраивающая меня по гораздо большему набору критериев.
Мне сейчас 21 год и я зарабатываю чуть ли не больше своего папы с PhD, работающего в одной из немногих компаний-производителей сверхпроводников. За ближайшие несколько лет, скорее всего, я еще сильнее поднимусь по карьерному эскалатору. И все равно не смогу заработать таких денег, чтобы позволить себе жилье. Может, на первый взнос по ипотеке накоплю, но кто же мне ее сейчас выдаст?
И что, какая перспектива дальше? Стараться минимально работать за максимальный чек на неинтересных задачах? Пойти делать свой стартап? Уйти в академию? Прокачать блог/ютуб/тикток?
С 11 лет, когда я впервые что-то запрограммировал, я был уверен, что мне нравится прогать, и нужно просто дальше в этом развиваться. И сейчас, 10 лет спустя, с нормальными такими достижениями, резюме, образованием, проектами, постоянно думаю – а кем я вообще хочу стать, когда вырасту?
Текст написал Костя Амеличев, иллюстрации нарисовала Люся Свинаренко
Этот лонгрид является частью серии лонгридов «По парам», в которых я рассказываю про свою студенческую жизнь. В следующей части я расскажу про суды, автозаки, протесты, войну и эмиграцию. Следить за выходом лонгридов можно в телеграме два семь три два пять