Закон Конвея

Я все время забываю формулировку закона (правила?), а гуглится он почему то очень плохо, так что запишу его тут. Итак, Джон Конвей когда-то заявил что:

Organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations

что можно перевести как:

Организация которая разрабатывает систему ... вынуждена делать систему по структуре повторяющую структуру коммуникаций внутри организации

В общем если в компании разрабатывающей ПО есть 3 отдела, которые занимаются этим проектом, то он, с точки зрения архитектуры, будет представлять из себя 3 больших модуля. Или если у вас есть 2 офшорные команды, то и проект будет состоять из двух частей.

Причем если эти команды тесно общаются, например устраивая ежедневные skype митинги и вообще, то и модули будут тесно связаны — например единая сборка, репозиторий, документация, трекер, но разные библиотеки лежащие рядом. Но если общаются лишь переписываясь по email, то получите связь через какой нибудь RESTful API. Десятки раз видел подобные примеры.

Или, как сказал Эрик Реймонд:

Если у вас есть 4 команды разрабатывающие один компилятор — вы получите компилятор работающий в 4 прохода (4-pass compiler)

См. закон на википедии: Conway's law

  • http:// Владимир Лебедев

    RESTful API не так уж и плох, особенно если связывать front- и back-ends. Так что не надо набрасывать 🙂

  • http:// splix

    @Владимир

    Я и не говорил ничего плохого про RESTful, я вообще его давний фанат.

    Но тут даже больше — это реальный случай из моей практике. Проект делали 3 команды, на трех разных языках/платформах, в трех разных странах (плюс заказчик в четвертой стране). Так вот тут именно я настоял на использовании RESTful. Хотя если бы была более другая структура коммуникаций, то возможен был и иной способ. Например через общую БД, спорный, но тоже очень популярный вариант.

  • http:// splixed

    Я и не говорил ничего плохого про RESTful, я вообще его давний фанат.

    Но тут даже больше — это реальный случай из моей практике. Проект делали 3 команды, на трех разных языках/платформах, в трех разных странах (плюс заказчик в четвертой стране). Так вот тут именно я настоял на использовании RESTful. Хотя если бы была более другая структура коммуникаций, то возможен был и иной способ. Например через общую БД, спорный, но тоже очень популярный вариант.

  • http:// Hanna

    Возможно, закон плохо гуглится потому, что это закон не Джона Конвея, а Мела Конвея. Мелвин Конвей (en.wikipedia.org/wiki/Melvin_Conway) опубликовал этот закон в статье How Do Committees Invent в 1968-м году (en.wikipedia.org/wiki/Conway%27s_law).

  • http:// Sergey Ponomarev

    Есть лекция по теме

    www.youtube.com/watch?v=lrK-q4jLBOs