При обсуждении гибких методологий разработки ПО мы регулярно слышим такие научные термины, как самоорганизация и эмерджентность.
Основная причина, почему теория сложных адаптивных систем актуальна при разработке программного обеспечения, это продвигаемая ею концепция эмерджентности и эмерджентных результатов[10].
Например, колония муравьев, мозг, иммунная система, Scrum-команды и город Нью-Йорк будут самоорганизующимися системами[11].
Scrum – это не методология, не четко расписанный процесс и не набор процедур. Это открытый фреймворк при разработке программного обеспечения. Применяемые правила ограничивают поведение сложной адаптивной системы, в результате чего система самоорганизуется и приходит в состояние, адекватное решаемой задаче[12].
Насколько оправданно применение теории сложности к разработке программного обеспечения? Согласны ли сами специалисты по сложным системам, что такие термины, как самоорганизация и эмерджентность, применимы не только к описанию муравейников, мозга и иммунной системы, но также и к Agile-командам?
Некоторые ученые уже обрушились с критикой на людей вроде нас за то, что мы заимствуем их научную терминологию. Они утверждают, что мы берем термины, не вникая в их значение, и используем научные понятия, не имея на то достаточных концептуальных оснований. И еще они говорят, что нас опьяняют сами слова вне связи с тем, что они на самом деле означают [Sokal 1998: 4].
По правде говоря, я здесь немного сжульничал. Разнос, который Сокал устроил тем, кто использует теорию сложности (или скорее злоупотребляет ею), адресован в первую очередь не сторонникам Agile-методологий, а людям в целом. Но сигнал мы услышали. Чтобы усвоить его еще лучше, вот цитата, напрямую относящаяся к существу вопроса:
Нет ничего неожиданного в том, что гуру теории сложности очень расстроены тем, насколько безответственно терминология их теории используется в литературе и дискуссиях, касающихся менеджмента – бывает, что она используется чуть ли не в метафорическом смысле. Один [такой гуру] зашел настолько далеко, что, отмечая полезность подобных книг для менеджеров, всерьез рекомендует вымарывать из них любые ссылки на теорию сложности[13].
Ох!
Впрочем, я вновь немного сжульничал. Эта критика была направлена против литературы по менеджменту, в которой авторы злоупотребляют терминами теории сложности, а не против книг о гибких методологиях. Но все же… лучше внять и этому предупреждению.
Мы обязаны проявлять осторожность при переносе терминологии из науки о поведении сложных систем в другие области, включая менеджмент и разработку ПО. Например, когда небольшая шероховатость, возникшая в ходе проекта по разработке ПО, неожиданно выливается в большие проблемы, нет ничего легче, чем заявить, что это проявление «хаотического» поведения системы. Но если мы при этом не понимаем, что с научной точки зрения означает термин «хаос», то сильно рискуем стать посмешищем в глазах специалистов по теории сложности…
Итак, будет ли использование понятия самоорганизация злоупотреблением научной терминологией?
А как насчет «эмерджентного дизайна»? Это тоже злоупотребление?
Лично я так не думаю. Но в любом случае будет разумно сохранять критичность и здоровую долю скепсиса.