Курс [ Технический лидер ] 3 поток

Длительность: 3 месяца, 2 раза в неделю / 72 часа, 80+ архитектурных задач, ONLINE.
Курс «Технический лидер» предназначен для разработчиков уровня middle+, senior и architect.
Middle+
Разработчики уровня middle+ откроют для себя архитектуру сложных систем, критерии ее успешности и варианты развития
Senior
Разработчики уровня senior обратят свое внимание на неочевидные зависимости между технологическими решениями и надежностью проекта, а также увидят как выдерживать баланс скорости и качества разработки
Architector
Разработчики уровня architect откроют для себя новые варианты решений архитектурных задач, научатся смотреть на проект как на систему со многими обратными связями и смогут почерпнуть опыт своих коллег
[ Цели Курса ]
1
Структурировать и расширить опыт технического специалиста
2
Выстроить базу для принятия сложных технических и архитектурных решений.
3
Предоставить большое количество технических решений, приемов, примеров и задач
что позволит специалисту перескочить через несколько ступенек в своем развитии, избежав ошибок в реальных проектах
4
Cистематизировать ограничения, которые приходится преодолевать при разработке продукта, и структурировать базовые принципы разработки и проектирования систем.
5
Поделиться с коллегами своими задачами и найти их оптимальное для вашего проекта и контекста решение
[ Кто преподает? ]
Павел Вейник
CEO в Hard & Soft Skills
Разработчик с 2003 г. Работал в таких белорусских компаниях, как EPAM, Itransition, WorkFusion, однако предпочитает небольшие стартапы. Специализации - распределенные, highload системы, очереди сообщений и микросервисы.
Опыт на менедженских и архитекторских ролях позволяет видеть проблемы с разных точек зрения. Ведет тренинги для компаний с 2011г.
Сейчас выполняет архитектурные задачи в компании EPAM.
[ Что будет? ]
1
Рассмотрим современные наиболее часто используемые инструменты и решения, такие как библиотеки, фреймворки, базы данных различного типа, очереди, кэши, системы управления фоновыми задачами и тп. Для каждого инструмента рассмотрим его принципиальные достоинства и ограничения.
2
Разберем реальные архитектурные задачи и проблемы сначала на простых учебных примерах, потом на завершенных проектах преподавателя, а потом на ваших собственных реальных проектах. Всего для курса подготовлено около 80 архитектурных задач для проработки.
3
Рассмотрим общепринятые требования к разрабатываемой системе - такие как надежность или скорость работы, а также уделим внимание таким нюансы разработки и поддержки продукта в production, как прозрачность, легкость в поддержке, простота поиска причин проблем на проде, легкость деплоев, использование виртуализации, работу с логами, мониторинг и оповещения.
4
Рассмотрим шаблоны проектирования различных типов, увидим их ограничения, проанализируем насколько и ради чего можно отходить от шаблонов, и когда шаблоны нельзя применять
    5
    Отдельное внимание уделим балансу скорости разработки и ее качества, управления техническим долгом и простоты как принципа реализации любых технических задач.
    Нужно больше информации? - Запишись на бесплатный вебинар по теме курса 6 июля в 19:30
    Регистрация на Вебинар
    6 июля в 19:30 (по МСК). Подробнее про вебинар здесь
    Все права защищены
    [ Программа курса ]
    1. Понятие хорошего техлида
    Рассмотрим роль техлида, ее границы, ответственность и риски, чем отличаются роли сеньера, архитектора, тимлида и техлида. Обсудим проблемы, которые возникают у техлида. Определим понятие архитектуры, и какое отношение к ней имеет system design. Рассмотрим некоторые аспекты лидерства, которые удобнее всего применять в небольших командах, и попытаемся структурировать технические навыки, необходимые техлиду/архитектору.
    2. Основы системной инженерии
    В рамках этой темы пройдем основы Системной Инженерии. Системная инженерия — это обобщение разных инженерий, общее из software engineering, инженерии городов, космических кораблей и других больших систем. Задача системной инженерии — это помочь сложной системе стать успешной системой. Мы пройдем такие понятия, как система, стейкхолдеры, эмерждентность, и где именно в разработке ПО можно применить Системную Инженерию.
    3. Границы возможного, критерии качества, законы распределенных систем
    Цель этой темы — познакомиться с критериями качественного ПО, понять что в принципе возможно на текущем этапе развития железа и что нет. Где проходит граница между хорошим и плохим ПО, и между теоретическими и прикладными ограничениями распределенных систем. Рассмотрим общепринятые принципы разработки качественног кода и качественного ПО, а также законы распределенных систем.
    4. Архитектура приложения как способ компоновки
    В этом разделе мы рассмотрим понятие архитектуры, а также основные шаблоны проектирования, которые используются при создании монолитных и распределенных приложений:

    • Принципы GRASP
    • Создающие шаблоны
    • Структурные
    • Поведенческие
    • Шаблоны интеграции
    • Шаблоны масштабирования
    • Шаблоны устойчивости
    • Шаблоны интеграции систем

    Также рассмотрим как нужно и как не нужно пользоваться шаблонами проектирования и как именно применять их правильно.
    5. Технологии/решения по группам технологий
    Самый большой по объему раздел — это систематизация существующих инструментов для хранения, обработки и передачи данных. Мы систематизируем существующие базы данных (а их около 350), существующие очереди сообщений (более 50), инструменты, которые можно использовать как кэши, распределенные файловые системы и хранилища, системы доставки контента, системы распределенной обработки данных, балансировщики и другие. Рассмотрим архитектуру Apache Kafka, Redis, Google File System и многих других компонентов. После этого раздела участник курса будет в состоянии выбирать существующие решения для проекта, а также грамотно компоновать их в устойчивое и эффективное решение.
    6. Примеры архитектур и оценки – примеры
    Этот раздел предназначен для анализа и обсуждения существущих больших распределенных системы, признанных успешными: Dropbox, поисковик Google, краулер Google, Redis, memcached, WatsАpp, Instagram, различные компоненты Facebook, CloudFlare, twitter (информация о коммерческих сервисах взята из открытых источников). Кроме того, разберем типовые решения для задач генерации уникального id в распределенной системе, масштабируемого чат-сервера, одновременного редактирования документа многими пользователями и другие. Рассмотрение этих тем поможет участнику курса понять, как решаются инженерные и архитектурные задачи в компаниях мирового уровня.
    7. Задания по архитектуре
    Курс содержит около 80 заданий по архитектуре распределенных систем. Вряд ли найдет участник, который сможет разобрать все задачи курса, но при этом каждый участник сможет прокачаться в интересующей его области. Для разбора задач выделяется время на каждом занятии после шаблонов проектирования, кроме того, выделяется полностью несколько занятий для проработки собственных проектов и заданий. При решении задач и проектов участники могут объединяться в группы.
    8. Инструменты и технологии, внутренние для разработки
    Раздел описывает инструменты, которые нужны команде разработке для обеспечения своей работы. Это такие технологии, как мониторинг, оповещения, логирование, системы виртуализации, инструменты и приемы деплоя, шаблоны и инструменты для облегчения отладки, средства управлениями конфигурациями, и конечно, технические средства обеспечения качества.
    9. Релизы
    Этот раздел из-за своей важности вынесен из раздела «8. Инструменты и технологии, внутренние для разработки» и описывает приемы и средства выкатывания релизов. Раздел включает в себя средства миграции бд и отката, подходы к деплою на прод, бесшовный и zero-downtime деплой, а также управление версиями, которое особенно важно в микросервисной архитектуре.
    10. Архитектурные подходы
    Это завершающее занятие по архитектуре распределенных систем. Оно содержит основные подходы к проектированию и созданию сложных распределенных приложений. Мы обсудим подходы к масштабированию монолитов, сравним их с микросервисными подходами, рассмотрим CQRS. Также мы рассмотрим зависимость архитектурных решений от неархитектурных параметров — типа и стадии развития компании, необходимой скорости поставки на рынок. Обсудим извечную проблему гибкой архитектуры и как ее можно решать в разных ситуациях. Также участники и ведущий приведут свои примеры архитектурных решений в различных компаниях.
    11. Языки программирования - применимость и ограничения
    Этот довольно холиварный раздел посвящен анализу языков программирования и их наиболее удобных областей применения. Мы обсудим отличия, достоинства и недостатки различных языков программирования.
    12. Роль техлида и границы его ответственности
    Завершающее занятие курса предназначено для подедения итогов курса. Мы вернемся к роли техлида в проекте, обсудим как именно можно применить полученные знания в вашем конкретном проекте и компании, и как именно можно получить положительный от новых навыков.
    Еще более подробная программа курса
    [ Регистрация и бронь ]
    Старт курса 19 июля
    Количество мест ограничено
    Не подходит дата курса? Оставьте заявку, и мы перезвоним Вам

    Уже проходили курс, но хотите пройти еще раз? -Присоединяйтесь к рабочим сессиям, без домашки за меньшую стоимость :)
    Все права защищены
    Кроме тем, указанных в программе, мы предлагаем дополнительные модули, которые могут быть как добавлены в программу, так и проведены отдельно.
    Безопасность веб систем, 3-6 ч
    ML в архитектуре, 6-9 ч
    Безопасность сетей, 3-6 ч
    Архитектура noSql решений, 3 ч
    Безопасность в разработке, 3 ч
    Введение в облачную архитектуру, 3 ч
    Архитектура больших данных и потоковой обработки данных, 6-9 ч
    Архитектура систем поиска, 6-9 ч
    Теория распределенных систем и теорема CAP, 3 ч
    Архитектура веб и мобильных систем, 3-6 ч
    Архитектура распределенных систем, 9-12 ч
    Устойчивая архитектура для стартапа, 6 ч
    Архитектура многопользовательских онлайн игр (online games software architecture), 9-12 ч
    Смотреть модули
    [ Отзывы с 1 потока ]
    Игорь
    Сформировал подходы как браться за архитектуру, появилось больше смелости. То есть, если будет какая-то сложная архитектура, я понял как подходить к ней, как развивать, как действовать. Очень полезный курс был в плане того, что у меня была нехватка базовых знаний в архитектуре, что касается баз. Я понял какие они бывают, какие типы и какие критерии использовать, чтобы выбрать базу, архитектурные компоненты.
    Очень понравилось совместное обсуждение с ребятами архитектур, то есть обсуждение домашнего задания, систем, решений. Это было очень круто, спасибо!
    Андрей
    Кругозор однозначно расширился. Раньше недостаток был везде: старался применять реляционный подход баз данных, даже когда были оптимальнее другие базы, а сейчас посмотрел на решение задач с разными подходами и теперь не всё будет опираться в реляционный подход. Единственное, что недооценивал свои возможности в плане времени. В идеале, было бы выделять часов 10 на домашку и занятия.. А так, в основном, доволен, что очень много понял и расширил кругозор
    Роман
    С точки зрения теоретической подготовки узнал очень много информации про компоненты, которые сейчас применяются в проектировании, т.к до этого мало чего знал и никогда не применял. Например в очереди: плюсы и минусы у каждого, разобрали по базам данных много: как и для чего они служат. Плюс слайды - это готовый материал на целый год, который позволит углубиться во все эти области. Домашние задания очень помогали, потому что у меня был вопрос как спроектировать некую систему на проекте, я его боялся и не знал с чего начать.. домашние задания очень помогли побороть этот страх. Но за счёт того, что нагрузки прибавлялось на работе, было немножко сложновато, т.к на курс нужно уделять время.
    Юлия
    Я до этого про архитектуру теоретически что-то слышала, но было очень интересно посмотреть на реальные примеры. Хотя в начале было очень тяжело и не было понятно вообще что и как, и что от меня хотят, а потом втянулась и получалось что-то сделать с личным проектом. Было очень полезно посмотреть как что-то подобное мы проектируем и сделаем на практике.
    я не на 100% сделала то что собиралась, но я поняла, что под разные задачи есть свои инструменты и нет самых лучших баз данных. Что под каждые данные есть что-то своё оптимизированное. Еще я поняла, что можно изучать дальше, так как раньше был ограниченный горизонт интересов, а сейчас очень расширился, на несколько лет вперёд точно
    Андрей
    Действительно очень расширился кругозор. Курс позволил посмотреть на архитектурные задачи с другого угла с другого ракурса. Конечно, я не рассчитал запал вначале.. был очень амбициозно настроен на выполнение домашних заданий и реализацию собственного проекта, но со временем запал немножко приуменьшился, но это не убавило интереса от курса. Проект который я задумал, я уверен, что я реализую, вопрос лишь времени