- Краткое вводное занятие по основным принципам и парадигмам программирования, чтобы настроить общий словарь терминологии.
- Тактика написания кода. Подходы для промышленного программирования, задачи на code-review и анализ кода. Шаблоны проектирования или свои «велосипеды»? Дизайн кода, code conventions, документирование, логирование, шаблоны, слои абстрагирования, контракты, фреймворки, тест-ориентированный подход (TDD/BDD). Применение шаблонов, рефакторинг, анализ сильных и слабых сторон кода.
- Архитектура построения кода, стратегия.
— Зачем нужны архитекторы?
— виды архитектур (Enterprise и Solution),
— тактика построения архитектуры,
— компонентно-ориентированный подход (COP),
— аспектно-ориентированный подход (AOP),
— агентно-ориентированный подход (AgOP),
— сервисно-ориентированный подход (SOA),
— событийно-ориентированный подход (Event-Driven),
— стратегия развития архитектуры,
— развитие архитектур в динамике,
— технологический долг,
— управление техдолгом,
— статичные и динамические части архитектуры,
— правило изменяемости архитектуры,
— фреймфорк и дизайн кода,
— костыли и заплатки,
— техдолг и рефакторинг.
- Управление разработкой кода. Роли PM, QA, тимлидов и senior developer’ов. Что такое требования, как они меняются в динамике и как это учитывать при построении архитектуры. Мутация и фиксирование требований, глубина документирования. Управление разработкой (стратегии, тактики), что надо делать качественно, а где можно «срезать углы».
- Разработка и управление программным продуктом. Продолжение анализа роли PM, QA и тимлидов. Жизненный цикл продукта (разработка , потребитель и требования, качество, доставка и развертывание, эксплуататция и мониторинг, правильная организация смерти). Методологические ошибки заказчиков. Как методологически делать продукт, чтоб всегда получалась няшная конфетка, а не совсем наоборот.
- Построение гетерогенных web-приложений на сервис-ориентированной архитектуре. Углубимся в разработку многокомпонентных распределенных web-приложений, построенных по принципу SOA. Причины применения SOA-подхода, его достоинства и недостатки, история создания, современные практики. Краткий обзор технологических инструментов «must have». В качестве примера изучим построение ряда традиционных компонентов интернет-магазина, выполненных в виде сервисов.
- Управление командой и клиентом. Мотивация и стимуляция? Что и когда применять? Почему деньги — не самое главное и как вдохновлять людей на подвиг? Три самых важных качества лидера и способы их прокачки. Здоровый образ жизни и 98 бензин для вашего феррари. Как управлять клиентом и почему это должен делать тимлид? На каком языке общаться с клиентом и как настроить командную работу с менеджером проекта?
- Управление хотелками заказчика. Как ограничивать хотелки заказчика и управлять неконтролируемыми изменениями.
- Бонус! Два-в-одном по базам данных. Олег Бартунов (один из тех, кто разработал PostgreSQL) и Михаил Тюрин (главный по базам в avito.ru) расскажут о том, что такое расширяемость баз данных, зачем нужна интеграция с ядром СУБД и как адаптировать базу к высоким нагрузкам.