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

Длительность: 3 месяца, 2 раза в неделю / 54 часа, 80+ архитектурных задач, ONLINE.
Курс «Технический лидер» предназначен для разработчиков уровня middle+, senior и architect.
Middle+
Разработчики уровня middle+ откроют для себя архитектуру сложных систем, критерии ее успешности и варианты развития
Senior
Разработчики уровня senior обратят свое внимание на неочевидные зависимости между технологическими решениями и надежностью проекта, а также увидят как выдерживать баланс скорости и качества разработки
Architector
Разработчики уровня architect откроют для себя новые варианты решений архитектурных задач, научатся смотреть на проект как на систему со многими обратными связями и смогут почерпнуть опыт своих коллег
[ Цели Курса ]
Структурировать и расширить опыт технического специалиста
Выстроить базу для принятия сложных технических и архитектурных решений

Предоставить большое количество технических решений, приемов, примеров и задач
что позволит специалисту перескочить через несколько ступенек в своем развитии, избежав ошибок в реальных проектах
Cистематизировать ограничения, которые приходится преодолевать при разработке продукта, и структурировать базовые принципы разработки и проектирования систем
Поделиться с коллегами своими задачами и найти их оптимальное для вашего проекта и контекста решение
[ Кто преподает? ]
Павел Вейник
CEO в Hard & Soft Skills
Разработчик с 2003. Работал в EPAM, Workfusion, в других продуктовых и сервисных компаниях, как очень маленьких, так и в корпорациях. Специализации - архитектура распределенных систем, highload, микросервисы, прикладная лингвистика, системная инженерия.
Опыт в ролях разработчика, менеджера и архитектора позволяет видеть проблемы с разных точек зрения.
Сейчас выполняет архитектурные задачи в компании EPAM.
[ Что будет? ]
1
Рассмотрим современные наиболее часто используемые инструменты и решения, такие как библиотеки, фреймворки, базы данных различного типа, очереди, кэши, системы управления фоновыми задачами и тп. Для каждого инструмента рассмотрим его принципиальные достоинства и ограничения.
2
Разберем реальные архитектурные задачи и проблемы сначала на простых учебных примерах, потом на завершенных проектах преподавателя, а потом на ваших собственных реальных проектах. Всего для курса подготовлено около 80 архитектурных задач для проработки.
3
Рассмотрим общепринятые требования к разрабатываемой системе - такие как надежность или скорость работы, а также уделим внимание таким нюансы разработки и поддержки продукта в production, как прозрачность, легкость в поддержке, простота поиска причин проблем на проде, легкость деплоев, использование виртуализации, работу с логами, мониторинг и оповещения.
4
Рассмотрим шаблоны проектирования различных типов, увидим их ограничения, проанализируем насколько и ради чего можно отходить от шаблонов, и когда шаблоны нельзя применять
    5
    Отдельное внимание уделим балансу скорости разработки и ее качества, управления техническим долгом и простоты как принципа реализации любых технических задач.
    Регистрация на Вебинар
    29 сентября в 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. Роль техлида и границы его ответственности
    Завершающее занятие курса предназначено для подедения итогов курса. Мы вернемся к роли техлида в проекте, обсудим как именно можно применить полученные знания в вашем конкретном проекте и компании, и как именно можно получить положительный от новых навыков.
    [ Регистрация и бронь ]
    Старт курса 15 октября
    Количество мест ограничено.
    Стоимость курса 1260 BYN /500$ ежемесячно,
    или сразу 3655 BYN | 1450$ (Оплата в белорусских рублях по курсу доллара США, на дату платежа)
    Нажимая на кнопку, вы соглашаетесь на обработку персональных данных
    Кроме тем, указанных в программе, мы предлагаем дополнительные модули, которые могут быть как добавлены в программу, так и проведены отдельно
    Безопасность веб систем, 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 ч
    Смотреть модули
    [ Отзывы ]
    Заневский Виталий
    Идя на курсы у меня было несколько запросов. Первый, и наверное самый важный - это систематизация знаний, приобретенных за годы работы. По опыту работы получалось, что знаний много, но четкой системы в них не было. И эту задачу в рамках курсов у меня получилось "закрыть". Безусловно мне есть еще куда расти, но теперь на многие вещи я смотрю куда увереннее и уже получилось начать применять этот систематизированный подход на работе при решении проблем и задач.
    Второй запрос, а он был немного необычный - это эмоциональный, когда работа забирает много времени и сил, то далеко не всегда можно найти их на обучение, поэтому сам тот факт, что ты учишься не один, а в компании таких же увлеченных людей как и ты, заряжает тебя энергией и желанием даже усталым продолжать заниматься. В этом плане курс "Технический лидер" отработал на все 100%.
    В качестве дополнительного неожиданного и приятного бонуса могу отметить то, что далеко не все поставленные передо мной технические задачи я мог решить сходу, поэтому пришлось параллельно пройти еще ряд других обучающих курсов ориентированных на технологии, до которых раньше не доходили руки. Резюмируя все, я хочу сказать "спасибо" Павлу и Виктории за организацию курса и всем тем парням, с кем я его проходил. Это было действительно интересно.
    Шкиренко Илья
    После прохождения курса прокачал и получил новые знания в области архитектуры распределенных систем, узнал новые подходы к решению типичных проблем проектирования: шаблоны, паттерны, очереди и многое другое. Научился видеть узкие места архитектуры на ранних этапах развития систем и расширил список вариантов решения подобных проблем. Получил навык прогнозирования рисков развития архитектуры и управления ими. Курс помог определить фокус в развитии карьеры и дал много полезной информации и знакомств. Спасибо, Павел!
    Ничипорович Александр
    От курса ожидал узнать как подходить к решению архитектурных задача (какие вопросы задавать, на что обращать внимание). Также хотел получить новые знания и посмотреть как архитектурные задачи решают другие.
    По завершении курса могу сказать, что все мои ожидания оправдались. Было очень много нового для меня, а задачи которые мы рассматривали, позволили проработать часть теории, которую мы прошли. Также очень полезным оказалось посмотреть как решают те же вопросы другие ребята и зачастую более удачно. Компания ребят попалась отличная.

    Что касается теории, то ряд тем не только интересны, но и для меня оказались сложными. К примеру, когда было несколько лекций по системе инженерии, для меня это была настолько сложная тема, что пришлось раза три пересматривать видео и еще изучать в дополнительные источники, чтобы понять основы. Аналогично и с лекциями по базам данных - очень хорошо расширяет кругозор. Как пример Kafka с которой не работал и примеры БД для высоконагруженных систем как ClickHouse.

    Для себя решил дальше двигаться в этом направлении и хочу получить практический опыт работы с высоконагруженными системами и поработать с другими технологиями (сейчас у меня привязка к Microsoft стеку).
    Строкачук Олег
    Я на первом занятии для себя сформулировал свои ожидания.
    Первое я назвал "закрепить фундамент", то есть, фундамент распределенных систем, баз данных и прочее. Понять, как собирать и формировать требования. В принципе, некий фундамент закрепился: есть понимание, как это работает и, в случае чего, что гуглить - я знаю.
    Где-то хотелось бы углубиться в теоретическую основу, но это, скорее, мой личный запрос.
    У меня был такой пункт "избавиться от синдрома самозванца". Кажется, он больше не прогрессирует :).
    Из следующих, я хотел бы получить "менториг/коучинг с зонами роста". Здесь, наверное, с моей стороны я запрашивал какого-то фидбэка и т.д. По техническим решениям зоны роста были обозначены, что не маловажно.
    Еще одно ожидание - обмен знаниями с другими участниками курса. Очень интересно обсудить реальные проекты: во-первых, кто и чем живет, какие идеи, языки и технологии применяет.
    На курсе нет про теорию конкретных технологий - у нас не говорилось, что стоит использовать такой язык программирования, здесь такой паттерн, а вот здесь такой-то фреймворк. Нам давали фундаментальные знания, которые позволяют сделать выбор самостоятельно. А далее в общем обсуждении уже рождалось технические решения и это очень круто.
    И, наверное, самое полезное, что я вынес, это тот факт, что технических знаний будет всегда где-то не хватать и это можно компенсировать - почитать, разобраться и делегировать.
    А вот работать с людьми на самом деле намного сложнее - уметь договариваться, задать нужные вопросы, построить беседу, понять роли людей и их мотивы.
    Наверное, этот курс для меня в первую очередь стал очередным открытием того, что технические знания часто не на первом месте. Нужно играть в "Игру престолов", нужно уметь разговаривать, договариваться, добиваться авторитета, становиться лидером.
    Можно проектировать говно, но если разобраться, что нужно заказчиками, завоевывать доверие и уметь вести людей вперед - то все получится.
    Ламейко Владимир
    Мои ожидания полностью оправдались. High-scale для меня скорее минус, чем плюс. Никогда не была интересна архитектура, где задача стоит и вопрос только в том, как это смаштабировать. Мне нужно было обсудить с другими людьми, понять, как они мыслят, потому что для меня пока не было общего представления об обосновании архитектуры, не было опыта создания архитектур с нуля, чтобы понять, что делается и почему так делается. Самое, наверное, сложное для меня было понять то, что архитектура из простого API и базы данных - это тоже архитектура со своими плюсами и минусами. И так тоже можно, и это всё что необходимо, больше ничего не надо. Нужно обосновать, почему ты больше ничего не используешь. Курс для меня полностью оправдался, и я хотел погрузиться в это, понять, заходит мне такие задачи или не заходят. Моя задача была расширить знания в принятии архитектурных решений, оставаясь на прикладном уровне, и я этого достиг. Всё равно по ходу деятельности я решаю архитектурные задачи, возникают архитектурные вопросы, но и теперь я больше понимаю как их принимать и как мыслить.
    Потёмкин Андрей
    Мне вроде как все понравилось. Систематизация инструментов была, + она была улучшена вопросами со стороны группы и дискуссией в лайве по схеме вопрос - ответ. Очень понравились уроки где мы рисовали и решали задачи в лайве с Пашей. Было пару уроков где мы как студенты не подготовились, а Паша рассчитывал на нас, и пришлось импровизировать. Вот здесь наверное Паше нужно наготове пару тем держать что их вкинуть и провести интересный урок ( ибо такие случаи я думаю были, есть и будут ). Возможно даже заранее на первых занятиях, предложить, спросить, темы ( бэкап темы на такие случаи)А так курс топ, я получил что хотел и на сохранял информации и задач ( где углубится, где почитать что я не понял, в какую сторону копать и т.д ). Вам огромное спасибо за курс, за организацию!
    Дмитрий Лозюк
    Курс понравился тем, что затрагивает не только широкую сферу знаний, но и достаточно глубоко.
    Чего мне хватило:
    - понимания где и при каких условиях применять различные типы баз данных
    - внутреннее устройство баз данных
    Чего не хватило:
    - практики устройства распределенных систем. например конфига k8s с описанием всех сервисов. я привык все делать руками и на живом железе. возможно после построения нескольких распределенных систем систем вручную я смог бы уже рисовать квадратиками и схемками.
    Что понравилось:
    - обмен опытом и приобретение новых знакомств
    Что не понравилось:
    - онлайн формат. думаю при работе оффлайн была бы бОльшая вовлеченность
    Также добавлю, что участвовал бы более активно если бы не большая загрузка на работе. Это уже мое упущение, не рассчитал свои силы(
    За курс спасибо, очень ценный опыт!
    Еще больше отзывов
    Игорь
    Сформировал подходы как браться за архитектуру, появилось больше смелости. То есть, если будет какая-то сложная архитектура, я понял как подходить к ней, как развивать, как действовать. Очень полезный курс был в плане того, что у меня была нехватка базовых знаний в архитектуре, что касается баз. Я понял какие они бывают, какие типы и какие критерии использовать, чтобы выбрать базу, архитектурные компоненты.
    Очень понравилось совместное обсуждение с ребятами архитектур, то есть обсуждение домашнего задания, систем, решений. Это было очень круто, спасибо!
    [ Отзыв с 1 потока ]
    Андрей
    Кругозор однозначно расширился. Раньше недостаток был везде: старался применять реляционный подход баз данных, даже когда были оптимальнее другие базы, а сейчас посмотрел на решение задач с разными подходами и теперь не всё будет опираться в реляционный подход. Единственное, что недооценивал свои возможности в плане времени. В идеале, было бы выделять часов 10 на домашку и занятия.. А так, в основном, доволен, что очень много понял и расширил кругозор
    [ Отзыв с 1 потока ]
    Роман
    С точки зрения теоретической подготовки узнал очень много информации про компоненты, которые сейчас применяются в проектировании, т.к до этого мало чего знал и никогда не применял. Например в очереди: плюсы и минусы у каждого, разобрали по базам данных много: как и для чего они служат. Плюс слайды - это готовый материал на целый год, который позволит углубиться во все эти области. Домашние задания очень помогали, потому что у меня был вопрос как спроектировать некую систему на проекте, я его боялся и не знал с чего начать.. домашние задания очень помогли побороть этот страх. Но за счёт того, что нагрузки прибавлялось на работе, было немножко сложновато, т.к на курс нужно уделять время.
    [ Отзыв с 1 потока ]
    Юлия
    Я до этого про архитектуру теоретически что-то слышала, но было очень интересно посмотреть на реальные примеры. Хотя в начале было очень тяжело и не было понятно вообще что и как, и что от меня хотят, а потом втянулась и получалось что-то сделать с личным проектом. Было очень полезно посмотреть как что-то подобное мы проектируем и сделаем на практике.
    я не на 100% сделала то что собиралась, но я поняла, что под разные задачи есть свои инструменты и нет самых лучших баз данных. Что под каждые данные есть что-то своё оптимизированное. Еще я поняла, что можно изучать дальше, так как раньше был ограниченный горизонт интересов, а сейчас очень расширился, на несколько лет вперёд точно
    [ Отзыв с 1 потока ]
    Андрей
    Действительно очень расширился кругозор. Курс позволил посмотреть на архитектурные задачи с другого угла с другого ракурса. Конечно, я не рассчитал запал вначале.. был очень амбициозно настроен на выполнение домашних заданий и реализацию собственного проекта, но со временем запал немножко приуменьшился, но это не убавило интереса от курса. Проект который я задумал, я уверен, что я реализую, вопрос лишь времени
    [ Отзыв с 1 потока ]