Поваренная книга
Дядюшки Боба:
как готовить Clean Architecture
Изучите рецепт приложений, которые не превращаются в легаси-болота с микросервисами
  • Уровень
    Для практикующих разработчиков
  • Формат
    - короткие лекции по 4 темам
    - домашние задания с проверкой авторами курса
  • Когда
    сразу после оплаты откроется доступ на 60 дней
  • Стоимость
    3 000 руб.
  • Уровень
    Для практикующих разработчиков
  • Формат
    - короткие лекции по 4 темам
    - домашние задания с проверкой авторами курса
  • Когда
    сразу после оплаты откроется доступ на 60 дней
  • Стоимость
    3 000 руб.
В индустрии enterprise-разработки царит хаос. Проекты за год превращаются в комья грязи с нулевым качеством. Kafka и Spring не помогают, код сплетается в нетестируемые спагетти, а разработка с менеджерами — в клубок взаимной ненависти.

Наш короткий курс поможет вам разобраться в комплексных проблемах качества ПО, принять этот несовершенный мир и вернуть радость в работу.
В индустрии enterprise-разработки царит хаос. Проекты за год превращаются в комья грязи с нулевым качеством. Kafka и Spring не помогают, код сплетается в нетестируемые спагетти, а разработка с менеджерами — в клубок взаимной ненависти.

Наш короткий курс поможет вам разобраться в комплексных проблемах качества ПО, принять этот несовершенный мир и вернуть радость в работу.
о курсЕ
Чему вы научитесь
Строить надежную архитектуру, которая не даст приложению скатиться в Big Ball of Mud © и выстоит против толпы джунов.

Видеть слабые места каждого типа архитектуры и осознанно выбирать нужный по ситуации.

Оценивать имплементацию Hexagonal или Clean Architecture и исправлять ошибки в их реализации.

Объяснять бизнесу и коллегам, что архитектура приложения — это не только микросервисы.
ТЕМЫ
Программа курса
1
Введение. Фундаментальная теорема Software Engineering
18 минут, тест

Разбираем первопричины быстрого превращения проекта в легаси. Кто виноват: неправильно выбранные технологии, некомпетентные менеджеры или архитектура, которую легко сломать.
Почему засилье технического долга на проекте в первую очередь бьет по разработчикам.
Откуда берется сложность на проекте и почему микросервисы её не уменьшают.
Антипаттерны модульности и как с ними бороться.
2
Тема 1. Модульность. Какой модуль самый главный?
49 минут + тест + домашнее задание

  • Разбираемся, почему модульность важна. Учимся трюку, как, представляя иерархию организации вместо иерархии модулей, понять, насколько архитектура хороша.
  • Раз и навсегда выясним, кто от кого должен зависеть: модуль бизнеса от entity или entity от модуля бизнеса.
  • Разберем типичные антипаттерны модульности: когда на бумаге все гладко, а в имплементации Big Ball of Mud ©.
  • Поговорим, когда микросервисы нам друг, а когда враг. И Java/PHP/Python не лучший выбор для enterprise-приложения.
3
Тема 2. От MVC до Layered Architecture
37 минут

  • Сервисный слой — это антипаттерн.
Разбираемся:
- где всё-таки должна находиться бизнес-логика и 
- как сделать так, чтоб она не расползалась по всему проекту.

  • Проследим типичную эволюцию enterprise-приложения от «да тут просто CRUD» до «Ох, у нас же слоёная архитектура, чего она выглядит как ком грязи»
4
Тема 3. Clean Architecture
38 минут + тест + домашнее задание

  • Поговорим, как приложению управлять технологиями.
  • Фреймворки и базы данных — это частности, главное — понимание задачи и подход к её решению.
  • Расскажем, чему в проекте стоит уделять внимание в первую очередь, и почему это не базы и фреймворки.
  • Поговорим о том, как принимать решения вовремя. В начале проекта мы вынуждены принимать десятки решений, а потом становимся их заложниками. Например, у нас ещё нет ни малейшего представления о данных, а мы уже выбираем способ их хранения. Хорошо ли данные лягут в реляционную базу или лучше выбрать Mongo? Показатель хорошей архитектуры — возможность принимать ключевые решения как можно позже, когда информации достаточно.
5
Тема 4. Прожарка Clean Architecture. Разбор антипаттернов
24 минуты

Евгений Лукьянов (о нём ниже) с некоторым цинизмом разбирает типичные ошибки при имплементации Clean Architecture. Пересказывать бесполезно, лучше посмотрите :)
6
Бонус-трек. Куда идти дальше
4 минуты

К этому моменту вы уже будете знать, как бороться со сложностью, которую порождает неверно выбранная архитектура. Но хаос ещё не повержен, и вам предстоит преодолеть множество проблем. Мы расскажем о нашем подходе к их решению и о том, как этим подходом можно овладеть в разумные сроки.
1
Введение. Фундаментальная теорема Software Engineering
18 минут, тест

Разбираем первопричины быстрого превращения проекта в легаси. Кто виноват: неправильно выбранные технологии, некомпетентные менеджеры или архитектура, которую легко сломать.
Почему засилье технического долга на проекте в первую очередь бьет по разработчикам.
Откуда берется сложность на проекте и почему микросервисы её не уменьшают.
Антипаттерны модульности и как с ними бороться.
2
Тема 1. Модульность. Какой модуль самый главный?
49 минут + тест + домашнее задание

  • Разбираемся, почему модульность важна. Учимся трюку, как, представляя иерархию организации вместо иерархии модулей, понять, насколько архитектура хороша.
  • Раз и навсегда выясним, кто от кого должен зависеть: модуль бизнеса от entity или entity от модуля бизнеса.
  • Разберем типичные антипаттерны модульности: когда на бумаге все гладко, а в имплементации Big Ball of Mud ©.
  • Поговорим, когда микросервисы нам друг, а когда враг. И Java/PHP/Python не лучший выбор для enterprise-приложения.
3
Тема 2. От MVC до Layered Architecture
37 минут

  • Сервисный слой — это антипаттерн.
Разбираемся:
- где всё-таки должна находиться бизнес-логика и 
- как сделать так, чтоб она не расползалась по всему проекту.

  • Проследим типичную эволюцию enterprise-приложения от «да тут просто CRUD» до «Ох, у нас же слоёная архитектура, чего она выглядит как ком грязи»
4
Тема 3. Clean Architecture
38 минут + тест + домашнее задание

  • Поговорим, как приложению управлять технологиями.
  • Фреймворки и базы данных — это частности, главное — понимание задачи и подход к её решению.
  • Расскажем, чему в проекте стоит уделять внимание в первую очередь, и почему это не базы и фреймворки.
  • Поговорим о том, как принимать решения вовремя. В начале проекта мы вынуждены принимать десятки решений, а потом становимся их заложниками. Например, у нас ещё нет ни малейшего представления о данных, а мы уже выбираем способ их хранения. Хорошо ли данные лягут в реляционную базу или лучше выбрать Mongo? Показатель хорошей архитектуры — возможность принимать ключевые решения как можно позже, когда информации достаточно.
5
Тема 4. Прожарка Clean Architecture. Разбор антипаттернов
24 минуты

Евгений Лукьянов (о нём ниже) с некоторым цинизмом разбирает типичные ошибки при имплементации Clean Architecture. Пересказывать бесполезно, лучше посмотрите :)
6
Бонус-трек. Куда идти дальше
4 минуты

К этому моменту вы уже будете знать, как бороться со сложностью, которую порождает неверно выбранная архитектура. Но хаос ещё не повержен, и вам предстоит преодолеть множество проблем. Мы расскажем о нашем подходе к их решению и о том, как этим подходом можно овладеть в разумные сроки.
Урок 1/8: Введение. Фундаментальная теорема Software Engineering

18 минут видео + тест

Разбираем первопричины быстрого превращения проекта в легаси. Кто виноват: неправильно выбранные технологии, некомпетентные менеджеры или архитектура, которую легко сломать.

Почему засилье технического долга на проекте в первую очередь бьет по разработчикам.

Откуда берется сложность на проекте и почему микросервисы её не уменьшают.

Антипаттерны модульности и как с ними бороться.

Фундаментальная теорема Software Engineering
Урок 1/8: Введение. Фундаментальная теорема Software Engineering

18 минут видео + тест

Разбираем первопричины быстрого превращения проекта в легаси. Кто виноват: неправильно выбранные технологии, некомпетентные менеджеры или архитектура, которую легко сломать.

Почему засилье технического долга на проекте в первую очередь бьет по разработчикам.

Откуда берется сложность на проекте и почему микросервисы её не уменьшают.

Антипаттерны модульности и как с ними бороться.

Фундаментальная теорема Software Engineering
Это не о курсе, а о нашей школе в целом. У нас много всего.
Максим
Ведущий инженер по разработке в банке
Курс отличный. Честно не знаю что можно было бы добавить. Многие вещи про которые Сергей говорил успел прочувствовать на себе, но до прослушивания не мог структурировать в голове. Подача материала тоже отличная, из-за этого курс слушался на одном дыхании. Отдельным бонусом было сообщение от Евгения по моей ситуации, я не ожидал настолько развернутого ответа. По итогу курс 10 из 10, а за такую цену это прям подарок.
Александр
Пишу вам не для того, чтобы увеличить глубину мешков под вашими глазами, а чтобы поделиться успехами после вашего курса.
Меня позвали тут недавно писать api-платформу к бигдате в Теле2. Пилить все надо будет с нуля - включая сбор
требований и арх.характеристик, выбор архитектуры, ну и вот этого всего, что было на курсе )) У ребят крутая инфраструктура,
хороший подход к разработке и нет ограничений на используемые технологии, да и вообще свобода в разумных пределах.
Ну и предметка интересная + спарки, хадупы, тоже интересно было бы их тоже пощупать.
А то финтех в Сбере уже выжег практически полностью))
Может это все и похоже на стандартный отзыв к ВАЙТИ курсам, но большое вам спасибо.
Ваши лекции точно для меня не прошли зря :)

ну и да, забыл добавить. денех дали больше. по моим меркам так вообще много))

Собес был необычный. Я позадавал вопросы из вашего списка, всем остался удовлетворен. Скинул код курсача и ссыль на сам курс, лид посмотрел, сам записался) Говорит - код твой видел, экспертов по жабе, спрингу вот этому всему у нас нет, по бигдате гонять смысла не видим, инструменты знаешь

Виталий
Каждый контакт с ребятами возвращает меня к жизни и снова начинаю снова любить свою профессию,
вернулся интерес к ней- сумели показать под новым углом на то что казалось уже знакомо и понятно до зубной боли.

Увы каждодневная рутина на текущей работе подрывает мотивацию очень эффективно,
с курсом и общением с ребятами я снова ожил, скажем вот точно нет ни тени сомнения в необходимости курса

Поэтому вопрос, когда будут новые наборы на максимальный тариф снова.
Мне надо еще раз зайти на курс и пройти по настоящему и по правильному этот курс, денег не жалко, выхлоп в разы больше вложений.
Когда будут новые наборы, чтобы зайти в трек?
Ольга
По моему скромному мнению, курс — просто огонь. Один из лучших онлайн-курсов на IT тематику, которые я когда-либо проходила. В отличии от распиаренных всем известных школ в духе «научим быть тимлидом и еще кем угодно за полгода с нуля» ребята дают действительно стоящую информацию, которая станет отличным шагом в сторону вашего профессионального роста. На курсе не разбираются какие-то отдельные инструменты, а даются универсальные знания, необходимые каждому хорошему айтишнику. Отдельно можно отметить структурированность и подачу материала, отзывчивость преподавателей и ооочень много практики.
Артём
Лидер бэк-энд разработки
Курс понравился. Я думаю даже превзошёл ожидания, так как я шёл в основном из-за DDD, а на курсе вообще все лучшие практики освещались.
Кое-что из изученного предложил команде (feature toggling, trunk based development), собираемся внедрять.
Сложность применения знаний в том, что другие члены команды ими не обладают, и им нужно тоже изучать.
К сожалению не хватило времени на ДЗ.
Из минусов скажу, что не всегда соблюдалось расписание по занятиям, если бы были ровно 2 недели на домашки было бы немного легче. С другой стороны, я тоже мог более ответственно отнестись и найти время :)
С ребятами общаемся в общем чате, пару раз задавал интересующие вопросы, отвечали.
Моя ситуация довольно часто встречается на рынке: устроился на работу в хорошую компанию, но на старый проект, потом несколько лет скитался по разными проектами внутри компании, но большинство проектов было с устаревшим стеком технологий и архитектурой покрытой мхом. В один прекрасный момент я понял, что мои знания все еще подходят для выполнения текущих обязанностей, но уже явно не годятся для выхода обратно на рынок — нужно актуализировать. Брать и учить очередные фреймворк за фреймворком можно и я этим какое-то время занимался в свободное время, но общей картины это не дает. Хотелось генерализовать информацию, посмотреть на системы, которые я пишу, «с высоты птичьего полета». Вот примерно на этом моменте я и наткнулся на рекламу StringConcat. Курсов сейчас очень много, но эти ребята привлекли тем, что на открытом уроке рассказывали о том же, чем я интересовался сам, пытаясь собрать какую-то ясную картину по профессии у себя в голове. В итоге вписался в движуху и не пожалел — курс хорошо структурирует информацию, образует некоторую «сетку» в голове, на которую можно уже спокойно накидывать те самые очередные фреймворки. Очень рекомендую не пожалеть времени и написать курсовую работу — по моему мнению это самое главное в этом курсе.
Николай
С 3его курса начал работать в энергетике, потом занялся пром автоматикой и параллельно разрабатывал сложные отчёты в эксельке с макросами и всякой логикой на вба. В 2016 сделал годовой курс по джаве и с этого момента занимаюсь бизнес разработкой. Сначала финансовый стартап с собственным кассовым решением, интеграция с банками и государством, спаси и сохрани xml с русскими тэгами.
Позже аутсорс и опять финансы, всё-таки java прочно сидит в этом секторе. Всё это так или иначе приправленно какими-то ci/cd решениями и иногда скудной автомацией. Ну и стандартно: у нас джира и мы делаем аджайл.В итоге хорошие задачи, сильная технически команда, тех скилы качаются, но постоянно переработки, нагрузка и беспорядок. В общем как у многих, меряемся фреймворками.

Главное что мне показал курс — можно работать по другому, нужно работать по-другому. Структуризация процессов это не болтовня, это способ распределять нагрузку и эффективно работать продолжительное время. За условные 8 часов действительно двигать проект.На мой взгляд именно другой взгляд на разработку, без неоправданной паники — то что показывают на курсе. В итоге, не важно используют ли водопадную модель или DDD, важно правильный инструмент в каждой конкретной задаче.Именно это понимание позволило мне структурировать свои знания, составить список требований к работе и сначала попробовать внедрить на текущем месте работы, а потом перейти в более сильную компанию. Потому что если мы не видели как работать по другому, то думаем что это невозможно. Но по факту, я просто не знал как же я хочу работать и курс помог мне сегодня ответить на этот вопрос.
Полина
Очень интересно. Спасибо! Мне очень понравился курс. Жду продолжения. Было ооочень сложно. Новое для меня — вообще всё. И DDD, и TDD, и котлин, и инфраструктура (самое трудное). То есть для меня — огромное количество новых знаний. Это здорово! Правда, в котлин я еще не очень погрузилась, но познакомилась хотя бы. Первое впечатление такое — что писать на нём проще, а читать — сложнее. На TDD сил пока не хватило) Это надо будет отдельно как-нибудь освоить.
Максим
Ведущий инженер по разработке в банке
Курс отличный. Честно не знаю что можно было бы добавить. Многие вещи про которые Сергей говорил успел прочувствовать на себе, но до прослушивания не мог структурировать в голове. Подача материала тоже отличная, из-за этого курс слушался на одном дыхании. Отдельным бонусом было сообщение от Евгения по моей ситуации, я не ожидал настолько развернутого ответа. По итогу курс 10 из 10, а за такую цену это прям подарок.
Александр
Пишу вам не для того, чтобы увеличить глубину мешков под вашими глазами, а чтобы поделиться успехами после вашего курса.
Меня позвали тут недавно писать api-платформу к бигдате в Теле2. Пилить все надо будет с нуля - включая сбор
требований и арх.характеристик, выбор архитектуры, ну и вот этого всего, что было на курсе )) У ребят крутая инфраструктура,
хороший подход к разработке и нет ограничений на используемые технологии, да и вообще свобода в разумных пределах.
Ну и предметка интересная + спарки, хадупы, тоже интересно было бы их тоже пощупать.
А то финтех в Сбере уже выжег практически полностью))
Может это все и похоже на стандартный отзыв к ВАЙТИ курсам, но большое вам спасибо.
Ваши лекции точно для меня не прошли зря :)

ну и да, забыл добавить. денех дали больше. по моим меркам так вообще много))

Собес был необычный. Я позадавал вопросы из вашего списка, всем остался удовлетворен. Скинул код курсача и ссыль на сам курс, лид посмотрел, сам записался) Говорит - код твой видел, экспертов по жабе, спрингу вот этому всему у нас нет, по бигдате гонять смысла не видим, инструменты знаешь

Виталий
Каждый контакт с ребятами возвращает меня к жизни и снова начинаю снова любить свою профессию,
вернулся интерес к ней- сумели показать под новым углом на то что казалось уже знакомо и понятно до зубной боли.

Увы каждодневная рутина на текущей работе подрывает мотивацию очень эффективно,
с курсом и общением с ребятами я снова ожил, скажем вот точно нет ни тени сомнения в необходимости курса

Поэтому вопрос, когда будут новые наборы на максимальный тариф снова.
Мне надо еще раз зайти на курс и пройти по настоящему и по правильному этот курс, денег не жалко, выхлоп в разы больше вложений.
Когда будут новые наборы, чтобы зайти в трек?
Ольга
По моему скромному мнению, курс — просто огонь. Один из лучших онлайн-курсов на IT тематику, которые я когда-либо проходила. В отличии от распиаренных всем известных школ в духе «научим быть тимлидом и еще кем угодно за полгода с нуля» ребята дают действительно стоящую информацию, которая станет отличным шагом в сторону вашего профессионального роста. На курсе не разбираются какие-то отдельные инструменты, а даются универсальные знания, необходимые каждому хорошему айтишнику. Отдельно можно отметить структурированность и подачу материала, отзывчивость преподавателей и ооочень много практики.
Артём
Лидер бэк-энд разработки
Курс понравился. Я думаю даже превзошёл ожидания, так как я шёл в основном из-за DDD, а на курсе вообще все лучшие практики освещались.
Кое-что из изученного предложил команде (feature toggling, trunk based development), собираемся внедрять.
Сложность применения знаний в том, что другие члены команды ими не обладают, и им нужно тоже изучать.
К сожалению не хватило времени на ДЗ.
Из минусов скажу, что не всегда соблюдалось расписание по занятиям, если бы были ровно 2 недели на домашки было бы немного легче. С другой стороны, я тоже мог более ответственно отнестись и найти время :)
С ребятами общаемся в общем чате, пару раз задавал интересующие вопросы, отвечали.
Моя ситуация довольно часто встречается на рынке: устроился на работу в хорошую компанию, но на старый проект, потом несколько лет скитался по разными проектами внутри компании, но большинство проектов было с устаревшим стеком технологий и архитектурой покрытой мхом. В один прекрасный момент я понял, что мои знания все еще подходят для выполнения текущих обязанностей, но уже явно не годятся для выхода обратно на рынок — нужно актуализировать. Брать и учить очередные фреймворк за фреймворком можно и я этим какое-то время занимался в свободное время, но общей картины это не дает. Хотелось генерализовать информацию, посмотреть на системы, которые я пишу, «с высоты птичьего полета». Вот примерно на этом моменте я и наткнулся на рекламу StringConcat. Курсов сейчас очень много, но эти ребята привлекли тем, что на открытом уроке рассказывали о том же, чем я интересовался сам, пытаясь собрать какую-то ясную картину по профессии у себя в голове. В итоге вписался в движуху и не пожалел — курс хорошо структурирует информацию, образует некоторую «сетку» в голове, на которую можно уже спокойно накидывать те самые очередные фреймворки. Очень рекомендую не пожалеть времени и написать курсовую работу — по моему мнению это самое главное в этом курсе.
Николай
С 3его курса начал работать в энергетике, потом занялся пром автоматикой и параллельно разрабатывал сложные отчёты в эксельке с макросами и всякой логикой на вба. В 2016 сделал годовой курс по джаве и с этого момента занимаюсь бизнес разработкой. Сначала финансовый стартап с собственным кассовым решением, интеграция с банками и государством, спаси и сохрани xml с русскими тэгами.
Позже аутсорс и опять финансы, всё-таки java прочно сидит в этом секторе. Всё это так или иначе приправленно какими-то ci/cd решениями и иногда скудной автомацией. Ну и стандартно: у нас джира и мы делаем аджайл.В итоге хорошие задачи, сильная технически команда, тех скилы качаются, но постоянно переработки, нагрузка и беспорядок. В общем как у многих, меряемся фреймворками.

Главное что мне показал курс — можно работать по другому, нужно работать по-другому. Структуризация процессов это не болтовня, это способ распределять нагрузку и эффективно работать продолжительное время. За условные 8 часов действительно двигать проект.На мой взгляд именно другой взгляд на разработку, без неоправданной паники — то что показывают на курсе. В итоге, не важно используют ли водопадную модель или DDD, важно правильный инструмент в каждой конкретной задаче.Именно это понимание позволило мне структурировать свои знания, составить список требований к работе и сначала попробовать внедрить на текущем месте работы, а потом перейти в более сильную компанию. Потому что если мы не видели как работать по другому, то думаем что это невозможно. Но по факту, я просто не знал как же я хочу работать и курс помог мне сегодня ответить на этот вопрос.
Полина
Очень интересно. Спасибо! Мне очень понравился курс. Жду продолжения. Было ооочень сложно. Новое для меня — вообще всё. И DDD, и TDD, и котлин, и инфраструктура (самое трудное). То есть для меня — огромное количество новых знаний. Это здорово! Правда, в котлин я еще не очень погрузилась, но познакомилась хотя бы. Первое впечатление такое — что писать на нём проще, а читать — сложнее. На TDD сил пока не хватило) Это надо будет отдельно как-нибудь освоить.
Прочли сами, покажите другим
Поскольку курс подходит для разработчиков разных уровней, его можно рассылать коллегам и друзьям-разработчикам без риска для репутации. Распространение знаний — путь к развитию нашей индустрии.