Сравнение «Agile» с научным процессом

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

В этой статье я буду утверждать, что agile-процесс на самом деле (или, по крайней мере, должен быть) таким же, как и научный процесс.

Научный процесс

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

  • Сформулировать гипотезу
  • Разработать эксперимент
  • Построить эксперимент
  • Провести эксперимент
  • Сбор данных
  • Проанализируйте данные и сделайте выводы
  • Промыть и повторить

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

Процесс agile

Процесс agile выглядит довольно похоже:

  • Определите цель итерации (также называемой спринтом).
  • Написать истории, требования и критерии приемки
  • Разработка определенных функций
  • Развертывание функции
  • Сбор данных и обратной связи
  • Проанализируйте данные и сделайте выводы
  • Промыть и повторить

Думаю, вы начинаете видеть сходство. Давайте рассмотрим этапы научного процесса и посмотрим, как они соотносятся с agile-процессом.

Сформулируйте гипотезу

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

Разработать эксперимент

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

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

Постройте эксперимент

Построение эксперимента может быть как простым — напечатать несколько анкет, так и сложным — построить такую машину, как БАК в ЦЕРНе. Самое главное — знать, что вы строите, исходя из плана эксперимента.

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

Запуск эксперимента

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

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

Соберите данные

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

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

Проанализируйте данные и сделайте выводы

Данные необходимо проанализировать и на основе полученных данных сделать выводы. Это этап анализа в процессе agile, и, если быть откровенным, именно это делает «Agile» agile. Только когда у вас есть хорошие данные, и вы тщательно делаете выводы на основе фактов, вы можете быть уверены, что не отклоняетесь от намеченного пути. В научном процессе этот шаг делает или разрушает вашу гипотезу. Вы узнаете, верна ли ваша гипотеза (или хотя бы может быть верна) и нужно ли вам попробовать что-то другое. Возможно, вам придется решить, что этот эксперимент не дал вам нужных данных и вам придется вернуться к чертежной доске. То же самое вы должны делать и в процессе agile-разработки.

Промыть и повторить

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

Какие шаги пропускаются довольно часто?

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

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

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

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

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


Изображение: Фото Hans Reniers on Unsplash

Оцените статью
devanswers.ru
Добавить комментарий