Как я стал синьором в 23 года

Кто такой старший разработчик и какими навыками он должен обладать? Универсального ответа нет. Однако многие специалисты и IT-компании сходятся во мнении, что Senior это опытный инженер с крепкой технической базой и развитыми soft skills: умением работать в команде и принимать решения, опытом наставничества, способностью грамотно вести коммуникацию с заказчиком.

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

Тем не менее, наш сегодняшний герой, Кирилл Махонин, к 23 годам успел поработать с разными технологиями и в разных направлениях разработки, попробовал себя в роли тимлида небольшого проекта и вырос до старшего разработчика. Он рассказал, как ему всё это удалось.


Как всё начиналось  

В седьмом классе я начал участвовать в олимпиадах по информатике. Не скажу, что любил информатику в школе, просто всем олимпиадникам учителя прощали прогулы.

На уроках мы изучали Pascal, но этого было недостаточно для участия в олимпиадах областного уровня. Тогда я записался на курсы, которые организовал аспирант в одном из университетов Белгорода, где я тогда жил.

Сначала мы изучали Delphi, а чуть позже перешли на С и С++. Мой интерес к компьютерным технологиям рос: в свободное время я начал самостоятельно изучать PHP, осваивать вёрстку. Делал небольшие проекты, разбирался, почему что-то не работает, читал книжки и документацию, исправлялся.

А ещё я занимался моддингом компьютерных игр: писал на С-подобных языках несложные скрипты, которые меняли логику игр и расширяли её функционал.

В старшей школе я сделал несколько проектов, часть из них – на заказ. Среди них был хостинг изображений и система мониторинга игровых серверов для информеров на форумы.

синьором
На школьном выпускном

Когда я учился в 11 классе, узнал, что мой знакомый разработчик из геймерского сообщества ищет людей для одного проекта. Нужно было разработать систему онлайн-продажи билетов для крупного концертного зала в Москве. Я предложил свою кандидатуру – к тому времени я уже занимался вёрсткой и созданием бэкенд-части простеньких порталов – и меня подключили к проекту.

Через несколько месяцев наша система начала работать. Она существует до сих пор, только дизайн изменился пару лет назад.

Учёба в университете

В 11 классе я стал призёром межрегиональной олимпиады школьников. Это позволило мне без ЕГЭ поступить на бюджет сразу в несколько вузов. Я выбрал кафедру Информационных систем в ИТМО и переехал в Петербург.

Лично мне университет дал хороший технический бэкграунд – наверное, потому что я был заинтересован в знаниях. Нас учили писать на Ассемблер-подобном языке, С, C++, Python, C#, администрировать Linux-системы, искать уязвимости систем, тестировать код и заниматься проджект-менеджментом.

Первые два года я почти не сдавал экзаменов. Мы с преподавателями каждый раз договаривались, что я сделаю какой-нибудь выпускной проект по предмету. Так, например, на втором курсе я написал Windows Service, который блокировал копирование файлов на съёмные носители.

Как я устроился на первую работу

Я начал искать работу, как только переехал. Мне нужны были деньги, чтобы снимать квартиру и обеспечивать себя. Первое время брал небольшие задания на фрилансе. Затем стал подходить к преподавателям, с которыми у меня сложились хорошие отношения, и спрашивать, могут ли они посоветовать мне что-нибудь. Оказалось, что преподаватель по C++ как раз искал сотрудников в небольшую компанию, которая занималась разработкой математических тренажеров и симуляторов.

Мне дали тестовое задание: нужно было переписать математическую модель физического процесса на С++. До этого я не занимался математическим моделированием, но задача оказалась не очень тяжёлой, и я справился с ней за несколько дней. Так в конце первого курса я устроился на свою первую работу. Меня взяли на должность джуниор-разработчика на C и C++.

До миддл-специалиста я вырос примерно через год работы в компании. Именно тогда мне доверили руководить небольшим проектом – созданием системы, с помощью которой можно управлять макетом гидравлического экскаватора. У нас было настоящее кресло с панелью управления и экран, на который в режиме реального времени выводилось изображение.

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

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

У меня таких задач было много: необходимо было спроектировать базовую архитектуру системы, разработать её, провести ревью кода. Нужно было также ставить задачи двум другим разработчикам и проверять их. Помимо этого, мне приходилось заниматься администрированием всей инфраструктуры, в том числе физическим – прокладкой сетей.

Когда у меня возникали вопросы или что-то не получалось, я подходил к своему наставнику, тому самому преподавателю из вуза, и спрашивал его совета. Он помогал мне с архитектурой и проверкой кода, в котором я сомневался.

Постепенно число моих задач росло. Я участвовал в разных проектах, учил новые языки программирования – С# и Python, интервьюировал кандидатов и руководил небольшой командой разработки.

Спустя три года работы в этой компании я почувствовал, что упёрся в потолок.

Как я перешёл работать в крупную компанию

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

У меня был друг, который как раз в такой работал, и давно меня туда звал. Я отправил своё резюме и прошел собеседование. Через несколько дней мне предложили должность старшего разработчика в Big Data-отделе.

До этого у меня был небольшой опыт работа с Big Data: на одном из проектов в прошлой компании мы разрабатывали систему мониторинга ледовой обстановки в Арктике и использовали пару технологий из Big Data-стека – Apache Cassandra и NoSQL. Я давно уже хотел поработать в сфере больших данных, а в той компании как раз искали Big Data-инженеров, которые пишут на Python – всё сложилось.

Я прошел внутренний ознакомительный курс по Big Data-технологиям и приступил к работе. Сразу же попал на интересный проект, связанный с упрощением процесса разработки и выводом в продукционную среду ML/AI-моделей. Это опенсорс-решение, которое мы разрабатываем, используя Python, Kubernetes, AWS, Docker, Graphite, Grafana, Jenkins, Nexus.

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

Читайте также

Как совмещать тимлидство и программирование

Кто такой синьор в моём понимании

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

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

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

В-третьих, это разработчик, который делится знаниями с младшими коллегами. Я считаю, что мне очень повезло, что рядом со мной на всех этапах профессионального становления были наставники, которые направляли меня и давали советы. В школе это был аспирант, который готовил к олимпиадам, в университете и на первой работе – преподаватель по C++, на второй работе – архитектор решений, который взял меня на свой проект.

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

синьором
Стал cиньором в 23 года

Как я расширяю профессиональный кругозор вне работы

Недавно я начал изучать язык Go: разбираюсь с документацией и выполняю небольшие задания на практике.  

Помимо этого, я вношу свой вклад в опенсорс-платформу для e-commerce: стало интересно углубиться в специфику работы онлайн-ритейлера. Мне вообще нравится изучать смежные с IT сферы.

На работе тоже, кстати, хватает разных внепроектных занятий. Мы с коллегами, например, разработали и провели курс по Python – с лекциями, домашними и практическими заданиями – для студентов учебного центра.

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

Как складываются отношения со старшими коллегами

На текущей работе у меня не было конфликтов на почве того, что некоторые коллеги старше меня, но ниже по должности. У нас довольно молодой коллектив – разница примерно 2-3 года.

А вот на предыдущем месте был один неудобный случай. Однажды меня отправили в офис компании, с которой мы сотрудничали, – в качестве технического консультанта. Мне нужно было проанализировать архитектуру большого приложения для сбора и обработки погодных данных и сказать, как её можно модернизировать.

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

Я понимал этих инженеров: предосудить человека по возрасту очень легко. Мне самому было не очень комфортно советовать что-то взрослым программистам. Я просто настроил себя на то, что это моя работа, и её нужно сделать хорошо – и неважно, что обо мне могут подумать.  

Что дальше

Мой профессиональный путь начался с желания развиваться в выбранной сфере. В школе интерес к компьютерным технологиям подогревали олимпиады, возможность модифицировать игры и создавать собственные интересные проекты. Я вникал в это всё глубже и постепенно накапливал свою собственную техническую базу. Всё новое, что я узнавал, тут же применял на практике – это позволило набивать собственные шишки, вырасти как специалисту и прийти туда, где я нахожусь сейчас.

В будущем я планирую стать архитектором Big Data-решений: для этого мне нужно поучаствовать ещё не в одном проекте, набраться опыта и вырасти до ведущего разработчика.

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

Фото: личный архив Кирилла Махонина. 

Комментарии