Как войти в айти, сменить десяток проектов и завести собаку
Тот самый сеньор с корги рассказал про карьерный путь и вход в IT.
Иллюстрация: fatty corgi / Fernando Hernandez / Unsplash / Дима Руденок для Skillbox Media
Владислав Масунов
Head of Development, любит своего пса Брюса и автомобильные путешествия.
Я занялся программированием в 2008 году, ещё когда учился в школе. Всё началось с увлечения мобильниками — тогда были популярны смартфоны Nokia и появились первые приложения для них. Некоторые приложения надо было подписывать специальным сертификатом, который выдавался только на конкретное устройство. Официальный сайт Nokia прекратил выпуск этих сертификатов, и бразды правления взяли китайцы.
Я нашёл инструкцию, как оставить заявку, на форуме и начал сам выпускать сертификаты для приложений. Для этого сделал простенький сайт на конструкторе uCoz, и он достаточно быстро набирал популярность. Мне даже предлагали за него 2,5 тысячи долларов — можно сказать, это был мой первый успешный успех. Однако школьником я был очень амбициозен и подумал: «Сайт не продам — лучше раскручу и заработаю гораздо больше». Правда, вскоре набрали популярность первые iPhone, а устройства от Nokia отправились на свалку истории.
Параллельно летом я подрабатывал на заводе — прокладывал локальные сети по цехам и таким образом всё больше вкатывался в IT. Кстати, монтажник — это самая неблагодарная работа, потому что приходится вечно грязному лазать с проводами по всяким углам и при этом все вокруг недовольны твоим присутствием. В общем, это был интересный опыт, но мне хотелось заниматься программированием.
Ради первой работы приукрасил резюме
Я очень долго пытался найти работу программистом, но джуны были никому не нужны. В итоге я всё-таки получил свою первую работу в хостинг-компании в 2013 году.
Бесплатно работать не хотелось, поэтому я просто добавил пару строчек в резюме о якобы опыте коммерческой разработки, а на собеседовании убедительно рассказал, что это была за компания и что именно я в ней делал. И меня взяли! Надо сказать, что трудился я очень усердно и всеми силами старался соответствовать написанному в резюме. Так я проработал полгода.
Поначалу мне вверили старую legacy-систему по реселлингу доменов. Это был один из моих первых факапов: я не выключил автопродление, в результате бесплатно продлилось много доменов на очень большую сумму. Мне сказали, что так бывает и это не страшно.
Потом меня переключили на новое направление — мы делали агрегатор облачных хостингов DigitalOcean и Linode: мы интегрировались с их сервисами, а клиентам предоставляли свою админку через API провайдеров и возможность оплаты для российских пользователей. На тот момент были очень популярны WebMoney и «Яндекс.Деньги», весь биллинг шёл в рублях, а пластиковые карточки были не особо распространены — как и PayPal.
Благодаря интеграции с этими облачными провайдерами нам удалось покрыть своими услугами довольно значительную «цифровую» территорию — клиенты через нас могли купить сервер практически в любой стране. Это было крутым конкурентным преимуществом.
После этого мы начинали делать платформу по перехвату истёкших доменов: к этому времени я уже покинул компанию, но слышал от коллег, что платформа успешно развивалась и росла. Я до сих пор регулярно смотрю, что у них происходит.
Следующей работой стало SEO — я занимался продвижением сайтов. В этой отрасли я проработал около года и завёл немало интересных знакомств. Однако само по себе продвижение оказалось очень нудным занятием с кучей однообразных задач. Например, в одну компанию меня звали разрабатывать какую-то сеошную систему аналитики. Вначале я подумал, что это круто и я смогу показать свои умения, а на деле просто месяц сидел и правил заголовки на сайтах. Так я понял, что занимаюсь какой-то ерундой, и уволился.
Организовал собственный бизнес и успел поработать в нескольких стартапах
Потом я решил заняться предпринимательством, и это оказалось ещё более неблагодарным делом, чем работа по найму. Я пытался построить сайтостроительный «станок». Думал так: сделаю 10 сайтов за 30 тысяч рублей — заработаю 300 тысяч. Но оказалось, что это так не работает. Я вышел на госучреждения, сделал четыре сайта, но на согласования и документооборот уходило гораздо больше времени, чем на саму работу.
В итоге мы так и не вышли на нормальные сроки и прибыли, а я понял, что этот проект пора закрывать. Забавно, что к этому времени наконец-то заработал наш сарафан и мне начали названивать с предложениями. Но я уже всё решил и отвечал, что больше этим не занимаюсь.
Одним из последних наших клиентов была биржа грузоперевозок. Я сделал для них расчёт стоимости перевозок и топлива, удобные карты. Это была разовая работа, но я получил интересный опыт, который позволил мне устроиться в стартап, который тоже делал платформу по грузоперевозкам — типа современного YouDo.
Сервис фокусировался на коммерческих B2B-перевозках, а мы сделали личный кабинет транспортной компании и приложение для водителей за очень короткое время — буквально за три месяца. Презентовали его инвесторам, они были в восторге: «Всё круто, развиваем его дальше!» Плюс наш директор предложил сделать сервис по страхованию ОСАГО.
Вскоре выяснилось, что директор не заложил бюджет на рекламу, маркетинг и продвижение. Он решил, что наши идеи и продукты настолько крутые, что сами себя продадут и завирусятся. Но этого не случилось, и за всё время своего существования наш стартап не заработал, наверное, даже ста тысяч рублей. В результате инвесторы с нами попрощались. Самое смешное, что, когда мы презентовали функциональность, директор так хвалил проект и его надёжность, что предлагал взять ипотеку. И я даже об этом задумался. А тут вдруг случилось внезапное закрытие.
После схлопывания стартапа я с горящей головой носился по Москве по собеседованиям и получил оффер в первый же день. Всего у меня было восемь собеседований. В моих глазах явно читалось отчаяние, жил я на севере Москвы и поэтому собеседования отсортировал по удалённости от своего дома. Последнее собеседование было в Румянцеве — это другой конец Москвы, дорога туда и обратно занимала почти четыре часа. Но выбора особо не было, а оффер был интересным, с хорошей зарплатой, и я согласился.
Это тоже был стартап — онлайн-школа английского, как мне сказали на собеседовании, убийца Skyeng. Спойлер: убийца вышел так себе. Когда я вышел на работу, у компании был только какой-то стрёмный лендинг и Excel-таблица вместо CRM. Я отвечал за платформу, на которой выкладывались курсы, вёлся учёт преподавателей и клиентов, подписки, телефония. Закодил я её довольно быстро — в минимальном варианте.
Постепенно руководители набрали команду и сказали, что, раз я присоединился первым, значит, знаю продукт лучше всех и должен стать тимлидом. При этом опыта управления и делегирования у меня на тот момент не было вообще. В итоге два человека у меня в команде просто сидели и ничего не делали. Правда, когда я уже научился распределять задачи, они всё равно продолжали ничего не делать, и их уволили. Мы сколотили крепкую команду из фронтенд-разработчика, мобильного разработчика и двух бэкендеров и в таком составе просуществовали около года.
С бюджетами на рекламу у этого стартапа всё было классно, но тратили их совсем не туда. Купили три поста у российских селебрити типа Бузовой, Бородиной, прокачали с их помощью аккаунт в «Инстаграме»*: клиентов не прибавилось, а вот деньги закончились. При этом планы были грандиозные — я пришёл в ноябре, а в апреле компания планировала выйти на международный рынок. Однако в апреле у нас было всего 400 клиентов, и инвестор сказал, чтобы мы что-то с этим делали. Я понял, что этот самолёт в глубоком пике: какое-то время по инерции он ещё будет держаться в воздухе, но очень недолго.
Всю команду разработки сократили, а оставшимся урезали зарплату. Я решил остаться — для моральной поддержки команды, но пропорционально сократил рабочие часы. Работал четыре часа в неделю, а в свободное время спокойно ходил по собеседованиям. Проект закрыли, и на этом наше сотрудничество закончилось.
Благодаря работе в каршеринге завёл собаку
Я устроился в первую и, наверное, единственную крупную в моём опыте известную компанию — BelkaCar, каршеринг. Думал: «Ничего себе, я основательниц видел на amoCONF по телеку, а они вот тут, рядом». В BelkaCar мы делали крутые проекты: новые осмотры, Bluetooth-двери, прогрев.
Потом стало скучновато, потому что нужно было ждать нового раунда инвестиций и причёсывать аналитику. Мы много недель просто пилили графики аналитики в Grafana. Видно было, что вся команда заскучала, и нам поручили новый проект — мониторинг долгой парковки, долгого простоя и долгой аренды без движения.
Так как эти три модуля работали независимо друг от друга, мы решили, что их будут делать три разных разработчика. А потом пожали плоды этого подхода.
Можно сделать один абстрактный сервис, а потом чуть-чуть поменять его для реализации нескольких конкретных сервисов (по аналогии с абстрактным и обычным классом в Java, например). Тогда должен получиться более-менее стандартный код с минимальными изменениями. Однако мы пошли другим путём — каждый запилил свой сервис, а на выходе было три в корне разных подхода. Когда всё это сращивали — был ужас. В процессе кого-то из нашей тройки переключили на другие задачи, и дописывали этот проект уже другие люди. Пожалуй, это был самый провальный проект в моём опыте.
Как сеньор стал сеньором с корги
Я планировал завести собаку ещё в детстве — правда, тогда я мечтал сначала об овчарке, а потом о ставших модными хаски. Один раз я даже целый день провёл с хаски в походе: мы прошли километров сорок, я был ужасно вымотан, а хаски бодро прыгал вокруг, как бы говоря: «Ну что, давай ещё?» Так я понял, что у меня не хватит сил выгуливать такую собаку, тем более с моими двумя работами.
Своего корги Брюса я завёл благодаря BelkaCar. Случилось всё так: коллега как-то принёс на работу своего корги, и работа в офисе встала — все играли с собакой. Я почитал про эту породу и подумал, что это овчарка, только маленькая — всё, как я и хотел. Детские мечты сбываются.
Коллега посоветовал мне надёжных заводчиков. В помёте был только один рыжий щенок, но только для выставок — поэтому его не продавали. Я решил посмотреть остальных щенков и увидел своего пса — он был похож на Бэтмена, поэтому я решил назвать его Брюсом.
В середине января мы увиделись — и я вспоминаю этот день как самый счастливый в жизни. Я взял его на руки — такого дрожащего, маленького, беспомощного. Брюс посмотрел на меня, я на него — и он сразу перестал дрожать, начал лизать мои руки. Я понял, что это моя собака.
Через месяц я забрал Брюса к себе, а когда получал документы, оказалось, что у нас день рождения практически в один день. Родись он на денёк пораньше — праздновали бы вместе.
Так и начались мои псевдоотцовские будни — наполненные сюрпризами. Например, мне сказали, что он приучен к ошейнику, но умолчали, что он не приучен к поводку. И дали рекомендацию: чем больше времени я проведу с Брюсом днём, тем спокойнее он будет ночью. Вечером мы вышли гулять, но это было то ещё испытание: не приученный к поводку, щенок скакал, как конь, брыкался, пытался отцепиться. Но я заранее посмотрел несколько видео, как обращаться с щенком, и запасся угощениями, так что сначала мы гуляли часа полтора из комнаты в кухню, а потом вышли на 15 минут на улицу. Это была наша первая маленькая победа.
Самый сложный день в период щенячества был, когда как-то ночью Брюс не давал мне уснуть, а потом очень рано разбудил и вёл себя очень непослушно во время прогулки: тянул поводок, вырывался, пытался снять ошейник, что-то подбирать.
А когда мы вернулись — скакал по коридору, запрыгивал на меня и испачкал всё вокруг. Я отмыл его, покормил, отмыл коридор, смотрю — а времени уже одиннадцать, у меня созвон, а я невыспавшийся и голодный. Залип, уставился в одну точку и подумал: «Ну за что мне всё это?» На секунду даже промелькнула мысль, что теперь я, кажется, хотя бы немного понимаю, что такое постродовая депрессия. Брюс и сейчас время от времени меня подбешивает, но я очень его люблю.
Кстати, половина моих подписчиков в Twitter — его заслуга. Но любят его не только в Twitter: как только он у меня появился, на него сразу стали обращать внимание все мои знакомые — первое время я даже ревновал.
Стал настоящим тимлидом
После BelkaCar я пытался устроиться в какую-то ещё более крупную компанию со всякими плюшками, ДМС и так далее и даже походил по реферальным собеседованиям: меня звали в «Ситимобил», «Тинькофф» и другие компании. Но я ненавижу собеседования по рефералке, ощущаю какой-то груз ответственности из-за того, что меня кто-то порекомендовал, и поэтому дико лажаю.
Например, когда пришёл в «Тинькофф», на двери была табличка с надписью то ли «На себя», то ли «От себя», а я пытался открыть её в другую сторону. После этого подумал, что ничего хорошего уже точно не будет.
А на собеседовании в «Ситимобил» меня, кажется, подвёл юмор. Собеседующий обмолвился, что когда-то контрибьютил в фреймворк Yii, я в ответ неудачно пошутил, и мне отказали, сославшись на недостаточный опыт. Сейчас я стараюсь шутить уже после испытательного срока — за три месяца шутки уже обкатаются, ты поймёшь атмосферу в коллективе и всё станет нормально.
После таких неудач я решил заявиться на лида — тем более у меня был небольшой опыт. Нашёл компанию, которая занималась корпоративным туризмом и устроился в команду управления отелями. Там была сложная ситуация: кто-то из подрядчиков когда-то что-то делал, и вроде как что-то даже работало, но что и как — было непонятно. Мне надо было принять проект у подрядчиков, разобраться в нём и потихоньку набрать команду, чтобы поддерживать его уже своими силами.
Первый месяц я так и делал, всё было замечательно. Однако в январе 2020 года нас перекинули на проект по продаже ж/д билетов, а там были костыль на костыле. Каким-то чудом из говна и палок мы всё же собрали этот сервис, и на демо он даже заработал. Правда, в какой-то момент я просто начал гореть от всего этого.
Последней каплей стала поломка кофемашины. Я решил, что хватит это терпеть, и отправил гневное письмо своему руководителю. Мне в ответ прислали какую-то отписку в стиле «так бывает», и никто не поговорил со мной лично. Я всё ещё был на испытательном, поэтому решил уволиться в тот же день.
Работа на двух проектах
Как только ушёл, получил ещё два оффера — в очередном трэвел-сервисе и в компании, которая занимается рекламой. Я отказал «рекламе» — ребята расстроились и предложили подумать. За это время я прошёл ещё несколько собеседований и всё-таки решил снова позвонить в рекламную компанию. К тому моменту лида они уже нашли, зато предложили стать сеньором на тех же условиях.
Сеньор — это более атомарная боевая единица. Ему можно поставить задачу в более абстрактной форме, он её сам декомпозирует, где надо — уточнит, где надо — скажет, что это не будет работать так, как ожидается. Или объяснит, что задача вообще не нужна. Мидл работает по более-менее проработанным задачам. Но тоже может что-то предлагать. Поэтому моя роль была более серьёзной и важной, чем у мидла, и при этом менее ответственной, чем у лида. Денег больше — ответственности меньше. И я согласился.
В офисе этой компании шёл ремонт, и нужно было подождать полтора месяца до его завершения. Я согласился и решил устроить себе небольшой отдых. Но уже спустя неделю стал тревожным: я и не в поиске работы, но и ничего не делаю. В общем, так и не смог спокойно отдохнуть.
Списался с товарищем, который как раз только-только начал делать новый соло-проект, в котором я сейчас работаю лидом. Он пригласил меня помочь, я сделал пару задач, и он перебил предложение рекламной компании. В итоге я вышел в оба места и весь карантин проработал на двух проектах.
В рекламной компании проект был достаточно простеньким — хотя их платформу недавно выкупил «Билайн» за 1,5 млрд рублей или около того. Я автоматизировал всё, что мог, чтобы максимально экономить время. Самая жесть вышла с планированием — весь день были созвоны, типичный оверменеджмент. При этом команда состояла всего из четырёх человек — вместе с лидом. В итоге в прошлом году я всё-таки ушёл оттуда.
А с товарищем мы делали проект по арбитражу трафика в финансовой сфере — получение займов и всё такое. Мы практически год проработали вдвоём, пилили сложную функциональность. Сейчас компания начала масштабироваться, развивать новые направления: товарищ ушёл в новое направление, а я нашёл себе команду и рулю арбитражем как Head of Department. Занимаюсь разработкой и рулю командой, слежу, чтобы всё работало как надо, готовлю документы, согласовываю дизайн, обсуждаю с ребятами, которые запускают трафик, что им ещё нужно от разработки.
Однако остаться на одном проекте снова не получилось: мне написал товарищ из колледжа и сказал, что открыл пиццерию, для которой надо сделать сервис доставки. С ним я работал до августа 2021 года — потом у них кончились деньги на разработку, и мы пока поставили сотрудничество на паузу.
О развитии в профессии и ненастоящих программистах
Помешать вашей карьере могут только синдром самозванца и внутренний критик. Но все мы люди, все могут ошибаться, ничего страшного в этом нет. У меня есть знакомые, которые говорили, что им на ревью написали пять комментариев и после этого они переставали себя считать настоящими программистами. А я отвечал: «Просто поправьте код по замечаниям и получите аппрув».
Я помню, в каршеринге меня решили потроллить. К какой-то простецкой задаче написали 49 комментариев по кодстайлу. Потом сказали, что это был рекорд за всё время работы компании :)
Чтобы из мидла вырасти в сеньора, нужно брать на себя больше ответственности, инициативы, проявлять больше самостоятельности, решать задачи посложнее. Сделать это нетрудно. По опыту я знаю, что планирование — штука довольно абстрактная: команда оценивает задачу, а уж там кто успел, тот и съел. Если задача нетривиальная, есть над чем подумать и где проявить себя, заявитесь на неё, вряд ли вам откажут.
Когда вы работаете в команде, почти наверняка будет кто-то сильнее вас. В моей текущей команде товарищ, который раньше был лидом, ушёл в другое направление. После него тем самым сильным в команде остался я — и меня сделали тимлидом.
И не забывайте про оптимизацию и автоматизацию — они помогают прокачиваться и становиться более ценным специалистом. Например, на текущем проекте я стараюсь оптимизировать код, чтобы сохранить конфиг оборудования: не тратить на железо лишние деньги и при этом обрабатывать большую нагрузку. Всё, что связано с оптимизацией, — это раздолье для творчества.
А вот автоматизация у меня в основном выражается в кодогенерации. Допустим, в текущем проекте мне нужно для какой-то фичи создать сущность, миграцию, репозиторий, фабрику, интерфейсы и не забыть всё это зарегистрировать. Раньше это всё создавалось вручную и что-то обязательно забывалось. Но теперь у нас настроена кодогенерация и всё это создаётся и линкуется в один клик: и я больше не беспокоюсь, что мог упустить какие-то детали, — благодаря этому получается уделять больше времени бизнес-логике и тестам.
* Решением суда запрещена «деятельность компании Meta Platforms Inc. по реализации продуктов — социальных сетей Facebook и Instagram на территории Российской Федерации по основаниям осуществления экстремистской деятельности».