Рубрика «Кем работать в IT» — интервью с представителями IT-профессий, в которых специалисты рассказывают о тонкостях своей работы: плюсах, минусах, подводных камнях и заработной плате. Мы надеемся, что джунам и стажерам она поможет больше узнать о том, что их ожидает на карьерном пути, а профессионалам — посмотреть на свою специальность через чужой опыт и, может быть, открыть для себя что-то новое.
Сегодня о своем опыте работы нам расскажет Игорь Анохин, Senior Python-разработчик в Облаке КРОК.
«Круто, когда разработчик понимает не только свою технологию, но и как все работает рядом»(с) Игорь А.
Игорь — студент магистратуры ИТМО по направлению «Системное и прикладное программное обеспечение», в начале карьеры четыре года работал в стартапе по разработке Raspberry Pi, а потом захотел чего-то нового — этим и стал КРОК.
По данным зарплатного калькулятора Хабр Карьеры, средний размер заработной платы Python-разработчика в первом полугодии 2022 года составлял 157 000 рублей в месяц. Конечно, это среднее значение. Есть те, кто зарабатывает меньше: 50-90 тысяч, а есть и те, кто получает 280 тысяч рублей.
О специальности
Расскажите простыми словами, чем вы сейчас занимаетесь?
Я работаю в КРОК Облачные сервисы — это суббренд компании. У нас есть два направления работы с облаками: предоставление облачных сервисов «под ключ» и построение и внедрение инфраструктур у клиентов.
Наше облако делится на подсистемы, поэтому задачи backend-разработчика зависят от направления, которое он развивает. Это могут быть сети, системы хранения данных, мониторинг, биллинг, управляемые базы данных — PostgreSQL и MongoDB — или управляемые сервисы, вроде Kubernetes.
Я как Senior Python-разработчик отвечаю за задачу по разработке конкретной фичи, поэтому принимаю активное участие во всех этапах, по которым она проходит. Но не на всех этапах разработчик — главный участник процесса. После разработчика код проходит ревью, потом его тестируют тестировщики, собирает релиз-менеджер, а выпускают вообще инженеры службы эксплуатации.
Я вовлечен во многие сферы, но не единственный ответственный за них. Отвечая за свой сервис, я участвую во всех этапах решения задачи, начиная с ее анализа. Например, я также присутствую во время внедрения на случай, если что-то пойдет не так.
В целом, степень ответственности питониста зависит от уровня. Джун, скорее всего, просто напишет код и передаст его на ревью и тестирование. Сеньор же должен оценить задачу, понять, какой стек технологий лучше использовать, определить сроки, согласовать и реализовать полный цикл разработки. Тимлиды берут на себя управление командой, планирование, общение с продактами и некоторые бизнес-задачи. Они же следят за синхронизацией процессов между командами разных подсистем.
Какое у вас образование, если есть?
Я учусь и по сей день, в ИТМО в Санкт-Петербурге. Сейчас доучиваюсь последний год в магистратуре по направлению «Системное и прикладное программное обеспечение». Бакалавриат окончил в этом же вузе на факультете вычислительных систем и сети.
После маги пойду в аспирантуру. В целом, можно и не продолжать, но здесь я знакомлюсь с интересными людьми из сообщества, имею доступ к лабораториям, плюшки от статуса студента тоже радуют.
Начало карьеры
Как вы узнали о своей специальности? С чего все начиналось?
Программировать я начал со школы, класса с шестого. Случилось это так: после уроков ходил на кружок по настольным играм, а преподаватель, который его вел, учил программированию на Паскале. Я любил играть в компьютерные игры, поэтому к таким дополнительным занятиям отнесся с интересом. Так и проходил день: сначала настолки, потом Паскаль.
В классах постарше участвовал в олимпиадном программировании, делал свои проекты. Получилось даже выиграть грант на реализацию нашей идеи. Проект был связан с быстрой печатью на клавиатуре. Кажется, я назвал его «Чак Норрис». На черном экране на 2-3 секунды появляется текст, его надо успеть запомнить и перепечатать. С точки зрения кода воплощать это в жизнь было просто ужасно. Чтобы сделать три уровня сложности, пришлось три раза копировать код, который был очень массивным.
Далее был проект на производной от Паскаля — Delphi. Это был конвертор из блок-схем в Паскаль с небольшим графическим интерфейсом, который мы назвали конвертером блок-схем «Блокки». В общем, много было разработческой движухи в школьные годы.
Как вы искали свою первую работу в IT? Как долго?
На первую работу я устроился до того, как поступил на бакалавриат — мне было 18 лет. До этого я много прогал в школе, участвовал в хакатонах, делал собственные проекты, ну и помогло российское кумовство — знакомые забустили меня на собеседование.
Расскажите про свое первое собеседование и первое место работы. Какой вы получили опыт?
Первое собеседование было в компанию, в которую в итоге я и попал. Поскольку фирма была небольшая, проводили его управляющие компании. Спрашивали про знание алгоритмов, смежные ЯП — в основном про С. Указатели, директивы препроцессоры. Спрашивали, как вообще работает память.
В процессе интервью мне было очень некомфортно. Хоть программировать я и умел, от меня ожидали опыт промышленного уровня. Таким я похвастаться не мог от слова совсем, а рядом были ребята-второкурсники на голову выше меня с хорошим опытом учебных проектов.
В итоге будущие коллеги решили взять меня под свое менторство. Неожиданно.
Компания была скорее стартапом со штатом около 20 человек. Занималась автопилотами на базе Raspberry Pi, выпускала плату для DIY (do it yourself) сборки дронов.
Первые полгода-год полноценной работой назвать было сложно. Менторы меня саппортили, обучали, закидывали книжками по программированию на английском (русские они не признавали). Тогда получилось хорошо прокачаться в промышленном программировании и знании английского, уровень которого в школе был не самым хорошим.
Задачи делал небольшие: переписывал не очень красивый код и занимался поддержкой старого. На форуме техподдержки помогал людям решать их проблемы.
Изначально были базовые задачи на С. После Паскаля на C я ну совсем ничего не понимал. Как только закончились вводные задачи на C, начал переписывать примеры для устройств, которые были написаны частью на С++, частью на Python.
Затем начались более сложные задачи: разрабатывал Desktop-приложение на связке C++ и Python. Во время старта проекта задачи охватывали оба языка. Затем мы сколотили MVP и, когда продолжили его развивать, к нам в команду пришёл отдельный UI-программист и начал брать на себя задачи по C++, а я ушел на Python и параллельно продолжал техническую поддержку системы.
Если говорить про опыт, в компании, конечно, поднабрался его сполна. Окунулся в разносторонний пул задач, пробовал разное. В какой-то момент даже стал углубляться во взаимодействие систем: как работает USB-стек и USB-устройства. Занимался сборкой проекта под Windows. Это, конечно, было невероятно больно.
Из-за того, что читал много книжек и осваивал программирование профессионально, в универе было учиться гораздо легче. Считай, уже был реальный опыт.
Расскажите про ваши провальные собеседования. С кем это было? Какую работу над ошибками получилось сделать?
Параллельно с устройством в КРОК были и другие попытки. С некоторыми интервьюерами мы вообще не понимали друг друга. Во время собеседования разговаривали обо всем, но было ощущение, что что-то идёт не так.
Пару раз встречались компании, из которых писали HR, предлагали собеседоваться, а до технического этапа не доходило, потому что просто резюме отсеивал технический специалист из-за нехватки опыта. В общем, сами позвали, сами отказали.
Какая была ваша первая зарплата, если не секрет?
Первую зарплату в стартапе получал совсем не ту, о которой мечтают начинающие разрабы: кофе и печеньки. Но тогда я был этим более чем доволен.
Сегодня попасть в IT стало проще — множество компаний предлагают свои программы обучения по разным специализациям. Сейчас на Хабр Карьере опубликовано 70 курсов для тех, кто хочет изучить Python. Программы разные: как для опытных специалистов, так и для тех, кто хочет изучить профессию с нуля.
Компания
Как вы попали в компанию, в которой работаете сейчас? Где нашли вакансию, на какую должность и как прошло собеседование?
В стартапе я понял, что устал от десктопа и системной разработки, хотелось чего-то нового. Тогда все только начинали выходить на удаленку, как будто бы и разницы не было, где именно работать. Создал резюме и занял ожидающую позицию. Писали из разных компаний, в том числе ребята из КРОК. О них я знал со времен участия в хакатонах. Точно помню, что виделись на VK-хакатоне, там был стенд компании.
Одна из весомых причин, почему попал именно сюда — процесс найма прошел очень быстро по сравнению с другими компаниями, где он мог длиться до трех недель. Когда на собеседовании мне сказали, что они ребята реактивные и достаточно быстро принимают решения, не думал даже, что настолько быстро по сравнению с другими.
А ещё не душили алгоритмами, которые есть во многих крупных компаниях.
Я собеседовался на позицию Middle Python-разработчика. Собеседующий завалил меня вопросами: пытался понять, насколько много я знаю. Спрашивал про асинхронное программирование, как работает Linux, как он взаимодействует с процессами, как происходит остановка процесса.
Один пример на тестовом задании был из книжки по питону, которую я открыл, ужаснулся и закрыл. Когда увидел код задачки, сказал, что видел это во Fluent Python, но не помню, как решать. Некоторые книги для прогеров дают много интересных задач, которые, возможно, пригодятся на собеседовании.
Как проходил процесс адаптации? С какими трудностями вы столкнулись?
Я удаленный сотрудник, в этом и были трудности. Иногда не понимаешь, кому ты пишешь (аватарки с Наруто в мессенджерах не самые лучшие помощники при знакомстве), как донести свою мысль в сообщении, чтобы на том конце поняли с первого раза. Что в новом месте принято, а что нет.
Помогало, что у КРОК хорошая программа адаптации. И welcome-подарочки подарили, и со всеми департаментами познакомили, и команда всегда была на связи, и наставника дали — ему задавал все вопросы по ходу работы. А недавно я и сам стал наставником для одного из разработчиков: вводил его в проект, пытался понять проблемы и направить на решение. Ориентировался на то, как этот процесс проходил у меня. Наставничество — вообще полезная фича и для стажера, и для наставника.
Вот что было непривычно: в стартапе коллеги брали на себя полный цикл и чем только не занимались: сегодня ты пишешь серверное приложение, а завтра тебе нужно разрабатывать десктоп. Или тебя определяют в Mobile, и ты занимаешься им. Просто потому что «кто-то» должен был этим заниматься. В КРОК у нас большая команда и задачи очень четко разделены между каждой группой. Так намного проще.
Какие знания у вас уже были, когда вы пришли в свою компанию?
Из опыта, который имел — это участие во всем цикле разработки продукта. Это был опыт с прошлого места работы, хакатонов и проектной деятельности. Еще был опыт самостоятельной разработки фичи от момента постановки задачи бизнесом до этапа введения этой фичи в употребление.
Может быть, поэтому после вводных мне сразу досталась достаточно большая задача. Я занимался переработкой одной из подсистем, которая теперь работает раза в 3-4 лучше и быстрее – на это ушло около четырех месяцев. Такие большие задачи с долгосрочным планированием были в новинку. Спасибо ребятам из команды, которые мне помогали!
Как вы продвигались в компании? Какие навыки в этом помогли?
По софтам, думаю, мне помогает проактивность. Это не столько про «сделать больше, чем от тебя ждут», сколько решить, насколько вообще нужны эти действия. Не делать бесполезную работу или быть более активным в решении проблемы.
По хардам — это знание вокруг языков программирования. Когда ты знаешь, как работает Linux, как настраивается CI/CD, как устроена система сборки, Докер. Когда что-то не работает, я сам могу зайти в CI/CD и понять, что именно случилось, так как в прошлой компании его настраивал.
Круто, когда разработчик понимает не только свою технологию, но и как все работает рядом. Например, знаю, как устроен фронтенд в задаче переработки импорта-экспорта. В одной из задач мы не привлекали дополнительных людей, я сам переписал и бэк, и фронт.
Раз уж зашла речь о трудоустройстве — сейчас на Хабр Карьере более ста вакансий для Python-разработчиков. Специалистов ищут 2ГИС, VK, МТС, ГК Астра и много других компаний.
У КРОК, где работает наш герой, тоже есть открытая вакансия Senior Python-разработчика.
Опыт
Что сейчас нужно знать специалисту, чтобы попасть в вашу сферу?
По ощущениям, сейчас нужно гораздо больше, чем 5 лет назад. Кажется, что тогда было достаточно знать сам язык программирования и всё. Сейчас этого мало.
Знание какого-нибудь языка программирования всё равно остается обязательным условием. Я бы предложил Python, так как он достаточно дружелюбный для новичков. Жизнь, конечно, не ограничивается одним языком программирования. Но если что, всегда можно будет переключиться на другой.
Если заходить в сферу через стажировку или курсы, то, кроме языка программирования, нужно уметь решать несложные алгоритмические задачи. Если сразу хочется попасть на Junior позицию, то стоит знать какую-нибудь систему контроля версий по типу Git, иметь представление о базах данных и понимать хотя бы один web framework.
Какие бы вы выделили важные Soft и Hard Skills для специалиста вашего направления?
Hard — если опускать знание самого Python (без этого точно не получится), важно иметь базовое понимание фреймворков, которые позволяют писать веб-приложения. Даже не особо важно, будут это более старые Django или Flask, либо модные FastAPI или aiohttp.
Понимать, как работают базы данных, хорошо знать Linux, потому что наш код часто взаимодействует с операционной системой. К тому же, разработчик много времени проводит на стенде виртуальной машины, где приходится работать с консолью Linux: деплоить облако, тестировать систему, смотреть, что не работает.
Soft – позвольте перечислить через запятую: проактивность, инициативность, активность, умение работать в команде, глубокий подход к решению задач и готовность разбираться в разных технологиях, утилитах и сервисах.
Поговорим об ошибках? Что вы сделали не так за это время, что не нужно делать новичкам?
Лично моей проблемой были слабые софты. В 18 лет я был скорее школьником, который совсем не понимает, что происходит.
Советы начинающим разрабам из личного опыта будут такие:
Не пытаться сразу сделать всё идеально, понять итерационный подход к продукту. То есть постепенно, по итерациям, осознавать, как это работает, как будет работать, чтобы не горевать в конце из-за большого количества бесполезной работы.
Избегать поспешности. Есть такой «эффект второй работы». Это когда первую работу ты выполняешь качественно, потому что делаешь ее впервые, а вторую можешь делать небрежно. Из-за этого случаются ошибки. Часто замечаю это и за новичками, и за опытными спецами. Не надо так.
Не бояться обратиться за помощью, попросить коллегу, чтобы он тебе объяснил. Спросить будет гораздо профитнее для тебя и компании. Если ты старший разработчик, понять, что быстрее: загуглить и разобраться самому или же попросить помощи.
Не попадать в ловушку того, что ты всё знаешь. Новички после курсов программирования, где они бегло познакомились с технологией, достаточно ярко могут заявлять, что они ее знают. Это сильно препятствует развитию.
От автора
С чего можно начать специалисту без опыта? Какие есть возможности?
Не претендую на звание карьерного коуча для разрабов, но вижу стартер-пак новичка так:
Онлайн-курсы. Когда я начинал промышленное программирование, проходил курс на Stepik. Там много курсов для начинающих Python-разработчиков, на старте должно зайти. Такие сайты помогают отслеживать свой прогресс, а в конце дают сертификат, что ты молодец.
Книжки. Для начинающих — Dive into Python, для продолжающих — Fluent Python. В самом начале книга может показаться сложной и скучной, но хотя бы по диагонали просмотреть ее надо.
Хакатоны. Когда ты молод и горяч, это невероятно здорово. Тут ты пытаешься ручками поработать над потенциально полезным проектом, получаешь обратную связь и зачастую пытаешься продолжить начатое. Здесь ты знакомишься, смотришь как работают другие, учишься писать не только pet-проект, но и становишься частью полноценной рабочей команды. Еще иногда бывают денежные призы. Это всегда приятно!
Стажировка в компании. Сколько ни хакатонься, реальные задачи — это совсем другое. На стартовые позиции иногда достаточно опыта самостоятельных проектов, хакатонов и хороших софтов — желания учиться, проактивности, умения разбираться в новом. У нас в КРОК, кстати, стажер —- стартовая позиция. Ребята в среднем за 6 месяцев растут до джунов и продолжают работать в компании.
Еще хочу затронуть тему высшего технического образования — надо/не надо. Если есть цель стать Python-разработчиком и начать писать код, то самый краткий путь — это проходить курс по Python-разработке и писать код. Высшее образование, особенно техническое, — это про то, чтобы посмотреть, как все работает вокруг, иметь широту взгляда в областях, в которые ты, как Python-разработчик, никогда не полезешь.
Помню, в университете мы писали код LISP на Verilog, программировали на уровне транзисторов и загружали программу на плату. Для Python- и веб-разработчика это абсолютно бесполезный навык, но так ты лучше понимаешь другие концепции программирования. А это иногда очень спасает.
Какие книги, статьи, подкасты, курсы стоит почитать/посмотреть для развития в профессии?
Из того, что не назвал выше — канал русскоязычного Python-блогера «Диджитализируй!» (бесплатная реклама). Там Python-разработчик ориентируется на джунов, снимает достаточно бодро и не успевает надоесть. Рассказывает про улучшения кода, делает разбор больших библиотек, например, как лучше писать приложение на Django, разделять код. Показывает, как некоторые фреймворки работают изнутри.
По софт-скиллам и полезным навыкам есть много интересных книг. Мне зашла «Пиши, сокращай» Максима Ильяхова. Книга про то, как писать понятно и составлять грамотные тексты. В общении с коллегами она мне очень помогла — большинство из нас работает на удаленке, поэтому скилл доносить свою мысль по переписке для нас важен.
Карьерный трек Python-разработчика
Мы часто слышим от специалистов на Хабр Карьере вопрос: как понять, что я уже сеньор? Или: что мне нужно сделать и освоить, чтобы вырасти до миддла?
В каждой статье рубрики мы разбираем новую специализацию и показываем карьерный трек. Это инфографика с навыками, задачами и условиями работы, разбитыми по квалификациям.
Вот такой трек Python-разработчика нам помог составить Игорь и команда КРОК.
Sergei_Erjemin
Вот не согласен. Делай хорошо -- плохо само получится. Позволить себе сделать прототип и после его оптимизировать и отшлифовать -- можно позволить себе только когда ксть куча времени... А когда один проект в работе и еще три копытом бьют -- надо делать сразу все идеально. С первого раза. Запустил и не подходишь к нему пять-десть лет. Потому что все равно на него времени не будет. Возвращаешься к нему только когда надо переехать на новое железо, или в новое окружение... заодно и что-то улучшить можно (и это будет отдельный, новый проект).