Site icon AppTractor

Григорий Петров: Гибкие методологии разработки

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

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

Гибкие методологии как инструмент борьбы с неизвестностью

На мой взгляд, основное назначение гибких методологий — это борьба с неизвестностью путем изменения планов. Слово «гибкость» означает, что при встрече с неведомым планы могут и будут меняться, причем заранее неизвестным образом. Именно в этом, а не в итерациях, ключевое отличие Agile от Waterfall. В случае Waterfall планы также могут меняться, но большинство таких изменений оцениваются и прорабатываются заранее, незапланированное изменение в Waterfall это форс-мажор. В случае же Agile мы ввязываемся в боевые действия как можно раньше, чтобы сориентироваться на месте, получить больше информации и адаптировать планы. Для Agile незапланированные изменения это нормальный рабочий процесс.

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

Зачем нужны итерации?

Частичный отказ от предварительного планирования и изменение планов по ходу работы — это очень общая концепция. Для ее воплощения в жизнь большинство Agile методологий используют «итерации», разбивая работу на изолированные промежутки от 1 до 4 недель. На самом деле это хитрый социально-психологический трюк, который сам по себе никакой пользы не несет, но позволяет удобно организовывать работу обычных команд.

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

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

Что же такого делают итерации?

Использование итераций по назначению — хороший способ применения Agile методологий. Верно и обратное: карго культ и следование букве какой-нибудь книжки «SCRUM для кофейников за 24 часа» может не улучшить, а, наоборот, ухудшить работу команды. Гибкие методологии и итерации — всего лишь инструменты. Которые подходят для одних задач и не подходят для других. Знание их сильных и слабых сторон позволяют выбирать лучший подход к организации работы в конкретной команде для конкретных задач, облегчать разработку, эффективно бороться со сложностью и делать хороший софт.

Exit mobile version