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

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

И так, в любом проекте:

  • Необходимо понимать, какая последовательность шагов происходит;
  • Можем ли мы это всё заранее прогнозировать;
  • Насколько возможны изменения и вариативность в процессе.

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

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

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

Например, строительство ракет происходит исходя из двух концепций:

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

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

Проектный подход Waterfall – это «заранее максимально всё рассчитать, прицелиться, выстрелить».  Как в первом случае с парадигмой строительства ракеты. В разработке оперируют определенными временными контекстами, условно, больше трех месяцев или полугода.  То есть, «Водопадный» проектный подход подразумевает цикл этапов разработки,  в котором не допускаются какие-либо изменения.  

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

В больших проектах подходыAgile и Waterfall дополняют друг друга.

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

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