StringConcat - разработка без боли и сожалений
Привет, зазываем на курс! 15 сентября — старт новой группы по практическому курсу Разработка Enterprise-приложений без боли и сожалений. Самое время учиться: кризис в индустрии свирепствует, СhatGPT душит Stack Overflow. Скоро нейросети научатся перекидывать…
Про курсы. Осталось 5 мест на сентябрьский поток курса по энтерпрайзу. До 2 сентября цены старые, потом вырастут. Налетай-поторопись!
🔥10👍2
Иногда мы с Сережей пишем в блог. В основном про жизу, но не обязательно. Если вы с нами недавно, то рекомендуем почитать
Как поехать кукухой в айти. Рецепт для лида
Как я дважды выгорел дотла и восстал из пепла
Как остаться в айти, когда уже приуныл, но на пенсию ещё рано
Как я попал в ThoughtWorks или образцовое интервью
Как поехать кукухой в айти. Рецепт для лида
Как я дважды выгорел дотла и восстал из пепла
Как остаться в айти, когда уже приуныл, но на пенсию ещё рано
Как я попал в ThoughtWorks или образцовое интервью
👍8❤7
ВНЕЗАПНО, технический пост. Небольшая заметка о некоторых особенностях контрактов, которые на первый взгляд выглядят ерундой, а по факту сжирают кучу времени и нервов.
❤6🔥3👍2💯2👎1👏1
Рекомендуем: Unit Testing: Principles, Practices and Patterns by Vladimir Khorikov
В начале автор душно описывает фундамент: что такое Unit Тест, Code Coverage, Пирамида тестирования и прочие основы. Но за знакомыми терминами кроется ворох заблуждений, которые искажают смысл до противоположного. Автор собрал такие заблуждения и объяснил кто и где не прав. Например, Code Coverage не показывает, где ваш код покрыт тестами, а Моки не библиотека, а целое направление «заместителей».
Книга затрагивает деликатную тему: войну Лондонской и Классической школ тестирования. Автор по полочкам разбирает их общность и различие, в итоге убеждаясь, что коренное различие — не подходы к тестированию, а определение Unit’а. Для лондонцев — это класс, а для ортодоксов — бизнес-сценарий.
Главная ценность книги — переосмысление автором цель юнит-тестов. Владимир выделяет 4 атрибута качественных юнит-тестов:
- защита об багов,
- устойчивость к рефакторингу,
- быстрая обратная связь,
- простота поддержки.
Оценивая подходы разных школ тестирования по этим критериям, автор решает давний спор: кто же таки прав больше.
В книге представлено огромное количество практических советов по юнит-тестам: от правильного именования и использования моков — двойников, до написания сложных e2e-тестов.
Книга обязательна к прочтению, поможет значительно лучше писать юнит-тесты и даст аргументы, чтобы убедить разработчиков перенять правильный подход к тестированию.
В начале автор душно описывает фундамент: что такое Unit Тест, Code Coverage, Пирамида тестирования и прочие основы. Но за знакомыми терминами кроется ворох заблуждений, которые искажают смысл до противоположного. Автор собрал такие заблуждения и объяснил кто и где не прав. Например, Code Coverage не показывает, где ваш код покрыт тестами, а Моки не библиотека, а целое направление «заместителей».
Книга затрагивает деликатную тему: войну Лондонской и Классической школ тестирования. Автор по полочкам разбирает их общность и различие, в итоге убеждаясь, что коренное различие — не подходы к тестированию, а определение Unit’а. Для лондонцев — это класс, а для ортодоксов — бизнес-сценарий.
Главная ценность книги — переосмысление автором цель юнит-тестов. Владимир выделяет 4 атрибута качественных юнит-тестов:
- защита об багов,
- устойчивость к рефакторингу,
- быстрая обратная связь,
- простота поддержки.
Оценивая подходы разных школ тестирования по этим критериям, автор решает давний спор: кто же таки прав больше.
В книге представлено огромное количество практических советов по юнит-тестам: от правильного именования и использования моков — двойников, до написания сложных e2e-тестов.
Книга обязательна к прочтению, поможет значительно лучше писать юнит-тесты и даст аргументы, чтобы убедить разработчиков перенять правильный подход к тестированию.
🔥23❤7👍4
StringConcat - разработка без боли и сожалений
Рекомендуем: Unit Testing: Principles, Practices and Patterns by Vladimir Khorikov В начале автор душно описывает фундамент: что такое Unit Тест, Code Coverage, Пирамида тестирования и прочие основы. Но за знакомыми терминами кроется ворох заблуждений, которые…
Для тех кто хочет разобраться в теме тестирования, порекомендуем еще один небольшой материал. Может мы уже сюда выкладывали, но не убудет, если повторимся.
Самая мякотка материала — там описываются границы тестов, что является предметом извечных споров. Например, дается ответ как тестировать репозитории. Нужно ли при этом поднимать половину приложения или нет? Или а можно ли проверить работоспособность всей программы целиком, не поднимая базы данных и брокера сообщений? Посмотрите, очень много интересного.
Хоть публикация уже довольно старая, но мы пользуемся описаным подходом в своих проектах и лучше пока ничего сообразить не смогли. Есть только одно НО. Скажем, любители анемичных моделей могут не понять, что такое Domain, а так же испытают трудности при запиливании тестов для репозиториев, но таков их путь
Самая мякотка материала — там описываются границы тестов, что является предметом извечных споров. Например, дается ответ как тестировать репозитории. Нужно ли при этом поднимать половину приложения или нет? Или а можно ли проверить работоспособность всей программы целиком, не поднимая базы данных и брокера сообщений? Посмотрите, очень много интересного.
Хоть публикация уже довольно старая, но мы пользуемся описаным подходом в своих проектах и лучше пока ничего сообразить не смогли. Есть только одно НО. Скажем, любители анемичных моделей могут не понять, что такое Domain, а так же испытают трудности при запиливании тестов для репозиториев, но таков их путь
martinfowler.com
Testing Strategies in a Microservice Architecture
The microservice architectural style presents challenges for
organizing effective testing, this deck outlines the kinds of
tests you need and how to mix them.
organizing effective testing, this deck outlines the kinds of
tests you need and how to mix them.
🔥10👍1
Скоро выйдет перевод важной книги — Изучаем DDD – предметно ориентированное проектирование
Зачем читать. Изучаем DDD — актуальный сборник знаний по предмету. Со времён Эванса индустрия шагнула вперёд, появились события, микросервисы и другие ништяки. Автор рассматривает DDD не в академическом вакууме, а в контексте применения на современных проектах.
Кому читать. Да всем, собственно. Книга рассказывает простым языком о базовых концепциях: Bounded Context, Ubiquitous Language, Aggregate Root и прочих. Постепенно автор переходит к вопросам практики: какие конкретно паттерны использовать, как правильно поделить приложение на микросервисы.
Не только теория. Книга не оставит вас один на один с кучей теории. В ней описаны практические эвристики, которые помогут принимать решения. Заодно сможете доказать коллегам, что DDD — это не про Entity, Managers и Domain Service, а в первую очередь метод эффективного управления сложностью предметной области.
К переводу приложил руку и я (Женя). Книжку пришлось несколько раз вдумчиво прочитать, поэтому могу смело её вам рекомендовать.
Книжка ещё не в продаже, но мы сообщим, как откроется предзаказ.
Зачем читать. Изучаем DDD — актуальный сборник знаний по предмету. Со времён Эванса индустрия шагнула вперёд, появились события, микросервисы и другие ништяки. Автор рассматривает DDD не в академическом вакууме, а в контексте применения на современных проектах.
Кому читать. Да всем, собственно. Книга рассказывает простым языком о базовых концепциях: Bounded Context, Ubiquitous Language, Aggregate Root и прочих. Постепенно автор переходит к вопросам практики: какие конкретно паттерны использовать, как правильно поделить приложение на микросервисы.
Не только теория. Книга не оставит вас один на один с кучей теории. В ней описаны практические эвристики, которые помогут принимать решения. Заодно сможете доказать коллегам, что DDD — это не про Entity, Managers и Domain Service, а в первую очередь метод эффективного управления сложностью предметной области.
К переводу приложил руку и я (Женя). Книжку пришлось несколько раз вдумчиво прочитать, поэтому могу смело её вам рекомендовать.
Книжка ещё не в продаже, но мы сообщим, как откроется предзаказ.
Издательство БХВ
Изучаем DDD – предметно-ориентированное проектирование - Издательство БХВ
Издательство БХВ | Книга посвящена методологии DDD (предметно-ориентированному проектированию), что особенно актуально в условиях дробления предметных областей и усложнения бизнес-взаимодействий. Рассказано, как оценить масштаб и сложность предметной области…
👍31🔥18❤4
🇯🇵 Почетное первое место в номинации «Самый поехавший процесс разработки» занимают японские IT-компании. 🇯🇵
Мой коллега-китаец проработал год у японцев и сбежал оттуда с криком «да там нет места для творчества!»” А, поверьте мне, креативность и творчество — это не самая сильная черта китайской нации… Далее рассказываю с его слов.
Окрестности Токио, 2020 год. Компания работает по водопадной модели. Но так как это японцы, то водопадная модель возведена в абсолют, до уровня религиозной догмы.
Программист берет тикет, в котором надо реализовать одну функцию, скажем, подсчет стоимости корзины. А в тикете исчерпывающая документация на функцию, которую вам надо написать:
- Перечень входных параметров, их типы и ограничения
- Выходные параметры
- Подробное описание, что функция должна делать и как именно
- Если функция вызывает другие функции, будет прописано с какими параметрами она должна это делать.
Если в процессе реализации вам понадобилось вызвать функцию из документации, но которой ещё нет в коде — ничего страшного. Вы должны запушить код в мастер как есть, нужную функцию допишут согласно плану специально обученные люди.
Документация — истина в последней инстанции. Если документация вам кажется нелогичной, то вам просто кажется. Немыслимо написать код, который не соответствует документации.
Что мешает человеку, который пишет столь подробную документацию, сразу написать код? Это филосовский вопрос. В Японии у каждого своя зона ответственности.
А теперь представьте, сколько времени занимает проектирование и написание этой документации! Какая уж тут быстрая обратная связь.
P.S. Теперь я понимаю, почему не знаю ни одной большой софтины из Японии. Но я не понимаю, как они умудряются таким образом все таки писать актуальные прошивки для фотокамер Fuji, Canon и Nikon.
P.P.S. А ещё попробуйте представить, что будет, когда в Японии дойдут до аджайла со скрамом, которые они реализуют буквально и со своим звероподобным рвением.
Мой коллега-китаец проработал год у японцев и сбежал оттуда с криком «да там нет места для творчества!»” А, поверьте мне, креативность и творчество — это не самая сильная черта китайской нации… Далее рассказываю с его слов.
Окрестности Токио, 2020 год. Компания работает по водопадной модели. Но так как это японцы, то водопадная модель возведена в абсолют, до уровня религиозной догмы.
Программист берет тикет, в котором надо реализовать одну функцию, скажем, подсчет стоимости корзины. А в тикете исчерпывающая документация на функцию, которую вам надо написать:
- Перечень входных параметров, их типы и ограничения
- Выходные параметры
- Подробное описание, что функция должна делать и как именно
- Если функция вызывает другие функции, будет прописано с какими параметрами она должна это делать.
Если в процессе реализации вам понадобилось вызвать функцию из документации, но которой ещё нет в коде — ничего страшного. Вы должны запушить код в мастер как есть, нужную функцию допишут согласно плану специально обученные люди.
Документация — истина в последней инстанции. Если документация вам кажется нелогичной, то вам просто кажется. Немыслимо написать код, который не соответствует документации.
Что мешает человеку, который пишет столь подробную документацию, сразу написать код? Это филосовский вопрос. В Японии у каждого своя зона ответственности.
А теперь представьте, сколько времени занимает проектирование и написание этой документации! Какая уж тут быстрая обратная связь.
P.S. Теперь я понимаю, почему не знаю ни одной большой софтины из Японии. Но я не понимаю, как они умудряются таким образом все таки писать актуальные прошивки для фотокамер Fuji, Canon и Nikon.
P.P.S. А ещё попробуйте представить, что будет, когда в Японии дойдут до аджайла со скрамом, которые они реализуют буквально и со своим звероподобным рвением.
😁7👍3🤯2😢1
Forwarded from Event Storming (Sergey Baranov)
Во вторник (10.10) в 19:00 проведу здесь стрим «Введение в Event Storming»
Он в большей степени для тех, кто хочет узнать что такое Event Storming:
- Основные сценарии использования
- Основные элементы
- Основные структуры
- Основные эффекты
- Основные артефакты, которые можно получить из модели Event Storming
- Ваши вопросы и мои ответы 🙂
Основной контент где-то на 40-50 минут, но так как это стрим, то тайминг не фиксирован.
Вопросы и ответы могут быть любой сложности, не обязательно из области «введения в Event Storming» (кстати, вопросы можно уже начинать задавать в виде комментариев к этому сообщению).
Like/Share 🙂
Он в большей степени для тех, кто хочет узнать что такое Event Storming:
- Основные сценарии использования
- Основные элементы
- Основные структуры
- Основные эффекты
- Основные артефакты, которые можно получить из модели Event Storming
- Ваши вопросы и мои ответы 🙂
Основной контент где-то на 40-50 минут, но так как это стрим, то тайминг не фиксирован.
Вопросы и ответы могут быть любой сложности, не обязательно из области «введения в Event Storming» (кстати, вопросы можно уже начинать задавать в виде комментариев к этому сообщению).
Like/Share 🙂
🔥18❤3
Сережа Баранов мутит встречу по ES, рекомендуем заглянуть!
Мы расхваливали чистую архитектуру, да и продолжаем это делать. Но даже у нее нашлись недостатки:
- Высокий порог вхождения и требования к команде
- Много кода
- Скучная до невозможности!
Подробности в видео https://youtu.be/sCVPvZrIrpM
Не согласны? Или знаете другие недостатки? Давайте дискутировать в комментариях!
- Высокий порог вхождения и требования к команде
- Много кода
- Скучная до невозможности!
Подробности в видео https://youtu.be/sCVPvZrIrpM
Не согласны? Или знаете другие недостатки? Давайте дискутировать в комментариях!
YouTube
5 Недостатков Clean Architecture
https://howto.stringconcat.ru/enterprise?utm_source=youtube&utm_medium=video&utm_campaign=CA
☝ Поваренная книга дядюшки боба: Как готовить Clean Architecture:
🎓 Курс : https://howto.stringconcat.ru/cleanarchitecture?utm_source=youtube&utm_medium=video&utm_campaign=CA…
☝ Поваренная книга дядюшки боба: Как готовить Clean Architecture:
🎓 Курс : https://howto.stringconcat.ru/cleanarchitecture?utm_source=youtube&utm_medium=video&utm_campaign=CA…
🔥9
Forwarded from Russian Association of Software Architects (Sergey Baranov)
Забрал самые первые экземпляры, прямиком со склада :)
🔥43
Media is too big
VIEW IN TELEGRAM
Как IT-специалисту вырасти до $360.000 в год?
Мы открыли доступ к лекции о лучших инженерных практиках Thoughtworks из нашего основного курса. Знания этих практик увеличивают стоимость специалиста на рынке до 30.000 $ в месяц. В ролике к этому посту Серёжа подробно рассказывает, откуда эта цифра и как всё взаимосвязано.
Лекция откроется сразу после прохождения опроса. Он займёт 5 минут, а нам поможет заточить курсы под ваши потребности и чаще радовать вас качественным контентом :3
Опрос и лекция:
https://forms.gle/RxjaKxMMdQkVsEF98
Мы открыли доступ к лекции о лучших инженерных практиках Thoughtworks из нашего основного курса. Знания этих практик увеличивают стоимость специалиста на рынке до 30.000 $ в месяц. В ролике к этому посту Серёжа подробно рассказывает, откуда эта цифра и как всё взаимосвязано.
Лекция откроется сразу после прохождения опроса. Он займёт 5 минут, а нам поможет заточить курсы под ваши потребности и чаще радовать вас качественным контентом :3
Опрос и лекция:
https://forms.gle/RxjaKxMMdQkVsEF98
🔥7👍3❤2🤮2
Разыскивается Backend Lead (Kotlin)
Воспользуюсь служебным положением и поделюсь вакансией. Ищу себе в команду бекенд-лида со знанием котлина, который разделяет те ценности, о которых мы тут вот уже несколько лет рассказываем. Кому интересно, оставляйте отклик на HH.
Воспользуюсь служебным положением и поделюсь вакансией. Ищу себе в команду бекенд-лида со знанием котлина, который разделяет те ценности, о которых мы тут вот уже несколько лет рассказываем. Кому интересно, оставляйте отклик на HH.
hh.ru
Вакансия Lead Backend Developer (ATOM HUB) в Москве, работа в компании Атом (вакансия в архиве c 29 ноября 2023)
Зарплата: не указана. Москва. Требуемый опыт: более 6 лет. Полная занятость. Дата публикации: 30.10.2023.
🔥15
Правильной и неправильной архитектур не бывает, зато бывают «дорогие» — поддержание которых на плаву потребует больше усилий, чем экономит их использование.
Чтобы понять, не стала ли архитектура проекта «дорогой», пройдите по опроснику. Для каждого вида свой набор вопросов.
Монолитная
- Достаточно ли команда инвестировала в модуляризацию?
Какое выбрано направление зависимостей между этими модулями?
- Не предполагается ли наплыв пары миллиардов пользователей в ближайшее время?
Микросервисная
- Может ли команда независимо деплоить микросервисы?
Если один из микросервисов ушёл отдохнуть, смогут ли оставшиеся продолжить работу?
- Достаточно ли команда вложила в devops-практики или таскает исполняемые файлы на прод руками?
- Подтверждено ли автоматическим тестированием совместимость микросервисов?
- Достаточно ли команда инвестировала в мониторинг?
Слоеная
- Договорились ли вы с командой, какой вариант слоёнки вы используете: открытые или закрытые слои, каково направление зависимостей, особенно между доменом и data access layer.
- Какие слои, собственно, у вас есть? Куда вы положили слои, выбивающиеся из стройного ряда API Layer, Business layer, Data Access Layer? Например, где лежит взаимодействие с другими сервисами?
- Уверены ли вы, что приложение не слипается в big ball of mud и вы хорошо отделили один слой от другого?
Hexagonal\Clean Architecture
- Вся ли команда понимает принципы этой архитектуры и почему она выбрана для проекта?
- Достаточно ли вы изолировали слои и контролируете направление зависимостей между ними?
- Если кто-то притащит в домен половину вашего любимого фреймворка, то через сколько часов или дней вы это заметите?
Event-Driven architecture
- Как вы понимаете, отвечает ли код бизнес-процессам или нет?
Как вы ищете проблему в коде, когда поняли, что что-то идет не так?
- Может ли текущая версия любого сервиса запроцессить event, пришедший ей 2 года назад?
Те же вопросы стоит задать микросервисной архитектуре, только с лампой в лицо опрашиваемому, поскольку цена ошибки тут много выше.
А какие вопросы вы бы задали, светя лампой в лицо опрашиваемому тимлиду\архитектору?
Чтобы понять, не стала ли архитектура проекта «дорогой», пройдите по опроснику. Для каждого вида свой набор вопросов.
Монолитная
- Достаточно ли команда инвестировала в модуляризацию?
Какое выбрано направление зависимостей между этими модулями?
- Не предполагается ли наплыв пары миллиардов пользователей в ближайшее время?
Микросервисная
- Может ли команда независимо деплоить микросервисы?
Если один из микросервисов ушёл отдохнуть, смогут ли оставшиеся продолжить работу?
- Достаточно ли команда вложила в devops-практики или таскает исполняемые файлы на прод руками?
- Подтверждено ли автоматическим тестированием совместимость микросервисов?
- Достаточно ли команда инвестировала в мониторинг?
Слоеная
- Договорились ли вы с командой, какой вариант слоёнки вы используете: открытые или закрытые слои, каково направление зависимостей, особенно между доменом и data access layer.
- Какие слои, собственно, у вас есть? Куда вы положили слои, выбивающиеся из стройного ряда API Layer, Business layer, Data Access Layer? Например, где лежит взаимодействие с другими сервисами?
- Уверены ли вы, что приложение не слипается в big ball of mud и вы хорошо отделили один слой от другого?
Hexagonal\Clean Architecture
- Вся ли команда понимает принципы этой архитектуры и почему она выбрана для проекта?
- Достаточно ли вы изолировали слои и контролируете направление зависимостей между ними?
- Если кто-то притащит в домен половину вашего любимого фреймворка, то через сколько часов или дней вы это заметите?
Event-Driven architecture
- Как вы понимаете, отвечает ли код бизнес-процессам или нет?
Как вы ищете проблему в коде, когда поняли, что что-то идет не так?
- Может ли текущая версия любого сервиса запроцессить event, пришедший ей 2 года назад?
Те же вопросы стоит задать микросервисной архитектуре, только с лампой в лицо опрашиваемому, поскольку цена ошибки тут много выше.
А какие вопросы вы бы задали, светя лампой в лицо опрашиваемому тимлиду\архитектору?
🔥13🥱6👍4✍1