Что такое инкремент в бизнесе?
Само по себе термин пришел из IT–сферы и математики. Там его использовали для обозначения процесса увеличения значения переменной на единицу или другую n–величину.
Но затем инкремент перекочевал в в гибкие методологии управления проектами. Там под этим термином понимается уже завершенный фрагмент продукта, готовый к использованию. Имеется в виду не полная готовность, а промежуточные результаты по окончании спринта или итерации.
Условно, мы говорим про какой–то IT–проект: например, бизнес заказал программу для управления производственными процессами с учетом специфики деятельности компании. Разработчики делят план реализации на итерации. По окончании каждого этапа они должны предоставлять заказчику готовый фрагмент продукта, который будет выполнять свои функции. Это и будет считаться инкрементом. Его тестируют, чтобы понять, насколько он соответствует установленным запросам.
Постепенно рыба программы будет обрастать новыми функциями. Каждая из них должна работать самостоятельно, но в то же время быть взаимосвязанной с остальными, чтобы это можно было считать полноценным продуктом.
Перечислим ключевые характеристики, присущие инкременту:
Во–первых, это завершенность.
Для того, чтобы определить степень готовности фрагмента, используется Definition of Done. Они включают в себя такие критерии, как:
– Написанный код прошел код–ревью (Code Review), чтобы найти в нем ошибки на начальном этапе. Благодаря этому можно своевременно улучшить качество продукта и прокачать навыки разработчика.
– Все остальные виды тестирования, такие как юнит–тесты или интеграционные тесты и прочие, пройдены успешно.
– Проведено обновление всей сопроводительной документации.
– Разработанный функционал интегрируется с остальными частями системы.
– Все заинтересованные стороны предоставили обратную связь по выполненной работе. При необходимости внесены изменения.
Во–вторых, рабочая версия.
По сути, каждая разработанная функция уже является готовым продуктом, который в дальнейшем дорабатывается. Она действует в соответствии со всеми требованиями. Если понадобится внедрить текущую версию для проведения раннего тестирования на пользователях, то она должна быть рабочей.
В–третьих, поэтапное развитие.
Как правило, инкременты наращиваются постепенно. Каждый из них создается в соответствии с требованиями заказчика и других заинтересованных лиц. В процессе реализации условия и запросы могут меняться. Поэтому в рамках одной итерации команда разработчиков может изменять функцию или добавлять новые, которые ранее были не предусмотрены.
Если бы процесс не был разделен на короткие этапы, то продукт бы создавался последовательно, но привести его к желаемому виду удалось бы только в самом конце. Это требует дополнительного времени и затрат, ресурсов и финансов.
Поэтапное развитие продукта позволяет согласовывать каждый инкремент, тем самым приближая конечный результат к совершенству. В этом случае в финале доработки уже не будут такими глобальными и их можно будет вносить постепенно уже после того, как проект будет введен в эксплуатацию.
В–четвертых, масштабируемость.
В рамках одного этапа может быть реализована не одна функция, а несколько, что позволяет масштабировать продукт постепенно. Это сокращает количество возможных ошибок, а также дает возможность выстроить более понятные и надежные взаимосвязи между различными компонентами системы.
Если обобщить, то получается, что инкремент это готовый продукт внутри развивающегося продукта. Такой подход позволяет уменьшить количество рисков и ошибок. Это, в свою очередь, приводит к тому, что на выходе результат получается более качественный и в соответствии со всеми требованиями.
Какие недостатки и преимущества имеет инкремента?
Каждый подход к организации процесса разработки имеет свои недостатки и преимущества. Ориентируясь на них, компания сможет выстроить работу таким образом, чтобы добиться наиболее эффективного результата.
Инкременты позволяют разработчикам быть гибкими и в процессе масштабизации продукта трансформировать его в соответствии с меняющимися условиями и требованиями со стороны заинтересованных лиц. Ниже перечислим плюсы и минусы этого подхода к разработке программ и проектов.
Преимущества инкремента.
– Гибкость и адаптивность.
В рамках итерации разработчики могут сменить приоритеты, если того требует ситуация. В качестве стимуляции может быть обратная связь от заказчика, пользователей, тестировщиков и прочих заинтересованных лиц. Инкремент будет принят только в том случае, если он соответствует текущим запросам по его эффективности и качеству.
– Ускорение выхода на рынок.
Благодаря инкрементной разработке первоначальная версия быстрее окажется на рынке. То есть реальные пользователи смогут протестировать продукт и дать по нему обратную связь. В конечном итоге, когда финальная версия будет готова, она будет максимально соответствовать запросам целевой аудитории, а значит, будет востребованной и конкурентоспособной.
– Улучшение качества.
Каждый этап итерации подразумевает тестирование продукта, как его новой функции, так и написанных ранее, чтобы оценить эффективность их взаимосвязи. Это позволяет находить ошибки на ранней стадии, до того, как они могут стать критичными. То есть, по сути, с каждым шагом качество программы или проекта будет становиться лучше до тех пор, пока не достигнет своего предела из–за ограниченных возможностей.
– Прозрачность и коммуникация.
Демонстрация инкрементов в рамках итерации позволяет развивать коммуникацию как внутри команды, так и за ее пределами. Заинтересованные лица получают возможность следить за прогрессом исполнения задач по разработке, оценивать качество достигнутых результатов и предоставлять обратную связь. Регулярный и открытый диалог повышает уровень лояльности и доверия со стороны клиента.
– Повышение вовлеченности команды.
Инкрементная разработка требует максимальной вовлеченности команды. Причем речь идет не только про разработчиков, но и тестировщиков, дизайнеров, верстальщиков, маркетологов и остальных участников процесса, которые могут повлиять на конечный результат со стороны исполнителя.
Каждый член команды должен понимать, каким должен быть продукт в итоге. Тогда будет более четкое понимание того, какими методами и средствами можно этого добиться.
Недостатки инкремента.
– Опасность недостаточной документации.
Если команда акцентирует внимание только на написании кода, то они могут опустить процесс обновления документации в соответствии с изменениями. Это является ошибкой, так как информация об инкременте становится неактуальной. В этом случае заинтересованные стороны не смогут адекватно оценить достигнутые результаты.
– Трудности в оценке полной стоимости проекта.
В рамках каждой итерации в продукт могут вноситься изменения, которые позволят его улучшить. Это уже является дополнением сверх тех требований, которые были согласованы изначально. Значит, и бюджет на реализацию проекта также будет расти. Такая неопределенность может вызвать недовольство со стороны заказчика и других заинтересованных сторон.
– Сложности с интеграцией.
Разработчикам важно не просто разработать отдельно взятые функции и довести их до ума, чтобы они стали инкрементами. Они должны выстроить прочные и понятные связи, чтобы это стало общей системой, которая будет функционировать эффективно. В противном случае это снизит качество продукта из–за постоянно возникающих ошибок и потерь.
– Нарушение фокуса команды.
Если в рамках итерации команде постоянно приходится менять приоритеты и думать над тем, как внедрить изменения в новый инкремент, то она может потерять фокус на ключевых задачах. Из–за этого могут возникнуть сложности в достижении долгосрочных целей.
– Зависимость от активного вовлечения заинтересованных сторон.
Чтобы согласовать инкремент и признать его успешным, требуется вовлечение большого количества людей. Они должны провести тестирование и оценить готовность продукта. Если все эти действия не согласованы, то процесс затягивается. В этом случае возникает риск срыва сроков, что может отразиться на отношениях между сторонами.
Чтобы избежать многих проблем и рисков, связанных с инкрементами, нужно обеспечить качественную и регулярную коммуникацию как внутри команды, так и с заинтересованными лицами. Это позволит лучше управлять процессом и быстрее достигать поставленных целей.
Как повысить ценность инкремента?
Повышение ценности инкремента напрямую влияет на успешный исход проекта, а также на уровень удовлетворенности конечных пользователей. Существует несколько стратегий, помогающих увеличить качество и эффективность продукта и отдельных его функций.
Первое – четкое определение требований.
– Необходимо активно работать с заинтересованными сторонами. Это позволит лучше определить их текущие потребности и ожидания. Кроме того, это способствует построению доверительных отношений, что увеличивает лояльность заказчика. В этом случае он будет в большей степени склонен принимать какие–то правки со стороны исполнителя и охотнее согласится на увеличение бюджета при необходимости.
– Чтобы у команды и заказчика было более четкое представление о функционале продукта, нужно формулировать требования в виде пользовательских историй. То есть это будет не просто тезис с обтекаемым представлением о том, как это все работает, а полноценный алгоритм действий с разными вариантами исхода.
Второе – приоритезация задач.
– Чтобы достигать долгосрочных целей даже в условиях неопределенности, команда должна применять методы распределения приоретизации задач. Например, такие, как MoSCoW (Must, Should, Could, Won’t) или RICE (Reach, Impact, Confidence, Effort). В этом случае будет проще удерживать фокус внимания и не терять эффективности. В некоторых случаях, когда проект подвергается серьезным изменениям, нужно производить пересмотр приоритетов с учетом обратной связи от заинтересованных сторон. Но при этом все равно важно, чтобы это не противоречило основной цели разработки.
Третье – улучшение качества инкрементов.
– Тестирование является неотъемлемой частью инкрементированной разработки. Часть тестов можно автоматизировать, но какие–то придется совершать вручную. Функции и их взаимосвязи должны проходить проверку на каждом этапе разработки до самого завершения.
– Для увеличения эффективности команды рекомендуется поощрять практику код–ревью и парное программирование. Это позволит улучшить качество продукта и сократить количество возможных ошибок.
Четвертое – обратная связь от пользователей.
– Для улучшения качества продукта необходимо получать обратную связь от конечных пользователей и заинтересованных лиц, так как это позволит получить конструктивную критику и добавить те изменения, которые действительно будут полезны. Поэтому команда должна предоставить возможность не просто увидеть продукт в действии, а самостоятельно его попробовать и на основе своих ощущений сделать выводы. Также можно использовать опросы и пост–итерационные сборы отзывов. Это позволит лучше понять, что работает, а что нет.
Пятое – обучение и развитие команды.
– Чтобы команда меньше совершала ошибок и использовала в работе актуальные технологии и методы, необходимо проводить для них регулярные тренинги и семинары. Обмен опытом способствует профессиональному и личностному развитию, а также увеличивает уровень вовлеченности в проект.
– Также для улучшения качества продукта и принятия нетривиальных решений рекомендуется формировать кросс–функциональные команды. Люди с разным опытом и навыками могут обратить внимание на те нюансы, которые другие не замечают. Это позволит создать по–настоящему актуальный и конкурентоспособный продукт.
Шестое – оптимизация процесса разработки.
– Использование гибких методологий таких как Scrum или Kanban, помогает организовать продуктивную работу команды и повысить индивидуальную эффективность. Как следствие, это позволяет улучшить качество инкрементов за счет большего вовлечения разработчиков и снижения числа ошибок.
– В рамках каждой итерации важно проводить ретроспективы для выявления процессов, которые можно оптимизировать. Это позволит добавить ценность продукта и быстрее доставить его до конечного пользователя.
Седьмое – интеграция с бизнес–целями.
– Для повышения ценности также рекомендуется придерживаться бизнес–целей и стратегических приоритетов компании–заказчика. В этом случае локус контроля все так же будет находиться в верном направлении, даже если условия рынка вдруг резко начнут меняться.
Восьмое – поддержка и модификация продукта.
– Даже после завершения инкремента и сдачи его в эксплуатацию, стоит позаботиться о работе над техническим долгом и улучшении архитектуры проекта. В дальнейшем это позволит сократить количество проблем, когда продукт будет полностью сдан заказчику.
Благодаря этим стратегиям разработчики могут повысить ценность инкрементов в рамках реализации проекта.