[1/2] The Philosophy of Architecture - Barry O'Reilly - NDC Oslo 2024 (Рубрика Architecture)
Очередное крутое выступление Barry O'Reilly на тему архитектуры (про выступление "An Introduction to Residuality Theory" я уже рассказывал). Здесь автор делает краткий обзор философских идей со времен древних греков до текущего момента и приходит к философскому подходу, который лежит в основе его Residuality Theory.
Основные идеи выступления следующие
- Барри работал над PhD и смог взглянуть на архитектуру и разработку софта по новому - я тоже хочу заняться PhD в ближайшие годы:)
- Барри задумался о том, как философские идеи влияют на процесс принятия решений (философия предполагает, что вы задаете вопросы к своим assumptions)
- Барри выделяет основные проблемы с архитектурой
- Время, изменения во времени, неопределенность с тем, а какие это будут изменения
- Что такое единица измерения для софта - автор для начала вспоминает про 4 стихии древних греков (земля, огонь, ветер, вода), потом физику (атом, частица), химию (молекулы), биологию (клетки), а потом переходит на SWE, где у нас есть комьютеры, процедуры, модули, объекты, сервисы, функции, микросервисы, процессы, фичи, паттерны. В общем, разработка софта еще в фазе "древних греков" по мнению автора
- Барри вспоминает Томаса Куна с его книгой "Структура научных революций" 1962 года, где появилась идея про сдвиг парадигмы и то, что научное знание развивается скачкообразно, посредством научных революций. Любой критерий имеет смысл только в рамках определённой парадигмы, исторически сложившейся системы воззрений. Научная революция — это смена научным сообществом объясняющих парадигм. Автор говорит, что в софтостроении такие изменения происходят каждые шесть недель (типа выход нового js фрейморвка) 🙂
- Дальше автор дает введение в философию
- Эссенциализм - это идея о том, что у всего есть основная сущность, и что мудрость обретается, когда мы приближаемся к пониманию этой сущности. Объектно-ориентированное программирование примерно про это - мы имеем идеальный класс и его экземпляры, выполняющиеся в реальности.
- Позитивизм - философское учение и направление в методологии науки, определяющее единственным источником истинного, действительного знания эмпирические исследования и отрицающее познавательную ценность философского исследования. Этот подход свойственнен многим разработчикам
- Interpretivism (антипозитивизм) - подход в социальных науках, который противоположен позитивизму. Он позволяет существовать разным взгядам на одну и ту же реальность. Отрицает научные подходы в применении к социальным системам (а разработка софта - это социотехническая система), а также говорит о том, что мы не обнаруживаем знания, а создаем и передаем идеи в ходе обсуждений:)
- Структурализм - в языке источник истины, поэтому надо заниматься анализом требований и отсюда же рождается DDD (domain driven design)
- Кибернетика - наука об общих закономерностях получения, хранения, преобразования и передачи информации в сложных управляющих системах, будь то машины, живые организмы или общество. Отсюда у нас есть страсть к моделированию организаций и людей как машин на основе control systems и feedback loops
- Causality - концепт того, что между разными событиями существуют причинно-следственные связи (конструкции вида if ... then)
- Models - идеи о том, что мы создаем модели реальности и живем с помощью этих моделей, а не реальности. Здесь автор вспоминает про французского философа Бодрийяра и его книги "Симуляция и симулякры" (говорят, что фильм "Матрица" отчасти основан на этой концепции). Дальше проводится параллель между архитекторами в software engineering и архитектором из матрицы
- Complexity - при попытке сбежать из матрицы мы сталкиваемся с проблемами сложности. Иногда их пытаются подавить (например, YAGNI) или просто двигаться итерациями (авось как-нибудь победим). Но тут нужны новые концепции
Продолжение в следующем посте:)
#Philosophy #DistributedSystems #SystemDesign #Math #Engineering #Architecture #SoftwareArchitecture #ComplexityTheory #Software #Processes