Гибкие методологии в веб-разработке

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

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

Наиболее общая классификация методологий разработки — жесткие (тяжеловесные) и гибкие (легковесные).

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

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

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

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

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

  Жесткие методологии Гибкие методологии
Процесс Предсказуемый Адаптивный
Планирование

Детальное планирование большого объема всей разработки

Планирование только следующей итерации небольшого объема
Изменения Сложно вносить, сопротивляются изменениям  Легко вносить, рассчитаны на постоянные изменения
Документация Много детальной  Мало, исходный код должен быть документацией
Ориентация На процесс (люди подстраиваются под процесс) На человека (процесс подстраивается под людей)

Мы считаем гибкие методологии очень уместными в сфере веб-разработки и используем их при работе над всеми своими проектами.