[Перевод] Питер Хинченс: Психология архитектуры программного обеспечения

Один из принципов Социальной Архитектуры заключается в том, что способ нашей организации важнее того, кем мы являемся.


imageДиркжан Октман (Dirkjan Ochtman) обратил мое внимание на определение архитектуры программного обеспечения в Википедии: «совокупность структур, требуемых для понимания системы, которая объединяет элементы программного обеспечения, связи между ними и их принадлежность». Для меня эта бессодержательная и цикличная болтовня служит хорошим примером того, как унизительно мало мы знаем о том, что на самом деле важно при создании масштабной архитектуры программного обеспечения.

Архитектура — это искусство и наука создания крупных искусственных структур, используемых человеком. Если я что и понял и успешно применял на протяжении тридцати лет при создании все более крупных систем программного обеспечения, так это то, что программное обеспечение — это все о людях. Крупные структуры сами по себе бессмысленны. Важно то, как они функционируют для использования их людьми. А в программном обеспечении, человеческое начинается с программистов, которые делают его.

Основные проблемы в архитектуре программного обеспечения кроются в человеческой психологии, а не в технологиях. Наша психология по-разному может влиять на нашу работу. Я могу привести примеры того, как группа людей словно становится глупее по мере того, как она расширяется, или когда им приходится работать, будучи разделенными огромным расстоянием. Значит ли это, что чем меньше команда, тем она эффективней? Как же тогда такое крупное глобальное сообщество как ZeroMQ умудряется успешно работать?

Сообщество ZeroMQ возникло не случайно. Его конструкция была целенаправленно разработана — мой вклад в те ранние дни, когда на чердаке в Братиславе появился код. Разработка основывалась на моем научном питомце, «Социальной Архитектуре», которую Википедия определяет как «сознательная разработка среды, которая поощряет проявление определенных паттернов социального поведения в целях достижения какой-либо цели или целей». Мое определение более конкретно: «процесс или продукт планирования, разработки и создания онлайн сообщества».

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

И так, вот мой короткий список психологических элементов Социальной Архитектуры:

  • Глупость: наша ментальная шина имеет пределы, поэтому в какой-то момент мы все можем тупить. Архитектура должна быть простой для понимания. Это правило номер один: простота важнее функциональности, всегда. Если вы не можете вникнуть в структуру серым холодным утром понедельника до того, как выпить кофе, значит, она слишком сложна.
  • Эгоистичность: мы действуем только из эгоистических побуждений, поэтому архитектура должна создавать пространство и возможность для эгоистичных поступков, от которых выиграют все. Эгоистичность зачастую является косвенной и неявной. Например, я могу потратить несколько часов, объясняя что-то кому-то, потому что это может пригодиться мне самому позже.
  • Лень: мы делаем множество предположений, которые потом оказываются неверными. Мы радуемся, когда можем с минимальными усилиями получить результат или проверить предположение быстро, поэтому архитектура должна предусматривать такую возможность. Т.е. она должна быть простой.
  • Зависть: мы завидуем другим, а это значит, что мы преодолеем нашу глупость и лень, лишь бы доказать, что они не правы, и что мы можем их превзойти. Поэтому архитектура должна предусмотреть пространство для публичных соревнований, с четкими и понятными всем правилами.
  • Страх: мы не желаем идти на риск, если есть шанс, что мы можем выглядеть глупо. Страх поражения является главной причиной того, что люди становятся конформистами и следуют за большинством, даже если оно ошибается. Архитектура должна позаботиться о том, чтобы люди могли просто и недорого проводить эксперименты скрытно, достигать успеха без наказания в случае неудачи.
  • Взаимодействие: мы приложим усилия, потратим деньги, но накажем за жульничество и принудим к исполнению справедливых правил. Архитектура должна устанавливать строгие правила, которые будут указывать, как людям работать вместе, а не на то, над чем им работать.
  • Конформизм: мы с радостью поддаемся конформизму, из-за страха или лени, т.е. если паттерны поведения хорошие, понятно изложены и задокументированы, и обязательны, мы естественным образом каждый раз будем выбирать правильный вариант поведения.
  • Гордость: мы очень беспокоимся за наш социальный статус, и мы будем усердно трудиться, только чтобы не выглядеть глупыми или некомпетентными на публике. Архитектура должна обеспечить, чтобы каждая часть нашей работы была подписана, чтобы мы бессонными ночами ворочались в кровати и переживали о том, что другие скажут о нашей работе.
  • Жадность: мы крайне хозяйственные животные (см. эгоистичность), поэтому архитектура должна экономически стимулировать нас тратить ресурсы на достижение результата. Пусть это будет шлифовка наших профессиональных навыков, или буквально получение денег за некие навыки или компоненты. Неважно какой, но экономический стимул обязан присутствовать. Думайте об архитектуре, как о рынке, а не как об инженерной конструкции.


Эти стратегии годятся как для крупных, так и для маленьких организаций или команд.

Перевод книги «Социальная архитектура»:

  • Предисловие. Мудрость толпы
  • Глава 1. Инструментарий
  • Глава 2
     — Эмоциональное выгорание волонтеров
     — Как захватить/защитить open-source проект
     — Миф об индивидуальном интеллекте
  • Глава 3
     — Сообщество ZeroMQ
     — Психология архитектуры программного обеспечения
  • Глава 6. Живые Системы



Об авторе
«К сожалению, мы не выбираем себе смерть, но мы можем встретить ее достойно, чтобы нас запомнили, как мужчин.»
 — к/ф «Гладиатор»

851fbc56de834030ace75fd09d604877.jpg

Питер Хинченс (Pieter Hintjens) — бельгийский разработчик, писатель. Занимал должность CEO и chief software designer в iMatix, компании, производящей free software, такие как библиотека ZeroMQ (библиотека берет на себя часть забот о буферизации данных, обслуживанию очередей, установлению и восстановлению соединений и прочие), OpenAMQ, Libero, GSL code generator, и веб-сервиса Xitami.

  • Автор более 30 протоколов и распределенных систем.
  • Основатель проекта Edgenet по созданию полностью безопасной, анонимной глобальной P2P-сети.
  • Президент ассоциации Foundation for a Free Information Infrastructure (FFII), которая воевала с патентным правом.
  • CEO сервиса по созданию собственных вики-проектов Wikidot.
  • Он был активистом open standards и основателем Digital Standards Organization.
  • Питер в 2007-м был назван одним из 50 самых влиятельных людей в области «Интеллектуальная собственность».

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

… я хочу написать одну последнюю модель, последний протокол, который посвящён тому, как уйти из жизни, имея в запасе некоторые знания и время. В этот раз я не буду офоррмлять RFC. :)
Протокол ухода из жизни


Сайт Питера Хинченса
Статья в Википедии

Мысли и идеи Питера Хинченса на Хабре:

  • Протокол ухода из жизни
  • Optimistic Merging: Сначала люди, потом код. Соберите правильное сообщество, и оно напишет нужный код
  • Социальная архитектура: стратагемы для успеха open source проектов
  • Как захватить/защитить open-source проект
  • Как построить сообщество. Перевод книги «Социальная архитектура»: Глава 1. Инструментарий


О проекте по переводу книги
Я, при поддержке Филтех-акселератора, планирую опубликовать на Хабре (и, может быть, в бумаге) перевод книги «Social Architecture». Имхо, это лучшее (если не единственное адекватное) пособие по управлению/построению/улучшению сообществ, ориентированных на создание продукта (а не на взаимный груминг или «поклонение» лидеру, спортклубу и пр).


Call to action
Если у вас есть на примете проекты/стартапы с высокой долей технологий, направленные на общественное благо в первую очередь и на получение прибыли как на вспомогательную функцию (например, как Википедия), пишите в личку или регистрируйтесь на программу акселератора.

Если вы пришлете ссылки на статьи, видео, курсы на Coursera по управлению/построению/улучшению сообществ, ориентированных на создание продукта, с меня шоколадка.

© Habrahabr.ru