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

Эволюции плевать на неудобства, если основная функция выполняется. Жираф сформировался с длинной шеей не зря и это помогает ему оптимально взаимодействовать с высокими деревьями. Но беда состоит в том, что когда жираф опускает голову вниз, давление, образующееся в голове зашкаливает, поэтому у жирафа есть пятый клапан на сердце, который помогает контролировать давление в голове, когда она опущена.
Эволюция не занимается оптимизацией. У древних рыб нерв, соединяющий мозг с жабрами, проходил мимо сердца, которое у рыб внизу тела, недалеко от головы. Потом после логичного развития животных, появилась шея, а сердце оказалось в грудной клетке. Природа не может просто взять и проложить нервы по-новому, оптимальней, поэтому у животных этот нерв из головы спускается вглубь тела, делает петлю вокруг аорты, и возвращается обратно в шею к эволюционировавшим в голосовые связки «жабрам». В итоге нервный импульс делает изрядный крюк из-за обратной совместимости с архитектурой доисторических рыб.
Эволюция работоспособна. Разнообразие видов и сложность отдельно взятых дает это понять. Неважно насколько организм приспособлен к окружающей среде. Важно насколько этот организм превосходит окружающих.
Эволюция игнорирует вымирание отдельных видов. В среднем сейчас на земле исчезает 40 видов в день и это нормально. Вымирание видов — это тот самый механизм регулирования и управления, который успешно используется.
Говоря об эволюции нужно помнить, что в качестве аналогии взята разработка приложений. И не какая-нибудь произвольная разработка, а разработка по гибкой методологии.

«Аджайл» — огромный самообман при разработке продуктов. Он невероятно полезен для общей массы приложений и решений на рынке, но катастрофически опасен для отдельно взятого продукта. Выживут самые успешные решения, неприспособленные — вымрут. Разрабатывать продукт по этой методологии будет означать принятие всех эволюционных огрехов и проблем в угоду нахождения оптимального решения на рынке в целом, а не для конкретного продукта. А выживет этот продукт или нет — всем плевать.
У подопытного находят смертельную наследственную излечимую болезнь, которая проявляется в среднем возрасте. И с первого взгляда борьба за выживание этого индивидуума лишена смысла — его выживаемость и потомство гарантирует такие же проблемы в будущих поколениях. Копнув глубже можно сказать, что само наличие потомков дает понять, что эволюционно этот подопытный вполне себе состоятельный. Ведь если можешь иметь потомство — имей. В результате имея незначительные для основной функциональности проблемы, индивидуум все равно остается конкурентоспособным. Приложение, которое выполняет основную функцию, будет оставаться конкурентноспособным даже несмотря на ужасный дизайн или уродливую и кривую дополнительную функциональность. И никакой аджайл этому не помеха. Старательно размножая такое приложение по устройствам пользователей, можно добиться того, что функциональность начнут копировать. И тогда мы получим pdf-формат, «OpenOffice» и кнопку «Супер» в ОС «Убунту».

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

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