Forwarded from Архитектура ИТ-решений
Победитель предыдущих архитектурных игр, на мой взгляд, выглядел поубедительней https://github.com/tekiegirl/Archangels
GitHub
GitHub - tekiegirl/Archangels: Entry to the O'Reilly Autumn 2021 Architectural Kata
Entry to the O'Reilly Autumn 2021 Architectural Kata - tekiegirl/Archangels
👍3
Forwarded from Архитектура ИТ-решений
Довольно неплохое руководство по архитектурным ролям для чайников от Adrian Kearns. С картинками, всё как мы любим. https://morphological.wordpress.com/2017/01/26/the-laymans-guide-to-it-architecture-roles/
Peruse Muse Infuse
The Layman’s Guide to IT Architecture Roles
Most roles within information technology are fairly well understood and defined but this can’t always be said of architects. This can be a problem for anyone considering a career progression into …
👍6
Russian Association of Software Architects
Сегодня в одном из чатов мне напомнили о том, что существует "Overengeneering", и это, в общем-то, как бы плохо. Отсюда напрашивается вывод, что, мол, не нужно развиваться, чтобы не стать оверинженерным и квазинаучным. Не берусь судить о том, плохо это, или…
Overengeneering уже обсуждался, но к этой теме есть что добавить:
💬 "The essence of this argument is that patterns are often over-used. The world is full of the legendary programmer, fresh off his first reading of GOF who includes sixteen patterns in 32 lines of code. I remember one evening, fueled by a very nice single malt, running through with Kent a paper to be called "Not Design Patterns: 23 cheap tricks" We were thinking of such things as use an if statement rather than a strategy. The joke had a point, patterns are often overused, but that doesn't make them a bad idea. The question is how you use them."
—"Is Design Dead?" by M.Fowler
Это неизбежный этап развития любого специалиста, появляющийся в результате роста информации, которой он уже обладает, но пока еще не научился оперировать ею.
💬 "Главным Техническим Императивом Разработки ПО является управление сложностью. Управлять сложностью будет гораздо легче, если при проектировании вы будете стремиться к простоте.
Есть два общих способа достижения простоты: минимизация объема существенной сложности, с которой приходится иметь дело в любой конкретный момент времени, и подавление необязательного роста несущественной сложности.
Software's Primary Technical Imperative is managing complexity. This is greatly aided by a design focus on simplicity.
Simplicity is achieved in two general ways: minimizing the amount of essential complexity that anyone's brain has to deal with at any one time, and keeping accidental complexity from proliferating needlessly."
—"Code Complete" 2nd edition by Steve McConnell, перевод: Издательско-торговый дом "Русская Редакция"
Обратите внимание, уменьшить essential complexity нельзя, но ею можно управлять в момент времени. А вот рост accidental complexity (несущественной, технической сложностью) можно уменьшить. Именно об этом говорил M.Fowler в первой цитате. За более подробной информацией об этих терминах лучше обратиться к первоисточнику:
- "No Silver Bullet—Essence and Accident in Software Engineering" by Turing Award, Fred Brooks.
Статья так же включена в must have книгу:
- "The Mythical Man-Month Essays on Software Engineering Anniversary Edition" by Frederick P. Brooks, Jr.
, которая имеет несколько достаточно качественных переводов на русский язык, и читается на одном дыхании за выходные.
Ну а мы пока подведем итог:
Лекарство не должно быть хуже болезни. А цель должна оправдывать средства. Внося сложность в систему, мы должны обретать возможность управлять еще большим уровнем сложности, т.е. решение должно быть оправданным.
Вопрос применения паттернов - это вопрос поиска баланса между уровнем управляемой ими сложности и уровнем привносимой ими сложности.
#SoftwareDesign #Simplicity
💬 "The essence of this argument is that patterns are often over-used. The world is full of the legendary programmer, fresh off his first reading of GOF who includes sixteen patterns in 32 lines of code. I remember one evening, fueled by a very nice single malt, running through with Kent a paper to be called "Not Design Patterns: 23 cheap tricks" We were thinking of such things as use an if statement rather than a strategy. The joke had a point, patterns are often overused, but that doesn't make them a bad idea. The question is how you use them."
—"Is Design Dead?" by M.Fowler
Это неизбежный этап развития любого специалиста, появляющийся в результате роста информации, которой он уже обладает, но пока еще не научился оперировать ею.
💬 "Главным Техническим Императивом Разработки ПО является управление сложностью. Управлять сложностью будет гораздо легче, если при проектировании вы будете стремиться к простоте.
Есть два общих способа достижения простоты: минимизация объема существенной сложности, с которой приходится иметь дело в любой конкретный момент времени, и подавление необязательного роста несущественной сложности.
Software's Primary Technical Imperative is managing complexity. This is greatly aided by a design focus on simplicity.
Simplicity is achieved in two general ways: minimizing the amount of essential complexity that anyone's brain has to deal with at any one time, and keeping accidental complexity from proliferating needlessly."
—"Code Complete" 2nd edition by Steve McConnell, перевод: Издательско-торговый дом "Русская Редакция"
Обратите внимание, уменьшить essential complexity нельзя, но ею можно управлять в момент времени. А вот рост accidental complexity (несущественной, технической сложностью) можно уменьшить. Именно об этом говорил M.Fowler в первой цитате. За более подробной информацией об этих терминах лучше обратиться к первоисточнику:
- "No Silver Bullet—Essence and Accident in Software Engineering" by Turing Award, Fred Brooks.
Статья так же включена в must have книгу:
- "The Mythical Man-Month Essays on Software Engineering Anniversary Edition" by Frederick P. Brooks, Jr.
, которая имеет несколько достаточно качественных переводов на русский язык, и читается на одном дыхании за выходные.
Ну а мы пока подведем итог:
Лекарство не должно быть хуже болезни. А цель должна оправдывать средства. Внося сложность в систему, мы должны обретать возможность управлять еще большим уровнем сложности, т.е. решение должно быть оправданным.
Вопрос применения паттернов - это вопрос поиска баланса между уровнем управляемой ими сложности и уровнем привносимой ими сложности.
#SoftwareDesign #Simplicity
Telegram
Russian Association of Software Architects
Сегодня в одном из чатов мне напомнили о том, что существует "Overengeneering", и это, в общем-то, как бы плохо. Отсюда напрашивается вывод, что, мол, не нужно развиваться, чтобы не стать оверинженерным и квазинаучным.
Не берусь судить о том, плохо это,…
Не берусь судить о том, плохо это,…
👍10🔥3
Russian Association of Software Architects
Overengeneering уже обсуждался, но к этой теме есть что добавить: 💬 "The essence of this argument is that patterns are often over-used. The world is full of the legendary programmer, fresh off his first reading of GOF who includes sixteen patterns in 32 lines…
На этой неделе поработал немного с Golang, и поймал себя на мысли, что Golang - хороший пример того, как индустрия разрешает противоречие между информационной перегруженностью и переусложненностью современной области знаний, с одной стороны, и стесненностью ресурсов времени практикующих специалистов на их освоение, с другой стороны. Что является, кстати, одной из уставных целей нашего объединения.
На почве предыдущего поста мне вспомнились слова Никлауса Вирта:
💬 "Богатство функциональных возможностей во многих современных языках - это действительно проблема сама по себе, а не решение других проблем. Избыток возможностей - это еще одно следствие веры многих программистов в то, что ценность языка пропорциональна количеству этих возможностей (как я это называю- это вера в "колокольчики и свистки"). Однако, мы знаем, что будет лучше, если каждое базисное понятие представляется единственной, специально для этого предназначенной конструкцией. Это не только сокращает усилия по изучению языка, но и сокращает размер его описания, что, в свою очередь, помогает избежать несогласованности и неправильного понимания. Поддержание языка максимально простым и регулярным всегда было приоритетом в моей работе: описание Pascal занимало около 50 страниц, Modula - около 40, а Oberon - и вовсе 16. И я рассматриваю эту тенденцию как прогрессивную. Истинная ценность языков программирования зависит от качества и практичности их абстракций. Пример - абстракция, называемая "число" или абстракция "логическая величина", замещающая конкретную строку битов.
Ценность такого рода абстракции основывается на ее целостности. В случае чисел должны быть применяемы только арифметические операции, независимо от того факта, что логические операции, в принципе, также могут быть применимы к битовым строкам, представляющим числа."
—"О культуре разработки ПО" / Никлаус Вирт
Кстати, вспомнилось, что Golang унаследовал идеи Oberon.
#Simplicity
На почве предыдущего поста мне вспомнились слова Никлауса Вирта:
💬 "Богатство функциональных возможностей во многих современных языках - это действительно проблема сама по себе, а не решение других проблем. Избыток возможностей - это еще одно следствие веры многих программистов в то, что ценность языка пропорциональна количеству этих возможностей (как я это называю- это вера в "колокольчики и свистки"). Однако, мы знаем, что будет лучше, если каждое базисное понятие представляется единственной, специально для этого предназначенной конструкцией. Это не только сокращает усилия по изучению языка, но и сокращает размер его описания, что, в свою очередь, помогает избежать несогласованности и неправильного понимания. Поддержание языка максимально простым и регулярным всегда было приоритетом в моей работе: описание Pascal занимало около 50 страниц, Modula - около 40, а Oberon - и вовсе 16. И я рассматриваю эту тенденцию как прогрессивную. Истинная ценность языков программирования зависит от качества и практичности их абстракций. Пример - абстракция, называемая "число" или абстракция "логическая величина", замещающая конкретную строку битов.
Ценность такого рода абстракции основывается на ее целостности. В случае чисел должны быть применяемы только арифметические операции, независимо от того факта, что логические операции, в принципе, также могут быть применимы к битовым строкам, представляющим числа."
—"О культуре разработки ПО" / Никлаус Вирт
Кстати, вспомнилось, что Golang унаследовал идеи Oberon.
#Simplicity
👍16🔥4👎1🤩1
Если вы задумываетесь о качестве процессов в вашем проекте, но не знаете с чего начать, то настоятельно порекомендуем ознакомиться с Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology.
Это длительное исследование, целью которого было выявление значимых технических (в том числе архитектурных) и организационных факторов, которые влияют на скорость, стабильность и качество разработки. Проанализировав большое количество компаний и команд в самых разных отраслях и проведя статистическую верификацию, авторы рассказывают нам о том какие факторы действительно важны для работы, а какие всего лишь народные приметы и поверья.
Самое интересное, что эффективность многих практик, до которых мы дошли самостоятельно эмпирическим путем была подтверждена статистически, что не может не радовать.
Это длительное исследование, целью которого было выявление значимых технических (в том числе архитектурных) и организационных факторов, которые влияют на скорость, стабильность и качество разработки. Проанализировав большое количество компаний и команд в самых разных отраслях и проведя статистическую верификацию, авторы рассказывают нам о том какие факторы действительно важны для работы, а какие всего лишь народные приметы и поверья.
Самое интересное, что эффективность многих практик, до которых мы дошли самостоятельно эмпирическим путем была подтверждена статистически, что не может не радовать.
Russian Association of Software Architects
💬 "These were elucidated in the mid-70s by Yourdon & Constantine in "Structured Design" and haven't changed. Their argument goes like this: 1. We design software to reduce its cost. 2. The cost of software is ≈ the cost of changing the software. 3. The cost…
Eric Evans дает интересное определение Constantine's Law нетехническим языком:
💬 "МОДУЛИ дают возможность посмотреть на модель с разных сторон:
во-первых, можно изучить подробности устройства модуля, не вникая в сложное целое;
во-вторых, удобно рассматривать взаимоотношения между модулями, не вдаваясь в детали их внутреннего устройства.
<...>
То, что при делении на модули должна соблюдаться низкая внешняя зависимость
(low coupling) при высокой внутренней связности (high cohesion)- это общие слова. Определения зависимости и связности грешат уклоном в чисто технические, количественные критерии, по которым их якобы можно измерить, подсчитав количество ассоциаций и взаимодействий. Но это не просто механические характеристики подразделения кода на модули, а идейные концепции. Человек не может одновременно удерживать в уме слишком много предметов (отсюда низкая внешняя зависимость). А плохо связанные между собой фрагменты информации так же трудно понять, как неструктурированную "кашу" из идей (отсюда высокая внутренняя связность).
MODULES give people two views of the model:
They can look at detail within a MODULE without being overwhelmed by the whole, or they can look at relationships between MODULES in views that exclude interior detail.
<...>
It is a truism that there should be low coupling between MODULES and high cohesion
within them. Explanations of coupling and cohesion tend to make them sound like technical metrics, to be judged mechanically based on the distributions of associations and interactions. Yet it isn't just code being divided into MODULES, but concepts. There is a limit to how many things a person can think about at once (hence low coupling). Incoherent fragments of ideas are as hard to understand as an undifferentiated soup of ideas (hence high cohesion)."
-- "Domain-Driven Design: Tackling Complexity in the Heart of Software" by Eric Evans, перевод В.Л. Бродового
#SoftwareDesign
💬 "МОДУЛИ дают возможность посмотреть на модель с разных сторон:
во-первых, можно изучить подробности устройства модуля, не вникая в сложное целое;
во-вторых, удобно рассматривать взаимоотношения между модулями, не вдаваясь в детали их внутреннего устройства.
<...>
То, что при делении на модули должна соблюдаться низкая внешняя зависимость
(low coupling) при высокой внутренней связности (high cohesion)- это общие слова. Определения зависимости и связности грешат уклоном в чисто технические, количественные критерии, по которым их якобы можно измерить, подсчитав количество ассоциаций и взаимодействий. Но это не просто механические характеристики подразделения кода на модули, а идейные концепции. Человек не может одновременно удерживать в уме слишком много предметов (отсюда низкая внешняя зависимость). А плохо связанные между собой фрагменты информации так же трудно понять, как неструктурированную "кашу" из идей (отсюда высокая внутренняя связность).
MODULES give people two views of the model:
They can look at detail within a MODULE without being overwhelmed by the whole, or they can look at relationships between MODULES in views that exclude interior detail.
<...>
It is a truism that there should be low coupling between MODULES and high cohesion
within them. Explanations of coupling and cohesion tend to make them sound like technical metrics, to be judged mechanically based on the distributions of associations and interactions. Yet it isn't just code being divided into MODULES, but concepts. There is a limit to how many things a person can think about at once (hence low coupling). Incoherent fragments of ideas are as hard to understand as an undifferentiated soup of ideas (hence high cohesion)."
-- "Domain-Driven Design: Tackling Complexity in the Heart of Software" by Eric Evans, перевод В.Л. Бродового
#SoftwareDesign
👍9🔥2
Russian Association of Software Architects
Если вы задумываетесь о качестве процессов в вашем проекте, но не знаете с чего начать, то настоятельно порекомендуем ознакомиться с Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology. Это длительное исследование…
Авторы исследования выделяют 4 основные метрики (см. картинку), по которым им удалось проклассифицировать команды. Всего вышло 4 группы, от элиты до аутсайдеров. Опираясь на метрики, можно понять, чем чревата работа в каждой из команд лично для вас и предположить какие проблемы вас ожидают.
Кратко о результатах исследования можно увидеть по ссылке.
Кратко о результатах исследования можно увидеть по ссылке.
Chat Digest
💬 "A Hybrid Software Architecture Evaluation Method for FDD - An Agile Process Model"
- https://t.me/ru_arc_chat/1325
💬 Менеджеры топят за Agile без архитектуры. Что делать?
- https://t.me/ru_arc_chat/1326
💬 Awesome workflow engines:
- https://github.com/meirwah/awesome-workflow-engines
💬 Steve McConnell о DDD:
- https://t.me/ru_arc_chat/1362
💬 "Самовозникающий социальный паттерн" системной динамики - "Стремление к худшему":
https://t.me/ru_arc_chat/1392
💬 Энтропия системы имеет склонность к росту - Gregor Hohpe:
- https://t.me/ru_arc_chat/1395
- https://t.me/ru_arc_chat/1391
💬 Цикл сообщений о роли Semantic Coupling:
- https://t.me/ru_arc_chat/1411
💬 Типы Coupling:
- https://t.me/ru_arc_chat/1413
💬 Оригинальная книга "Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design" by Edward Y ourdon and Larry L. Constantine
- https://t.me/ru_arc_chat/1434
💬 Что такое Coupling от Larry Constantine:
- https://t.me/ru_arc_chat/1441
💬 DevOps модели:
- https://t.me/ru_arc_chat/1488
💬 Продакт не выделяет ресурсов на устранение техдолга. Что делать?
- https://t.me/ru_arc_chat/1490
💬 Когда делать рефакторинг:
- https://t.me/ru_arc_chat/1508
💬 Как устранять техдолг?
- https://t.me/ru_arc_chat/1509
- https://t.me/ru_arc_chat/1510
💬 Влиятельный инструмент на менеджмент:
- https://t.me/ru_arc_chat/1512
💬 Код - это рабочее место программиста и условия труда:
- https://t.me/ru_arc_chat/1515
- https://t.me/ru_arc_chat/1527
💬 Почему придумали Story Point?
- https://t.me/ru_arc_chat/1518
💬 Кто отвечает за качество кода, Продакт или Команда?
- https://t.me/ru_arc_chat/1524
💬 Заложить работу с техдолгом в оценку задачи:
- https://t.me/ru_arc_chat/1548
- https://t.me/ru_arc_chat/1552
- https://t.me/ru_arc_chat/1567
- https://t.me/ru_arc_chat/1573
💬 Является ли Продакт руководителем разработки?
- https://t.me/ru_arc_chat/1549
💬 Усугубить кризис и решить техдолг под шумок:
- https://t.me/ru_arc_chat/1564
💬 Что такое Transparency? Означает ли это спрашивать разрешения у Продакта на устранение техдолга?
- https://t.me/ru_arc_chat/1568
💬 Можно ли удовлетворить интересы всех стейкхолдеров? Как находить сбалансированные решения и взаимокомпенсировать когнитивные искажения сторон. ATAM в Agile?
- https://t.me/ru_arc_chat/1569
💬 "Синдром второй системы" народным языком:
- https://t.me/ru_arc_chat/1571
💬 "Правило трех ударов" народным языком:
- https://t.me/ru_arc_chat/1616
- https://t.me/ru_arc_chat/1691
💬 ITIL Foundation, практика Problem Management
- https://t.me/ru_arc_chat/1650
💬 Крутое разъяснение простым языком про обратную корреляцию требований:
- https://t.me/ru_arc_chat/1669
💬 Крутое разъяснение о том, как относиться к проблемам:
- https://t.me/ru_arc_chat/1678
#ChatDigest
💬 "A Hybrid Software Architecture Evaluation Method for FDD - An Agile Process Model"
- https://t.me/ru_arc_chat/1325
💬 Менеджеры топят за Agile без архитектуры. Что делать?
- https://t.me/ru_arc_chat/1326
💬 Awesome workflow engines:
- https://github.com/meirwah/awesome-workflow-engines
💬 Steve McConnell о DDD:
- https://t.me/ru_arc_chat/1362
💬 "Самовозникающий социальный паттерн" системной динамики - "Стремление к худшему":
https://t.me/ru_arc_chat/1392
💬 Энтропия системы имеет склонность к росту - Gregor Hohpe:
- https://t.me/ru_arc_chat/1395
- https://t.me/ru_arc_chat/1391
💬 Цикл сообщений о роли Semantic Coupling:
- https://t.me/ru_arc_chat/1411
💬 Типы Coupling:
- https://t.me/ru_arc_chat/1413
💬 Оригинальная книга "Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design" by Edward Y ourdon and Larry L. Constantine
- https://t.me/ru_arc_chat/1434
💬 Что такое Coupling от Larry Constantine:
- https://t.me/ru_arc_chat/1441
💬 DevOps модели:
- https://t.me/ru_arc_chat/1488
💬 Продакт не выделяет ресурсов на устранение техдолга. Что делать?
- https://t.me/ru_arc_chat/1490
💬 Когда делать рефакторинг:
- https://t.me/ru_arc_chat/1508
💬 Как устранять техдолг?
- https://t.me/ru_arc_chat/1509
- https://t.me/ru_arc_chat/1510
💬 Влиятельный инструмент на менеджмент:
- https://t.me/ru_arc_chat/1512
💬 Код - это рабочее место программиста и условия труда:
- https://t.me/ru_arc_chat/1515
- https://t.me/ru_arc_chat/1527
💬 Почему придумали Story Point?
- https://t.me/ru_arc_chat/1518
💬 Кто отвечает за качество кода, Продакт или Команда?
- https://t.me/ru_arc_chat/1524
💬 Заложить работу с техдолгом в оценку задачи:
- https://t.me/ru_arc_chat/1548
- https://t.me/ru_arc_chat/1552
- https://t.me/ru_arc_chat/1567
- https://t.me/ru_arc_chat/1573
💬 Является ли Продакт руководителем разработки?
- https://t.me/ru_arc_chat/1549
💬 Усугубить кризис и решить техдолг под шумок:
- https://t.me/ru_arc_chat/1564
💬 Что такое Transparency? Означает ли это спрашивать разрешения у Продакта на устранение техдолга?
- https://t.me/ru_arc_chat/1568
💬 Можно ли удовлетворить интересы всех стейкхолдеров? Как находить сбалансированные решения и взаимокомпенсировать когнитивные искажения сторон. ATAM в Agile?
- https://t.me/ru_arc_chat/1569
💬 "Синдром второй системы" народным языком:
- https://t.me/ru_arc_chat/1571
💬 "Правило трех ударов" народным языком:
- https://t.me/ru_arc_chat/1616
- https://t.me/ru_arc_chat/1691
💬 ITIL Foundation, практика Problem Management
- https://t.me/ru_arc_chat/1650
💬 Крутое разъяснение простым языком про обратную корреляцию требований:
- https://t.me/ru_arc_chat/1669
💬 Крутое разъяснение о том, как относиться к проблемам:
- https://t.me/ru_arc_chat/1678
#ChatDigest
Telegram
Ivan Zakrevsky in RASA Chat
По ссылке Len Bass обнаружил вот такой интересный документ по гибридизации:
"A Hybrid Software Architecture Evaluation Method for FDD - An Agile Process Model"
https://www.researchgate.net/publication/224208433_A_Hybrid_Software_Architecture_Evaluation_Method_for_FDD_…
"A Hybrid Software Architecture Evaluation Method for FDD - An Agile Process Model"
https://www.researchgate.net/publication/224208433_A_Hybrid_Software_Architecture_Evaluation_Method_for_FDD_…
🔥8👍5❤1
Forwarded from DDDevotion
Иногда кажется, что дискуссия ходит по кругу, оппоненты озвучивают одни и те же тезисы и аргументы, но спор продолжается и не приносит ни пользы, ни удовлетворения. Хочется только в стиле Задорного сказать про другую сторону "Ну тупыыые"...
Было у вас такое? У меня точно было много раз. Иной раз оптимальной стратегией будет просто не вступать в споры – все равно никто не готов менять свою позицию.
Но если вы все таки готовы менять свои убеждения и спор для вас это не прокачка ЧСВ, то рекомендую попробовать приемы уличной эпистемологии https://streetepistemology.ru/vvedenie-v-ue.
Помните, что цель дискуссии – не переубедить собеседника, а прийти к верному мнению)
Было у вас такое? У меня точно было много раз. Иной раз оптимальной стратегией будет просто не вступать в споры – все равно никто не готов менять свою позицию.
Но если вы все таки готовы менять свои убеждения и спор для вас это не прокачка ЧСВ, то рекомендую попробовать приемы уличной эпистемологии https://streetepistemology.ru/vvedenie-v-ue.
Помните, что цель дискуссии – не переубедить собеседника, а прийти к верному мнению)
👍5
DDDevotion
Иногда кажется, что дискуссия ходит по кругу, оппоненты озвучивают одни и те же тезисы и аргументы, но спор продолжается и не приносит ни пользы, ни удовлетворения. Хочется только в стиле Задорного сказать про другую сторону "Ну тупыыые"... Было у вас такое?…
Превосходная статья о том, как недостаточная дивергентная фаза исследований и ограниченный охват опыта молодых авторов чреваты опасностью скатывания в когнитивное искажение "Straw man":
- "Advocate, educator, and authorial stance" by Martin Fowler.
Не так давно в одном из чатов я обращал внимание на распространённость этого явления в технических пабликах.
M.Fowler поясняет, почему такая позиция является проигрышной, и, несмотря на то, что автор усердно пытается защитить то решение, которое он считает наилучшим, происходит отторжение его позиции рядом его слушателей. И при этом он поясняет, как нужно изменить стиль изложения, чтобы избежать отторжения.
💬 "The reason the author wants to write about this technique is because they’ve found it worked really well, and believe that their readers can improve their software development experience by using it.
<...>
In these situations it's too easy to debate a straw man version of the alternative technique.
<...>
The advocate wants the reader to agree with them, they succeed when the reader uses the technique that’s being advocated.
<...>
Authors often make straw men of the alternatives in good faith because they have encountered them done poorly or in the wrong context. Such advocacy can often undermine its own position by not fully considering the advantages of the alternative technique. If a reader spots this, then they start to judge the article by the weakness of the arguments against the alternative, rather than focusing on the genuine capabilities of the new technique."
Статья имеет отсылку к другой интересной статье "Boiled Carrot", которая раскрывает нередкую в отрасли ситуацию, когда необоснованной критике подвергаются решения, которые были применены неверно или вне контекста решаемых ими задач.
На эту тему хорошо выразился Kent Beck - если вы ехали в один город, а приехали в другой, то причем здесь автомобиль?
Эта статья, в свою очередь, ссылается на другую монументальную статью - "Cargo Cult Software Engineering" by Steve McConnell.
На что я обратил внимание, так это на то, что коммуникативная психология обретает все большую практическую ценность в нашей технической отрасли. А то, что об этом все чаще стали говорить такие личности, как Gregor Hohpe, Martin Fowler, Neal Ford и др., наводит на мысль о том, что область знаний достигла определенного уровня обобщения и систематизации, и уперлась в когнитивные искажения, препятствующие дальнейшему развитию отрасли. Кстати, решение этой проблемы является одной из целей нашего объединения.
#SoftSkills #Psychology
- "Advocate, educator, and authorial stance" by Martin Fowler.
Не так давно в одном из чатов я обращал внимание на распространённость этого явления в технических пабликах.
M.Fowler поясняет, почему такая позиция является проигрышной, и, несмотря на то, что автор усердно пытается защитить то решение, которое он считает наилучшим, происходит отторжение его позиции рядом его слушателей. И при этом он поясняет, как нужно изменить стиль изложения, чтобы избежать отторжения.
💬 "The reason the author wants to write about this technique is because they’ve found it worked really well, and believe that their readers can improve their software development experience by using it.
<...>
In these situations it's too easy to debate a straw man version of the alternative technique.
<...>
The advocate wants the reader to agree with them, they succeed when the reader uses the technique that’s being advocated.
<...>
Authors often make straw men of the alternatives in good faith because they have encountered them done poorly or in the wrong context. Such advocacy can often undermine its own position by not fully considering the advantages of the alternative technique. If a reader spots this, then they start to judge the article by the weakness of the arguments against the alternative, rather than focusing on the genuine capabilities of the new technique."
Статья имеет отсылку к другой интересной статье "Boiled Carrot", которая раскрывает нередкую в отрасли ситуацию, когда необоснованной критике подвергаются решения, которые были применены неверно или вне контекста решаемых ими задач.
На эту тему хорошо выразился Kent Beck - если вы ехали в один город, а приехали в другой, то причем здесь автомобиль?
Эта статья, в свою очередь, ссылается на другую монументальную статью - "Cargo Cult Software Engineering" by Steve McConnell.
На что я обратил внимание, так это на то, что коммуникативная психология обретает все большую практическую ценность в нашей технической отрасли. А то, что об этом все чаще стали говорить такие личности, как Gregor Hohpe, Martin Fowler, Neal Ford и др., наводит на мысль о том, что область знаний достигла определенного уровня обобщения и систематизации, и уперлась в когнитивные искажения, препятствующие дальнейшему развитию отрасли. Кстати, решение этой проблемы является одной из целей нашего объединения.
#SoftSkills #Psychology
🔥9👍2🤔1
Если вы затрудняетесь объяснить менеджменту что такое технический долг и легаси, то вот неплохой пример от нетехнаря (и в этом заключается ценность статьи, т.к. она написана простым языком, понятным нетехнарю).
https://vitalyfilatov.ru/all/techdebt-and-legacy/
https://vitalyfilatov.ru/all/techdebt-and-legacy/
vitalyfilatov.ru
Технический долг и легаси на примере тараканов
Программисты иногда говорят о своей работе как о безумном адском родео на пылающих велосипедах без сидений
🔥14👍5
Хорошая подборка моделей согласованности.
Линии показывают отношения моделей согласованости. Например, строгая сериализуемость подразумевает как сериализуемость, так и линеаризуемость и т.д.
Цвета обозначают доступность модели в различных ситуациях, возникающих в распределенных системах.
https://jepsen.io/consistency
Линии показывают отношения моделей согласованости. Например, строгая сериализуемость подразумевает как сериализуемость, так и линеаризуемость и т.д.
Цвета обозначают доступность модели в различных ситуациях, возникающих в распределенных системах.
https://jepsen.io/consistency
🔥9
Forwarded from Блог Сергея Баранова
Продолжается прием заявок на доклады конференции по архитектуре IT-решений ArchDays 2022!
В этом году мы возвращаемся в офлайн!
Конференция пройдет 21 октября в Москве + Online-трансляция.
Основные тематики конференции:
1. Процессы проектирования
2. Инструменты проектирования
3. Практики проектирования
4. Обучение архитектуре/развитие в архитектора
5. Soft skills
6. Кейсы
Всего в программе будет около 30 докладов и 4 очных воркшопов.
Подать заявку на выступление: https://archdays.ru/#speaker
В этом году мы возвращаемся в офлайн!
Конференция пройдет 21 октября в Москве + Online-трансляция.
Основные тематики конференции:
1. Процессы проектирования
2. Инструменты проектирования
3. Практики проектирования
4. Обучение архитектуре/развитие в архитектора
5. Soft skills
6. Кейсы
Всего в программе будет около 30 докладов и 4 очных воркшопов.
Подать заявку на выступление: https://archdays.ru/#speaker
👍7👎1
"Порядок бьет класс" - футбольная поговорка, метко и лаконично выражающая причины возникновения нашего объединения.
#Goal
#Goal
🔥7👍1
Если вдруг кто не знал, последнюю версию "Distributed systems: principles and paradigms" 3d edition (3.03 от 2020 года) by Andrew S. Tanenbaum, Maarten Van Steen можно скачать бесплатно на официальном сайте:
https://www.distributed-systems.net/index.php/books/ds3/
Пусть вас не смущает, что на сайте указан 2017й год. На почту придет книга с редакцией за 2020.
https://www.distributed-systems.net/index.php/books/ds3/
Пусть вас не смущает, что на сайте указан 2017й год. На почту придет книга с редакцией за 2020.
DISTRIBUTED-SYSTEMS.NET
Distributed Systems 3rd edition (2017) - DISTRIBUTED-SYSTEMS.NET
Get your free copy of Distributed Systems
🔥16👍4
🔷 "Diagramming to Communicate" by Vaughn Vernon
- Статья про UML, EventStorming, способы выражения SAGA в EventStorming, ну и конечно же про разрабатываемый им сервис для моделирования EventStorming https://domorobo.to/ с генерацией кода посредством XOOM Designer.
💬 "Kalele is building the modeling tool DomoRoboto. It hosts seven model types, including EventStorming, DDD Context Maps that are auto-derived from EventStorming models, Topo Architecture (a blend of EventStorming results with Context Maps), Mind Maps, Impact Maps, Specification by Example (BDD), and User Stories."
#DDD #SoftwareArchitecture #EventStorming
- Статья про UML, EventStorming, способы выражения SAGA в EventStorming, ну и конечно же про разрабатываемый им сервис для моделирования EventStorming https://domorobo.to/ с генерацией кода посредством XOOM Designer.
💬 "Kalele is building the modeling tool DomoRoboto. It hosts seven model types, including EventStorming, DDD Context Maps that are auto-derived from EventStorming models, Topo Architecture (a blend of EventStorming results with Context Maps), Mind Maps, Impact Maps, Specification by Example (BDD), and User Stories."
#DDD #SoftwareArchitecture #EventStorming
Kalele
Diagramming to Communicate
Kalele Vaughn Vernon discusses a blended diagramming style used to communicate software architecture between developers and business
👍2❤1
🔷 "Event Sourcing: Why Kafka is not suitable as an Event Store" - Don’t believe everything a company or some consultants want to sell you!
by Anton Stöckl - автор проекта go-iddd - Golang DDD CQRS/ES Reference Application
#DDD #CQRS #EventSourcing #SoftwareDesign
by Anton Stöckl - автор проекта go-iddd - Golang DDD CQRS/ES Reference Application
#DDD #CQRS #EventSourcing #SoftwareDesign
Medium
Event Sourcing: Why Kafka is not suitable as an Event Store
Don’t believe everything a company or some consultants want to sell you!
👍3🔥1
Russian Association of Software Architects
Продолжение: 💬 "Managing Coupling Note I don't say, "Eliminating coupling." Decoupling comes with its own costs, both the cost of the decoupling itself and the future costs of unanticipated changes. The more perfectly a design is adapted to one set of changes…
Последняя трактовка принципов SOLID by Robert C. Martin от 2022-07-06 (ничего нового, но снижает вероятность ложного восприятия):
💬 "The Single Responsibility Principle (SRP):
Gather together those things that change for the same reasons and at the same times. Separate those things that change for different reasons or at different times."
💬 "The Open-Closed Principle (OCP):
Separate modules that frequently change from modules that change less frequently with a layer of abstraction."
💬 "The Liskov Substitution Principle (LSP):
The implementation of an interface must never violate the contract between that interface and its users."
💬 "The Interface Segregation Principle (ISP):
Don't depend on things you don’t need."
💬 "The Dependency Inversion Principle (DIP):
Lower level policies should depend on higher level policies."
#SoftwareDesign
💬 "The Single Responsibility Principle (SRP):
Gather together those things that change for the same reasons and at the same times. Separate those things that change for different reasons or at different times."
💬 "The Open-Closed Principle (OCP):
Separate modules that frequently change from modules that change less frequently with a layer of abstraction."
💬 "The Liskov Substitution Principle (LSP):
The implementation of an interface must never violate the contract between that interface and its users."
💬 "The Interface Segregation Principle (ISP):
Don't depend on things you don’t need."
💬 "The Dependency Inversion Principle (DIP):
Lower level policies should depend on higher level policies."
#SoftwareDesign
👍24🔥1
🔷 Хотя сайт Alistair Cockburn все еще не работоспособен, оригинальная статья "Hexagonal architecture" доступна для просмотра.
Anton Stöckl не так давно опубликовал очередную статью из цикла, посвященного его проекту go-iddd - Golang DDD CQRS/ES Reference Application:
🔷 "Hexagonal Architecture: Structuring a project and the influence of granularity" - About the granularity of ports and adapters and how it influences the code structure.
Предыдущая статья этого цикла, посвященная Hexagonal Architecture:
🔷 "Implementing Domain-Driven Design and Hexagonal Architecture with Go (3)" - Part 3 — How I structure my application according to Hexagonal Architecture aka. Ports&Adapters
#DDD #SoftwareDesign #SoftwareArchitecture
Anton Stöckl не так давно опубликовал очередную статью из цикла, посвященного его проекту go-iddd - Golang DDD CQRS/ES Reference Application:
🔷 "Hexagonal Architecture: Structuring a project and the influence of granularity" - About the granularity of ports and adapters and how it influences the code structure.
Предыдущая статья этого цикла, посвященная Hexagonal Architecture:
🔷 "Implementing Domain-Driven Design and Hexagonal Architecture with Go (3)" - Part 3 — How I structure my application according to Hexagonal Architecture aka. Ports&Adapters
#DDD #SoftwareDesign #SoftwareArchitecture
👍5
Выступление одного из учередителей нашего Объединения на ArchDays Recap https://www.youtube.com/watch?v=NSN-NXfbEqM
YouTube
Многоликий DDD — Сергей Баранов
👉 Больше полезного — на конференции ArchDays https://archconf.ru/baranov_yt.
Domain Driven Design всегда имел высокий порог входа. Сложность изучения и применения усугублялась туманностью объяснений выгод как для коллег-разработчиков, так и для архитекторов…
Domain Driven Design всегда имел высокий порог входа. Сложность изучения и применения усугублялась туманностью объяснений выгод как для коллег-разработчиков, так и для архитекторов…
🔥7👍2🎉1
🔷 "Read models in event-sourced systems" by Alexey Zimarev
Статья является частью документации Eventuous.
#DDD #CQRS #EventSourcing #SoftwareDesign
Статья является частью документации Eventuous.
#DDD #CQRS #EventSourcing #SoftwareDesign
Medium
Read models in event-sourced systems
In event-sourced systems, the domain model is using events as the source of truth. These events represent individual and atomic state…