🚀 Курс Patterns 2025

Курс Patterns 2025
Тимура Шемсединова

  1. Освоение паттернов на JavaScript и TypeScript
  2. Разбор нативной реализации паттернов
  3. Программа наставничества
  4. Еженедельные семинары
  5. Сообщество, которое поможет вам в развитии
  6. Предварительная подготовка

🔥 1 апреля: началась Предварительная подготовка

📅 1 мая: старт курса

Забронировать
Фото Тимура Шемсединова

Patterns 2025

Это разбор паттернов и принципов программирования с акцентом на их нативную реализацию в JavaScript и TypeScript.

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

Вы получите code review, обратную связь и валидацию ваших знаний от Тимура и команды опытных инженеров.

  1. Повышение гибкости, поддерживаемость и другие качества вашего кода.

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

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

  2. Структурировать, соединить, объединить знания

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

    Наша задача — помочь вам понять, как ваш практический опыт соотносится с фундаментальными подходами: когда уместно применять тот или иной паттерн и почему вы интуитивно приходили к похожим решениям.

  3. Улучшение взаимопонимания между программистами

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

    Понимание и использование паттернов способствует более точной и краткой передаче информации, а также снижает вероятность ее неверного восприятия.

  4. Повысить эффективность решений, которые вы предлагаете бизнесу

    Чем меньше времени вы тратите на разработку и поддержку кода — тем больше его остаётся на решение реальных бизнес-проблем.

    Чем эффективнее вы справляетесь с прикладными задачами — тем выше ваша ценность для команды, компании и рынка в целом. А значит — тем больше становится и ваша профессиональная свобода.

  5. Добавьте вес своим словам

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

Авторы, приглашённые эксперты и менторы

  1. Фото Тимура Шемсединова

    Тимур Шемсединов

    Автор тренинга, лектор и ведущий семинаров.

    30 лет в ИТ, open-source контрибьютор, эксперт в Node.js, JavaScript, архитектуре распределенных и нагруженных корпоративных систем и баз данных

  2. Фото Ильи Климова

    Илья Климов

    Приглашённый гость Помогает разобраться с паттернами во фронтенде и командной коммуникацией.

    21 год в ІТ, Staff Frontend Engineer @ GitLab

  3. Фото Дмитрия Нечая

    Дмитрий Нечай

    Ментор тренинга Patterns

    CHIEF ARCHITECT у PLATMA CTO в Handy.ai Лектор в КПІ и Metarhia

  4. Фото Дениса Отришко

    Денис Отришко

    Principal Engineer Node.js Core Contributor Metarhia Core Contributor

    10+ лет в продуктовой разработке

  5. Фото Тимура Севимли

    Тимур Севимли

    Senior SWE в Metactos OSS Contributor Metarhia Core Contributor

    Предприниматель. Сторонник open source.

  6. Фото Миколм Бєлочуба

    Микола Бєлочуб

    Senior SWE OSS Contributor Metarhia Core Contributor

    10+ лет в продуктовой разработке

Экосистема обучения и поддержки на примере одной недели

Примерное расписание выполнения заданий на одну неделю тренинга

В небольшой группе от 5 до 10 человек.

Продолжительность встречи — от 50 до 100 минут.

План обучения Patterns 2025

  1. Unit 1: Структуры и системы модульности (Week 1-4)

    Структура и модульность.

    Почему нужно переосмыслить и адаптировать GoF, SOLID и GRASP для современного JavaScript/TypeScript.

    Как это сделать?



    Задачи 1 Unit-a:

    • - Улучшение структуры и характеристик кода
    • - Оптимальное использование вычислительных ресурсов
    • - Понимание принципов построения комплексных приложений
    • - Понятные, поддерживаемые программные модули
    • - Меньше времени на выполнение повседневных задач
  2. 📆 Week 1: Характеристики кода и стратегии оптимизации

    🧩 Существует путь, который ведёт к радикальному улучшению структуры и характеристик кода. Мы рассмотрим принципы и шаблоны GoF, SOLID, GRASP — как их применять и что они дают. Характеристики кода: читаемость, надёжность, тестируемость, поддерживаемость, повторное использование, гибкость, безопасность. Оптимальное использование вычислительных ресурсов: процессор, память, ввод-вывод и когнитивные ресурсы разработчиков.



    ⭐ Характеристики кода и стратегии оптимизации, механизмы V8, SOLID: SRP, SoC

    ⭐ Принципы GRASP — распределение ответственности

    💡 Принципы SOLID

    💡 Паттерны GoF

    💡 Мономорфный и полиморфный код, inline-кэш, скрытые классы в JavaScript

  3. 🗓️ Week 2: Встроенные возможности в языке и платформе

    JavaScript имеет встроенные контракты: Thenable, Iterable, AsyncIterator, Callback-last, Callable, Cancelable, Observable, но культура разработки через контракты и интерфейсы не слишком распространена в сообществе. Как улучшить производительность разработки с помощью подхода, основанного на знаниях? Как шаблоны могут помочь нам в этом: реализовывать новые фичи быстро и эффективно, быть продуктивными, делать ежедневную работу интересной, оставаться мотивированными и избегать выгорания.



    ⭐ Контракты Callback и Callback-last-error-first

    ⭐ Контракт Thenable

    ⭐ Контракты Iterator и AsyncIterator

    ⭐ Promise

    💡 Паттерн Наблюдатель (Observer + Observable)

  4. 🗓️ Week 3: Инстанцирование: порождающие шаблоны и техники

    Порождающие шаблоны: Constructor, Singleton, Factory, Pool, Builder, Prototype, Flyweight, а также другие шаблоны и техники. Давайте найдём связанные принципы и переосмыслим прикладное значение: GRASP: Creator, Polymorphism, Information Expert SOLID: ISP (Interface Segregation Principle) А также разберёмся с такими концепциями, как Aggregation и Composition.

    Как экономить память и другие ресурсы? Как эффективно применять оптимизации и кэширование? Как разрабатывать крайне быстрый код, минимизировать latency, сделать его кросс-платформенным и понятным для коллег?



    ⭐ GRASP: 👉 Information Expert, Creator, Polymorphism

    ⭐ SOLID: Interface Segregation Principle (ISP)

    ⭐ Инстанцирование: Constructor, Factory Method, Object Pool

    ⭐ Декомпозиция, инстанцирование, инкапсуляция, агрегация, композиция, ассоциация, делегирование

    ⭐ Порождающие паттерны GoF: 👉 Builder, 👉 Prototype, 👉 Singleton, 👉 Flyweight

    ⭐ Паттерн Revealing Constructor — открытый конструктор

    💡 Фабрики и пулы объектов

    💡 Ассоциация, агрегация и композиция объектов

  5. 📆 Week 4: Изоляция и разделение ответственности (SoC)

    Separation of Concerns (SoC) — это общий инженерный принцип, направленный на создание гибких, надёжных и легко модифицируемых систем.

    Мы можем использовать следующие инструменты и подходы:

    - Шаблоны GoF: Mediator, Bridge, Abstract Factory, Strategy(в реализации на JavaScript — Map)

    - Системы модульности

    - Принципы GRASP: Information Expert, Indirection, Protected Variations

    - Принцип SOLID:SRP(Single Responsibility Principle)

    Эти подходы улучшают тестируемость кода и снижают затраты на интеграцию.



    ⭐ Структура приложений: системы модульности, пакеты и зависимости

    ⭐ Слои и внедрение зависимостей

    ⭐ GoF Patterns: 👉 Abstract Factory, 👉 Factory Method, 👉 Strategy, 👉 Pool

    ⭐ GRASP: Indirection Principle, Protected Variations

    💡 AsyncPool — шаблон асинхронного программирования (асинхронный пул) пул»

  6. Unit 2: Контрактное программирование и системы исполнения кода (Week 5-8)

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

  7. 🗓️ Week 5: Контракты: интерфейсы для взаимодействия компонентов

    Паттерны: Adapter (Wrapper), Facade, Bridge, Composite, Proxy, Promisify; Front Controller; GRASP: Low Coupling and High Cohesion; SOLID: LSP (Liskov); и SOLID: OCP (Open-Closed). Применение контрактов открывает возможность пошагового рефакторинга, устранения технического долга и повышения стабильности подсистем; снижения зависимости (связанности) между слоями и модулями. На уровне управления проектом это позволяет масштабировать команду, управлять приоритетами и принимать архитектурные решения.



    ⭐ Контрактное программирование

    ⭐ Layers and Low Coupling на примере конфига и транспорта

    ⭐ GoF: 👉 Adapter, 👉 Proxy, 👉 Facade, 👉 Composite

    ⭐ GRASP: Зацепление и связность — Coupling and Cohesion

    💡 SOLID: Liskov Substitution Principle (LSP) — Принцип подстановки Барбары Лисков

    💡 Семинар по адаптерам для Node.js и асинхронного программирования

  8. 🗓️ Week 6: Ослабление зацепления в коде через события и сообщения

    Следующий подход — это применение шин событий внутри приложения и между подсистемами. Это распространено в пользовательских интерфейсах, распределённых системах, совместном доступе к разделяемым ресурсам. На базе асинхронного и событийного программирования построено решение с неблокирующим вводом-выводом в Node.js. Мы рассмотрим GRASP: Pure Fabrication и Low Coupling; AsyncQueue, Async collections и другие.



    ⭐ События: EventTarget, EventEmitter

    ⭐ GRASP: Чистая выдумка — Pure Fabrication

    💡 GoF: Паттерн Наблюдатель Observer + Observable

    💡 Фазы Event-loop в V8 и Node.js

    💡 Стрим с разбором Event Loop и асинхронности

  9. 🗓️ Week 7: Streams: Потоки данных и преобразования

    Реактивное программирование развилось в отдельную парадигму; потоки и сигналы основаны на GoF: Observer; GRASP: Pure Fabrication и event-driven подходе с потоками данных и операторами преобразования данных. Это широко используется в сетевых протоколах, доступе к данным и файловым системам, разработке игр, финансовых и аналитических системах, управлении встроенными системами, телеметрии и других областях. Это даёт выразительный синтаксис, более высокий уровень абстракции, гибкость и производительность для улучшения пользовательского опыта.



    ⭐ Стримы: Readable, Writable, Transform, открытый конструктор, буферизация, backpressure

    💡 Асинхронность на RxJS и потоки событий

    💡 Работа с файлами, буферами и файловыми потоками

    💡 Actor model — модель акторов

  10. 🗓️ Week 8: Обработка ошибок: исключения Exceptions and Soft Failures Failures

    Мы рассмотрим лучшие практики обработки ошибок — как с исключениями, так и с доменными ошибками. Как Graceful shutdown, Gracefully recover и обработка доменных ошибок повысят общую производительность системы. Мы будем использовать Chain of Responsibility, SOLID, Promises, fallback-механизмы для некритических ошибок; GRASP: Protected Variations, а также кастомные, специфичные для JavaScript, AggregateError и Error.prototype.cause, а также сериализацию ошибок для передачи по сети.



    ⭐ Обработка ошибок, логирование и агрегирование

    ⭐ Семинар: Обработка ошибок — прикладных, операционных и доменных; исключения, восстановление и логирование

    💡 Реализация Graceful shutdown в Node.js, unhandled exceptions, async stack trace

  11. Unit 3: Среда исполнения прикладного кода (Week 9-12)

    Объединение всех рассмотренных техник и подходов в реальных условиях. В этом юните мы рассмотрим, как основные концепции построения структуры приложений, такие как контрактное программирование и паттерны, превращаются в работающие и масштабируемые приложения.

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

  12. 🗓️ Week 9: Семантика: выразительные DSL

    Для улучшения выразительности кода и ясности семантики любое сложное программное обеспечение требует создания DSL (языков, специализированных для предметной области). При разработке DSL можно использовать хорошо известные синтаксисы, такие как JSON, JSON5, Markdown и даже сам JavaScript.

    Мы рассмотрим паттерны: Command, Interpreter, State, Strategy, Visitor.

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



    ⭐ DSL (специализированные языĸи), AST, Pattern Interpreter, подмножество JavaScript, MarkDown, LISP

    ⭐ Pattern Interpreter — Реализация AST и LISP на JavaScript

    ⭐ Pattern Command

    ⭐ Example: Spreadsheet with formulas

    💡 CQS, CQRS, Event Sourcing, Транзаĸции

  13. 🗓️ Week 10: All-agnostic как стратегия по умолчанию

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

    Мы будем использовать изоляцию, GRASP: Controller, SOLID: DIP, принципы IoC и DI, интерфейсы и паттерн Strategy для отвязки от конкретных реализаций.



    ⭐ SOLID: DIP — Принцип инверсии зависимостей (Dependency Inversion Principle)

    ⭐ Service Locator

  14. 🗓️ Week 11: Масштабирование приложений и архитектурные стили

    На этой неделе мы рассмотрим, как проектировать системы, которые могут масштабироваться и развиваться эффективно, используя различные архитектурные стили: DDD, слоёная архитектура, SOA, микросервисы, событийная архитектура, монолитная, порты и адаптеры, чистая архитектура, Event-Sourcing, CQRS, Pipeline, Peer-to-Peer, Client-Server архитектура — и как применять SOLID, GRASP и GoF для реализации архитектуры.

  15. 🗓️ Week 12: Методология: как начать применять концепции

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



    ⭐ Bridge;

    ⭐ Mediator;

    ⭐ Как применять паттерны на примере Mediator и Bridge в ООП, ФП, мультипарадигменном стиле

  16. Unit 4: Архитектура и Бизнес (Week 13-16)

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

  17. 🗓️ Модуль: Software Structure & Architecture

    ⭐ Обзор и классификация архитектуры ПО

    ⭐ Многослойная архитектура ПО, DDD, чистая архитектура ПО

    ⭐ Структура приложения: модульность, DI, DTO, модели

    ⭐ Очереди: Pub/Sub, Push/Pull, CQS, CQRS, Event Sourcing, Command, Query Object

    ⭐ Vertical Slice Architecture и Feature-Slice Design

    ⭐ Архитектура Web: DDD для фронтенда и бэкенда

    ⭐ Многопоточность для Web: Atomics/CAS, workers, locks, races

    ⭐ Local-first, распределённые системы, блокчейн для Web 3.0

  18. 🗓️ Модуль Ильи Климова: Как внедрять паттерны проектирования в команду?

    ⭐ Разбор того, почему большая часть внедрения даже самых хороших идей часто проваливается.

    ⭐ Что такое «репутация инженера» и какую роль она играет в успехе (или провале) изменений.

    ⭐ Как участники проекта — от разработчиков до менеджеров — по-разному смотрят на инженерные практики и их внедрение.

    ⭐ Типичные проблемы, с которыми сталкиваются команды при попытке внедрить инженерные подходы, — и практические решения, которые действительно работают.

  19. 🗓️ Модуль Ильи Климова: Паттерны во Фронтенде

    ⭐Список наиболее распространённых паттернов проектирования на фронтенде.

    ⭐Чем фронтенд отличается от бэкенда в разрезе применимости паттернов?

    ⭐Стоит ли бороться за чистоту концепций или всё-таки довериться фреймворкам? Спойлер: скорее второе, чем первое.

    ⭐Каков результат: понимание того, как применять полученные знания во фронтенде — и где делать этого не стоит.

Тарифы

  1. Minimal

    $650

    $550

    3 месяца / ∞

    1. Паттерны;
    2. Домашние задания;
    3. Без проверки ДЗ;
    4. Q/A-семинар с Тимуром;
    5. Приватный канал в Telegram с новостями курса;
    Забронировать
  2. Standard

    $1400

    $1250

    3 месяца / 200 мест

    1. Паттерны
    2. Домашние задания
    3. Q/A-семинар с Тимуром
    4. Проверка заданий ментором уровня Senior
    5. Чат с ментором и группой из 10 участников
    6. Code Review Call
    7. Совместные встречи на свободные темы
    8. Модуль Ильи Климова «Паттерны во фронтенде»
    9. Сертификат о завершении тренинга с подписью Тимура
    10. Приватный канал в Telegram с новостями курса
    Забронировать
  3. Professional

    $3100

    $2850

    4 месяца / 50 мест

    1. Паттерны
    2. Домашние задания
    3. Q/A-семинар с Тимуром
    4. Проверка заданий ментором уровня Senior+ с опытом разработки комплексных и высоконагруженных систем в группе из 5 человек
    5. Code Review Call
    6. Совместные встречи на свободные темы
    7. Модуль «Архитектура приложений»
    8. Модуль Ильи Климова «Паттерны во фронтенде»
    9. Модуль Ильи Климова «Как внедрять паттерны проектирования в команду?»
    10. Сертификат о завершении тренинга с подписью Тимура
    11. Приватный канал в Telegram с новостями курса
    Забронировать
  4. Exclusive

    $10000

    4 месяца / 3 места

    1. Паттерны
    2. Домашние задания
    3. Q/A-семинар с Тимуром
    4. Проверка заданий Тимуром 1 раз в неделю
    5. Чат с Тимуром - ответы на вопросы в течение дня
    6. Code Review Call
    7. Совместные встречи на свободные темы
    8. Модуль «Архитектура приложений»
    9. Модуль Ильи Климова «Паттерны во фронтенде»
    10. Модуль Ильи Климова «Как внедрять паттерны проектирования в команду?»
    11. Сертификат о завершении тренинга с подписью Тимура
    12. Приватный канал в Telegram с новостями курса
    Забронировать

FAQ

  1. Подскажите, если я проходил предыдущий курс по паттернам — есть ли смысл записываться на новый?

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

    Доступ к уже имеющимся материалам и их обновлениям у вас сохраняется независимо от участия в следующих итерациях курса.

  2. В чём разница между тарифами Standard и Professional?

    В формате Standard студенты обучаются в группах по 10 человек, в Senior — по 5. В Senior-группах — более квалифицированные разработчики, которые непосредственно занимаются разработкой сложных и высоконагруженных систем, их проектированием и поддержкой.

    В Standard предусмотрен основной, базовый курс — он самодостаточный и оптимизированный, без перегрузки. В Professional дополнительно включены все материалы, которые Тимур подготовил, но сознательно не включил в базовую программу — чтобы не усложнять обучение для тех, у кого ограничено время. час.

    Участники Professional-формата смогут изучать эти дополнительные лекции самостоятельно и обсуждать их с менторами.

    Также в тариф Professional входит отдельный курс по архитектуре от Тимура, курс по soft skills от Ильи, и общая продолжительность обучения составляет 4 месяца — за счёт двух дополнительных модулей.

  3. Можно ли оплатить криптовалютой?

    Да, оплата в криптовалюте доступна. Для этого выберите в чате при оплате связь с менеджером заботы.