Курс помогает расширить и систематизировать знания по разработке бэкенда, сократить кривую обучения до лида с 5 до 2 лет и стать грамотным техническим специалистом. Авторы разбирают лично изученные грабли и рассказывают о подходах и практиках, которые применяют ThoughtWorks, Yandex и Google.
Разработка и эксплуатация Enterprise-приложений на Java и Kotlin без боли и сожалений
Практический курс
Формат
Лекции-вебинары и практические задания
Объём
7 тематических блоков из 20
4 часа лекций и практики в неделю, в сумме 28 астрономических часов
Длительность
2 месяца
+2 месяца на курсовой проект, если решите его делать. Начало курса 26 июля 2021
Все знают, что ПО нужно писать правильно, но всё равно пишут как получится.

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

Курс не учит очередной хайповой технологии, а раскрывает универсальные принципы и современные подходы лидеров отрасли: как заложить крепкий фундамент проекта, выстроить эффективные процессы и выжить в постоянно меняющихся условиях. Мы отвечаем на три фундаментальных вопроса:
Как разработать продукт, за который не стыдно
Проблема. По началу всё идёт хорошо, но потом проект превращается в зиккурат из костылей и противоречий. Бизнес требует новых фич и не даёт времени на рефакторинг, который «не нужен пользователям». На проде всплывают удиви­тельные баги. Никто не знает, как работает ключевой модуль, а кто знал — уже на пенсии, ушёл к конкурентам или умер. Когда же проект переписывают заново, он за полгода возвращается в прежнее состояние.

Решение. Мы поговорим о подготовке архитектуры к постоянным изменениям. В разделе о Domain Driven Design вы узнаете, как строить софт, который решает проблемы, а не создаёт их. Вы увидите, что на самом деле между технарями и бизнесом нет противоречий. Ещё мы разберём, как собирать требования и договариваться с бизнесом, а также что такое разработка через тестирование и зачем она нужна.
Пример гексагональной архитектуры проекта

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

Решение. Вы поймёте, как выстроить инфраструктуру проекта, которая будет помогать команде. Узнаете, что же такое Continuous Integration и Continuous Delivery на самом деле. Мы рассмотрим вопросы мониторинга, логирования, конфи­гурирования. Разберём, как добиться совместимости релизов и что делать при пожаре на проекте.
Коммит, деплой на прод и результат на графике мониторинга

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

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

Какие темы охватывает курс
Курс очень большой, поэтому мы поделили его на три раздела. Сейчас доступен первый. Второй планируем выпустить в начале сентября, а третий пока в разработке
Лекции организованы в логической последовательности. В первом разделе мы закладываем бизнес-логику программы, её ядро, без которого всё остальное не будет работать. Во втором — подключаем механизмы коммуникации и хранилища данных, выстраиваем инфраструктуру. Третий раздел посвящен эксплуатации и сопровождению.
Раздел первый
01. Разработка и управление требованиями
Какие бывают требования. Как подстраиваться под их постоянное изменение. Как оформлять требования: User stories или Features?

02. Инфраструктура проекта: что делать на начальном этапе
Системы сборки и стандарты кода. Continuous Integration и Continuous Delivery. Модели организации исходного кода и модели ветвления. Автоматизация сборки. Выбор серверов и стендов.
03. Архитектура: с высоты птичьего полёта
Архитектурные стили. Какие бывают и чем характеризуются. Проектирование архитектуры, готовой к изменениям.

04. Архитектура: ближе к коду
Архитектура на низком уровне. Метрики: cohesion, coupling, как мерить и как собирать. Принципы SOLID. Модульность.

05. Разработка через тестирование
Подход Test Driven Development: сначала пишем тест, а потом код, который его проходит. Пишем тест посложнее, пишем код. Ополаскиваем, повторяем. История и преимущества такого подхода.
06. Domain Driven Design
Как управлять сложностью предметной области. Почему её модель важнее технических и инфраструктурных вопросов, и как в конце концов применить эту модель к своему проекту.

07. Микросервисы
Как делить приложение на микросервисы и какого размера они должны быть. Почему микросервисы не панацея. Инфраструктура для микросервисов. Когда они действительно нужны, а когда нет. Техники деплоя.
Раздел второй (в разработке)
08. Тесты и тестирование
Какое бывает тестирование и что требуется от QA-инженера. Как организовать автоматические тесты так, чтобы потом не было мучительно больно. Почему ручное тестирование — признак больших проблем на проекте.

09. Базы данных
Как подобрать хранилище под конкретную задачу. Виды хранилищ и их особенности. Критерии выбора. Собственные сервера, облачные, распределенные, транзак­ционные и прочие. Способы доступа к хранилищам.
10. Брокеры сообщений
Какие бывают, зачем нужны, основные принципы работы. Как выбрать брокер под ваши требования.

11. Взаимодействие с внешним миром
Разработка и поддержка собственного API. Разновидности межмашинной коммуникации. Подключение к внешним системам. Протоколы, bulkhead, circuit breaker, rate limiter. Зачем все они нужны и как их правильно использовать.
12. Конфигурирование приложений
Как правильно управлять конфигурациями и настройками. Требования и грабли систем управления настройками.

13. Внутри приложения
Конфигурация приложения и его структура. Отложенные задачи, блокировки, управление ресурсами. Старт и остановка приложения, его жизненный цикл.
Раздел третий (в разработке)
14. Логирование и мониторинг
Что, сколько и куда логировать, чтобы не утонуть в бесполезных логах. Организация доступа к логам. Виды пожаров на проде и как их тушить. Инструменты для рантайм-трассировки. Тюнинг GC. Диагностика краха JVM и нехватки пула потоков.

15. Организация рефакторинга
Основные паттерны, метрики, совместимость. Хранилища, API, модули. Как продавать рефакторинг владельцам продукта и его политический аспект.

16. Безопасность
Как защитить данные, чтобы они не попали в Даркнет сразу после релиза. Место безопасности в проекте. OWASP Top-10. SSDLC, WAF. Модели разграничения доступа.
17. Техники увеличения производительности
Горизонтальное и вертикальное масштабирование. Индексация, секционирования, шардирование. Кеши и перенос ответственности.

18. Техники увеличения отказоустойчивости
Нагрузочное тестирование: как и какими инструментами проводить и на какие параметры смотреть. Хаос-тестирование. Техники увеличения надёжности. Репликация, бэкапы, масштабирование. Реакция на ошибки и отказы.
19. Лучшие практики работы в команде
Code review, парное программирование и continuous refactoring. Взаимодействие с живыми людьми.

20. Бонус. Скриптинг и рантайм-кастомизация
Как кастомизировать приложение на ходу. Скриптовые движки, их особенности и безопасность.
Примеры лекций
Мы постарались выкинуть из лекций всё лишнее и сосредоточиться на главном — знаниях, проверенных на опыте.
Тестирование в парадигме Sensible Defaults — лучших практик, принятых в ThoughtWorks. У вас должна быть очень веская причина, чтобы не использовать их
Карта пользовательских историй помогает увидеть лес за деревьями
Чем микросвервисная архитектура отличается от других распределенных архитектур
Авторы курса
Евгений Лукьянов
В недавнем прошлом старший разработчик в Яндекс. Деньгах и ведущий разработчик в группе компаний FIX

Пишет код за деньги с 2009 года. Java/Kotlin-разработчик, участвовал в разработке медицинского и измерительного оборудования, помогал проводить Универсиаду в Казани, писал софт для крупных билетных операторов, налаживал техпроцессы и программировал в Behavox (UK). Участвовал в создании Яндекс. Кассы, наладил выпуск банковских карт Яндекса и разрабатывал единую платформу для платёжных сервисов.

Начинал с прошивок для железа и десктопа на asm и C/C++, затем перебрался в энтерпрайз. С 2014 варится в финтехе. Работал ведущим программистом ГК FIX: проектировал и разрабатывал банковские системы, менторил новичков, проводил стажировки, выступал на внутренних митапах.

Интересуется IT-безопасностью и построением надёжных систем, ведёт собственные проекты.

Сергей Бухаров
Senior Developer Consultant в ThoughtWorks

10 лет в IT. Начинал в казанских около государственных компаниях и единорогах. Разрабатывал бэкенд мобильного приложения для Swedbank — крупнейшего банка Прибалтики. Пять лет провёл в автоматизации медицины, где баги могут стоить жизни. Там научился отказоустойчивости и DDD. Участвовал в разработке стартапов, медицинских систем, банковского ПО, а также монструозных телеком-систем, обрабатывающих чудовищный СМС-трафик.

Сейчас работает в сингапурском отделении ThoughtWorks, под одним логотипом с Мартином Фаулером и Нилом Фордом. Компания стояла у истоков Agile manifesto и широко известна применением лучших практик. В ThoughtWorks Сергей консультирует команды клиентов по архитектуре проектов, участвует в разработке стратегий рефакторинга и обучении. Проводит вебинары и семинары по архитектуре.

За 10 лет видел множество проблемных, разжиревших от фич и невостребованных проектов, которые причиняли команде и владельцам нестерпимую боль.

Профиль Сергея в LinkedIn

Евгений и Сергей ведут блог, в котором рассказывают о своём опыте, бэкенд-разработке, граблях, коммитах и инсайтах.

Блог практикующих бэкенд-разработчиков
Формат курса
Это дистанционный курс с лекциями, практикой и курсовой.

Курс разбит на три раздела. Сейчас доступен первый, второй и третий будут позднее.

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

В практической части мы вместе с вами разбираем изученное и применяем знания к курсовой. Вы выполняете домашнее задание и получаете обратную связь.

Постановка учебной задачи по теме «Инфраструктура проекта»

Коммент Евгения к коммиту участника курса в GitHub. Мы ревьювим ваш код, а не диаграммы
После лекций вы пишете курсовой проект по первому разделу теории: основу бэкенда системы, приближенной к реальным задачам бизнеса.

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

Когда выйдут второй и третий разделы теории, мы продолжим поэтапно развивать курсовую. В конце всего курса у вас должна получиться полноценная рабочая система. Если вы её опубликуете, она не умрёт и будет исправно работать в боевых условиях.

Периодически мы проводим тематические вебинары для участников. Разбираем рабочие кейсы, отвечаем на вопросы, советуем в меру компетенции. Если вы столкнетесь с проблемой на рабочем проекте, приходите разбираться. Каждый вебинар посвящён определённому разделу курса. Мы сообщим, когда появится расписание.
Необходимые знания
Курс рассчитан на практикующих разработчиков. Чтобы во всём разобраться и получить от курса максимум пользы, вам потребуются:
  1. Владение Java и Kotlin.
  2. Опыт работы на коммерческих проектах.
  3. Знакомство с основными паттернами и инструментами разработки.
Если вы только начинаете изучать программирование, вам будет сложно. Начинающим мы советуем начать с курса других авторов:
Backend-разработка на Kotlin.
Что ожидать от курса
При условии, что вы посмотрите все лекции, сделаете практику и прочтёте хотя бы половину из списка литературы.

  1. Систематизируете знания и справитесь с синдромом самозванца. Познаете принципы и основные грабли энтерпрайза от сбора требований до тушения пожаров на проде.
  2. Получите полное руководство по созданию энтерпрайз-приложений.
  3. Разберётесь, что не так с вашим приложением, и разработаете план его улучшения.
  4. Будете готовы к собеседованиям в крупные компании. Вас не поставят в тупик вопросы про SOLID

Курс требует труда и вовлечения. Звучит пафосно, но мы серьезно: вас ждёт много практики и непривычных концепций. Чтобы их осознать и встроить в свою картину мира разработки, потребуются время и некоторые усилия. Закладывайте минимум час в день на занятия.

Мы знаем, что учиться новому сложно. Поэтому мы будем периодически напоминать вам о сроках сдачи домашних работ и курсовой и мотивировать в меру сил.
Запись на курс
Начало занятий — 26 июля 2021.

По предыдущим потокам мы знаем, что не у всех есть время на домашку, кто-то не планирует писать курсовую или приходит со своим проектом. Поэтому первый блок курса доступен в трёх вариантах.
Экспресс
Лекции и практические занятия в группе.

2 месяца, по 4 часа в неделю лекций и практики. В сумме 28 астрономических часов, из них 18 часов практики.

Для тех, у кого нет времени на домашние работы и курсовую.

45 000 ₽
за первый блок
Выбрать
Индивидуальный
Всё, как в Базовом, но в качестве курсовой вы работаете над своим проектом. Мы будем активно помогать: ревьювить код и советовать.

Для тех, кто хочет разобраться в теории и попутно решить рабочие задачи.

90 000 ₽
за первый блок
Выбрать
Ответы на вопросы
Можно ли просто купить ролики с лекциями?
Мы уверены, что одних лекций мало. Чтобы прочувствовать все грабли и глубоко понять принципы, нужна практика и обратная связь. На курсе вы сделаете полноценное приложение и закрепите усвоенный материал. А ещё мы проводим вебинары, где вы сможете задать накопившиеся вопросы.
Как пройти курс за счет компании?
Мы дадим вам чек, чтобы вы компенсировали часть стоимости, или подготовим договор на обучение с вашей компанией. У нас нет лицензии вуза, поэтому вы не сможете получить налоговый вычет.
Можно ли пройти практику со своим проектом?
На практике после лекций мы разбираем типовые задачки. Курсовой проект вы либо выбираете из подготовленных нами, либо приходите со своим. Для этого выбирайте Индивидуальный вариант участия.
А вдруг мне не хватит скилов?
Напишите нам на course@stringconcat.com, мы свяжемся с вами и поможем оценить ваш уровень.
А если я не знаю Java и Kotlin и не собираюсь на них переходить?
Знание Java и Kotlin не критично. Курс на самом деле не про языки, а про практики разработки, подходы и концепции. Поэтому вы освоите главное и без знания языка.

Java и Kotlin нужны для домашек и курсовой. Мы много работали с этими языками, знаем их особенности и сможем подсказать по коду. Так же тщательно ревьюить на других языках мы не сможем, поэтому выбирайте вариант «Экспресс».
А если мне не понравится?
Оставьте заявку и посмотрите общедоступные лекции.
Когда будут доступны остальные разделы курса?
Мы как раз над ними работаем. Второй планируем выпустить в начале сентября 2021, а третий пока в разработке. Отправьте нам письмо, мы там обязательно напишем вам, когда они выйдут.
Поможете с рабочим проектом?
Да. На практических занятиях можно задавать вопросы и по рабочим проектам. А если вам нужно больше нашего участия, выбирайте «Индивидуальный» и работайте над своим проектом в качестве курсовой.
Как будут проходить занятия?
Два месяца вы смотрите лекции в записи, а раз в неделю участвуете в удалённой встрече. На встрече мы разбираем теорию на примерах, комментируем домашки и отвечаем на вопросы. Иногда вопросов бывает много и занятия затягиваются на 2 часа и дольше.

Если выберите вариант с курсовой, после двух месяцев теории у вас будет еще два месяца на курсовую. По будням можно задавать вопросы, советоваться и показывать код. В конце вы защищаете курсовую.
У меня остались ещё вопросы!
Напишите нам на course@stringconcat.com, мы ответим.
Made on
Tilda