2024 01 29 связи важнее
Связи важнее
Продолжаем тему текста, только в прошлом посте было про символизм, а теперь про коннекционизм. Связи появляются прям сразу за символами. Важно, что это т-е-к-с-т, что порядок соблюдён, а дальше уже само слово связывается со значением в голове у читателя и писателя. Тут бы сразу про потери на каждом этапе, но это тема другого разговора.
В начале 20 века поисследовали эти связи и появились цепи Маркова. Оказалось, что проанализировал буквы или фразы можно делать неплохие пародийные тексты. Можно вот здесь потыкать: https://bespoyasov.ru/showcase/text-generator/browser/. Да и текущие LLM тоже строятся на таком же механизме, довольно подробно можно прочитать, например, у Стивена Вольфрама: https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/.
Код - это же тоже текст? Значит и тут у нас связи важны. Проблемы разработки лежат не столько в плоскости написать код, сколько в том как сделать его поддерживаемым. Для организации связи используют параметры coupling и cohesion, но мне в последнее время больше нравится определения deep и shallow modules (https://vanadium23.me/openbox/quotes/202305100927/, и я считаю это одним и тем же). Разработчик ищет баланс между внутренними и внешними связами модулей, и как правило, в этом происходит рост экспертизы, а не только в том чтобы больше фичей языка знать.
А про сервисы можно так сказать? Да, вроде логика та же. Разбитие сервисов порождает кост на обслуживание, взаимодействие друг с другом. Мы на него идём, если понимаем что две части уж совсем разные по характеристикам и нам дороже их обслуживать в совместном использование.
Что с командами? Two pizza size, вот это вот всё чтобы внутри был тесное общение. Ведь, если мы сделаем немножко больше команду (примерное число лежит в 14 человек), то там уже будут клубы по интересам. А это значит, что общее информационное поле потеряно и вносить изменения одним блоком она не может.
А между отделами? Наша команда в этом случае сворачивается в клубок (в случае тесного взаимодействия) и коммуникации идут в разрезе 2-3 человек от команд: либо в рамках проектной работы, либо в рамках функционального разреза, либо те кто принимают решения. На этом этапе начинается оргдизайн, где связами прям надо управлять. Кого-то сажать в одну песочницу, а где-то прям запрещать взаимодействовать. И где тут разница между coupling и cohesion на уровне кода?
А всё начиналось с того, что просто решили смысл в буковки уложить. А идея оказалась гораздо шире. (:
#черновик