Дмитрий Орлов работает backend-разработчиком в компании Neon Banana, которая выпускает игры. Он постоянно ищет новые интересные задачи: к 23 годам успел поработать в Mail.ru, Яндексе и в онлайн-кинотеатре ivi.ru. Дмитрий рассказал нам, как попал в профессию, чем занимается сейчас и почему со знанием Python может попробовать себя везде.
Чем занимается Python-разработчик
Недавно я начал работать в компании Neon Banana, которая разрабатывает мобильные игры. В мои обязанности входит backend-разработка серверной архитектуры на Python для игр. Компания создает свой первый продукт, и пока я единственный, кто занимается backend в компании. Но сейчас я провожу собеседования и ищу себе сотрудников в команду.
Пока первая игра в разработке, на backend приходится много небольших задач. Например, нужно добавить нового персонажа или обновить цену предмета в игровой валюте. Чтобы все это отображалось в игре правильно, я пишу код на Python, который соединяет приложение с сервером. Когда игру будут выпускать на рынок, задачи будут сложнее. Например, нужно будет шардировать базу данных — перестраивать структуру данных, чтобы приложение загружало их быстрее.
Мне нравится ритм стартапа: ты сам ставишь себе задачи и ищешь необычные решения. Но это и большая ответственность: от тебя зависит то, каким будет новый продукт.
В большой компании все по-другому: ты ощущаешь себя винтиком в большом механизме, который делает стандартные задачи. До этого я работал в онлайн-кинотеатре ivi.ru, там тоже занимался backend. Например, я разрабатывал инструменты на Python для определения аудитории, которой будет интересен новый фильм. Такие задачи помогают маркетологам, а мне хотелось решать задачи, связанные с продуктом, поэтому я ушел в разработку игр.
Я использую два фреймворка для Python — Django и Flask. Фреймворки — это наборы программ, которые облегчают разработку. Например, шкаф можно собрать с помощью отвертки, но на это потребуется много времени и сил. А можно взять шуруповерт и справиться за полчаса. Так же и в разработке: с фреймворками писать код на Python легче и быстрее.
Django считается более сложным, чем Flask, — в нем нужно писать больше кода самому. Но в нем больше функций для стандартных задач, например настройки базы данных. Во Flask дополнительные функции нужно подключать отдельно под конкретные задачи. Поэтому чаще всего я использую Django со всеми нужными функциями, а для небольших приложений — Flask, чтобы писать всего несколько строчек кода.
Вообще, я fullstack-разработчик на Python, то есть могу заниматься и backend (серверной частью), и frontend (интерфейсами приложений). Но на Python fullstack-разработчики пишут только backend, а во frontend обычно используют JavaScript.
Как я попал в профессию
У меня высшее образование по программированию — я закончил факультет информатики и управления Бауманки. Не могу сказать, что высшее образование сильно помогает в моей карьере. В университете учили общим вещам и какому-то системному мышлению, а практических навыков там почти не было.
Но при Бауманке есть «Технопарк Mail.ru» , где готовят будущих профессионалов в IT. Там я поступил на двухлетнюю программу «Системный архитектор»: научился разработке на backend и работе с базами данных. Для обучения на программе нужно было уже знать Python, поэтому я выучил его сам по книге «Изучаем Python» Марка Лутца. На мой взгляд, это лучший способ быстро выучить язык.
После программы я стажировался в отделе электронной почты Mail.ru. А первая работа на backend у меня была в одной микрофинансовой организации. К тому моменту я уже владел Django и писал код для системы подбора кредитных предложений.
Я сразу решил, что не хочу задерживаться в одной компании долго и пробовал разные места. Я устраивался даже в Яндекс, разрабатывал приложение по доставке еды, занимался криптовалютными проектами и делал свои opensource-разработки. За это я люблю свою сферу: можно найти интересные задачи в разных сферах IT и делать проекты, которые помогают другим программистам. Например, сейчас я работаю над библиотекой на Python, которая помогает разрабатывать RPG-игры.
Мне нравятся задачи, в которых нужно соединить несколько больших систем. Например, когда я создавал приложение для доставки, к нему нужно было подключить систему оплаты, правильно настроить систему заказов в приложении и одновременно следить за транзакциями в системе банка.
Как устроен мой рабочий день
Сейчас я живу в Москве, а команда Neon Banana находится в Санкт-Петербурге. Поэтому мы работаем удаленно по гибкому графику. Я планирую день на свое усмотрение — нужно лишь обсуждать задачи на коротком ежедневном митинге в 12:00 и планировать будущие задачи на большом еженедельном митинге. Пока мы только создаем игру, нагрузка у backend-разработчиков небольшая, но когда в игре появятся пользователи, будет много интересных задач.
В ivi.ru график был примерно таким же, но встреч и коммуникаций с разными отделами в крупной компании больше. Например, в маленьких компаниях функции тестировщика может выполнять сам разработчик. В ivi.ru есть большой отдел тестировки — туда мы ежедневно отправляли написанный код на проверку.
По вечерам я стараюсь заниматься самообразованием минимум два часа: изучаю онлайн-курсы, а для себя занимаюсь саунд-дизайном.
Что происходит на рынке
Последние несколько лет Python-разработчики активно работают над блокчейном, криптовалютами и криптографией. Например, появляется много валют, альтернативных биткоину, — программисты пишут код блокчейн-сетей, на которых работают платежи. Помимо этого развивается и машинное обучение. В этих двух областях в ближайшем будущем будут востребованы хорошие разработчики на Python.
В самом языке Python развиваются фреймворки. Постепенно разработчики уходят с синхронного кода на асинхронный. В синхронном коде команды выполняются последовательно по тексту кода, а в асинхронном — по мере обработки описанных кодом событий. Это позволяет выполнять несколько команд одновременно и код работает быстрее. Например, сейчас очень популярен фреймворк FastAPI. На нем удобно писать быстрый backend для приложений.
Советы новичкам
Python — один из самых популярных языков и идеальный стартовый язык для новичка. Когда я учил его в Бауманке, мне понадобилась неделя: помогло знание других языков. С нуля можно изучить его за несколько месяцев.
Работу на Python можно найти везде
Python используют во многих отраслях IT: web-разработке, Data Science, машинном обучении и даже разработке игр. Python-разработчик может легко пробовать себя везде. Я, например, в будущем хочу заняться машинным обучением — самой перспективной сферой в IT, на мой взгляд.
Начинайте с курса по веб-разработке, а потом выбирайте понравившуюся сферу
Начать прикладное изучение Python стоит с чего-то одного. Например, я пишу модули для курса Fullstack-разработки на на Python. В нем упор на веб, но после этого курса можно выучить еще какой-то фреймворк и перейти в другую сферу, например в Data Science.
Можно долго работать в одной компании, а можно пробовать разные
Я люблю разрабатывать на Python новые проекты, строить их архитектуру. Но по мере «взросления» проекта задачи становятся рутинными: все отлажено и работает без багов. Поэтому лично мне на одном месте становится скучно — я постоянно ищу новые проекты в разных областях, например, сейчас пришел в разработку игр. В таком ритме карьеры ты все время получаешь интересные задачи и изучаешь что-то новое. Но я знаю многих программистов, которые занимаются одним проектом годами. Поэтому стройте свою карьеру там, где вам интересно.