Интерактивный парк GeekLand с подарками, вебинарами и самыми масштабными скидками года!

Блог

Как преуспеть в командной разработке и утренних боях со сном

Илья Круглов — капитан команды, которая первой сдала совместный проект на факультете Python-разработки. А еще Илья трудится инженером у крупного мобильного оператора.
05 декабря 20188 минут1756

Как при этом ему удается учиться в полную силу и что он хотел бы изменить в GeekUniversity — читайте ниже.

— Расскажи, пожалуйста, кем ты работаешь и почему решил изучать программирование?

— Сейчас я инженер по системам расчетов с агентами в компании «МегаФон». То есть мое направление — BSS (Business Support System) — поддержка бизнес-процессов и, в частности, биллинговых решений. Начинал мануальным тестировщиком, затем мне поручили создать автотесты на Python + Robot framework. Система, тестирование которой нужно автоматизировать, очень сложна, а с принятым в компании технологическим стеком я раньше не работал.

У меня был выбор: поучаствовать в конкурсе на новую менеджерскую позицию или «включить технаря» и освоить Python. Я выбрал учебу и рад этому!

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

— Что за проект ты сделал со своей командой в GeekUniversity?

— Это программа для хранения паролей PassVault (аналог KeePass). Команда у нас из шести человек. География: Тюмень, Казахстан, Москва — разные часовые пояса. Чтобы координировать работу, мы использовали доску планирования Trello и ежедневно проводили скрам-чаты в Telegram. Небольшую презентацию программы я выложил на YouTube.

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

— Командная разработка — один из завершающих этапов обучения. Какие проекты в GU ты делал до этого?

— Первым моим проектом был Dagobah-messenger. Это программа мгновенного обмена сообщениями, которая передает данные в формате JSON и использует AES-шифрование. По ходу пришлось разбираться со сложными темами из разных областей Python, так что не сразу все получилось. Сейчас переписываю этот проект с нуля: заложил в него асинхронность потоков (asyncio), GUI (на PyQt5) и БД на MongoDB.

Еще мне интересны алгоритмы. Чтобы поиграть с ними, я написал несколько маленьких программ с разными алгоритмами сортировки.

Другой мой проект — сайт-визитка на Python + Django framework + HTML/CSS + SQLite3. В учебном плане web запланирован на третью четверть, но я решил начать заранее. Попутно проверил свои возможности по линии fullstack-разработки. Хочу после Нового года уже взять заказ на freelance.ru и более основательно прокачаться как web developer.

— В октябре ты победил в воркшопе GeekBrains по созданию Telegram-бота.

— Конкурсного бота Dobby я написал в офисе за девять ночных часов с четверга на пятницу. В качестве приза получил учебный курс на выбор. Раньше не имел дела ни с API Telegram, ни с ботами вообще. Но небольшой опыт с программными интерфейсами уже был — вне GU я делал свой парсер данных под VK API.

— Погоди! Ты писал бота ночью в офисе?!

— Дело было так: вечером я с работы посмотрел воркшоп. Там сказали, что код надо сдать до 22:00 следующего дня. А поскольку в пятницу я занят до 18:00, единственная возможность успеть была ночью.

Дописал бота и ушел из офиса я в 5:20 утра. Полтора часа поспал, переоделся, взял еду и к 9:00 вернулся на работу. Потом весь день с трудом держал глаза открытыми, но никто этого не заметил — с делами я справлялся. Только преследовала мысль: стоило ли так напрягаться. Победа показала — стоило.

— А что умеет бот и можно ли с ним познакомиться?

— Dobby по команде выдает шутки из заранее составленного словаря. Если ты ему скажешь, что кто-то лучший или лучшая, он с этим согласится. На два сообщения подряд — ворчит. Обращается к пользователю по нику и просит не флудить. Сейчас бот живет в моем git-репозитории. Правда, его развитием я больше не занимаюсь.

— Сам язык Python оправдывает твои ожидания? Не жалеешь, что его выбрал?

— Ни разу не жалею. Скажу больше: когда я узнаю о новых сферах его применения, радуюсь, что учу именно его. Есть у меня интерес к «большим данным», и Python здесь — «впереди планеты всей»!

Кстати, посещаю Moscow Python Meetup-ы, начиная с № 55  — с апреля 2018. Как-то слышал доклад о программировании микросхем на Python! Поразительно универсальный язык.

— Как ты нашел идею для командного проекта? И насколько она в итоге оказалась подходящей для работы в группе?

— Я оттолкнулся от того, что проще реализовать на основе изученных технологий, используя материалы лекций. В итоге решил делать менеджер паролей.

Прорекламировал эту задумку сокурсникам — откликнулись пять человек: Вероника, Леонид, Раиль, Николай и Данияр. Я предложил им небольшое анкетирование и выяснил, у кого какой уровень знаний и сколько времени каждый из них готов уделить проекту. На этой основе составил конечный набор функций и «дорожную карту» разработки. Внедрение разбил на недельные спринты.

Серьезных форс-мажоров и осечек не случилось — мы уложились в срок. И когда GU перенес сдачу проектов на более позднюю дату, оказалось, что мы закончили на две недели раньше дедлайна!

Нам повезло: для командной разработки проект оказался очень подходящим. Все получилось.

— Можно наивный вопрос? Ты не опасался писать менеджер паролей на Python? Ведь с ним исходные коды обычно открыты — злоумышленнику легко изучить работу приложения.

— Даже если кто-то украдет БД, толку от нее будет мало: абсолютно вся информация внутри базы зашифрована, а ключи дешифровки хранятся отдельно. При использовании нашего приложения просто сгенерируйте с помощью модуля Secrets новые ключи и последовательности. Это защитит данные от компрометации в случае их кражи или утери.

Второй момент: ограничить посторонним доступ к исходникам можно с помощью Python-библиотек для дистрибуции кода. С ними вы соберете исходники в исполняемые файлы.

— Как распределились роли в команде?

— У каждого была основная и резервная роль: если бы один «боец» вышел из строя, другой смог бы взять на себя его задачи. Например, моя основная роль — разработчик, технологии: SQLAlchemy для back-end и AES-шифрование. Резервная роль — team lead.

У Раиля Закирова основная роль — разработчик PyQt5, резервная — технический писатель. Кстати, Раиль первым откликнулся на мою идею. Он раньше уже участвовал в командном проекте, и это оказалось очень кстати. Мы быстро сработались, не было никаких проблем.

Вероника Корепанова занималась созданием конечного дистрибутива, а на раннем этапе наладила нам работу в Trello: следила за распределением заданий и обновлением информации на досках. Она отлично взаимодействует с людьми, плюс очень исполнительный человек. Вспомогательная роль — тестировщик.

Леонид Михайлов совмещал сразу две роли разработчика: основная технология — PyQt5, резервная — SQLAlchemy.

Николай Котов — тестер, он же — разработчик в части AES-шифрования.

Данияр Калиев — также разработчик, его технологии — SQLAlchemy и PyTest.

То есть на каждую задачу у нас было по два-три исполнителя. И этот подход оправдал себя: не всем хватало времени целиком выполнить свою часть работы.

— До GU у кого-то из команды был опыт программирования или все пришли из других сфер?

— По-моему, Леонид был самым подготовленным из нас. Он уже занимался разработкой — делал сайты на Django. Из-за учебы в университете ему иногда приходилось пропускать наши встречи, но выполненные задания он всегда присылал вовремя и в лучшем виде.

В остальном у всех нас были сильные и слабые стороны: мы подбирали, кто что лучше умеет делать.

— С преподавателем советовались?

— И да и нет. Я договорился с Сергеем Кручининым, что добавлю его в наш Telegram-чат. Рад, что ему ни разу не пришлось вмешиваться в полемику внутри команды. Он в этой истории был «наблюдателем сверху».

Опыт администрирования у меня имелся — за плечами пять с половиной лет работы менеджером в другой сфере. Иногда я задавал одни и те же вопросы Сергею и своим коллегам-менеджерам, сравнивал ответы и делал вывод, как поступить.

— Сложно решать все удаленно? Насколько помогли Trello и scrum-чаты?

— Использовать Trello предложил Раиль, и мы охотно согласились. Считаю, это отличный инструмент для распределенной команды. Он особенно полезен, когда нужно детально документировать функции и согласовывать их с заказчиком. Но мне лично больше понравилось общение в формате скрам-чатов. Это позволяет следить за тенденциями и изменениями в команде и молниеносно реагировать на происходящее.

— Как проходил «скрам»?

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

— Что было самым трудным и как ты с этим справился?

— Сжатые сроки и параллельная работа над несколькими проектами (GU + основная работа + дополнительная практика в программировании) — вот что для меня лично было самым трудным. Спасло планирование.

— Что дала тебе учеба в GeekUniversity?

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

— Что хотелось бы улучшить в GU, что понравилось?

— В GU классные Преподаватели — с большой буквы. И еще я искренне доволен службой поддержки. Желаю им держать высокую планку. Даже в выходные я всегда могу рассчитывать на отличный сервис. Это приятно удивляет.

Но сделайте, пожалуйста, меньше занятий по пятницам! Хотя бы летом. Вы не представляете, как больно сидеть в сокращенный рабочий день до 20:00 и ждать вебинара, чтобы иметь возможность по ходу занятия задавать спикеру вопросы. У записи-то ничего не спросишь. И вот в конце недели все разъезжаются по своим неформальным делам, а ты остаешься допоздна. Это боль.

— У тебя уже есть планы трудоустройства по новой специальности?

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

Что касается фриланса, как я уже сказал, хочу попробовать себя в web-разработке — уделяю особое внимание технологиям, которые сейчас в этой сфере востребованы.

— Чего еще ждешь от учебы?

— После Нового года начнется веб, Django. И снова будет большой командный проект. Что именно будем делать, пока под вопросом: посмотрю, как ребята будут себя чувствовать и какие у нас к этому моменту будут навыки.

— Поделись советами, как совмещать учебу и работу. Не всем это удается: ведь одно дело — что-то запланировать, совсем другое — выполнить.

— У меня простое правило. Утром встаю и спрашиваю себя, чего хочу больше: добиться цели, которую перед собой поставил, или поспать. И пока ты хочешь поспать сильнее, чем поехать на работу и что-то победить, ничего не выйдет.

Я себя заранее морально подготовил, что на протяжении года у меня фактически не будет другой жизни, кроме «работа — дом — учеба». Даже в отпуск не поехал. Пожертвовал развлечениями и личной жизнью. Это большой минус. В офисе люди в шутку спрашивают, на чем я сижу. Если бы мне было не так интересно, давно бы уже плюнул.

Еще важно, к чему ты себя приучил. Когда приходишь в IT после продаж, первое время удивляешься, насколько спокойно и размеренно многие работают. Нет постоянного лишнего давления, работы до глубокой ночи и бесконечных недель без выходных. Суровая школа продаж научила меня делать больше в сложных условиях. Это и сейчас помогает.

— Спасибо тебе большое! Много, подробно, интересно. А главное — при всей загруженности у тебя столько энергии, что она передается окружающим.

— Бывают моменты, когда чувствую, что могу зажечь огонь в других и вместе с ними покорить новые высоты. Вот с таким настроем я и собирал команду.

geek universitygeekuniversitypython
Нашли ошибку в тексте? Напишите нам.
Спасибо,
что читаете наш блог!
Posts popup