Цель визуального мышления состоит в том, чтобы сделать сложные вещи понятными посредством визуализации, а не в том, чтобы упростить их[9].
В своем бестселлере «Визуальное мышление» Дэн Роэм предлагает использовать рисунки для представления идей в более понятном виде. Очевидно, что он говорит о сдвиге по вертикальной оси от запутанного к простому. Но даже в его предупреждении «не упрощать» присутствует терминологическая путаница. На самом деле Дэн имеет в виду, что при представлении в виде рисунков не должна утрачиваться сложность поведения системы, поскольку это помешает тем, кто пользуется данными рисунками, разобраться в существе вопроса.
Следовательно, если вам хочется упрощать, то, ради бога, упрощайте все, что трудно для понимания. Но при этом следует избегать линеаризации («упрощения») поведения системы, потому что это вводит в заблуждение.
Адаптивные и неадаптивные системы
Ни одна из представленных моделей не отражает способность многих систем самостоятельно перемещаться в интересной области, которая располагается между упорядоченностью и хаосом.
Когда я был маленьким мальчиком, сидел в ванне и вокруг плавали игрушки, меня завораживали воронки – они появлялись, когда вынимали сливную пробку. Играя с этими воронками, я постепенно обнаружил, что могу их остановить, заставить появиться вновь и вращаться в обоих направлениях. Этим воронкам приходилось терпеть мое присутствие, и они не могли адаптироваться к перепадам в моем настроении. Такие воронки – пример сложных
Несколько более интересны сложные адаптивные системы (САС). Они способны адаптироваться к внешней среде. В качестве примеров можно привести ребенка, который учится ходить; штамм бактерий, развивший резистентность к определенному антибиотику; водителей, пытающихся объехать пробку; колонию муравьев, обнаруживших недоеденный сэндвич, или команду разработчиков программного продукта, адаптирующихся к
Системы, о которых чаще всего идет речь в этой книге, включая команды разработчиков, будут сложными
В той ванне десятки лет назад воронки были глупыми неадаптивными системами. Настоящей сложной адаптивной системой был
Если исходить из представления, что команды разработчиков программных продуктов – это действительно системы, то можно ли считать такие системы сложными и адаптивными? Вправе ли мы сравнивать участников подобных команд с детьми, играющими в ванне?
Не злоупотребляем ли мы научным подходом?
При обсуждении гибких методологий разработки ПО мы регулярно слышим такие научные термины, как
Основная причина, почему теория сложных адаптивных систем актуальна при разработке программного обеспечения, это продвигаемая ею концепция эмерджентности и эмерджентных результатов[10].
Например, колония муравьев, мозг, иммунная система, Scrum-команды и город Нью-Йорк будут самоорганизующимися системами[11].
Scrum – это не методология, не четко расписанный процесс и не набор процедур. Это открытый фреймворк при разработке программного обеспечения. Применяемые правила ограничивают поведение сложной адаптивной системы, в результате чего система самоорганизуется и приходит в состояние, адекватное решаемой задаче[12].
Насколько оправданно применение теории сложности к разработке программного обеспечения? Согласны ли сами специалисты по сложным системам, что такие термины, как