Русский
Русский
English
Статистика
Реклама

Agile development

Непрерывная локализация что, как и зачем

09.07.2020 14:06:35 | Автор: admin


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


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


Что такое непрерывная локализация?


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


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

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


С распространением agile-разработки компании стали применять agile-методологию и к локализации продуктов. Так появилась непрерывная локализация постоянная работа по локализации программного обеспечения.


Непрерывная локализация даёт разработчикам преимущества


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

Как внедрить непрерывную локализацию в процессы компании?


Вот несколько советов.


1. Используйте платформы автоматизации


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


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


Пример из нашего опыта партнёрство Alconost и Crowdin.


Crowdin это облачная платформа для управления локализацией. Мы в Alconost предлагаем клиентам и команде переводчиков, редакторов и менеджеров работать с контентом, загруженным в Crowdin. Переведенные файлы можно экспортировать вручную или автоматически (через API). Затем тестировщики Alconost проверяют качество локализованного билда.


При помощи Crowdin мы предлагаем заказчикам услуги непрерывной локализации и переводим их продукты качественно и без неожиданных проблем.

2. Начните с популярных языков


Самые распространенные языки английский, русский, немецкий, французский, японский, китайский и французский. Планируя локализацию, обычно начинают с этих языков.


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


Если это звучит слишком запутанно, не волнуйтесь мы составили небольшое руководство о том, как выбирать языки для локализации. Тут много статистики (например, языки по количеству носителей, интернет-пользователей и т. д.), но это оправдано правильные бизнес-решения должны основываться на данных.


Опыт приложения inDriver


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


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


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


3. Соберите команду по локализации


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


  • Инженер по локализации: отвечает за построение и организацию рабочих процессов.
  • Менеджер проекта: следит за работами по проекту и сроками.
  • Менеджер по качеству: отвечает за качество конечного локализованного продукта.
  • Переводчики: занимаются непосредственно локализацией контента.

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


4. Задействуйте пользователей


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


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


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


Заключение

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


Нужна помощь с локализацией / переводом? Мы в Alconost всегда рады помочь!


О нас


Alconost профессионально занимается локализацией игр, приложений и сайтов на более 70 языков. Лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджмент проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем видеоролики.
Подробнее

Подробнее..

Гибкая локализация как применить agile к проекту по переводу

24.07.2020 10:04:54 | Автор: admin


В современном мире всё меняется очень быстро. Поэтому гибкая методология (agile) сегодня применяют везде, где только можно. Она стала также неотъемлемой частью жизненного цикла разработки программного обеспечения и, конечно, затронула и локализацию продукта.


Как гибкая локализации помогает улучшить качество продукта и оптимизировать бизнес-процессы? Рассказываем о преимуществах применения agile на проектах по локализации продукта.


Что такое гибкая локализация


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


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


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


Как работает гибкая локализация?


При традиционной каскадной разработке продуктов (waterfall model) локализация происходит только после завершения процесса разработки. При этом релиз продукта зависит от перевода, что обычно приводит к отставанию от графика и сорванным срокам. В каскадной модели большая часть работы по переводу выполняется вручную. Это неэффективно с точки зрения использования ресурсов и приводит к большому количеству ошибок.


При гибкой локализации обычно используется система управления локализацией (LMS) или система управления переводом (TMS). К примеру, такие инструменты, как облачная платформа Crowdin, помогают сократить время, необходимое для перевода, и автоматизировать трудоемкие процессы.


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


Пошаговое описание процесса гибкой локализации выглядит примерно так:


Каковы преимущества гибкой локализации?


1. Меньше времени для вывода продукта на рынок


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


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



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


Ведь неидеальный продукт, выпущенный вовремя, лучше, чем идеальный, который появился слишком поздно. Или как гласит народная мудрость: Иногда лучше сделать неидеально, чем не сделать вовсе.


2. Меньше затрат


Когда локализация выполняется по agile методологии, специалисты переводят только новые или недавно обновленные строки. Не нужно снова переводить или пересматривать текст, который не менялся и уже был переведен для предыдущей версии. Такие текстовые материалы просто можно использовать повторно. Это приводит к снижению затрат на локализацию и перевод.


3. Легче находить ошибки


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


4. Меньше ручной работы


Гибкая методология позволяет управлять сложными процессами, сводя объем ручных задач к минимуму. Использование специализированных программных средств автоматизации делает процесс локализации еще более легким. Не нужно извлекать переведенные строки вручную передача между репозиториями разработки и системами управления локализацией происходит автоматически при помощи API (application programming interface) или CLI (command-line interface).


5. Более быстрое тестирование локализации


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


А есть ли трудности?


Конечно, ни один подход не идеален на 100%. Гибкая методология не исключение.


1. Контекст определяет всё


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


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


Отличный пример того, как нам удалось справиться с проблемами, связанными с контекстом, это локализация приложения Clue. Команда локализации смогла вовремя получить контекст, так как группа разработчиков Clue предоставила скриншоты приложения непосредственно в системе управления переводом. Это простое в реализации и эффективное решение.


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


2. Командная работа


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


3. Не так быстро, как хотелось бы


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


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


Как подготовиться к гибкой локализации?


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


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


Нужна помощь с локализацией / переводом? Мы в Alconost всегда рады помочь!


О нас


Alconost профессионально занимается локализацией игр, приложений и сайтов на более 70 языков. Лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджмент проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем видеоролики.


Подробнее

Подробнее..

Мы решили внедрить Agile-Lean принципы в процесс разработки на ходу и вот что из этого получилось

19.06.2021 12:05:20 | Автор: admin

Термин бережливого производства (Lean) в настоящее время на слуху. Мы все знаем результаты применения данной идеи в компании Toyota, которые позволили выпускать малые партии комплектующих точно в срок (Just-In-Time, JIT).

В книге Microsoft Secrets (1995 года) авторы (Кузумано и Ричард Селби) описали подходы контроля качества схожие с Lean применяемым в Toyota.

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

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

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

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

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

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

Отправная точка

Изначально в команде применялась несколько упрощенная методология Scrum. Ниже приведу ее описание.

Набор артефактов:

  1. Project backlog журнал требований, реализуемых в рамках проекта, обнаруженные в процессе эксплуатации инциденты. Обычно требования оформляются в виде User Story. В качестве инструмента для верхнеуровневого планирования использовали Excel. Там же, для удобства, чтобы все было в одном месте, на отдельной странице сделали диаграмму Ганта и диаграмму сгорания.

  2. Sprint backlog журнал требований и инцидентов реализуемых за спринт.

  3. Scrum-доска. В качестве инструмента использовали доску Trello с расширением Plus For Trello для контроля трудоемкости.

Роли в команде:

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

  2. Scrum-мастер обычно тимлид группы разработки, занимается управлением процесса разработки, несет ответственность за конечный результат работы разработчиков.

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

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

Совещания:

  1. Ежедневный митинг команды.

  2. Ретроспектива в конце спринта.

  3. Ежеквартальные ретроспективы.

Параметры спринта:

  1. Продолжительность: 1 месяц.

  2. Ежедневные обновления продуктивной системы по итогам завершения работ по блокам задач.

Данный подход использовался на большинстве проектов, динамика при использовании была положительная.

Во время локдауна подход дал сбой. Удаленная работа наложила свой отпечаток на эффективность работы команды, столкнулись со сложностями, которые необходимо было решить.

Хьюстон, у нас проблемы

Явные проблемы заметили на втором месяце этапа ОПЭ (опытно-промышленной эксплуатации), когда новые требования по дефектам начали закрывать время затраченное на запланированные дефекты и пожелания. Фактически мы стояли на месте. Вероятность успеха сделать все вовремя стремилась к 0.

Для исправления ситуации было решено провести экстренную ретроспективу и собрать все существующие проблемы.

Удалось выявить следующие точки улучшения:

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

  2. Недостаточное качество итогового кода, требуется повысить контроль качества.

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

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

  5. Много времени уходит на разработку и доработку, консультанты простаивают.

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

А что думает заказчик? Заказчик недоволен динамикой реализации требований. Но готов рассмотреть вариант с четким и прогнозируемым планом.

Именно в этот момент появилась идея использовать подход JIT для улучшения текущей ситуации.

Какие преимущества Agile-Lean мы попробуем использовать в нашем проекте

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

Сильные стороны:

  1. Получение результата в ограниченное время.

  2. Устранение ненужных действий, которые могут снизить стоимость.

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

  4. Гибкость проекта, возможность его корректировки под требования заказчика.

Слабые стороны:

  1. Большие требования к вовлеченности команды в процесс.

  2. Строгая документация, что несколько противоречит принципам Agile, когда продукт важнее документации.

  3. Необходимость детального планирования перед каждым спринтом.

  4. Необходимо выделять сотрудников, которые будут следить за процессом, при этом не будут участвовать в производстве, что ослабит команду.

  5. Продолжительность процесса разработки может вырасти, необходимо быть к этому готовым.

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

Адаптируем 7 принципов Lean

Согласно методологии Lean для разработки программных продуктов, выделяется 7 основных принципов:

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

  • Акцент на обучении. Короткие циклы разработки, раннее тестирование, частая обратная связь с заказчиком.

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

  • Предельно быстрая доставка заказчику. Короткие итерации.

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

  • Интегрирование. Передать целостную информацию заказчику. Стремиться к целостной архитектуре. Рефакторинг.

  • Целостное видение. Стандартизация, установление отношений между разработчиками. Разделение разработчиками принципов бережливости. Мыслить широко, делать быстро, ошибаться мало; учиться стремительно.

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

1. Убрать ненужное

Под ненужным будем понимать следующее:

  1. Все, что не приносит пользы конечным пользователям. Сюда относятся непонятные и несрочные требования, редко проявляющиеся дефекты. Мы их откладываем или отказываемся вовсе после согласования с заказчиком.

  2. Ненужный код, дублирование кода.

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

  4. Программные дефекты. Любые дефекты появляются, когда код не проходит достаточную проверку качества.

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

Что мы сделали, чтобы решить задачу:

  1. Детальная проработка требований и согласование описания требований с тимлидом разработки, дополнительная расшифровка требований тимлидом на понятный для разработчиков язык.

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

  3. Повышение взаимодействия разработчиков, консультантов и тимлида. Регулярные встречи 1:1, еженедельные встречи для мини-обучения и небольших вебинаров, еженедельная упрощенная ретроспектива для обсуждения и решения на месте текущих сложностей.

  4. Формирование задач из набора требований в рамках одного реализуемого процесса. Расчет: разработчик загружен на одну задачу не менее 8 часов.

2. Создавать знания и обмениваться ими

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

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

3. Повышение качества кода

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

Для повышения качества были приняты следующие предложения:

  1. Парное программирование. Непосредственное взаимодействие тимлида с разработчиками, совместный анализ требований, проектирование, решение сложных задач.

  2. Степень готовности (Definition of Done, DoD). Задача считается завершенной только в том случае, когда разработчик обсудил реализацию с тимлидом и провел демонстрацию разработанной функциональности консультанту, который закреплен за данной задачей.

  3. Максимальное количество задач в работе (Work In Progress, WIP) каждого разработчика. У разработчика в работе и в тестировании суммарно не может быть больше 3-ех задач. Если разработчик отправил на тестирование все 3 задачи, то он обязан довести эти задачи до публикации в продуктивную систему, для этого активно взаимодействует с консультантами, отвечает на возникающие вопросы, помогает в процессе тестирования.

4. Сокращение спринтов

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

Поэтому решили сделать ряд ограничений на спринт:

  1. Спринт длится 1 рабочую неделю.

  2. На спринт планируется трудоемкость, которую сможет закрыть команда разработки (на основе собранной статистики за предыдущие cпринты). Дополнительно закладывается время на устранение критических дефектов.

  3. Все реализованные доработки тестируются на специальной копии продуктивной системы с продуктивными данными (PreProd), и только после успешной проверки публикуются на продуктивную среду (Prod).

  4. Публикация на продуктивный стенд выполняется только один раз в последний день спринта.

  5. После каждого спринта собирается сокращенная ретроспектива на 30 минут для сбора фидбека с команды.

5. Расширение полномочий команды

Данный принцип основывается на том, что все участники команды проекта должны уважать друг друга. Когда дела идут плохо или не по плану, необходимо сосредоточить внимание на выявлении пробелов в рабочем процессе, которые могут приводить к конфликтам и проблемам. Мнение каждого участника процесса важно и должно быть принято во внимание другими участниками процесса.

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

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

6. Не торопиться с принятием решений

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

Решение принятое под воздействием эмоций может породить к большому числу проблем.

7. Регулярная оптимизация процесса

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

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

Для реализации данного принципа с тимлида команды разработки были сняты все задачи по разработке и переданы команде, объем задач на спринт был сокращен, т.к. команда разработки фактически ослабла.

Тимлид команды теперь выступает в качестве наставника:

  1. Организует периодическое обучение, разбор сложных ситуаций.

  2. Инициирует передачу опыта между разработчиками.

  3. Помогает консультантам в формировании требований, а разработчикам в реализации этих требований.

  4. Занимается развитием разработчиков и расширением их компетенций.

  5. Занимается подбором и развитием инструментария, повышающего эффективность процесса разработки.

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

Основная проблема бережливого производства отодвигание сроков

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

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

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

Итоги

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

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

Но в любом случае необходимо взрастить эксперта среди ваших сотрудников. Он будет сосредоточен на улучшении процесса разработки и мотивирован в повышении своих навыков и навыков команды разработки.

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

  1. Обеспечить единую общую среду общения и обмена знаниями.

  2. Организовывать совместные видеоконференции, желательно с камерой, чтобы видеть эмоции участников.

  3. Не пренебрегать неформальным общением.

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

По итогам внедрения Lean получили следующие количественные изменения:

  1. Скорость разработки стала прогнозируемой и составила примерно 4 крупные задачи (до 6 часов на задачу в среднем) на сотрудника в неделю, ранее мощность команды в среднем составляла до 2-3 завершенных задач в неделю на сотрудника. Да, задачи крупные и это не совсем по Agile, но это помогло в нашей ситуации.

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

  3. Уменьшилось вдвое количество задач, возвращаемых на доработку.

  4. Еженедельно закрывалось по 3 крупные задачи из техдолга.

  5. Втрое уменьшилось количество дефектов, фиксируемых конечными пользователями.

Данный опыт планируется транслировать на другие проекты компании.

Спасибо за внимание, коллеги! Хотелось бы увидеть в комментариях ваш опыт использования Agile-Lean (или их адаптации) на ваших проектах.

Подробнее..

Год в Scrum наблюдения скрам-мастера

25.07.2020 22:11:28 | Автор: admin
Друзья, привет! Меня зовут Александр Еремин, я скрам-мастер продуктовой команды PRO Daily Banking Росбанка. Мы работаем с сегментом малого и среднего бизнеса.
Сегодня я поделюсь наблюдениями скрам-мастера о первом годе жизни команды в новом фреймворке.

image



Почему мы решили пойти в Scrum? Причины банальные для многих компаний:
  • не совсем простые отношения между бизнесом и разработкой;
  • необходимость ускорить поставки;
  • понимание, что необходимо перестраивать процессы.

Движение к Kick-Off у нас заняло около полугода (с начала 2019 года): изучение, обучение, подготовка материалов и сбор необходимой информации. И вот, наконец,
3 июня 2019 года мы стартанули первый спринт.

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

О чем нужно помнить скрам-мастеру в этот период?

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

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

Scrum, как и LeSS, не терпят личной незрелости участников команд. Если команда не знает, что такое Scrum, никогда не работала в этом фреймворке и, тем более, если до этого уже работала в текущем составе, то я бы рекомендовал воздерживаться от флипа в LeSS сразу.

Выявление добровольцев на Kick-off (на который обычно отводится три дня) внутри ранее не работавшей по Scrum команде, скорее, носит фейковый характер. Если люди ранее не работали в этом фреймворке, едва ли они реально осознают, что это такое, и действительно могут говорить о своей готовности так работать.

Харды это далеко не все. Если с софтами беда, то даже очень крутой по хардам разработчик может стать большой проблемой.

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

Наивно полагать, что ты умнее всех. Очень важно донести эту мысль до каждого члена команды. Проникновение в этот простейший mindset порождает множество плюсов, нежели недостатков: начиная от взаимоуважения, заканчивая чувством локтя.

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

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

Что нам дал Scrum за год?

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

Мы узаконили работу с техническим долгом и начали отводить ему время в спринтах. Договорились о пропорции 70% VS 30%, где 30% отвели на техдолг.

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

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

Внедрили CI/CD.

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

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

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

За год мы многое успели сделать, но наш путь еще продолжается.

PS Я намеренно не стал писать про этапы внедрения Scrum. Об этом сейчас много где можно прочитать. Если интересно, то потом могу написать отдельную статью.
Подробнее..

Перевод 7 способов повысить эффективность автоматизации тестирования в Agile разработке

25.09.2020 20:20:19 | Автор: admin
Перевод статьи подготовлен в преддверии старта курса Java QA Engineer.





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

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

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

В каждом Agile-спринте на разработчиках лежить задача создавать некоторое количество новых функций, а тестировщикам же приходится тестировать все приложение. Это подразумевает тестирование не только новых функций, но также и всех старых, чтобы убедиться, что новая итерация разработки не испортила старый продукт.

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

Сегодня мы поговорим о семи различных способах повысить эффективность автоматизации тестирования в Agile разработке. Но перед этим нам важно понять, почему автоматизированное тестирование жизненно важно для Agile разработки.

Зачем автоматизация Agile разработке?


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

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

Поломанный код из-за частых сборок


Изменения кода в Agile разработке очень распространены, они часто приводят к сбоям в коде, особенно во время интеграции. Непрерывная интеграция и непрерывное развертывание подразумевают непрерывное тестирование. Внедрение автоматизированного тестирования с вашими конвейерами CI/CD позволит легко справиться с этой ситуацией.

Неправильное покрытие тестами


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

Узкие места в производительности


Когда мы пытаемся улучшить функциональность веб-приложения, мы в конечном итоге усложняем его. Кроме того, из-за большого объема кода страдает производительность приложения. Таким образом, инструменты автоматизированного нагрузочного тестирования могут быть полезны при выявлении узких мест (Bottlenecks) при отслеживании производительности вашего веб-приложения.

Недостаточное тестирование API


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

Сложность тестирования на мобильных устройствах


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

Преимущества использования автоматизации тестирования в Agile разработке


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

Ускорение выполнения тестов


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

Гарантированное качество


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

Повторное выполнение


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

Улучшение качества общения и совместной работы


Инструмент автоматизации не только улучшает качество продукта, но также улучшает взаимодействие и сотрудничество между командами, позволяя им делиться друг с другом процессом тестирования.

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

Способы повышения эффективность автоматизации тестирования в Agile разработке


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

1. Проведение параллельного тестирования


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

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

2. Разработка качественных тестов


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

  • Точность.
  • Обслуживаемость.
  • Портативность.
  • Целостность.
  • Версионность.
  • Производительность.


Основная цель следования этим критериям выполнить точное, легкое и высокопроизводительное автоматическое регрессионное тестирование без вмешательства человека. Если тестовые сценарии постоянны и надежны, QA может быстро завершить регрессионное тестирование без ненужных изменений.

3. Интеграция DevOps


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

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

4. Выбирайте инструмент автоматизации с умом


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

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

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


5. Считайте автоматизацию частью разработки


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

  • Автоматизация не имеет смысла, если вы пытаетесь автоматизировать каждый тест или использовать автоматизацию для каждой поставляемой функции. Это неправильный подход к использованию автоматизации. Фактически, вы должны использовать автоматизацию для отраженных изменений, которые происходят после внедрения новой функции или в случае регрессионного тестирования, когда вам необходимо выполнять тесты повторно.
  • 100% покрытия кода не существует. Программный код никогда не может быть полностью покрыт автоматизированным или ручным тестированием. Даже если вы охватили весь код, это не определяет качество или актуальность тестов. Для повышения качества и производительности выберите индивидуальное транслирование тестов, что доказало свою практическую ценность при автоматическом тестировании. Но он по-прежнему не определяет стопроцентное тестовое покрытие вашего приложения, поскольку вы не можете автоматизировать весь процесс даже при переходе один-к-одному.

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

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

6. Кроссбраузерное тестирование и кроссплатформенное тестирование с самого старта


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

Обеспечение кроссбраузерной или кроссплатформенной совместимости всего продукта на более поздних этапах является очень ресурсоемкой и трудоемкой затеей. Выполняйте кроссбраузерное тестирование вашего приложения с первого дня.

Если вы скажете, что инвестирование в инфраструктуру тестирования будет очень дорогостоящим для стартапа, я буду первым, кто с вами согласится. Инфраструктура внутреннего тестирования означает, что вам придется купить компьютер Mac, компьютер Windows, устройства Android, устройства iOS и т. д. и т. д. Стоимость достигает тысяч долларов.

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

7. Обеспечьте всестороннюю прозрачность процесса тестирования


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

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

8. Постоянный мониторинг среды разработки


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

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

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

Это всего лишь несколько методов или советов, которым можно следовать, чтобы сделать автоматизацию гибкого тестирования более эффективной. А если вы впервые внедряете автоматическое тестирование в Agile разработку, то вам может помочь облачный пакет тестирования LambdaTest.

Заключение


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

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

Подробнее..

Нужна ли новая методология разработки?

03.02.2021 18:19:31 | Автор: admin

Если вы планируете создать свою софтверную компанию, то вы задумываетесь как построить работу людей, как выбрать методологию для работы. Но если приглядеться к известным методологиям, то есть к ним некоторое недоверие, особенно если вы тратите на компанию собственные деньги

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

Предпосылки к созданию методологии

Рассуждения о современных методологиях и человеческой природе

У современных методологий, в порядке их возникновения, есть множество недостатков:

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

  • Проектная структура ведет к зависимости группы людей от одного проектного менеджера, который в 95% случаев из 100% некомпетентен. Нацеленность на короткие проекты, приводит к удорожанию продуктов с течением времени

  • В матричную структуру (все три вида), по определению, заложен конфликт, что изначально неэффективно

  • В проектной и матричной структуре также наблюдается большое недооценивание тестирования

  • В SCRUM (agile) методологии зачастую есть Product Owner, который стремится стать проектным менеджером, для чего ему могут отдать в подчинение аналитика, чтобы повысить его значимость. Ровно также, если есть амбициозный или конфликтный сотрудник команды, то это все разрушает

  • Низкая роль аналитики и тестирования в agile также не идет на пользу продуктам компании

  • В agile методологиях практически отсутствует возможность заключать контракты по фиксированной цене при старте проекта

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

  • Хотят работать и мотивированы

  • Хотят работать без видимой причины, просто потому, что должны

  • Хотят работать, потому что считают что получают за это деньги

  • Не хотят работать, но боятся осуждения и наказания

  • Не хотят работать и работают меньше, но скрывают это

  • Не хотят работать и работают сильно меньше, скрывают это

  • Не работают, сидят тихо, боятся, что их поймают

  • Не работают и открыто это декларируют, осуждают работающих сотрудников

Первые лидерские методологии направлены на то, чтобы заставить немотивированных и ленивых сотрудников работать. Agile методологии направлены на поощрение работоспособных и мотивированных сотрудников. А что вам делать, если у вас появился весь спектр сотрудников?

Что мы хотим получить:

  1. Методологию, которая ориентирована не на идеальных сотрудников, а на всех подряд. К сожалению, квалифицированных людей мало. Вы все равно наймете неквалифицированных сотрудников, у вас выхода нет

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

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

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

  5. Методологию, в которой можно заключать договоры с фиксированной ценой

  6. Не универсальную методологию, которую можно применять на полях марса, на северном полюсе и в лесах латинской Америки, а конкретную методологию для разработки именно комплекса программного обеспечения

  7. Методологию, которая включается в себя последние современные методологии и технологии, например, DevOps, автоматизированное построение любой отчетности по проектам и продуктам и т.п.

  8. Методологию, в которой, по аналогии с agile методологиями, усилия направлены на похвалу и мотивацию команды

  9. Методологию, которая защищается ядовитых сотрудников, оставляя в командах только сотрудников, которые готовы работать

  10. Методологию с высоким взаимодействием сотрудников различных ролей

  11. Методологию, в которой у команды есть лидер, с высокими soft skills и эмпатией,, которому можно пожаловаться или у которого можно отпроситься, который защищает и мотивирует команду

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

  13. Методологию, где правильно понимается роль аналитики и тестирования

Зачем нужна аналитика?

Аналитика нужна, чтобы понять ЧТО вы хотите сделать и КАК с точки зрения бизнеса.

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

Если у вас нет аналитики, то у меня к вам вопросы:

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

  2. Как вы понимаете, что нужно в приложении проверить, перед передачей приложения пользователям? А если пользователь заполнит форму немного с другими данными и нажмет вон на ту кнопку, приложение будет работать? Точно?

  3. Вашему проекту более 2 лет, я хотел бы узнать обо всех функциях, которые есть в вашем проекте, можете рассказать?

  4. Сколько должно пройти времени и проведено встреч, чтобы новый сотрудник узнал ваш проект?

  5. Вы хотите сотрудничать с новым крупным заказчиком, сколько сотрудников и с каким опытом вы должны послать к заказчику, чтобы рассказать про проект?

  6. Если случится кризис, который заденет вашу компанию, и часть опытных сотрудников уйдет, за сколько времени вы восстановите экспертизу по проекту?

  7. Насколько большой у вас отдел техподдержки? Насколько много времени ваши разработчики тратят на поддержку проекта, вместо разработки нового функционала? Как вы доказываете, что эта форма должна работать вот так, а в этом отчете информация строится именно по этому алгоритму и это не замечание, а пожелание по доработке?

Зачем нужно тестирование?

  1. Unit тестирование (внутреннее качество)

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

Как видно из описания, это тестирование делается разработчиками.

  1. Интеграционное тестирование (внутреннее качество)

Основная цель - это вызвать внешнее API так, чтобы вызов прошел через все модули начиная от пользовательского интерфейса (если есть) и заканчивая записью/чтением из БД, с правами доступа как на продуктовой среде. Может выявлять ошибки на стыке модулей, например, ошибки передачи данных с backend кода и ожидаемого набора данных в БД. Позволяет отследить ошибки в настройке routing, ошибки при использовании IoC-контейнеров и т.п. Сильно ускоряют разработку, минимизируя ручные проверки разработчиком

Как видно из описания, это тестирование делается разработчиками.

  1. Функциональное тестирование (внешнее качество)

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

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

  • На основе требований вы создаете классы эквивалентности (Equivalence Classes)

  • На основе классов эквивалентности вы определяете количество и сценарий тесте кейсов (test cases)

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

Как видно из описания, это тестирование делается тестировщиками.

  1. Регрессионное тестирование (внешнее качество)

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

Как видно из описания, это тестирование делается тестировщиками.

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

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

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

В отсутствии тестирования у компании растут расходы на поддержку проектов. Вместо реализации нового функционала, разработчики тратят время на выявление и исправление уже выпущенного функционала. Соотношение может даже достигать 10% времени на выпуск нового функционала и 90% времени на исправление багов или доказательство, что ПО работает как надо (а иногда и 0%/100%). Компания несет убытки, сотрудники злятся и увольняются.

Методология разработки

Общее описание

Принципы методологии:

  1. Отсутствие менеджеров или их замен под другими названиями

  2. Автоматизация управленческих активностей

  3. Объединение в команду максимально возможного количества компетенций

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

  5. Наличие ролей и четкое описание обязанностей ролей. Все роли должны быть назначены, даже если в команде один сотрудник. Один сотрудник может разделять множество ролей

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

  7. Получение обратной связи по всем людям с организаторской ролью: технический директор и тимлиды

  8. Работа вне проекта не ведется

Работа методологии обеспечивается следующими ключевыми моментами:

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

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

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

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

  5. Отсутствие людей, который работают на несколько команд. Задания поручаются не людям, а командам. Если есть свободный аналитик или архитектор в одной из команд и его хотят привлечь к этой активности, то эта активность целиком передается в команду

  6. Максимальное возможное заимствование хороших вещей из agile методологий, а именно:

  • наличие беклогов

  • наличие спринтов

  • командное планирование

  • проведение demo

  • проведение ретроспективы

  • оценка в story points

  1. Важные отличия от agile (SCRUM):

  • отделенный от команд product owner заменен аналитиком внутри команды, который ведет как часть требований, так и беклог проектов

  • отсутствие работы по методике times & materials

  • наличие team leader

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

  2. Если что-то не охвачено методологией, то любой сотрудник может это вынести на обсуждение и решить как поступить в вашей компании, если оно не противоречит принципам

  3. У всех user story есть поле проект, с которого определяется финансирование

  4. Методология поощряет использование infrastructure as code

Важность обратной связи в сторону сотрудников:

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

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

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

  4. В компании раз в квартал проводится опрос на удовлетворенность тимлидом и техническим директором

Термины и определения

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

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

Команда базовая единица для планирования в компании. Сотрудники компании объединяются в команды. Вся работа в компании подстраивается под этот факт. В силу разных причин, часть сотрудников нельзя объединить в команду, для таких сотрудников можно сделать исключение

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

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

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

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

Беклог команды - беклог, отображающий все user story команды в порядке приоритета. Общий беклог команды отображающий любые активности команды в порядке их приоритета

Примечание: по факту, любой беклог представляет собой срез данных компании в виде user stories. Все эти user story существуют в компании, просто в разное время нужно анализировать разное их подмножество

Роли и обязанности

  • Тимлид (внутри команды)

Основная цель:

  • Отвечает за то, чтобы производительность продуктовой (feature) разработки всегда была на максимальном уровне

Полномочия:

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

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

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

  • Инициирует обсуждение с архитектором о выделении части проекта в отдельный проект, если поддержка одного проекта стала сложна в поддержке и развертывании

Обязанности:

  • Смотрит задачи на доске в статусе усложнение поддержки, где:

    • контролирует, что изменения по задаче не увеличивает затраты на поддержку проекта

    • проверяется достаточное логирование по задаче

    • можно ли уменьшить кодовую базу воспользовавшись сторонней библиотекой

  • Выносит на генерального директора рекомендации по повышению должности или зарплаты сотрудников команды

  • Хвалит сотрудников на регулярной, ежеспринтовой основе. Отчитывается за это перед генеральным директором

  • Ведет беклог продукта

  • Контролирует, что никто не выходит за рамки полномочий назначенных ролей

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

  • Транслирует в команду информацию о значимости сотрудников и их влияние на решения компании

  • Отвечает за старт итерации и за поведение итогов итерации

  • Согласует новые технологии с техническим директором, если это приводит к усложнению тестового контура от стандартного контура для компании (например, есть контур разворачивающий код на C#, а команда хочет программировать на Go и это потребует доработки тестового контура, в сторону увеличения поддержки и времени деплоя проекта)

  • Если технологии стоят дополнительных денег, они вносятся в план проекта и согласуются генеральным директором. При необходимости дополнительно согласуется с генеральным директором

  • Выслушивает жалобы от команды, организует команду на решение проблем или ищет того, кто может это решить

  • Отпускает сотрудников, если им нужно отпроситься

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

Ограничения:

  • Не является руководителем команды

  • Командный архитектор (внутри команды)

Обязанности:

  • Смотрит задачи на доске в статусе Архитектура, где:

    • контролирует, какие методы действительно должны быть публичными в любых классах на всех уровнях

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

    • Контролирует single responsibility principle по всем крупным частям системы

    • Контролирует ослабление связанности между библиотеками/компонентами

    • Отслеживает появление условных ветвлений в коде и, если они неуместны, то рекомендует паттерны состояния или стратегии

    • Проверяет, что в БД в столбцах хранится именно то, что следует из названия

    • Смотрит должно ли значение быть вынесено в настройки для изменения в отсутствии пересборки проекта или быть помещено в код для уменьшения роста количества настроек

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

  • Ведет секцию в общем документе требований по секции архитектуры

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

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

Ограничения:

  • Не является руководителем команды

  • Разработчик

Обязанности:

  • Смотрит задачи на доске в статусе code review

  • Участвует в выработке требований

  • Разрабатывает программу

  • Пишет unit тесты и интеграционные тесты

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

  • Добавляют задачи для user stories при планировании или user stories в технический беклог

Тестировщик (внутри команды)

Обязанности:

  • Участвует в выработке требований

  • Пишет тест кейсы

  • Автоматизирует тест кейсы на основе тестового фреймворка, который пишут разработчики

  • Отвечает за контроль, что ПО удовлетворяет минимальному внешнему качеству

  • Аналитик (внутри команды)

Обязанности:

  • Общается с заказчиком

  • Привлекает команду к выработке решения по требованиям заказчика, если в этом есть необходимость

  • Участвует в выработке требований

  • Отвечает за систематизацию того чего на самом деле хочет заказчик (не с тем, что говорит заказчик) в виде части секций требований

  • Ведёт беклог проекта

  • Делает приоритезацию

  • Устанавливает на user stroy признаки required, desired, optional

  • Фиксирует всю информацию при общении с заказчиком или в требованиях или в скоупе проекта

  • Определяет стейкхолдеров со стороны заказчика (кто на самом деле влияет на проект со стороны заказчика)

Ограничения:

  • Не является руководителем команды

  • Документалист (внутри команды)

Обязанности:

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

  • Отвечает за перевод документации на разные языки

  • Технический директор (вне команд)

Обязанности:

  • Отвечает за отсутствие дублирования решений в проектах

  • Наделяется функцией enterprise архитектора

  • Инициирует поднятие версий сборок по проектам, а также отвечает за беклог на выделение части системы

  • Формирует задачи по плану обновления, которые включаются в беклог активностей компании

  • Утверждает новые технологии в перспективе усложнения работы тестового контура

  • Проводит отчет перед сотрудниками раз в квартал

Ограничения:

  • Не является руководителем команды

  • Не отвечает за найм и не участвует в этой активности

  • Генеральный директор (вне команд)

Обязанности:

  • Отвечает за финансовые показатели компании

  • Отвечает за прибыльность

  • Принимает решение о повышении должности или зарплаты сотрудника на основе рекомендаций тимлида, если это сотрудник команды

  • Для сотрудников вне команд, решения принимаются непосредственно генеральным директором, при индексации зарплат, например раз в полгода или год

  • Отвечает за финальное собеседование. На собеседовании определяется соответствие statements компании и определение роли по DISC. В случае занятости может делегировать эту роль компетентному сотруднику HR

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

  • Опрашивает тимлида на предмет появления ядовитых сотрудников, выводит их за пределы команд и позже за пределы компании, основываясь на результатах полугодовых аттестаций или используя другие методы, в соответствии с законодательством конкретных стран

  • По возможности, находится в одном пространстве с сотрудниками или в кабинете, из которого можно наблюдать курилку

  • Контролирует по отчетам, что задачи тех.долгов не превышают заложенный процент в продукте

  • Проводит отчет перед сотрудниками раз в квартал

  • Команда

Обязанности:

  • Отвечает за сроки, которые фиксируются после составления плана

  • Организует процессы DevOps в соответствии с требованиями

  • Производится командная оценка задач

  • Команда следит за тестовой инфраструктурой (мониторит делаются ли бекабы баз, есть ли свободное место на дисках, достаточно ли ресурсов на тестовых контурах)

  • Оценка работы технического директора на основе запрашиваемого опроса раз в квартал

  • Оценка работы тимлида на основе запрашиваемого опроса раз в квартал

  • Вне ролевые должности

Есть ряд должностей, которые находятся вне ролевой модели. Например, системный администратор (администрирование багтрекенга, настройка электронной почты)

Работа над проектным беклогом. Планирование проекта

  1. Определение потребности создать проект. Для этого можно использовать разные подходы:

  • выдвигаем гипотезу, которая требует проверки

  • получили запрос от заказчика на реализацию проекта

  • получили пожелание по доработке существующего проекта

  • вышли с идеей создание нового внутреннего проекта в компании

  1. Проект начинает планироваться в отдельной итерации

  2. Создается карточка проекта, которая свяжет все user stories одним проектом

  3. После создания карточки проекта, выставляется признак начала работы над новым проектом. При этом уходит нотификация к генеральному директору

  4. Генеральный директор ставит разрешение на начало аналитических работ

  5. Определяются команды, которые будут задействованы в проекте. На каждую вовлеченную команду создаются user story на сбор первичных данных по новому проекту и user story на получение экспертной оценке работ. Для любого продукта создаются требования. Шаблон требований можно посмотреть в Приложении 1.

  6. Создаются user stories на заполнение специальных секций требований архитектором и тимлидом

  7. Требования будут меняться, поэтому нет смысла их прорабатывать до совсем мелких деталей. Однако детализация должна быть на достаточном уровне, чтобы можно было посмотреть общий объем работ

  8. User stories по аналитике и первичной оценке оцениваются командой в SP, в соответствии с Приложением 2, и переводятся в итерацию команд

  9. При помещении задач в итерацию команд, будет пересчитан отчет по milestone в соответствии с Приложением 3. В случае если генерального директора не устраивают сроки работ, он может сделать новую приоритезацию user stories в беклогах команд

  10. После завершения аналитики по проекту, принимаются решения:

  • Проект признается нереализуемым, противоречащим стратегии развития продукта, не рентабельным и т.п. В этом случае проект на этой фазе закрывается

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

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

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

  2. Аналитик создает user story по реализации функционала на основе требований

  3. Требования и user story не обязаны соответствовать друг другу. Не нужно создавать отдельные разделы в требованиях, которые соответствуют один в один user story. Требования курируются аналитиком, им же и контролируется, что аналитическая информация полностью отражена в user story. Требования и user story все равно в какой-то момент разойдутся. Важно понять, что требования нужны для хранения информации о последнем статусе продукта в удобном для восприятия и хранения информации для человека виде. А user story нужны для разработки части функционала. Попытка тут сэкономить и объединить эти два понятия позже приведет к более сложному пониманию аналитического документа

  4. После создания аналитиком user stories, они оценивается в соответствии с Приложением 2.

  5. Если после создания и оценки user story в вас есть user story, превышающие 40 story points, то такие story должны будут разделены в будущем, перед взятием в работу

  6. По факту завершения разбиения проекта на продуктовый беклог из user stories выставляется признак завершения создания скоупа задач. Так как в команду входят аналитики, командные архитекторы, разработчики, тестировщики, DevOps, документалисты, то подразумевается, что участники команды следят за тем, чтобы трудоемкость их работ была отражена в оценке

  7. При выставлении в карточки проекта признака завершения создания скоупа, происходит автоматический расчет пиковой стоимости проекта в соответствии с Приложением 3.

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

  9. Если проект оценен в более 4 месяца работ, то проект делится на части и для каждой части создается своя карточка

  10. После этого созданные user story смотрятся в разрезе командного беклога

  11. При рассмотрении задач в командном беклоге, они размещаются их в соответствии с приоритетом, определенным командой (если не определен приоритет, то user story по новому проекту размещаются в конце беклога).

  12. После изменения приоритезации задач или выставления новым задачам итерации командного беклога, происходит перерасчет отчета в соответствии с Приложением 4.

  13. После получения первой стоимости проекта, они фиксируется в отчете как максимальная. В дальнейшем при разбиении user story, переоценке или добавлении новых user story будет делаться переоценка работ в соответствии с Приложением 3.

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

Планирование спринта

Планирование нового спринта в целом происходит так же как и в методологии SCRUM

Закупка оборудования

  1. Генеральный директор может запросить данные по закупке нового оборудования

  2. Далее должна быть выполнена автоматическая рассылка тимлидам для сбора этой информации по командам

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

Приложение 1. Шаблон требований

Описание продукта

Примечание раздела: в данном разделе указывается общая бизнес цель продукта

Внимание: если есть дизайн графической части, то он делается отдельно от требований, без ссылок на страницы прототипа. Связка требований и прототипа делается в рамках user stories.

Функциональные требования

Бизнес цель <Название первой цели>

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

Используемые сочетания клавиш

Архитектурные детали

Примечание подраздела: тут архитектор описывает верхнеуровневые детали, относящиеся к бизнес цели. Например, как будет выглядеть внешний API или как именно будет реализовываться безопасность передачи данных. Если можно сделать какую-то схему, вместо текста, то лучше разместить схему. Statefull или stateless система, как масштабируется и ведёт себя в многопоточный среде. Как система реагирует на новые изменения?

Особенности поддержки функционала

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

Бизнес цель Название второй цели

<тут должно быть описание бизнес цели>

Бизнес цель Название третьей цели

<тут должно быть описание бизнес цели>

Личности согласно Алану Куперу

Нефункциональные требования

Требования к производительности

Требования к безопасности

Поддерживаемые устройства

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

Мониторинг

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

Развертывание и обновление системы

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

Continuous integration

Примечание раздела: данный раздел ведется архитектором или тимлидом. Раздел описывает какие шаги есть при развертывании системы на тестовых средах, какие тесты и как выполняются, как происходит разворачивание системы.

Нефинансовые показатели

Примечание раздела: в этом разделе описываются нефинансовые показатели, которые должны достигаться, например:

  • Удовлетворенность пользователей

  • Eptda

  • Конверсия

  • Воронка продаж. Сколько людей заходили на сайт для просмотра ПО и сколько купили

  • Сколько одна подписка прожила (сколько людей ушли)

Тестирование пользователями

История изменений документа

Версия

Описание изменений

1.0

Создание документа

1.1

Добавлена бизнес цель Заведение данных в систему

Приложение 2. Соответствие SP и часов

Story point (SP)

Hours (4*n + n), ч.ч.

1

4

3

15

5

25

8

40

13

65

21

105

34

170

55

275

Трудоемкость - параметр оцениваемый в story point, который означает затраты энергии при реализации задачи. Важно понимать, что задача может быть трудоемкой из-за высокой сложности, но она также может быть трудоемкой по причине несложных но затратных действий для реализации. Очевидно, что трудоемкость можно перевести в часы (несмотря на рекомендации этого не делать).

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

Первая user story выбирается из расчета того, что она будет делаться 4 часа. Таким образом происходит настройка под систему. Далее задачи оцениваются в story points, в зависимости от того насколько они более трудоемкие по прогнозам команды.

Приложение 3. Расчет стоимости проекта

Алгоритм:

  1. За основу расчета берутся оценки feature в story point, которые конвертируются в часы согласно Приложению 2.

  2. По всем user story проекта считается общее количество часов, если в карточке проекта есть признак начала расчета проекта

  3. Первая рассчитанная оценка берется за максимальную (расчет можно сбросить снова через карточку проекта, тогда он снова начнется с начала)

  4. После получения первой оценки от нее берется процент для беклога продукта (15%) и беклога активностей компании (10%). Проценты могут варьироваться, но стоимость беклогов техдолга не может приближаться к цене зачал заказчика и, тем более, превышать его

  5. Таким образом получается итоговая стоимость всего проекта, которая фиксируется как максимальная и далее будет фигурировать в отчете

  6. Позже user story беклога проекта, превышающие определенное число story point будут разбиваться на более мелкие. Также возможно будут добавляться новые user story. В случае превышения максимальной оценки, при построении отчете будет зафиксировано превышение максимальной цены

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

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

  9. User story по техдолгу считаются отдельно. В случае превышения лимита на эти беклоги, они корректируются в сторону уменьшения. Альтернатив тут нет

  10. К стоимости проекта добавляется бюджет на правку ошибок

  11. Если нужно купить оборудование или ПО для выполнения проекта, то оно тоже включается в бюджет

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

Приложение 4. Отчет по milestones

Алгоритм:

  1. За основу расчета берутся оценки user stories в story point, которые конвертируются в часы согласно Приложению 2.

  2. За основу расчета берется производительность команды. Если изначально производительность неизвестна, то она может быть выставлена по предположению и далее корректироваться

  3. Беклог команды считается приоритизированным

  4. Беря за основу производительность команды и оценку в story point можно автоматически рассчитать дату завершения проекта

  5. При первом построении отчета, фиксируется определенная дата завершения проекта

  6. В случае, если дата завершения проекта сдвигается, высылается уведомление генеральному директору

  7. Если генеральный директор не согласен со сдвигом даты, генеральный директор может инициировать изменение приоритетов user story в командном беклоге

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru