Your Team as a Distributed System • Andrew Harvey • YOW! 2019 - Part 1
Интересное выступление от Andrew Harvey, который долго помогал стартапам, работая внутри Microsoft, а сейчас работающий на позиции head of engineering в covidence.org, которые делают инструменты для проведения ревью научных исследований. В этом выступлении Andrew говорит про people и team management, но использует аналогии из мира распределенных систем (большая часть содержит отсылки к fallacies of distributed computing, которые давным давно сформулировал Peter Deutsch). Но начинается выступление с упоминания принципа Питера: “В иерархической системе каждый индивидуум имеет тенденцию подняться до уровня своей некомпетентности”. И что это приводит к тому, что повышение хороших инженеров в менеджеры может приводить к появлению плохих менеджеров и исчезновению хороших инженеров:) Автор высказывает гипотезу, что это происходит потому что у люди не выбрасывают stack traces в случае ошибок - зачастую у людей происходит silent error, дальше понижается performance, дальше происходит segfault и они уходят из компании. И дальше автор проводит мостик от людей к распределенным системам.
Начинается все с отсылки к нейробиологии и тому, что мозг человека - это уже распределенная система. Кстати, в 1981 году американский нейропсихолог, Роджер Сперри,получил Нобелевскую премию «За открытия, касающиеся функциональной специализации полушарий головного мозга». А по-факту, он просто разрезал людям мозолистое тело, соединявшее полушарие. Он пытался лечить этим эпилепсию и калечил все остальное. Тема мозга конечно интересна, но дальше в этой презентации автор переходит к командам (а про мозг я уже делал подборку материалов ). Но сначала он говорит про основные характеристики распределенной системы
- Multiple processes
- Inter-process communications
- Disjoint addresss space
- Collective goal
Все эти характеристики верны для команды, а значит можно посмотреть как для команды работают уже упоминавшиеся выше fallacies of distributed computing
1. The network is reliable - здесь автор говорит, что не все сказанное/отправленное будет услышано/получено:) Поэтому надо проектировать коммуникации так, чтобы убедиться, что нужные сообщения получены (быть больше TCP, а не UDP). 2. Latency is zero - instant messages оказываются зачастую не такими мгноввенными. Поэтому нам надо дизайнить коммуникации так, чтобы они были асинхронными и мы не страдали от ожидания синхронного ответа 3. Bandwidth is infinite - здесь автор говорит о том, что пропускная способность ограничена, поэтому коммуникации надо проектировать так, чтобы общаться о важном. На эту тему можно посмотреть недавнее выступление Jez Humble, соавтора книги “Accelerate”, про которое я рассказывал на этой неделе. 4. The network is secure - здесь автор переформулирует этот тезис как “Information is transmitted accurately“, но каждый, кто играл в сломанный телефон, знает, что это не так:) Автор предполагает использовать концепцию checksums (у гуманитариев это называется “активное слушание”). 5. Topology doesn't change - это предположение тоже не работает. Можно вспомнить про книгу “Топологии команд”, где рассказывает о том, как их можно менять (у меня есть обзор этой книги в трех частях: Teams as means of Delivery, Team Topologies that work for flow, Evolving team interactions for innovation and rapid delivery ) 6. There is one administrator - у команд много стейкхолдеров и добиться консенсуса часто сложно. Тут вступают в дело практики фасилитации. 7. Transport cost is zero - стоимость коммуникаций часто значительна, поэтому нам надо стремиться сбалансировать усилия по созданию ценности и усилия на потрындеть всем со всеми:) 8. The network is homogeneous - здесь автор рассказывает, что гомогенность внутри команды - это не к добру:) Но если у нас есть так желаемая многими diversity, то появляется другая проблема - с тем, чтобы всем договориться о совместном видении:)
Продолжение разбора в следующем посте
#Management #Leadership #Software #SoftwareDevelopment #DistributedSystems #Architecture