emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc. – Telegram
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
3.48K subscribers
119 photos
15 videos
22 files
1.14K links
Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, Extreme Programming, SDLC, Agile, etc.

Chat: https://news.1rj.ru/str/emacsway_chat

Persistence: https://dckms.github.io/system-architecture/
Download Telegram
Почему низкоквалифицированный специалист получает зачастую больше, нежели высококвалифицированный? Почему на рынке аутсорса процветает шарлатанство? Почему рынок на самом деле не является самым справедливым судьей? Ответ на этот вопрос дает математика. Более доходчивого объяснения я пока еще не встречал:

💬 "Джордж Акерлоф в классической статье «Рынок лимонов» на примере рынка подержанных автомобилей показал, как асимметричность информации может привести к краху рынка [3].
Предположим, существует две категории подержанных автомобилей:
«лимоны» (автомобили плохого качества) и «персики» (автомобили хорошего качества). Предположим далее, что владелец каждого «лимона» готов продать его за 1000 долларов, тогда как каждый потенциальный покупатель готов заплатить за «лимон» 1500 долларов.
Допустим, владелец «персика» готов продать его за 3000 долларов, а потенциальный покупатель готов заплатить за него 4000 долларов.
Если бы качество автомобилей было с самого начала очевидным для каждой из сторон, тогда рынок работал бы должным образом. Все автомобили можно было бы продать: «лимоны» — по цене от 1000 до 1500 долларов, а «персики» — от 3000 до 4000 долларов.

Но что если каждый продавец знает о качестве своего автомобиля, а покупателям известно только то, что на вторичном рынке половина автомобилей — «лимоны», а другая половина — «персики»? Если бы автомобили этих двух категорий предлагались на продажу в равной пропорции, каждый покупатель был бы готов заплатить не более чем ½ × (1500 + 4000) = 2750 долларов.
Владелец, который знает, что его автомобиль относится к категории «персиков», не захочет продавать его по этой цене.
Следовательно, на рынке будут продаваться только «лимоны». Покупатели, зная об этом, будут предлагать максимум 1500 долларов.
Рынок «персиков» полностью прекратит свое существование, хотя покупатели и готовы платить за «персики», качество которых может быть доказано, вполне приемлемую для продавцов цену. Это полностью разрушает чрезмерно оптимистичную интерпретацию рынка, которая состоит в том, что рынок — это самый лучший и самый эффективный институт для ведения экономической деятельности."
-- "Теория игр. Искусство стратегического мышления в бизнесе и жизни" / Авинаш Диксит и Барри Нейлбафф ; пер. с англ. Н. Яцюк. — М. : Манн, Иванов и Фербер, 2015.
👍39👎84🤔1
Forwarded from IT Юмор
Сможете сейчас вспомнить какая методология у вас на проекте?
👍18😁5🔥32
📚 Подборка книг для развития системного аналитика

Новогодние праздники — прекрасное время, чтобы отдохнуть почитать профессиональную литературу, что постоянно откладывалось на потом.

Будет очень круто, если вы будете оставлять отзывы о книгах из этого списка, которые вы прочитали.

Требования
📖
Вигерс Карл, Битти Джой. Разработка требований к программному обеспечению
📖 Алистер Коберн. Современные методы описания функциональных требований к системам
📖 Дин Леффингуэлл. Принципы работы с требованиями к программному обеспечению
📖 Джефф Паттон. Пользовательские истории. Искусство гибкой разработки ПО
📖 Халл Элизабет. Инженерия требований
📖 Юрий Химонин. Сбор и анализ требований к программному продукту

Архитектура и проектирование
📕 Роберт Мартин. Чистая архитектура. Искусство разработки программного обеспечения
📕 Эрик Эванс. Предметно-ориентированное проектирование (DDD)
📕 Вон Вернон. Реализация методов предметно ориентированного проектирования (DDD)
📕 Крис Ричардсон. Микросервисы. Паттерны разработки и рефакторинга
📕 Сэм Ньюмен. Создание микросервисов
📕 Беллемар Адам. Создание событийно-управляемых микросервисов
📕 C. Cомасегар. Руководство Microsoft по проектированию архитектуры приложений

Проектирование

📒 Александр Швец. Погружение в Паттерны Проектирования
📒 System Design. Подготовка к сложному интервью
📒 Мартин Фаулер. P of EAA: Шаблоны корпоративных приложений

Интеграции
📗 Грегор Хоп и Бобби Вульф. Шаблоны интеграции корпоративных приложений
📗 Джей Гивакс. Паттерны проектирования API
📗 Арно Лоре. Проектирование веб-API
📗 Сергей Константинов. API
📗 Дилан Скотт. Kafka в действии
📗 Ian Robinson. REST in Practice: Hypermedia and Systems Architecture
📗 Emil Koutanov. Effective Kafka

Своды знаний
📔 SEBoK — Systems Engineering Body of Knowledge
📔 BABOK — Business Analysis Body Of Knowledge
📔 INCOSE Guide for Writing Requirements
📔 DAMA-DMBOK — Data Management Body of Knowledge

Навыки
📓 Ф.П. Тарасенко. Прикладной системный анализ
📓 Impact Mapping. Как повысить эффективность программных продуктов и проектов по их разработке
📓 Алан Купер. Психбольница в руках пациентов
📓 Карл Андерсон. Аналитическая культура
📓 Вера Иванова. Путь аналитика. Практическое руководство
📓 Максим Ильяхов и Людмила Сарычева. Пиши, сокращай: Как создавать сильный текст
📓 Роберт Фитцпатрик. Спроси маму: Как общаться с клиентами и подтвердить правоту своей бизнес-идеи, если все кругом врут?
📓 Фредерик Брукс. Мифический человеко-месяц или как создаются программные системы

UML
💣 Мартин Фаулер. UML. Основы
💣 Буч Грэди. Язык UML. Руководство пользователя
💣 Дж. Шмуллер. Освой самостоятельно UML за 24 часа
💣 Крэг Ларман. Применение UML и шаблонов проектирования
💣 Джим Арлоу. UML 2 и Унифицированный процесс
💣 М. Блаха. UML 2.0 Объектно-ориентированное моделирование и разработка
💣 Александр Леоненков. Самоучитель UML

Python
🐍 Эрик Мэтиз. Изучаем Python: программирование игр, визуализация данных, веб-приложения
🐍 Пол Бэрри. Изучаем программирование на Python
🐍 Эл Свейгарт. Автоматизация рутинных задач с помощью Python
🐍 Марк Лутц. Python. Карманный справочник
🐍 Аллен Б. Дауни. Основы Python. Научитесь думать как программист

Эта навигация будет дополняться в Библиотеке Системного Аналитика

#подборка
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥52
Forwarded from Ivan
Сложный вопрос. Постараюсь.

Существует модель ментальная предметной области, грубо говоря, это представление (знания) стейкхолдеров о тех процессах, которые можно автоматизировать информационной системой. Это модель области проблемы, и существует она независимо от того, автоматизирована ли она системой или нет (например, правила рассчета процентной ставки банка, которую высчитывает клерк на калькуляторе). Она является причиной появления автоматизированной системы.

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

Эти две модели могут отличаться. Основная идея DDD заключается в том, чтобы они не отличались, т.е. чтобы эти две модели совместить в одну. А поскольку натуральный язык - это тоже модель, то для достижения этого используется Ubiquitous Language, т.е. использование единых терминов как специалистами области решения (разработчиками), так и специалистами области проблемы (экспертами предметной области). В этом заключается основная суть DDD.

Но т.к. количество терминов ограничено, а количество явлений предметной области безгранично, то языковые конфликты (разные явления под одним термином и, наоборот, разные термины одного явления) являются маркерами границ модели, которые называются Bounded Context.

Основных целей у BC две:
1. Снизить когнитивную нагрузку, т.е. модель не должна содержать ничего неревантного решаемой ею проблемы, чтобы не создавать паразитную когнитивную нагрузку.
2. Снизить коммуникативную нагрузку, т.е. модель не должна быть разделена между разными командами, которые не смогут и шагу ступить без коммуникаций, не сломав при этом инвариантов модели.

Основная суть EventStorming заключается именно в том, что он позволяет моделировать решение прямо поверх ментальной модели стейкхолдеров, прямо на тех же стикерах. Результатом ES является модель решения, которая в точности отражает структуру будущего кода. Настолько точно, что по этой диаграмме можно делать автоматизированную сверку кода, или даже генерировать сам код, с помощью инструментов, которые я упоминал ранее (на Java это можно сделать используя сервис от Vaughn Vernon domorobo.to + xoom-designer).
🔥24👍62
Forwarded from Евгений Козлов пишет про IT (Eugene Kozlov)
🗺 Карта канала

Перед тем как делать новый цикл постов я решил собрать всё что уже рассказывал ранее. Здесь ссылки на посты, статьи и Github репозитории созданные и найденные мной за 2 года ведения канала.

🟢 Backend
🔹Цикл постов о ресурсах по прокачке в Backend #0 #1 #2 #3
🔹Как я изучал язык Go
🔹Как практиковаться начинающему разработчику?
🔹Подборка ресурсов по Git
🔹 Хорошие практики разработки типичных back-end приложений

Мои первые статьи на Хабр:
🔹 Практический гайд по процессам и потокам (и не только) в Python
🔹 Многопоточность в Python: очевидное и невероятное

🟢 Big Tech Interview
🔹Мой план ресурсов по покорению Big Tech в 2022м
🔹 Всё, что нужно знать о System Design для прохождения интервью и не только
🔹 Мой личный план изучения алгоритмов (протестирован на учениках, работает)
🔹 Бесплатная книга для любитетей хардкорных алгоритмических задач

🟢 Базы данных, брокеры сообщений

🔹 Подборка книг по СУБД. От новичка до эксперта.
🔹 Простым языком об Apache Kafka, как, зачем и почему
🔹 Подборка классных и бесплатных ресурсов по PostgreSQL
🔹 Партиционирование в PostgreSQL

🟢 Docker, K8s, Microservices
🔹Цикл постов о виртуализации и контейнерах #1 #2 #3 #4
🔹TOP 3 ресурса по погружению в Docker, Kubernetes, Microservices, Cloud Native.
🔹Подборка для изучения и практики Kubernetes

🟢 Soft Skills, Mindset
🔹1-to-1
🔹Какие вопросы стоит задать перед тем как принять оффер? #1 #2
🔹Зарплатные переговоры
🔹Как правильно задавать вопросы, если ты начинающий айтишник
🔹Наглядный жизненный урок

🟢 Microservices
🔹Монолитная архитектура
🔹Прагматичный взгляд на Микросервисную архитектуру.


🟢 Linux, DevOps, SRE
🔹Подборка бесплатных ресурсов по изучению командной строки и утилит Linux #1 #2 #3
🔹Изучение DevOps
🔹Бесплатный видеокурс по основам SRE от инженеров Google Cloud
🔹SRE Interview Preparation Guide
👍17🔥65
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Рекомендую: https://news.1rj.ru/str/pragma_tist https://news.1rj.ru/str/denis_beskov
Тг-канал Дениса Бескова сменил свой адрес на https://news.1rj.ru/str/denis_beskov

Думаю, что в представлении он не нуждается. Один из самых грамотных специалистов, которого я только встречал за всю свою практику. Именно он организовал нашумевшее недавно интервью в Владиком Хононовым.

Автор профстандарта системного аналитика, основатель школы системного анализа и проектирования, организатор и спикер конференций, в свое время построил отдел системных аналитиков в Лаборатории Касперского.

Подписывайтесь)
🔥6❤‍🔥2👍1👌1
Forwarded from IT Юмор
Отправьте знакомым руководителям
😁39👍3🤯2
Сколько вы знаете специалистов, которым вы доверили бы разработку архитектуры или реализации информационной системы на свои собственные инвестици (без вашего личного участия)?
Anonymous Poll
86%
до 5
10%
от 5 до 10
2%
от 10 до 20
1%
от 20 до 50
2%
более 50
Иногда хочется так много сделать, но так мало получается сделать. А у него получилось. И я хорошо понимаю, какой титанический труд за этим стоит. Хочу пожелать успехов и дальнейшего развития.

Кстати, недавно я стал случайным слушателем его курса для бизнес-аналитиков. И был впечатлен.

Не реклама. Мое мнение. Потому что хочу, чтоб таких качественных курсов было побольше на нашем захламленном рынке знаний.
🔥5👍32👎1🙏1
Будучи ИТ-специалистом, сталкивались ли вы или ваши близкие с неправомерными действиями или бездействием правоохранительных органов РФ. Анонимный опрос.
Anonymous Poll
34%
Сталкивался
66%
Не сталкивался
👍4👎3😢3🔥1😁1🙏1
Я принес. Измерение продуктивности разработчиков. В двух частях

Сегодня я принес вам почитать две части статьи про измерение продуктивности разработчиков.

Раз https://newsletter.pragmaticengineer.com/p/measuring-developer-productivity
Два https://newsletter.pragmaticengineer.com/p/measuring-developer-productivity-part-2

Статьи объемные и на английском. Поэтому уместен мем про «мало того, что приколы сложные, так еще и на английском».

Тем не менее я советую потратить на них время и когнитивный ресурс. Особенно, если вы тимлид и выше.

Если коротко, то в статьях рассматривается интеллектуальный труд в группах (ну то есть наша с вами рутинная работа) и объясняется, что не шибко корректно оценивать перформанс каждого отдельного участника. Каждый отдельный работник может подстроиться под метрики и наперформить много, но наперформят они в разные стороны и результат труда такой команды будет по итогу довольно далек от суммы радужных разрозненных результатов.

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

В общем, если вы руководитель, который строит, или модифицирует систему оценки производительности трудящихся, то стоит ознакомиться как минимум для расширения кругозора.
Ну и чтобы не придумать метрику на измерение строчек кода или колличества коммитов и из них выносить вердикт 🙂
👍7🔥21
Forwarded from Ivan
Там все чуть сложнее. Если совсем просто объяснять, то итерация - это "метод научного тыка".

Бытовой пример. Например, нужно обесточить и заменить розетку. Видим в щитовой кучу автоматов. Какой из них выключить? Можно, конечно, определить путем логического вывода, например, отыскать схему разводки или исследовать разводку детектором скрытой проводки. А можно просто включить в розетку лампочку и поочередно перебирать все рубильники до тех пор, пока не угадаем.

Как говорил математик Polya: "If you run into a dead end in one of the areas, iterate!".

Суть итерации в том, что иногда проще сделать и изменить, чем пытаться угадать с первого раза.
👍12
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Когда-то я услышал, что пишущий архитектор - это настолько бессмысленно, абсурдно и невероятно, как "генерал авиации, летающий на боевые". Недавно мне попалась статья, в которой именно о таком генерале рассказывает прославленный ас Александр Покрышкин: 📝
Типичная ситуация в работе архитектора - это когда он начинает прорабатывать решение, и тут выясняется, что оно не может быть реализовано, потому что legacy, функциональность размазана между разными моделями (и командами), лапша пронизывает все компоненты, согласованность не обеспечивается, инварианты дырявые, и тут начинается царство археологии.

Решение оказывается мертворожденным. Чтоб его оживить, возникает соблазн окутать его метастазами системы.

Это к вопросу о том, должен ли архитектор уметь в код. Нет смысла делать крышу, если стены кривые, а вместо прочного фундамента - палки с ... ну вы знаете, в общем.

Система отражает то, что творится в головах программистов. А значит, здоровье системы начинается отсюда. Это и есть фундамент. Согласен с Gregor Hohpe в том, что табуретка архитектора о трёх ногах: Skill, Impact, Leadership.

Лидерство. Архитектор или становится вождем и принимает на себя ответственность за судьбу проекта, или он рисует мертворожденные стрелочки с квадратиками где-то на обочине жизненного русла продукта. Еще недавно подобное явление называли "хвостизм". Наверное, поэтому первой книгой в списке от Gregor Hohpe идет книга "Clean Code". А второй - "Refactoring".

💬 "When designing a single software component, architects should focus on good coding and design practices." -- Gregor Hohpe

Знания программистов - это первое, с чего я всегда начинал работу на новых проектах. И только потом - стрелочки и квадратики. Тем более, что в Screaming Architecture эти стрелочки не так уж сильно и нужны. А от лапшы они все-равно не спасают.

Лекционный формат не работает. Одна картинка стоит тысячи слов. Поэтому важно сделать один сервис образцово-показательным. А дальше copy-paste сделает свое дело. Программисты часто прибегают к копированию. Было бы что копировать. Если копировать нечего, тогда наступает царство "Теории разбитых окон". Если копировать нечего, то оно само не появится (иначе появилось бы раньше). Значит, его должен создать архитектор. Сам, или совместно с программистами, - зависит от ситуации.

Обычно странглирование оказывается эффективней рефакторинга. Странглирование еще и выгодней по политическим причинам - новое будет хорошо контрастировать на фоне старого. Это если, разумеется, архитектор умеет в код, и умеет быть лидером.
🔥16👍103💯3