Разработка проектов
24 февр. 2022 г.

Продуктовая команда - всё начинается с людей

Построить команду — это гораздо большее, чем просто нанять людей с нужными навыками. Это – найти людей, которые будут вписываться в коллектив и балансировать его. Расскажем о том, насколько у компании Web строитель многоролевая продуктовая команда, как организована ее работа так, что все специалисты максимально вовлечены в процесс.

 

Разработка программного обеспечения, как командная деятельность

 

“Разработка программного обеспечения стала командным видом спорта.” (Буч, 1998)

 

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

В команде разработчиков одни “игроки” способны эффективно работать с заказчиками, другие пишут код, а третьи — умеют тестировать программы. Еще команде нужны специалисты по проектированию и архитектуре.

 

Web Строитель - компания с многоролевой командой

 

В отделе разработки всегда кипит работа. Чтобы держать дедлайны,  используем гибкий подход к разработке Agile и ее различные методологии (Scrum, Kanban). Так мы делим проект на крупные и мелкие последовательные задачи. На основе дорожной карты и требований к проекту составляется бэклог продукта, расставляются приоритеты. В бэклог попадают определенные задачи, выпускается спринт, спринт попадает в update, который имеет определенное логирование, т.е. записи о том, что в него вошло.

(Евгений, Project-manager)
“В течение первой недели проджект-менеджер определяет стандартные инфраструктурные задачи, которые необходимо выполнить в первую очередь. Например, настроить сервер для разработки, организовать репозиторий для хранения кода, чаты для общения, систему для постановки задач и систему для документации.
Спринты могут занимать от 1 до 4 недель. В конце каждого спринта команда показывает клиенту результаты и планирует задачи на следующий. Этот распорядок действует на протяжении всего проекта“.

 

На примере проекта QForm мы поглубже рассмотрим процесс разработки.

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

Такой способ разработки помог нам выбирать для каждого сервиса языки и библиотеки, подходящие под конкретные задачи, осуществлять плавность и бесперебойность работы. Эти сервисы работают в Kubernetes, что помогает быстро обработать нагрузку на сайт и наиболее эффективно использовать ресурсы. С выходом новой версии QForm часть бэкенда перешла на язык Java в силу своей многопоточности, что увеличило скорость загрузки.

Основатель компании Web Строитель, о важности продуктовых команд разнообразными навыками:

(Александр, основатель компании Web Строитель)
“В стремительно эволюционирующем мире важно создать гибкие, кросс-функциональные продуктовые команды, которые могут быстро перебирать варианты решения задачи. Они наделены всеми необходимыми полномочиями и руководство никогда не говорит им, как решить проблему, а только в чем она заключается и каковы ключевые показатели эффективности, с которыми нужно работать. Такой подход позволяет улучшить обратную связь, значительно ускорить процесс разработки, использовать метод проб и ошибок, чтобы в конечном счете найти наилучшее для клиентов и партнеров решение”.

 

Стадии разработки проекта

 

Перед разработкой продукта команда сначала планирует процесс. Перед тем как приступить к созданию продукта, сначала будет работа продакт-менеджера: как и что должно работать, какие у нас стоят задачи, какие исходные данные, цель продукта. После этого отбираются необходимые “игроки”.

 

 

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

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

 

Дизайн

 

Это следующий этап работы. Цель дизайнера – сделать продукт визуально приятным, понятным и удобным для использования. Дизайн QForm  разрабатывался с нуля. Результат этапа – утвержденные дизайн-макеты, которые мы передаем программистам.

 

Разработка

 

Потом включаются в работу фронтенд и бэкенд разработчики.

 

 

Вместе с ними начинает работу DevOps-инженер. В его задачи входит:

 

  • создание необходимых условий для нормального функционирования ПО;
  • организация общей среды для произведения изменений;
  • разворот релиза в прод;
  • объединение всех процессов из разработки в поставку.


Backend-отдел составляет документацию для бэка и фронта, продумывает архитектуру БД. По мере написания кода разработчики следят за его качеством: проводят Code Review, придерживаются стандартам написания — Code Style. Такие стандарты помогают оформлять код единообразно, что упрощает его восприятие. В нашей команде разработчики имеют коммерческий опыт на самых популярных фреймворках - Angular, Vue, Yii2, Laravel, Spring.

Результатом этапа разработки является ПО, готовое к тестированию.

 

 

Тестирование

 

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

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

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

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