Курс о том, как писать простой код, который решает сложные задачи, оставаясь понятным и поддерживаемым
Делимся общими принципами и учим распознавать тонкие места и избегать распространённые ошибки
5 чек-листов
5 недель
Больше 20 примеров
простой
(2) Когда программист сам за вечер для простой задачи делает простой скрипт, который выкинет уже на следующий день — проблем нет, код может быть какой угодно.
Но как только растёт масштаб — качество кода становится существенным аспектом.
(1) Курс подойдёт, если вы занимаетесь проектом, у которого увеличивается (или будет увеличиваться) масштаб.
когда подойдёт курс
Типичные сценарии,
(3) Новые фичи добавлять долго, потому что имеющаяся реализация негибкая, функции сложные, сроки разрастаются, а когда наконец выкатываем новую версию, пользователи обнаруживают много новых багов.
(4) Когда нужно решить конкретную ограниченную задачу здесь и сейчас — можно спросить у ЛЛМки и, невчитываясь, запускать код. Если надо доработать — подкрутим промт и получим целиком новый скрипт.
(5) Но если планируем развивать проект, добавлять фичи, фиксить баги, слушать пользователей и адаптировать продукт под требования рынка — качество кода становится важным, потому что довольно быстро при увеличении масштаба ЛЛМка перестаёт справляться — и тогда разбираться придётся уже нам самим.
Запускаете проект не на один вечер, а на много месяцев и лет
Масштаб ВРЕМЕНИ
(6) Когда нужно решить конкретную ограниченную задачу здесь и сейчас — можно спросить у ЛЛМки и, невчитываясь, запускать код. Если надо доработать — подкрутим промт и получим целиком новый скрипт.
(7) Но если планируем развивать проект, добавлять фичи, фиксить баги, слушать пользователей и адаптировать продукт под требования рынка — качество кода становится важным, потому что довольно быстро при увеличении масштаба ЛЛМка перестаёт справляться — и тогда разбираться придётся уже нам самим.
— Василий, расскажи, пожалуйста, что ты тут имел в виду? А как называется таблица с платежами? А в каком файле реализиован алгоритм обработки поступление платежа?… А почему так сложно-то?!
Пишем проект не в одно лицо, а командой — от двух и более человек
Масштаб команды
(8) Когда мы делаем простой тудушник, нет особой сложности понять, что как работает
(9) Когда нужно решить конкретную ограниченную задачу здесь и сейчас — можно спросить у ЛЛМки и, невчитываясь, запускать код. Если надо доработать — подкрутим промт и получим целиком новый скрипт.
(10) Но если планируем развивать проект, добавлять фичи, фиксить баги, слушать пользователей и адаптировать продукт под требования рынка — качество кода становится важным, потому что довольно быстро при увеличении масштаба ЛЛМка перестаёт справляться — и тогда разбираться придётся уже нам самим.
Мы пишем систему бронирования авиабилетов. Нужно учесть пассажиров, авиакомпании, продавцов, аэропорты, границы, визы, тарифы, чекины, отмены, переносы, стыковочные рейсы, доплата за багаж, особое питание, личные кабинеты, … — ааа, как это всё упомнить и учесть?!
Делаем проект для сложной предметной области с множеством сущностей и взаимодействий между ними
Масштаб системы
(11) В НАСА и JPL запрещено писать функции длиннее одной печатной страницы, использовать goto, рекурсию и динамическое выделение памяти. Потому что стоимость ошибки слишком высока.
(12) Мы не НАСА, но тоже хотим писать код, который будет работать no matter what.
Масштаб ответственности
(13) Разумеется, раз и навсегда не бывает: будущее невозможно предсказать, и у живого проекта всегда рано или поздно появится необходимость в переделке того, что уже было сделано.
(14) Но писать код так, чтобы не хотелось его выкинуть сразу после деплоя; так, чтобы работа с ним стала приностить удовольствие; чтобы вернулось ощущение всесильности, которое программисты обычно ощущают в начале пути — это возможно и даже не очень сложно. Достаточно развить насмотренность, замечать тонкие места и заранее устранять сложности.
Получили в наследство страшное легаси и хотим отрефакторить его раз и навсегда
Масштаб наследия
(2) Ещё не освоили основы и не участвовали в реальных проектах — ценность чистого кода будет неочевидна
(1) Вы решаете искуственные задачи с лит-кода и из олимпиад по программированию — код будет выкинут через минуту после завершения
(3) Хотите узнать 10 самых неожиданных функций JavaScript-а — мы не будем разбирать конкретные языки программирования
(4) У вас стартап на стадии «давай-давай» и вы проверяете по несколько гипотез в день — когда гипотеза «выстрелит», сможете переписать по-новой.
Курс 
не для вас
если
Больше всего
(1) Джуниорам+ и миддлам — вы уже изучили основные инструменты и применяете их для решения реальных задач. И теперь инструментами разработки становятся не только строки программ, но и их качество.
Тоже полезно
(2) Синьёрам и тимлидам— вы наверняка уже на опыте изучили довольно много. Курс поможет структурировать и обобщить уже известное и заполнить пробелы. Вы сможете системно улучшить качество работы вашей команды: уменьшить Time-to-Market, снизить количество багов. Сформулированные принципы помогут прокачивать подопечных и позволят не повторять одно и тоже на код-ревью.
подойдёт меньше
Джуниорам — вам ещё предстоит прокачать базу, узнать про циклы и функции, и прокачать насмотренность. Скорее всего вы ещё не сталкивались с теми проблемами, которые мы разбираем, поэтому ценность не будет сразу очевидна. Однако, вы всё равно можете пройти курс, чтобы быть готовым к будущему и не совершать ошибок новичков.
Кому подойдёт курс по уровню Мидл или джуниор
чего ждать
а чего не стоит
(2) Обсуждаем моделирование систем, наименование сущностей, общие паттерны и антипаттерны структурирования кода и данных
(1) Рассказываем общие принципы, даём универсальные инструменты
(2) Не разбираем конкретные паттерны ООП, 10 неожиданностей в JavaScript-е
(1) Не изучаем конкретные языки программирования и фреймворки
5 лонгридов. В каждом есть теория, примеры практики и ответы на важные вопросы, которые стыдно задать. Без воды, но с котами.
Что на курсе
Дополнительные материалы и душные врезки. Куча полезных ссылок для дополнительного погружения с  объяснением важности каждой; врезки с заумью, которые стоит читать, если вы  Антон или просто любите подушнить.
Вы спроектируете архитектуру проекта на основе собранных требований. Сделаете модель данных, опишете коммуникации, определите субдомены и архитектурные характеристики проекта. Всё это будет эволюционировать параллельно с новыми знаниями с курса.
Комьюнити учеников. Чат курса, где будем отвечать на вопросы и поддерживать друг друга. Остаётся навсегда. По итогу курса добавим вас ещё в «Чат сильных программистов» — комьюнити всех выпускников школы. Он никогда не затихает, при  этом с пользой и без лишнего флуда.
Q&A-сессия. В конце курса. В 16:00 по мск, чтобы собрать вас из всех часовых поясов.
одна большая домашка
на весь курс
Встречи—разборы домашек. По каждой домашке. Онлайн. Антон накануне смотрит домашки и общие выводы рассказывает на встрече. Можно смотреть в записи, но тогда не получится задать вопрос или что-нибудь уточнить.
4 урока
ПРОГРАММА КУРСА
16 января (четверг)
16:00 мск, чтобы захватить больше часовых поясов
Встреча-знакомство
вы предлагаете темы,
а Антон выбирает одну
и готовит материал
Новый факультатив
21 февраля (пятница) 16:00 мск, чтобы захватить больше часовых поясов
Q&A
с 12 февраля
по 20 февраля
Сдача
хвостов
Только для тарифов с обратной связью

*Нагрузка может быть меньше или больше. Зависит от вашего уровня подготовки, возможности схватывать информацию на лету и желаемого уровня погружения в курс.
Учеба 4-5 недель
≈10 часов в неделю*
Только для тарифов с обратной связью

Только для тарифов с обратной связью

Когда мы только начинаем проектировать системы, обычно нет ни внятных требований, ни времени на проектирование. После урока будет понятно, что даже в таких условиях можно собрать что-то рабочее.

Также в уроке разбиваем два антипаттерна — разбивание бизнес-логики по техническим шагам или по сущностям (entity service).
Урок 1. Работа с требованиями, разделение системы на элементы
Ключевые концепции и термины:

  • Работа с требованиями
  • Event Storming
  • Модель данных
  • Базовое сравнение микросервисов и монолитов
  • Система, форма и функция системы
Четверг
Встреча-знакомство
Урок 1
Четверг
16:00 мск
Программисты склонны принимать решения вокруг технологий, а не устройства бизнеса. Требования обычно этому не препятствуют. В уроке чиним это:  учимся проектировать системы на основе стратегического анализа бизнеса, подробнее изучаем распределенные и монолитные архитектурные стили.
Урок 2. Стратегический анализ бизнеса и архитектурные стили
Ключевые концепции и термины:

  • Strategic DDD, subdomains
  • Coupling & cohesion, temporal coupling, local & global complexity
  • Quality attributes/non functional requirements/architecture characteristics
  • Поиск характеристик и перевод бизнес-терминов в характеристики
  • Циклы жизни систем
Вторник
Сдача домашки №1
Четверг
Онлайн-разбор домашки
Четверг
Урок 2
Среда
Проверяем другим
15:00 мск
Добавляем внешние ограничения:  комплаенс, географические ограничения, количество инвестиций, общий уровень разработчиков. В уроке определяем и приоритизируем их.

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

Изучим новые архитектурные стили:  microkernel, pipeline, event-driven (привет, попуги!).
Урок 3. Внешние ограничения и документация
Ключевые концепции и термины:

  • Ограничения системы
  • Выбор вида БД в зависимости от характеристик
  • Выбор вида коммуникаций и брокера для событий
  • Fitness function
Вторник
Сдача домашки №2
Четверг
Онлайн-разбор домашки
Четверг
Урок 3
Среда
Проверяем другим
15:00 мск
Учимся рефакторить сложные системы: добавлять новую функциональность, выносить не подходящую по характеристикам, объединять сервисы, переписывать существующие сервисы и избавляться от антипаттернов вроде entity-сервисов.
Урок 4. Распиливаем монолит
Ключевые концепции и термины:

  • Добавление новой функциональности в отдельных сервисах
  • Объединение сервисов
  • Вынос функциональности из монолита в сервис
  • Strangler Fig Application, Volatility Based Decomposition, Tactical Forking, Component-Based Decomposition
Вторник
Сдача домашки №3
Четверг
Онлайн-разбор домашки
Четверг
Урок 4
Среда
Проверяем другим
15:00 мск
Цель: подвести общие итоги и обсудить необходимые шаги для дальнейшей работы. Разобраться, как описывать систему. Спланировать этап развития собственных навыков после курса и повторить концепции, пройденные в курсе.
Урок 5. Итоги и дальнейшие шаги
Ключевые концепции и термины:

  • Всё, что в курсе было
  • 4+1, C4, arc42, iso42010
Вторник
Сдача домашки №4
Четверг
Онлайн-разбор домашки
Четверг
Урок 5
Среда
Проверяем другим
15:00 мск
ПРИМЕР 1 НЕДЕЛИ ОБУЧЕНИЯ
Прочитать первую часть лонгрида, чтобы получше понять, что ждёт на курсе
VIP
Теория
— 5 лонгридов
— Список дополнительных материалов
— 1 факультатив (тему определим в процессе)

Практика и обратная связь
— Домашка с общей обратной связью Антона и других учеников
— Участие в общих еженедельных встречах — разборах домашек, где Антон подводит итоги и рассказывает о частых ошибках
— Личная письменная обратная связь на вашу домашку от Антона
— 45-минутная онлайн-консультация с Антоном тет-а-тет по окончании курса

Поддержка
— Q&A-сессия по окончании курса
— Чат участников с Антоном. Обсуждаем курс и всё, что вокруг. Антон отвечает на все вопросы. Остаётся навсегда.

Бонусы
— Доступ к материалам после окончания курса — 1 год
— Можно сдать одну домашку в течение 2 дней после дедлайна
— Именной электронный сертификат, если сдадите всю домашку и проверите все назначенные домашки коллег в рамках p2p проверки
— Скидка 20% на все курсы школы в течение года
Точно отработаете всё услышанное, получив личную обратную связь от Антона
мест
нет
В тусовке
Теория
— 5 лонгридов
— Список дополнительных материалов
— 1 факультатив (тему определим в процессе)

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

Поддержка
— Q&A-сессия по окончании курса
— Чат участников с Антоном. Обсуждаем курс и всё, что вокруг. Антон отвечает на все вопросы. Остаётся навсегда.

Бонусы
— Доступ к материалам после окончания курса — 9 месяцев
— Именной электронный сертификат, если сдадите всю домашку и проверите все назначенные домашки коллег в рамках p2p проверки
Если готовы пахать и интересуетесь опытом других. А ещё получить немного внимания Антона
Стоимость
Если возникли вопросы или хотите оплатить от юрлица — напишите на support@tough-dev.school, отвечаем в течение суток.
в рублях и в долларах
Можно оплатить четырьмя равными долями. Первую — сразу и потом по одной части каждые две недели.

Без кредитного договора и сложного одобрения. «Долями» могут взять 4% сервисного сбора, но если повезёт — не возьмут. Нам не везёт, но, говорят, бывает.

Если вам говорят, что выше 30К ₽ нельзя ,— напишите нам в поддержку и мы  предложим решение.
За курс можно получить налоговый вычет 13%
За курс можно получить налоговый вычет 13%
За курс можно получить налоговый вычет 13%
За курс можно получить налоговый вычет 13%
undefined
Уменьшится Time-to-market
— Простой код проще дорабатывать, добавлять новые фичи, развивать старые. Программисты не будут говорить «Тут столько всего наворотили, поэтому новую штуку реализовать невозможно, надо всё переписать сначала».
Как убедить компанию, чтобы за меня заплатили
Уменьшится время, необходимое на подключение новых программистов
—Новички смогут быстрее разобраться в существующем коде и начать приносить реальную пользу проекту.
Уменьшится количество багов
— В простом коде сложнее запутаться, не учесть тонких моментов из реального мира, столкнуться с неожиданными взаимосвязями в реализации, из-за которых изменение в одной части системы вызывают проблемы в другой.

Как убедить компанию, чтобы за меня заплатили
Как убедить компанию, чтобы за меня заплатили
Расскажите бизнесу, что получит компания после того, как вы внедрите знания из курса. А именно:
Согласовываете
Согласовываете с руководителем обучение или знакомите нас с руководителем, чтобы мы вам в этом помогли.
Обмениваемся документами
Мы выставляем счёт и отправляем приглашение для обмена документами в Диадок.
Присылаете реквизиты
Ваша компания оплачивает, а мы добавляем вас в участники и передаём контент.
Присылаете нам на почту реквизиты компании. Обычно их можно взять у HR, на сайте компании в разделе «Контакты» или в бухгалтерии. Если ваша бухгалтерия просит какой-то набор документов — приложите список, чтобы мы сразу прикрепили.
Даём доступ
По окончании присылаем закрывающие документы в Диадоке, а ваша бухгалтерия подписывает.
2
1
3
4
undefined
Согласовываете
Согласовываете с руководителем обучение или знакомите нас с руководителем, чтобы мы вам в этом помогли.
Для юрлиц стоимость немного выше: «Аптечка» — 35 000₽/$440. Это связано с необходимостью дополнительного документооборота.
Обмениваемся документами
Мы выставляем счёт и отправляем приглашение для обмена документами в Диадок.
Присылаете реквизиты
Присылаете нам на почту реквизиты компании. Обычно их взять можно у HR, на сайте компании в разделе «Контакты» или написав в бухгалтерию. Если ваша бухгалтерия просит какой-то набор документов — приложите список, чтобы мы сразу прикрепили.
Ваша компания оплачивает, а мы выдаём вам доступ к курсу.
Даём доступ
По окончании присылаем закрывающие документы в Диадоке, а ваша бухгалтерия подписывает.
Хочу учиться
за счёт компании
1
2
3
4
По окончании курса выдадим электронный сертификат тем, кто сдал вовремя все домашки и проверил все назначенные домашки коллег. Мы делаем сертификаты особенными. Чтобы хотелось похвастаться.

Например, так выглядел сертификат на курсе «Анализ систем», а какой будет на этом курсе — пока сюрприз.
Сертификат
*Для тарифов с обратной связью
Федя бoрщёв
Независимый CTO, 14 лет руководит программистами. В курсе приземляет полёт мысли на практику и помогает держать фокус.
Анатoлий Буров
Соосновал Главред, Таймстрайп и Конспект. Работал дизайнером и технологом в Студии Лебедева, в компании Tunnel Technologies программировал, дизайнил и руководил (вырос от программиста до CIO).
Марьяна Oныськo
Специализируется на создании нового и копает образование. Ex-МИФ, Attendify и Ciklum. В курсе отвечает за образовательный трек. Делает, чтобы знания лучше прилипали, а учиться было кайфово.
Эксперты курса
Комьюнити Школы
Все выпускники собираются в чате, где помогают друг другу — от бытовых советов по релокации до советов по выбору стека. Сейчас в чате 9 топиков и более 1000 активных участников.
По окончании курса добавим вас в наше
Участвовать в курсе «Анализ систем»
Где работают
наши ученики
ВОПРОСЫ-ОТВЕТЫ
Если не нашли ответа на вопрос, напишите на support@tough-dev.school. Отвечаем в течение суток.