понедельник, 6 июня 2016 г.

Закон Конвея

Совсем недаво я открыл для себя закон Конвея
Структура созданной системы отражает структуру связей в команде/коллективе задействованной в ее создании

Он же:
Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations
Он же:
Организация которая разрабатывает систему ... вынуждена делать систему по структуре повторяющую структуру коммуникаций внутри организации

С открытием пришло ощущение неотвратимости и точности, с которой выполняется этот закон.

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



В другом: админы, бекендеры и фронтендеры, несмотря на работу в одном проекте, сидели отдельными кучками и работали в разных структурных подразделениях с разными начальниками. У фронта и беканда был разный релизный цикл, а единым он стал только тогда, когда к проекту плотно подключился я - тестер, проверявший и то и другое. И цикл был связан не потому, что это было необходимо, а скорее потому. что работал я больше с фронтендом. а обедал - с бекендом.

Сейчас у меня на проекте архитектура приложения называется микросервисной. Все по Конвею: каждый общается с каждым и вместо ролей - фамилии. Можно попросить сделать работу программиста, а можно заменить эту пару аналитиком и тестировщиком. Добавим одновременное производство большого количество цепочек и получим то ли эффективную при ручном управлении систему, то ли бардак. Я пока не разобрался, но склоняюсь ко второму. Тем не менее, система крайне устойчива, так как диапазон возможности моих коллег шире их специализации. Если вы уже знакомы с фулл-стек разработчиками, то как вам тот факт, что у нас выращивается несколько фулл-стек аналитиков?
Бойцовый кот есть самостоятельная боевая единица сама в себе, способная справиться с любой мыслимой и немыслимой неожиданностью
 Есть и другая сторона, как и положено микросервисам - вечно что-то не работает или кто-то занят не тем. чего хотелось бы тебе лично. Не ломая систему в целом это создает ряд неудобств.
Тем не менее живем.

Очень интересно, как этот закон работает в полураспределенных командах - когда лишь несколько сотрудников работают удаленно.

2 комментария:

  1. Даже в распределенной на три офиса команде - все ровно то же самое. Работает закон.

    ОтветитьУдалить
  2. Даже в распределенной на три офиса команде - все ровно то же самое. Работает закон.

    ОтветитьУдалить