04 августа 2020

Работа над собственным продуктом. Наш подход

Агентство

Работая над каждым проектом в Fresh Design Agency, первым шагом мы согласовываем формат работы над проектом. И в то время, как в компании имеется общий подход, который мы применяем для большинства проектов и который позволяет нам обеспечивать требуемый уровень качества, имеются и проекты, которые требуют особого подхода ввиду своей природы. Мы хотим рассказать об одном из таких проектов.

fdForge

fdForge - внутренняя система, которая разрабатывается в компании Fresh Design на протяжении 5 лет и которая является основой всех наших веб-проектов, а также базисом для проектов по автоматизации бизнес-процессов в компании. Особенности платформы:

  • гибкая настройка без привлечения команды разработки;
  • высокая связность с клиентскими приложениями (личными кабинетами, мобильными приложениями и другими интерфейсами), которые разрабатываются для проекта;
  • множества интерфейсов для интеграции с текущими информационными системами компании.

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

История появления продукта

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

Работая над каждым проектом мы обращали внимание на общие паттерны, функциональные модули, которые имеются в каждом из них. Так, во время разработки очередного проекта мы пришли к решению, что имеет смысл объединить в единое техническое решение все те наработки, которые мы реализовали ранее. Учитывая, что одной из важнейших частей нашей платформы всегда являлась работа с персональными данными, основой тогда ещё безымянного продукта стал модуль разграничения прав. Далее, на протяжении 5 лет, мы дополняли, развивали и видоизменяли функционал fdForge, создавая все более и более гибкую платформу. 

Основными причинами возникновения платформы можно назвать следующие:  

  • Унификация кода для обеспечения поддержки и живучести - ранее в рамках каждого проекта была своя команда, свои подходы к разработке. И несмотря на то, что весь код был модифицирован, поддержка и развитие проекта становились дорогостоящими при отсутствии кого-либо из ключевых специалистов. При переходе на единую систему мы получили возможность быстрого переключения специалистов между проектами.
  • Оптимизация предложения - за счет разработки все более гибких модулей мы смогли сократить сроки и бюджет внедрения функционала на проектах;
  • Повышение надежности проектов - намного проще качественно протестировать один проект, нежели десятки;
  • Additional value проектов - мы готовы предоставить нашим клиентам больше - за счет наличия множества готовых модулей на проекте, помимо непосредственно внедряемого функционала, клиент сразу же получает обширные возможности по мониторингу и контролю работы системы;
  • Возможность дальнейшего обновления - разрабатывая проекты на fdForge, мы можем обеспечить нашим клиентам внедрение нового функционала по ходу развития технологий и появления новых решений по аналитике, маркетингу и коммуникации на рынке.

Подход к постановке задач

Учитывая специфику проекта, мы выработали для себя четыре основных источника постановки задач, которые войдут в грядущие релизы fdForge: 

  1. Пожелания клиентов - аккаунт- и project-менеджеры анализируют пожелания клиентов, выявляют общие пожелания по различным проектам и формируют их в качестве задач для команды fdForge. За счет этого мы можем соответствовать пожеланиям и требованиям наших клиентов, предоставляя решение их задач в рамках оптимальных сроков и бюджетов;
  2. Bug-репорты - в случае выявления проблем в системе, специалист формирует задачу по этому отчету - не только в рамках проекта, где была выявлена проблема, но и в корневом проекте fdForge (в целях проверки - глобальный ли вопрос);
  3. Задачи от технической команды - команда разработки постоянно формирует задачи по оптимизации системы с точки зрения производительности, внутренних интерфейсов или качества кода;
  4. Задачи от Product Owner + бизнес-аналитиков - в рамках данного потока задач формируются планы по дальнейшему развитию функционала системы. Так, именно в рамках данного потока, мы внедрили гибкий функционал работы со справочниками, а также конструкторы сущностей и связей между ними.

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

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

Формирование релизов

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

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

Работа над релизами

В рамках работы над каждым из релизов у нас имеется ряд правил, которых мы придерживаемся как в рамках fdForge, так и большинства других проектов компании:

  1. Подготовка документации - любая фича, которая берется в работу, сперва проходит этап разработки и согласования документации. После написания технического задания на реализацию модуля происходит внутреннее обсуждение в команде разработки - чтобы аналитики, разработчики и команда тестирования понимали, какой именно модуль необходимо реализовать;
  2. Работа с прототипами - до того, как передать задачу в работу ui-команде, происходит разработка и обсуждение прототипов нового функционала - даже минорные изменения в интерфейсе могут значительно повлиять на удобство работы с системой как для новых, так и для существующих пользователей.

  1. Документирование кода - этот пункт, как и предыдущий, касается не только fdForge. Над проектом работает множество разработчиков из различных команд, поэтому крайне важно, чтобы все понимали, что делает каждый из фрагментов кода.
  2. Составление руководства по работе с fdForge - одновременно с разработкой нового функционала идет работа по актуализации технической документации для новых фич, которые появятся в системе. 
  3. Подготовка тестового контента - практика показала, что намного проще объяснить тот или иной функционал как внутри, так и вне команды, предоставив пользователям демо с реальным контентом. Именно по этой причине в базовой сборке fdForge изначально присутствует тестовый контент, который вычищается из проекта при переходе на production-окружение.

Переход к микрорелизам

Одним из решений, к которому мы пришли в рамках работы над проектом, стал переход к микрорелизам. Ранее работа над релизом могла занимать до 2х-3х месяцев, однако с развитием проекта подобный подход стал невозможен - функционал, который требуется для проектов, должен быть поставлен в систему в более краткие сроки. 

Переход к микрорелизам на проекте

Подобный подход позволил нам сократить период тестирования и отладки системы, а также снизить сложность обновления проектов, реализованных на базе fdForge - переходы стали более прогнозируемыми. 

Публикация и обновление проектов

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

В большинстве случаев обновление проходит на протяжении 2-3 часов, при этом время простоя системы составляет 5-15 секунд. Однако бывают случаи мажорных релизов, в рамках которых одновременно с обновлением fdForge происходит и изменение логики работы приложения. Объясним этот момент на примере проекта FinMe. 

В рамках релиза 1.18 в системе fdForge появился функционал гибкой настройки сделок - когда администратор системы с достаточным набором прав мог сам настроить перечень свойств, которыми будет обладать сделка, при этом различные виды сделок могут иметь свой набор свойств. Система FinMe - финансовый брокер, который получает, обрабатывает и рассылает заявки на выдачу микрозаймов от различных партнеров. При этом, ввиду специфики бизнеса, набор свойств в этих заявках может отличаться в зависимости от источника получения заявок. У команды FinMe был выбор - разрабатывать собственные решения для оптимизации набора полей в заявке, или же перевести имеющуюся логику в системе на функционал сделок в fdForge и получить гибкость настройки работы API на основании возможностей системы. Оценка реализации первого варианта составила 190 часов, в то время как обновление могло быть интегрировано в рамках 40 часов. 

Сокращение времени внедрения функционала

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

Итого

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

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

Чтобы предоставить нашим посетителям наилучший пользовательский опыт, наш сайт использует Cookie. Продолжая работу с нашим сайтом вы подтверждаете, что соглашаетесь с нашей политикой Cookie