Webinar Software architecture the hard parts. Нил Форд и Марк Ричардсон 9 февраля будут рассказывать о Granularity and coupling in microservices. Ну и собственно о своей новой книге.
Спешите зарегистрироваться!
Певая их книга Fundamentals of software architecture просто must read. Так что, я считаю доклад нужно слушать обязательно. Английский язык
Спешите зарегистрироваться!
Певая их книга Fundamentals of software architecture просто must read. Так что, я считаю доклад нужно слушать обязательно. Английский язык
Thoughtworks
Software Architecture: The Hard Parts
All software architecture decisions involve some sort of trade off. This books equips you with the means to make the best choices..
🔥5👍2
Год только начался, а мы уже устали и подвыгорели.
О выгорании мы писали ещё в прошлом году.
А сегодня говорим о том, чего в прошлой статье не было: весёлых друзьях выгорания, мотивации, шагах к выходу. И о таблетках, конечно же. Как без таблеток.
Что ещё следует знать о выгорании
Читайте, пишите в комменты, спрашивайте, может быть чем-то сумеем помочь.
О выгорании мы писали ещё в прошлом году.
А сегодня говорим о том, чего в прошлой статье не было: весёлых друзьях выгорания, мотивации, шагах к выходу. И о таблетках, конечно же. Как без таблеток.
Что ещё следует знать о выгорании
Читайте, пишите в комменты, спрашивайте, может быть чем-то сумеем помочь.
StringConcat
Что еще не сказали про выгорание - StringConcat
О чем забыли сказать и почему чудес не бывает.
👍8🔥2
Подъехала запись вебинара Нила ФОрда и Марка Ричердсона Software architecture the hard parts. Они рассказывают о Granularity and coupling in microservices https://www.youtube.com/watch?v=F9r04PuaOcs
YouTube
Granularity and coupling in microservices – Data Architecture: The Hard Parts
All software architecture involves trade offs. But traditional analysis tools don’t work well for today’s distributed systems.
Software Architecture: The Hard Parts provides techniques to help you discover and weigh the trade-offs as you confront the issues…
Software Architecture: The Hard Parts provides techniques to help you discover and weigh the trade-offs as you confront the issues…
Forwarded from DDDevotion
Вышел новый техрадар thoughtworks.com/radar
Что приглянулось, чтоб подробнее поразбираться:
- транзакционная архитектура https://martinfowler.com/articles/patterns-legacy-displacement/transitional-architecture.html
- КУПИДон https://dannorth.net/2022/02/10/cupid-for-joyful-coding/
- Четыре ключевые метрики https://www.thoughtworks.com/radar/techniques?blipid=1298
- Сальса https://slsa.dev/
- https://www.testcontainers.org/
и многое другое.
Как вам эта версия радара? Что вы отметили для себя на будущее?
Что приглянулось, чтоб подробнее поразбираться:
- транзакционная архитектура https://martinfowler.com/articles/patterns-legacy-displacement/transitional-architecture.html
- КУПИДон https://dannorth.net/2022/02/10/cupid-for-joyful-coding/
- Четыре ключевые метрики https://www.thoughtworks.com/radar/techniques?blipid=1298
- Сальса https://slsa.dev/
- https://www.testcontainers.org/
и многое другое.
Как вам эта версия радара? Что вы отметили для себя на будущее?
Thoughtworks
Technology Radar | Guide to technology landscape
The Technology Radar is an opinionated guide to today's technology landscape. Read the latest here.
Не успели мы еще обновить Log4j на пропатченую, как вдруг - новый сюрприз.
На этот раз дыра в самом спринге, немного описания на опеннет.
Инфы пока не очень много, непонятно действительно ли все так плохо, но будем наблюдать.
На этот раз дыра в самом спринге, немного описания на опеннет.
Инфы пока не очень много, непонятно действительно ли все так плохо, но будем наблюдать.
www.opennet.ru
Критическая 0-day уязвимость в Spring Framework, применяемом во многих Java-проектах
В модуле Spring Core, поставляемом в составе фреймворка Spring Framework, выявлена критическая 0-day уязвимость, позволяющая неаутентифицированному удалённому атакующему выполнить свой код на сервере. Пока не ясно, насколько катастрофичными могут быть последствия…
🔥8
StringConcat - разработка без боли и сожалений
Не успели мы еще обновить Log4j на пропатченую, как вдруг - новый сюрприз. На этот раз дыра в самом спринге, немного описания на опеннет. Инфы пока не очень много, непонятно действительно ли все так плохо, но будем наблюдать.
UPD: CVE назначен, обновления выпущены. Больше информации по ссылке на CVE.
CVE-2022-22965: Spring Framework RCE via Data Binding on JDK 9+
Level up your Java code and explore what Spring can do for you.
Участившиеся случаи нахождения дыр размером с ангар для дирижабля дает нам повод наконец-то задуматься о существующих процессах разработки. Как заведено в индустрии? Делаем фикс, даем как следует "настояться" ветке с ним, затем Его Величество Тимлид может быть смержит получившееся безобразие в свободное от заказа воды в офис время. Далее передаем на ручное тестрование в отдел QA, где фикс будет протестирован согласно плану в Q2 следующего года.
В это же время боты злоумышленников сканируют интернеты и лезут буквально во все щели в надежде найти сервер со свежей уязвимостью. Пока ваш тимлид краснеет, глядя на код, а отдел тестирования пьет чай, в лучшем случае вы получите дополнительное ПО в виде бетховен-майнеров на своих серверах, а в худшем ваша компания будет умножена на ноль (к сожалению, мы и такое видели).
В первую очередь в голову приходит мысль об организации SSDLC и мысль вполне себе правильная и годная. Но только будет ли толк от всех ваших дастов, састов, аппсеков и прочих секурити-чемпионов, если банальный фикс у вас заезжает на прод целый месяц? Если же вы задумываетесь о том, как построить стабильный процесс с быстрой реализацией, деплоем и минимумом проблем, то в качестве начальной точки настоятельно рекомендуем ознакомиться с исследованием Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations.
Суть такова. Исследователи проанализировали работу большого количества команд (около 2000 компаний) и выявили статистически значимые организационные и технические факторы, которые влияют на скорость, стабильность и качество разработки и даже на скорость выгорания отдельного разраба. Чтобы вас заинтриговать - некоторые вещи, которые они обнаружили покажутся контринтуитивными и могут случайно сломать вашу картину мира. К примеру, только что начатый проект (который мы конечно же сделаем правильно) не обязательно разрабатывается быстрее и стабильнее чем старое пожухлое легаси, с которым никто не любит возиться. А если точнее — явной корреляции между новизной и скоростью нет.
Окончательные выводы исследователей довольно сильно пересекаются с нашим субъективным опытом, поэтому с нашей точки зрения исследование вполне себе заслуживает доверия. Не пожалейте времени на чтение, оно того однозначно стоит.
В это же время боты злоумышленников сканируют интернеты и лезут буквально во все щели в надежде найти сервер со свежей уязвимостью. Пока ваш тимлид краснеет, глядя на код, а отдел тестирования пьет чай, в лучшем случае вы получите дополнительное ПО в виде бетховен-майнеров на своих серверах, а в худшем ваша компания будет умножена на ноль (к сожалению, мы и такое видели).
В первую очередь в голову приходит мысль об организации SSDLC и мысль вполне себе правильная и годная. Но только будет ли толк от всех ваших дастов, састов, аппсеков и прочих секурити-чемпионов, если банальный фикс у вас заезжает на прод целый месяц? Если же вы задумываетесь о том, как построить стабильный процесс с быстрой реализацией, деплоем и минимумом проблем, то в качестве начальной точки настоятельно рекомендуем ознакомиться с исследованием Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations.
Суть такова. Исследователи проанализировали работу большого количества команд (около 2000 компаний) и выявили статистически значимые организационные и технические факторы, которые влияют на скорость, стабильность и качество разработки и даже на скорость выгорания отдельного разраба. Чтобы вас заинтриговать - некоторые вещи, которые они обнаружили покажутся контринтуитивными и могут случайно сломать вашу картину мира. К примеру, только что начатый проект (который мы конечно же сделаем правильно) не обязательно разрабатывается быстрее и стабильнее чем старое пожухлое легаси, с которым никто не любит возиться. А если точнее — явной корреляции между новизной и скоростью нет.
Окончательные выводы исследователей довольно сильно пересекаются с нашим субъективным опытом, поэтому с нашей точки зрения исследование вполне себе заслуживает доверия. Не пожалейте времени на чтение, оно того однозначно стоит.
Amazon
Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations
Accelerate: The Science of Lean Software and DevOps: Building and Scaling High Performing Technology Organizations [Forsgren PhD, Nicole, Humble, Jez, Kim, Gene] on Amazon.com. *FREE* shipping on qualifying offers. Accelerate: The Science of Lean Software…
👍6😢2😁1
Если бы вам предложили поучаствовать в проекте, написанном на Rust, то
Anonymous Poll
36%
Выучил(а) и пошел(ла) работать за бОльшую зп
4%
Выучил(а) и пошел(ла) работать за меньшую зп
16%
ЗП не так важна, важнее интересность проекта
0%
И так на нем уже разрабатываю
42%
Меня и на %language_name% неплохо кормят
2%
Другое (напишу в комментах)
Работая с тактическими паттернами DDD, в очередной раз убеждаешься какой же этот ваш DDD "душный" в хорошем смысле слова. Вот буквально на днях пилили небольшой объект-значение, отражающий количество (при этом количество может быть дробным значением). И в процессе запилки возникли вопросы вида
- Какие могут быть максимальные и минимальные значения?
- Какая должна точность дробной части?
- Как округляется значение при выполнении арифметических операций?
- Какие вообще арифметические операции допустимы, с какими аргументами и в каких диапазонах?
- Как вести себя при переполнении?
И это довольно простой класс, ничего особенного. В обычном случае пишут что-то вроде fun calculate(float: count) и забивают, мы же уделяем столько внимания казалось бы такой незначительной чиселке. И в итоге может показаться, что все это не нужно. Да и вообще тратим больше времени - нужно подумать, написать тесты, etc. Но это не совсем так, ведь мы получаем:
- Снижение когнитивной нагрузки. Мы работаем над небольшим независимым кусочком кода и за счет этого яснее видим граничные случаи.
- Сами тесты получаются проще и шустрее, их дешевле поддерживать. Местами очень хорошо заходит property-тестирование
- Самый главный пункт - мы защищаемся от нелепых багов вида "нам передали отрицательное число в качестве количества, а мы его пропустили, потому что забыли провалидировать. Теперь надо полбазы перетряхнуть на проде, чтобы устранить последствия".
- За счет инкапсуляции упрощается сам код, ведь нам не нужно таскать и копипастить разного рода проверки.
Итого, если количество тестов и растет, то время на их написание (незначительное) компенсируется отсутствием детсадовских багов, а так же более читабельным и поддерживаемым кодом.
- Какие могут быть максимальные и минимальные значения?
- Какая должна точность дробной части?
- Как округляется значение при выполнении арифметических операций?
- Какие вообще арифметические операции допустимы, с какими аргументами и в каких диапазонах?
- Как вести себя при переполнении?
И это довольно простой класс, ничего особенного. В обычном случае пишут что-то вроде fun calculate(float: count) и забивают, мы же уделяем столько внимания казалось бы такой незначительной чиселке. И в итоге может показаться, что все это не нужно. Да и вообще тратим больше времени - нужно подумать, написать тесты, etc. Но это не совсем так, ведь мы получаем:
- Снижение когнитивной нагрузки. Мы работаем над небольшим независимым кусочком кода и за счет этого яснее видим граничные случаи.
- Сами тесты получаются проще и шустрее, их дешевле поддерживать. Местами очень хорошо заходит property-тестирование
- Самый главный пункт - мы защищаемся от нелепых багов вида "нам передали отрицательное число в качестве количества, а мы его пропустили, потому что забыли провалидировать. Теперь надо полбазы перетряхнуть на проде, чтобы устранить последствия".
- За счет инкапсуляции упрощается сам код, ведь нам не нужно таскать и копипастить разного рода проверки.
Итого, если количество тестов и растет, то время на их написание (незначительное) компенсируется отсутствием детсадовских багов, а так же более читабельным и поддерживаемым кодом.
❤22👍12💩2🔥1
Вдогонку к предыдущему посту. Мне кажется, что мы отчасти утратили способность видеть какие-то абстракции как в коде, причем как на уровне классов, так и на уровне целых модулей. Не берусь утверждать, но если нас попросить замоделировать, скажем, небольшой UI-фреймворк для рисования окошек в ООП-парадигме, то в итоге мы получим что-то вроде классических WindowService, ButtonService и прочих *Service, настолько мы привыкли к шаблонам типа контроллер-сервис-дао. Поэтому при проектировании мы частенько используем следующий прием: закрываем глаза и представляем как бы мы спроектировали программу/модуль/класс, если бы все данные гарантировано помещались бы в ОЗУ и никогда оттуда не исчезали. Забудьте про все идентификаторы, слои доступа к данным и тому подобное. Попробуйте прикинуть хотя бы на бумажке как это могло бы выглядеть. Думаю, основную суть вы уловили.
Конечно, в дальнейшей реализации вопросы размещения в хранилищах никуда не денутся и их придется решать, но такой подход позволяет отлепить мозг от аспектов, связаных с представлением данных в БД (мы сразу же начинаем думать про то, как разместить данные) и найти интересные конструкторские решения.
Конечно, в дальнейшей реализации вопросы размещения в хранилищах никуда не денутся и их придется решать, но такой подход позволяет отлепить мозг от аспектов, связаных с представлением данных в БД (мы сразу же начинаем думать про то, как разместить данные) и найти интересные конструкторские решения.
Telegram
StringConcat - разработка без боли и сожалений
Работая с тактическими паттернами DDD, в очередной раз убеждаешься какой же этот ваш DDD "душный" в хорошем смысле слова. Вот буквально на днях пилили небольшой объект-значение, отражающий количество (при этом количество может быть дробным значением). И в…
👍15❤2
Раз уж наш канал про боль и сожаления, то позвольте поделиться своей персональной болью. Касается она локального окружения разработчика. Обычнно такими вещами не заморачиваются и работают как есть, по полдня пытаясь вспомнить с какими же параметрами нужно запускать приложение. Новичиок же приступает к работе только спустя недели две потому что никто уже не может вспомнить как вообще развернуть рабочее окружение, а ридми либо устарело, либо его вообще нет. Путем перебора, проб, ошибок и задалбывания остальных членов команды кое-как удается запустить проект локально, новичку поручают актуализировать инструкцию ииии ..... повторить все тоже самое со следующим новичком, т.к. инструкция к тому времени опять устарела.
Мы же уделяем повышенное внимание удобству локальной разработки и следуем концепции "одной кнопки" (ну или скрипта если хотите). Идея состоит в том, чтобы частые и не очень действия на локальном компе можно было выполнить одной "кнопкой". Что это может быть
- Прогон всех тестов
- Запуск приложения со всеми зависимостями (н-р через docker-compose)
- Сборка докер-образа
- Подготовка окружения
- Накатка тестовых данных
- Прогон линтеров и статанализаторов
- etc
В общем все, что вам вздумается и потребуется. Причем у самих "кнопок" не должно быть параметров (зашиты врутри или есть по-умолчанию), либо их должно быть по минимуму, если без параметров совсем никак.
Что мы получаем, применяя такой подход:
- сниженную когнитивную нагрузку - больше не нужно помнить все параметры и комбинации действий, которые приводят к нужному результату, как следствие экономим время и душевные силы. По хорошему, мы вообще должны забыть о таких вещах. Если вы не помните как запускать приложение, а все при этом работает и разрабатывается - хороший знак.
- быстрый старт для новичков - скачал репо, жмакнул скрипт и все готово, можно браться за весло
- возможность организации труЪ-СI, ведь непрерывная интерграция - это процесс, а не билд-сервер. Билд-сервер при этом нажимает практически те же "кнопки"
- из предыдущего пункта можем получить экономию средств, так как какие-то вещи мы можем проверить локально и быстро, нежели ждать своей очереди на билде и возвращаться к нему в случае паденя. Да и тачки у разрабов обычно гораздо быстрее, нежели дохлые билд-сервера.
Да, такое нужно поддерживать, не все операции можно прогнать локально, и вообще какой-никакой порядок должен быть в проекте. Но зато вы разгружаете голову и экономите кучу нервов и времени, а используя такие вещи в повседневной рутине, вы тем самым снижаете затраты на поддержку инструментов. В общем-то это банальная автоматизация, но по нашему мнению крайне важный элемент разработки. Собсна, любой новый проект (ну или даже старый, где такого нет) мы начинаем с такого рода автоамтики. В общем, настоятельно рекомендуем попробовать подход, если еще не применяете.
Мы же уделяем повышенное внимание удобству локальной разработки и следуем концепции "одной кнопки" (ну или скрипта если хотите). Идея состоит в том, чтобы частые и не очень действия на локальном компе можно было выполнить одной "кнопкой". Что это может быть
- Прогон всех тестов
- Запуск приложения со всеми зависимостями (н-р через docker-compose)
- Сборка докер-образа
- Подготовка окружения
- Накатка тестовых данных
- Прогон линтеров и статанализаторов
- etc
В общем все, что вам вздумается и потребуется. Причем у самих "кнопок" не должно быть параметров (зашиты врутри или есть по-умолчанию), либо их должно быть по минимуму, если без параметров совсем никак.
Что мы получаем, применяя такой подход:
- сниженную когнитивную нагрузку - больше не нужно помнить все параметры и комбинации действий, которые приводят к нужному результату, как следствие экономим время и душевные силы. По хорошему, мы вообще должны забыть о таких вещах. Если вы не помните как запускать приложение, а все при этом работает и разрабатывается - хороший знак.
- быстрый старт для новичков - скачал репо, жмакнул скрипт и все готово, можно браться за весло
- возможность организации труЪ-СI, ведь непрерывная интерграция - это процесс, а не билд-сервер. Билд-сервер при этом нажимает практически те же "кнопки"
- из предыдущего пункта можем получить экономию средств, так как какие-то вещи мы можем проверить локально и быстро, нежели ждать своей очереди на билде и возвращаться к нему в случае паденя. Да и тачки у разрабов обычно гораздо быстрее, нежели дохлые билд-сервера.
Да, такое нужно поддерживать, не все операции можно прогнать локально, и вообще какой-никакой порядок должен быть в проекте. Но зато вы разгружаете голову и экономите кучу нервов и времени, а используя такие вещи в повседневной рутине, вы тем самым снижаете затраты на поддержку инструментов. В общем-то это банальная автоматизация, но по нашему мнению крайне важный элемент разработки. Собсна, любой новый проект (ну или даже старый, где такого нет) мы начинаем с такого рода автоамтики. В общем, настоятельно рекомендуем попробовать подход, если еще не применяете.
👍10🔥7👏1
Всем привет! Мы тут решили немного скооперироваться с ребятами из других каналов, (таких как @emacsway_log и других) и замутить совместный тг-канал. Будем публиковать туда значимые материалы, как свои так и не очень, проводить архитектурные и управленческие мероприятия. Надеемся, что со временем получится создать полноценную ассоциацию арихитекторов и сломать убеждение, что говнокод - это норма. Наш же канал никуда не девается, как и прежде будем публиковать свои рабочие ситуации (благо материала сейчас набралось столько, что не успеваем разобрать), наблюдения, анонсы, а так же планируем новые виды развлечений форматы.
Подробности в первом посте нового канала RSAA. Добро пожаловать!
Подробности в первом посте нового канала RSAA. Добро пожаловать!
Telegram
Russian Association of Software Architects
Мы решили объединить усилия в новом коллективном телеграм-канале, посвященном вопросам ИТ-архитектуры и управления процессами разработки.
Существует барьер, который человеческое внимание еще способно осилить, и этот барьер уже давно превзойден сложившейся…
Существует барьер, который человеческое внимание еще способно осилить, и этот барьер уже давно превзойден сложившейся…
🔥7
Новое видео на канале Continuous Integration — это не Сервер и даже не Jenkins.
Continuous Integration упоминается еще в XP практиках Кента Бека задолго до появления CI Серверов. Но это прекрасное понятие трансформировалось в "Jenkins Стоящий в углу", и зачастую он уже не то что не помогает разработке а только тормозит ее.
Мы нашли 3 вопроса (в книге Accelerate), которые стоит задать себе чтобы понять насколько хорош ваш Continuous Integration процесс
Continuous Integration упоминается еще в XP практиках Кента Бека задолго до появления CI Серверов. Но это прекрасное понятие трансформировалось в "Jenkins Стоящий в углу", и зачастую он уже не то что не помогает разработке а только тормозит ее.
Мы нашли 3 вопроса (в книге Accelerate), которые стоит задать себе чтобы понять насколько хорош ваш Continuous Integration процесс
YouTube
Как настроить Continuous Integration. Aнтипаттерны
Continuous Integration упоминается еще в XP практиках Кента Бека задолго до появления CI Серверов. Но это прекрасное понятие трансформировалось в "Jenkins Стоящий в углу", и зачастую он уже не то что не помогает разработке а только тормозит ее.
Мы нашли…
Мы нашли…
👍8
Привет! Мы доработали формат нашего курса по разработке энтерпрайза и добавили самостоятельное обучение. Теперь можно не ждать, пока наберётся группа, а начать хоть со следующего понедельника.
Если сомневаетесь, посмотрите лекцию из курса:
Архитектура с высоты птичьего полета (1 час 15 минут)
Материал поможет вам начать писать здоровый код и порицать тех, кто пишет плохой 😉
Подробнее о курсе
1. Ждать группу не нужно. Начинайте в любой момент.
2. Самостоятельный формат курса доступен по двум тарифам — Экспресс (без домашек) и Базовый (с домашками и всем таким). Тарифы на сайте.
3. Талантливых учеников рекомендуем в ThoughtWorks.
Будут вопросы — пишите @dubrova_a
Если сомневаетесь, посмотрите лекцию из курса:
Архитектура с высоты птичьего полета (1 час 15 минут)
Материал поможет вам начать писать здоровый код и порицать тех, кто пишет плохой 😉
Подробнее о курсе
1. Ждать группу не нужно. Начинайте в любой момент.
2. Самостоятельный формат курса доступен по двум тарифам — Экспресс (без домашек) и Базовый (с домашками и всем таким). Тарифы на сайте.
3. Талантливых учеников рекомендуем в ThoughtWorks.
Будут вопросы — пишите @dubrova_a
👍4🤮2
ООП vs функциональное программирование? Или все же они прекрасно дополняют друг друга?
Смотри новое видео на нашем канале https://www.youtube.com/watch?v=3rhP73g9z5U
Каждый знает что такое инкапсуляция. Это же один из столпов ООП!
В видео мы показываем как можно этой инкапсуляции добиться, элегантно сочетая ООП и функциональщину.
Не забываем подписываться на канал, чтобы не пропустить новые видосики.
Смотри новое видео на нашем канале https://www.youtube.com/watch?v=3rhP73g9z5U
Каждый знает что такое инкапсуляция. Это же один из столпов ООП!
В видео мы показываем как можно этой инкапсуляции добиться, элегантно сочетая ООП и функциональщину.
Не забываем подписываться на канал, чтобы не пропустить новые видосики.
YouTube
ООП vs Функциональное программирование. Можно ли использовать вместе?
☝ Как перестать выгорать и стать крутым архитектором или тимлидом? узнай так: Бесплатная пробная лекция из моего курса Разработка Enterprise-приложений на Java и Kotlin без боли и сожалений ждет тебя здесь
🎓 Курс: https://howto.stringconcat.ru/?utm_sour…
🎓 Курс: https://howto.stringconcat.ru/?utm_sour…
Forwarded from emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Самое долгожданное событие в архитектурном мире наступило - материалы монументального многолетнего труда в области управления сложностью, одного из лучших авторов современности Vladik Khononov ( @vladik_kh ) начали выходить в публичность:
- https://youtu.be/d6BeLhm3a0s
Предыдущая его книга стала самой понятной и популярной в области DDD. До появления его книги разобраться с трудами Эванса и Вернона можно было только ценой титанических усилий, что сдерживало распространение DDD.
Новая его книга консолидирует труды Larry Constantine, Tom DeMarco, Meilir Page-Jones, David L. Parnas, Robert C. Martin, и вооружает нас принципом, способным легко отыскивать победные решения в задачах любого уровня сложности.
[UPDATE]: Ждем вторую часть это keynote с ddd europe - "fractal geometry of software design". Через пару месяцев должны опубликовать.
#SoftwareDesign #MSA #DDD #SoftwareArchitecture
- https://youtu.be/d6BeLhm3a0s
Предыдущая его книга стала самой понятной и популярной в области DDD. До появления его книги разобраться с трудами Эванса и Вернона можно было только ценой титанических усилий, что сдерживало распространение DDD.
Новая его книга консолидирует труды Larry Constantine, Tom DeMarco, Meilir Page-Jones, David L. Parnas, Robert C. Martin, и вооружает нас принципом, способным легко отыскивать победные решения в задачах любого уровня сложности.
[UPDATE]: Ждем вторую часть это keynote с ddd europe - "fractal geometry of software design". Через пару месяцев должны опубликовать.
#SoftwareDesign #MSA #DDD #SoftwareArchitecture
YouTube
Balancing Coupling in Software Design - Vladik Khononov, DOIT International | Craft Conference 2022
This talk was recorded at Craft Conference 2022. Vladik Khononov from DOIT International spoke about Architecture, Coupling, Design, Microservices and DDD. We are used to treating coupling as the necessary evil. Hence, we aim to break systems apart into the…
👍1
emacsway-log: Software Design, Clean Architecture, DDD, Microservice Architecture, Distributed Systems, XP, Agile, etc.
Самое долгожданное событие в архитектурном мире наступило - материалы монументального многолетнего труда в области управления сложностью, одного из лучших авторов современности Vladik Khononov ( @vladik_kh ) начали выходить в публичность: - https://youtu.be/d6BeLhm3a0s…
От себя добавим. Книга по DDD от этого автора действительно лучшая из того что мы читали по этой теме.
O’Reilly Online Learning
Learning Domain-Driven Design
Building software is harder than ever. As a developer, you not only have to chase ever-changing technological trends but also need to understand the business domains behind the... - Selection from Learning Domain-Driven Design [Book]
Forwarded from Grisha Skobelev
Всем привет 👋
В рамках книжного клуба { между скобок } мы организовали интервью с тем самым Мартином Клеппманном книгу которого мы прочитали. Обсудим книгу, поговорим про будущее data systems и о новых исследованиях Мартина:
📍 https://www.inkandswitch.com/local-first/
📍https://automerge.org/
Встречаемся 30 июня в 20:00 по мск
Martin Kleppmann is a researcher in distributed systems and security at the University of Cambridge, and author of the bestselling book Designing Data-Intensive Applications (O'Reilly Media). Previously he was a software engineer and entrepreneur, co-founding and selling two startups, and working on large-scale data infrastructure at LinkedIn.
Ссылка на подключение будет чуть позже в чате https://news.1rj.ru/str/backend_megdu_skobkah
Также закидывайте ваши вопросы для Мартина в гугл форму https://forms.gle/ZCGNfZ42JJDNsEcd8
В рамках книжного клуба { между скобок } мы организовали интервью с тем самым Мартином Клеппманном книгу которого мы прочитали. Обсудим книгу, поговорим про будущее data systems и о новых исследованиях Мартина:
📍 https://www.inkandswitch.com/local-first/
📍https://automerge.org/
Встречаемся 30 июня в 20:00 по мск
Martin Kleppmann is a researcher in distributed systems and security at the University of Cambridge, and author of the bestselling book Designing Data-Intensive Applications (O'Reilly Media). Previously he was a software engineer and entrepreneur, co-founding and selling two startups, and working on large-scale data infrastructure at LinkedIn.
Ссылка на подключение будет чуть позже в чате https://news.1rj.ru/str/backend_megdu_skobkah
Также закидывайте ваши вопросы для Мартина в гугл форму https://forms.gle/ZCGNfZ42JJDNsEcd8
🔥7
Grisha Skobelev
Всем привет 👋 В рамках книжного клуба { между скобок } мы организовали интервью с тем самым Мартином Клеппманном книгу которого мы прочитали. Обсудим книгу, поговорим про будущее data systems и о новых исследованиях Мартина: 📍 https://www.inkandswitch.com/local…
Если кто не знает, Мартин Клеппманн — это автор знаменитой книги Designing Data-Intensive Applications (которая с кабанчиком, да)
O’Reilly Online Learning
Designing Data-Intensive Applications
Data is at the center of many challenges in system design today. Difficult issues need to be figured out, such as scalability, consistency, reliability, efficiency, and... - Selection from Designing Data-Intensive Applications [Book]
👍3
👀 Новое видео на канале!
Топ жести на собеседовании: https://youtu.be/KdmYL8TJEIA
Что делают большинство разработчиков, когда им нужно провести собеседование? Правильно, гуглят 100 вопросов на собеседование на ${любимый_язык}. А потом мы все жалуемся, что на собеседованиях творится какая-то вакханалия.
В общем, разбираем типичные ошибки интервьюверов и выясняем, почему в каждой компании собеседование должно быть уникальным.
🙏 Не забудьте поставить лайк и подписаться на YouTube канал, если видео вам понравилось!
Топ жести на собеседовании: https://youtu.be/KdmYL8TJEIA
Что делают большинство разработчиков, когда им нужно провести собеседование? Правильно, гуглят 100 вопросов на собеседование на ${любимый_язык}. А потом мы все жалуемся, что на собеседованиях творится какая-то вакханалия.
В общем, разбираем типичные ошибки интервьюверов и выясняем, почему в каждой компании собеседование должно быть уникальным.
🙏 Не забудьте поставить лайк и подписаться на YouTube канал, если видео вам понравилось!
YouTube
Никогда не собеседуй как Google!
☝ Как перестать выгорать и стать крутым архитектором или тимлидом? узнай так: Бесплатная пробная лекция из моего курса Разработка Enterprise-приложений на Java и Kotlin без боли и сожалений ждет тебя здесь
🎓 Курс: https://howto.stringconcat.ru/?utm_sour…
🎓 Курс: https://howto.stringconcat.ru/?utm_sour…
👍9
Пост немножечко ни о чем
Работал тут намедни с участком системы, у которой а) отсутствовала «единая кнопка» и б) не было тестов.
Все это появилось до моего прихода на проект и возводить такие конструкции мы сознательно не стали, ибо этот код в скором времени должен быть убран из проекта насовсем. Но что-то в нём пофиксить бывает нужно прямо сейчас, пока он ещё существует.
Так вот, нужно было мне пофиксить один ерундовый баг. В итоге заняло у меня это целый день. Пока я сделал все подготовительные процедуры, кое как вспомнил как поднять приложение, подготовил данные, нашел куда их просунуть, я уже забыл чего нужно пофиксить. Добавим сюда необходимость дебага (я им не пользовался пару лет точно, потому что обычно есть тесты) и в конце дня голова была способна воспринимать разве что тиктоки.
Если вы испытываете те же чувства, то крайне рекомендуем присмотреться к пирамиде тестирования и другим геометрическим фигурам. Если вы сможете её реализовать, по другому уже работать не захотите, проверено на себе.
Работал тут намедни с участком системы, у которой а) отсутствовала «единая кнопка» и б) не было тестов.
Все это появилось до моего прихода на проект и возводить такие конструкции мы сознательно не стали, ибо этот код в скором времени должен быть убран из проекта насовсем. Но что-то в нём пофиксить бывает нужно прямо сейчас, пока он ещё существует.
Так вот, нужно было мне пофиксить один ерундовый баг. В итоге заняло у меня это целый день. Пока я сделал все подготовительные процедуры, кое как вспомнил как поднять приложение, подготовил данные, нашел куда их просунуть, я уже забыл чего нужно пофиксить. Добавим сюда необходимость дебага (я им не пользовался пару лет точно, потому что обычно есть тесты) и в конце дня голова была способна воспринимать разве что тиктоки.
Если вы испытываете те же чувства, то крайне рекомендуем присмотреться к пирамиде тестирования и другим геометрическим фигурам. Если вы сможете её реализовать, по другому уже работать не захотите, проверено на себе.
👍9🤔2😢2