Недавно я вновь отправился в турне по продуктовым и не очень конторам, перепродавать свой зад подороже. И к моему удивлению каждое второе собеседование оказалось с алгоритмическими задачами. Хороший повод завести вентилятор и взять в руки лопату. Сегодня осуждаем порочную практику с позиции нейрофизиологии и прагматической этики.
https://stringconcat.com/ru/coding-interview-ru/
https://stringconcat.com/ru/coding-interview-ru/
Forwarded from DDDevotion
Вышел свежий техрадар. Рекомендую походить по расхлопам, почитать мотивационную часть и референсы. Также обратите внимание на тренд той или иной техники или платформы.
На что я обратил внимание
- пара ссылок на книгу Team Topologies (в когнитивной нагрузке и платформенных командах);
- облачные песочницы, даешь дев-стенды разработчикам!
- захолдили SAFe и GitOps.
- захолдили пулл-реквесты как инструмент peer review (недавно делал пост со схожими мыслями).
И это только четверть про техники, если вы работаете с кодом - наверняка найдете массу полезных инструментов и ссылок.
На что я обратил внимание
- пара ссылок на книгу Team Topologies (в когнитивной нагрузке и платформенных командах);
- облачные песочницы, даешь дев-стенды разработчикам!
- захолдили SAFe и GitOps.
- захолдили пулл-реквесты как инструмент peer review (недавно делал пост со схожими мыслями).
И это только четверть про техники, если вы работаете с кодом - наверняка найдете массу полезных инструментов и ссылок.
Thoughtworks
Technology Radar | Guide to technology landscape
The Technology Radar is an opinionated guide to today's technology landscape. Read the latest here.
Знакома ли вам ситуация, когда ответом на любой вопрос является "так исторически сложилось"?
-Почему у нас здесь микросервисы?
-так сложилось. Всегда были.
-почему мы используем кафку?
-не знаю, вроде нормально ведь.
Чтобы не попадать в такие ситуации придуманы architectural decision records. Это фиксация принятых архитектурных решений с обоснованием почему. Если хотите начать использовать, то вам в помощь прекрасный шаблон ведения таких записей.
https://github.com/adr/madr
Да, это хорошая идея вести запись прямо в репозитории
-Почему у нас здесь микросервисы?
-так сложилось. Всегда были.
-почему мы используем кафку?
-не знаю, вроде нормально ведь.
Чтобы не попадать в такие ситуации придуманы architectural decision records. Это фиксация принятых архитектурных решений с обоснованием почему. Если хотите начать использовать, то вам в помощь прекрасный шаблон ведения таких записей.
https://github.com/adr/madr
Да, это хорошая идея вести запись прямо в репозитории
GitHub
GitHub - adr/madr: Markdown Architectural Decision Records
Markdown Architectural Decision Records. Contribute to adr/madr development by creating an account on GitHub.
Одно дело, когда политик спрашивает «Как ваши дела?», и совсем другое, когда ваша мама спрашивает «Как ваши дела». Они имеют ввиду совершенно разные вещи.
Таким образом, 2 семантически одинаковые фразы имеют совершенно разное значение в зависимости от контекста. И вот тут то мы пришли к определению Bounded Context из DDD.
Как определить, что мы наткнулись на 2 контекста? Ответ прост: когда одна фраза (или сущность) не может быть понята однозначно без знания контекста.
Нашли такую фразу? Поздравляю! Вы нашли bounded context. И два значения одного и того же термина.
Таким образом, 2 семантически одинаковые фразы имеют совершенно разное значение в зависимости от контекста. И вот тут то мы пришли к определению Bounded Context из DDD.
Как определить, что мы наткнулись на 2 контекста? Ответ прост: когда одна фраза (или сущность) не может быть понята однозначно без знания контекста.
Нашли такую фразу? Поздравляю! Вы нашли bounded context. И два значения одного и того же термина.
💀 Тем, кто устал
Айти — постоянная гонка, от которой можно и приуныть в конце-концов. Сегодня поговорим о том, как выжить, когда уже сил не осталось.
Наш каток прагматического гуманизма пройдёт по порочным практикам накопления приёмчиков и коллекционирования фреймворков, чтобы подготовить ровную площадку для ясной системы знаний. А ещё немного пошутим о наболевшем.
Приходите читать!
https://stringconcat.com/ru/get-sane/
Айти — постоянная гонка, от которой можно и приуныть в конце-концов. Сегодня поговорим о том, как выжить, когда уже сил не осталось.
Наш каток прагматического гуманизма пройдёт по порочным практикам накопления приёмчиков и коллекционирования фреймворков, чтобы подготовить ровную площадку для ясной системы знаний. А ещё немного пошутим о наболевшем.
Приходите читать!
https://stringconcat.com/ru/get-sane/
Не всюду разработчику хорошо. Бывает, с виду всё нормально, но на деле проект оказывается полон особенностей. День за днём они грызут душу и тело, люди выгорают и отправляются на мороз, общаться с психоаналитиком.
Чтобы избавить вас от подобного опыта, мы составили тест на оценку кровавости энтерпрайза. Отправьте потенциальному работодателю или покажите текущей команде, но лучше пройдите сами.
https://bloody-enterprise.stringconcat.com/#/
Чтобы избавить вас от подобного опыта, мы составили тест на оценку кровавости энтерпрайза. Отправьте потенциальному работодателю или покажите текущей команде, но лучше пройдите сами.
https://bloody-enterprise.stringconcat.com/#/
Только-только вышла в свет вторая версия Микросервисов от Сэма Ньюмана. Судя по доступному сэмплу он уж больше рассказывает о технических подробностях реализации, таких как распределенная трассировка, агрегатор логов. Но самое интересное - это книга не агитирует "за" микросервисы, но и не агитирует "против". Обещается очень здравый подход с описанием альтернатив микросервисам. Книга сейчас доступна только в версии для Kindle. На английском само собой https://www.amazon.com/Building-Microservices-Sam-Newman-ebook-dp-B09B5L4NVT/dp/B09B5L4NVT/ref=mt_other?_encoding=UTF8&me=&qid=1628333621
Forwarded from DDDevotion
Послезавтра проводим митап уходящего лета. И программа получается несколько монолитной) Первый докладчик – Олег Федосеев (@olegfedoseev) из Циан расскажет про вторую жизнь монолита:
Многие думают что монолит можно только переписать или заменить микросервисами, но есть альтернативный путь — постепенное улучшение изнутри и в своём докладе я расскажу как это работает и как к этому можно прийти.
Многие думают что монолит можно только переписать или заменить микросервисами, но есть альтернативный путь — постепенное улучшение изнутри и в своём докладе я расскажу как это работает и как к этому можно прийти.
Очень актуальная тема на наш взгляд. Ссылка на митап https://www.youtube.com/watch?v=5Adgq-4KJoo, вопросы можно задать тут - https://app.sli.do/event/3xzwxrro
YouTube
DDDocs – генерируем документацию по-модному
Андрей Ратушный, DDD-евангелист.
Андрей рассказал про подход, который позволяет собирать документацию на основании программной модели. Используя этот подход мы посмотрели, как можно определить дефекты трансляции ментальной модели в программную и какой дополнительный…
Андрей рассказал про подход, который позволяет собирать документацию на основании программной модели. Используя этот подход мы посмотрели, как можно определить дефекты трансляции ментальной модели в программную и какой дополнительный…
Проводим очередной вебинар по Clean Architecture. Если кто ещё не видел — подключайтесь!
https://youtu.be/lQMWGWA9FYs
https://youtu.be/lQMWGWA9FYs
YouTube
MVC к Clean Architecture. Рефакторинг архитектуры бэкенда
Как перестать выгарать и начать снова любить свою работу?
Как разработка и управление требованиями поменяет твои будни?
Микросервисы, какие они должны быть чтобы не испытывать микроинсульты?
Как архитектура поможет управлять проектом и почему архитекторы…
Как разработка и управление требованиями поменяет твои будни?
Микросервисы, какие они должны быть чтобы не испытывать микроинсульты?
Как архитектура поможет управлять проектом и почему архитекторы…
Robert Laszczak из Three Dots Labs написал на английском про тёмные века софтверной разработки: https://threedots.tech/post/software-dark-ages/
Роберт описывает классическую ситуацию: все хорошие практики уже давно придуманы, но в компаниях про них не слышали и продолжают поклоняться идолищам. Изменения выкатываются месяцами, микросервисы тонут в зависимостях, никто не знает, какую проблему решает. Ну, всё то, о чём мы сами рассказываем (и во что вляпываемся).
Автор наглядно объясняет, как такая ситуация возникает:
1. Не поняли, что нужно → получили унылое и дохлое.
2. Повторяем 1 пункт, пока не надоест.
Еще Роберт пишет, что делать и почему этого ещё не сделали и, конечно же, проповедует благое DDD.
Роберт описывает классическую ситуацию: все хорошие практики уже давно придуманы, но в компаниях про них не слышали и продолжают поклоняться идолищам. Изменения выкатываются месяцами, микросервисы тонут в зависимостях, никто не знает, какую проблему решает. Ну, всё то, о чём мы сами рассказываем (и во что вляпываемся).
Автор наглядно объясняет, как такая ситуация возникает:
1. Не поняли, что нужно → получили унылое и дохлое.
2. Повторяем 1 пункт, пока не надоест.
Еще Роберт пишет, что делать и почему этого ещё не сделали и, конечно же, проповедует благое DDD.
StringConcat - разработка без боли и сожалений
Robert Laszczak из Three Dots Labs написал на английском про тёмные века софтверной разработки: https://threedots.tech/post/software-dark-ages/ Роберт описывает классическую ситуацию: все хорошие практики уже давно придуманы, но в компаниях про них не слышали…
А Женя из @dddevotion вдруг взял и перевёл статью специально для тех, кому лень читать по-английски. За что ему большое спасибо!
Хабр
Темные века разработки программного обеспечения
Пару лет назад я работал в SaaS-компании, которая страдала от всех возможных проблем, связанных с разработкой программного обеспечения . Код был настолько сложным, что внесение простых изменений...
Нил Форд, автор fundamental of software architecture, опубликовал новую книгу “The hard parts of software architecture”. В ней он говорит в сущности о трех вещах:
— каждое ваше архитектурное решение это компромисс
— о том, насколько большими должны быть сервисы
— о коммуникации между сервисами
Послушать о книге можно в подкасте Thoughtworks:
https://www.thoughtworks.com/en-sg/insights/podcasts/technology-podcasts/the-hard-parts-of-software-architecture
Книга доступна только в электронном виде, ну и, конечно, только на английском:
https://www.amazon.com/Software-Architecture-Parts-Neal-Ford-ebook-dp-B09H2H5QKC/dp/B09H2H5QKC/ref=mt_other?_encoding=UTF8&me=&qid=1634275068
На самом деле очень сложно найти хорошую книгу по архитектуре. И “Fundamentals of Software Architecture” я прочитал на одном дыхании, а кое-что даже ни один раз. Полагаю, новая книга станет бестселлером!
— каждое ваше архитектурное решение это компромисс
— о том, насколько большими должны быть сервисы
— о коммуникации между сервисами
Послушать о книге можно в подкасте Thoughtworks:
https://www.thoughtworks.com/en-sg/insights/podcasts/technology-podcasts/the-hard-parts-of-software-architecture
Книга доступна только в электронном виде, ну и, конечно, только на английском:
https://www.amazon.com/Software-Architecture-Parts-Neal-Ford-ebook-dp-B09H2H5QKC/dp/B09H2H5QKC/ref=mt_other?_encoding=UTF8&me=&qid=1634275068
На самом деле очень сложно найти хорошую книгу по архитектуре. И “Fundamentals of Software Architecture” я прочитал на одном дыхании, а кое-что даже ни один раз. Полагаю, новая книга станет бестселлером!
Новый выпуск technology radar уже готов к выходу. Thoughtworks презентует его online 20 октября в 17:00 по Москве. Регистрация обязательна https://www.thoughtworks.com/en-sg/radar/technology-radar-webinar
Thoughtworks
Thoughtworks Technology Radar webinar
Register to the preview webinar to get a first look at the latest volume of the Technology Radar.
Свежая пресса, господа!
Только что вышел Technology Radar.
Меня лично в этом выпуске зацепил фокус на том, как команды перестраиваются на удаленную работу.
Trial: Remote mob programming. Говорите что pair programming - слишком затратное дело? Thoughtworks пробует подход, когда вся команда собравшись удалённо работает над сложной задачей
Trial: Single team remote wall. Привыкли к том у что все стены в вашем офисе изрисованы схемами и увешаны стикерами? Ничего не мешает сделать виртуальную стену!
Adopt: Zero trust architecture. Когда я начинаю проект всегда встает вопрос как организовать security внутри кластера. Должны ли мы доверять вызовам, только потому что они ходят внутри защищенного периметра или все таки нет?. Zero trust architecture говорит что доверять мы не должны никому, И защищенный периметр - не лучший вариант
Adopt: 4 key metrics. На самом деле я удивлен, что они только сейчас вошли в adopt. Если вы еще не смотрели на них, то очень советую. Они про то, как померить эффективность доставки software, или при более широкой трактовке как померить эффективность работы команды
И многое другое….
https://www.thoughtworks.com/content/dam/thoughtworks/documents/radar/2021/10/tr_technology_radar_vol_25_en.pdf
Только что вышел Technology Radar.
Меня лично в этом выпуске зацепил фокус на том, как команды перестраиваются на удаленную работу.
Trial: Remote mob programming. Говорите что pair programming - слишком затратное дело? Thoughtworks пробует подход, когда вся команда собравшись удалённо работает над сложной задачей
Trial: Single team remote wall. Привыкли к том у что все стены в вашем офисе изрисованы схемами и увешаны стикерами? Ничего не мешает сделать виртуальную стену!
Adopt: Zero trust architecture. Когда я начинаю проект всегда встает вопрос как организовать security внутри кластера. Должны ли мы доверять вызовам, только потому что они ходят внутри защищенного периметра или все таки нет?. Zero trust architecture говорит что доверять мы не должны никому, И защищенный периметр - не лучший вариант
Adopt: 4 key metrics. На самом деле я удивлен, что они только сейчас вошли в adopt. Если вы еще не смотрели на них, то очень советую. Они про то, как померить эффективность доставки software, или при более широкой трактовке как померить эффективность работы команды
И многое другое….
https://www.thoughtworks.com/content/dam/thoughtworks/documents/radar/2021/10/tr_technology_radar_vol_25_en.pdf
Статистика и вероятностные методы в разработке
В сентябре на Хабре вышел перевод статьи Сони Сайдеровой о вероятностных прогнозах. Хабро-эксперты по всему на свете обошли её стороной и не закидали какахами, а зря: тема интересная и перспективная.
Статистику применяют для прогнозирования и оценки проектов, а ещё с её помощью можно отслеживать проблемы. Например, предсказывать сбои на проекте до начала пожара и вовремя замечать признаки выгорания у разработчиков. Максимально упрощенно работает так:
Один из авторов канала внедрял статистическое отслеживание динамики процессов разработки. Графики постом выше — было и стало по одному разработчику (исходные данные утеряны, остались только скрины с разным масштабом).
Ось X — количество жоподней на одну задачу.
Ось Y — количество задач, которые заняли соответствующее кол-во жоподней.
На первом графике горб смещен правее — это старая версия продукта, где большая часть задач занимала два дня. После изменений горб подрос и сместился левее, до одного дня. В новом продукте срок решения уменьшился вдвое, значит, изменения оказались положительны.
Разумеется, просто так собирать все подряд в гистограммы бесполезно. Нужна подготовительная работа и методики осмысления и применения результатов. Но это, уж простите великодушно, и есть тру-манагерская работа, а не только сторипоинты по спринтам раскидывать. Для старта посмотрите двухчасовой стрим Максима Дорофеева про методы прогнозирования и оценки проектов.
Если вам интересно про прогнозирование и оценки, как-нибудь напишем развернутый пост. Оставляйте комментарии, делитесь мыслями.
В сентябре на Хабре вышел перевод статьи Сони Сайдеровой о вероятностных прогнозах. Хабро-эксперты по всему на свете обошли её стороной и не закидали какахами, а зря: тема интересная и перспективная.
Статистику применяют для прогнозирования и оценки проектов, а ещё с её помощью можно отслеживать проблемы. Например, предсказывать сбои на проекте до начала пожара и вовремя замечать признаки выгорания у разработчиков. Максимально упрощенно работает так:
Что-то меняем → Смотрим на показатели → Делаем выводыНапример, внедряем CI или меняем архитектуру, а потом смотрим, как меняются трудозатраты на задачу для каждого участника процесса.
Один из авторов канала внедрял статистическое отслеживание динамики процессов разработки. Графики постом выше — было и стало по одному разработчику (исходные данные утеряны, остались только скрины с разным масштабом).
Ось X — количество жоподней на одну задачу.
Ось Y — количество задач, которые заняли соответствующее кол-во жоподней.
На первом графике горб смещен правее — это старая версия продукта, где большая часть задач занимала два дня. После изменений горб подрос и сместился левее, до одного дня. В новом продукте срок решения уменьшился вдвое, значит, изменения оказались положительны.
Разумеется, просто так собирать все подряд в гистограммы бесполезно. Нужна подготовительная работа и методики осмысления и применения результатов. Но это, уж простите великодушно, и есть тру-манагерская работа, а не только сторипоинты по спринтам раскидывать. Для старта посмотрите двухчасовой стрим Максима Дорофеева про методы прогнозирования и оценки проектов.
Если вам интересно про прогнозирование и оценки, как-нибудь напишем развернутый пост. Оставляйте комментарии, делитесь мыслями.
Моими самыми любимыми фичами в котлине являются null-safety и sealed-классы. Но не всегда мы работаем с модным котлином, иногда приходится брать в руки старую-добрую жабу. И если sealed классы таки завезли, то борьба с нуллами продолжается. С джавы версии 14 NPE стали чуть более информативными, но багов от этого меньше не стало. Остается надеяться только на статанализ. Одно из таких решений — NullAway от Uber. Это плагин для Error Prone, который позволит отловить NPE еще на этапе сборки. Наверное это единственное более-менее вменяемое и актуальное на данный момент решение. Или же есть что-то еще? Будет круто, если поделитесь своим опытом борьбы с NPE в комментариях (желательно успешным, но тут всякое бывает, да).
GitHub
GitHub - uber/NullAway: A tool to help eliminate NullPointerExceptions (NPEs) in your Java code with low build-time overhead
A tool to help eliminate NullPointerExceptions (NPEs) in your Java code with low build-time overhead - uber/NullAway
Forwarded from SecAtor
Merry Christmas!!!
В библиотеке log4j под Apache ночью вдруг нашлась 0-day уязвимость, приводящая к удаленному выполнению кода (RCE). К этому всему удовольствию прилагается рабочий PoC, опубликованный на GitHub.
На момент появления PoC у дырки не было даже CVE (сейчас уже есть - CVE-2021-44228). Известно, что уязвимость работает на куче сервисов, к примеру - Steam, iCloud и пр.
Эксплойту подвержены версии Apache log4j вплоть до 2.14.1. Сканирование сети на предмет уязвимых серверов уже идет (странно было бы ожидать другого при наличии рабочего PoC).
В качестве меры смягчения сначала предлагалось обновить log4j до версии 2.15.0-rc1, но буквально в течение нескольких часов был найден способ обхода исправления, поэтому теперь рекомендуют обновлять до 2.15.0-rc2. Кроме того, некоторые инфосек эксперты рекомендуют установить log4j2.formatMsgNoLookups в значение true.
Также LunaSec со ссылкой на китайцев говорят, что эксплойт не работает на версиях JDK выше 6u211, 7u201, 8u191 и 11.0.1.
Ну а вишенка на этом рождественском торте - эксплойт работает на всех версиях Minecraft начиная с 1.8.8.
Apache Foundation пьют валерьянку и молчат.
Merry Christmas, дорогие наши, Merry Christmas!!!
В библиотеке log4j под Apache ночью вдруг нашлась 0-day уязвимость, приводящая к удаленному выполнению кода (RCE). К этому всему удовольствию прилагается рабочий PoC, опубликованный на GitHub.
На момент появления PoC у дырки не было даже CVE (сейчас уже есть - CVE-2021-44228). Известно, что уязвимость работает на куче сервисов, к примеру - Steam, iCloud и пр.
Эксплойту подвержены версии Apache log4j вплоть до 2.14.1. Сканирование сети на предмет уязвимых серверов уже идет (странно было бы ожидать другого при наличии рабочего PoC).
В качестве меры смягчения сначала предлагалось обновить log4j до версии 2.15.0-rc1, но буквально в течение нескольких часов был найден способ обхода исправления, поэтому теперь рекомендуют обновлять до 2.15.0-rc2. Кроме того, некоторые инфосек эксперты рекомендуют установить log4j2.formatMsgNoLookups в значение true.
Также LunaSec со ссылкой на китайцев говорят, что эксплойт не работает на версиях JDK выше 6u211, 7u201, 8u191 и 11.0.1.
Ну а вишенка на этом рождественском торте - эксплойт работает на всех версиях Minecraft начиная с 1.8.8.
Apache Foundation пьют валерьянку и молчат.
Merry Christmas, дорогие наши, Merry Christmas!!!
GitHub
GitHub - tangxiaofeng7/CVE-2021-44228-Apache-Log4j-Rce: Apache Log4j 远程代码执行
Apache Log4j 远程代码执行. Contribute to tangxiaofeng7/CVE-2021-44228-Apache-Log4j-Rce development by creating an account on GitHub.
Еще один шаг сделал Котлин в борьбе с засилием примитивных типов. Котлин 1.5.0 представляет Value Classes.
В чем проблема?
В Котлин были data classes
Другим вариантом были type alias
но он не спасает от использования примитичного типа вместо Алиса
И вот теперь нам доступен value class
таким образом можно наконец-то можно навести порядок с примитивными типами
Подробности
В чем проблема?
fun calculateAvgSpeed(distance: Int, time: Int) { … }
fun main() {
val weight = 64 // kg
val time = 60 // sec
calculateAvgSpeed(weight, time)
}
Скомпилируется, выполнится без проблем. Ведь Int может представлять все что угодно: время, расстояние, вес и пр. И, скажем в Java нет никакой возможности бороться с этим. В Котлин были data classes
data class Distance(val distance: Int)Которые решали эту проблему, но все же в создание они тяжелее примитивных типов: под них надо выделять место в куче, а не в стеке.
Другим вариантом были type alias
typealias Distance = Int
fun calculateAvgSpeed(distance: Distance, time: Int) { … }
но он не спасает от использования примитичного типа вместо Алиса
fun main() {
val weight = 64 // kg
val time = 60 // sec
calculateAvgSpeed(weight, time)
}
Все еще работает :(И вот теперь нам доступен value class
@JvmStaticКоторый является как бы оберткой над примитивным типом, а с другой все еще хранится в стеке, а не в куче. А это значит что Garbage Сollector не надо будет беспокоить по-мелочам.
value class Distance(val distance: Int)
@JvmStatic```
value class Distance(val distance: Int)
fun calculateAvgSpeed(distance: Distance, time: Int) { … }
fun main() {
val weight = 64 // kg
val time = 60 // sec
calculateAvgSpeed(weight, time) // does not work anymore
calculateAvgSpeed(new Distance(64), time) // works perfectly
}
таким образом можно наконец-то можно навести порядок с примитивными типами
Подробности
QuickBird Studios
Value Classes in Kotlin: Good-Bye, Type Aliases!?
Value classes are new in Kotlin! Shall we now drop all our type aliases and data classes in favor of value classes?
Интересный материал от Ивана @emacsway_log о балансе между Prediction и Adaptation и о том, что маятник снова несется в сторону Prediction.
Что это вообще такое?
Prediction — проектирование заранее или наперед. Делаем то, что нужно будет в будущем. Любой агиле-коуч вам скажет, что это зло.
Adaptation — проектируем по мере возникновения потребности, адаптируемся к условиям, оттягиваем принятие решения на более поздний момент.
Во все времена в разработке был и тот и другой аспект, но в разных пропорциях. До недавнего времени лидерство было на стороне Adaptation, но кажется Prediction снова набирает обороты. В общем, будем посмотреть.
По нашим субъективным ощущениям, наибольший вклад в такое движение принесли легковесные техники как, например, Event Storming и т.д. Если раньше Prediction был дорогим, долгим и вгонял разработчиков в депрессию, то сейчас, благодаря таким инструментам можно получить годный результат за вполне адекватную цену.
Что это вообще такое?
Prediction — проектирование заранее или наперед. Делаем то, что нужно будет в будущем. Любой агиле-коуч вам скажет, что это зло.
Adaptation — проектируем по мере возникновения потребности, адаптируемся к условиям, оттягиваем принятие решения на более поздний момент.
Во все времена в разработке был и тот и другой аспект, но в разных пропорциях. До недавнего времени лидерство было на стороне Adaptation, но кажется Prediction снова набирает обороты. В общем, будем посмотреть.
По нашим субъективным ощущениям, наибольший вклад в такое движение принесли легковесные техники как, например, Event Storming и т.д. Если раньше Prediction был дорогим, долгим и вгонял разработчиков в депрессию, то сейчас, благодаря таким инструментам можно получить годный результат за вполне адекватную цену.
👍11🔥1