Курс [ Из Middle в Senior ]

для разработчиков от 2-ух лет на любом языке программирования, кроме функциональных
20 июля
2 месяца 1 неделя
2 раза в неделю
Оnline
[ Цель курса ] прокачать мидла до сеньора:
1
Дать на практике шаблоны, чистый и грязный код, рефакторинг, принципы SOLID, GRASP, KISS, YAGNI, DRY
2
Научим разрабатывать собственные красивые фреймворки
3
Научим легко и непринужденно осваивать разные фреймворки, встраивать и использовать их в собственных фреймворках.
4
Научим грамотно выстраивать взаимодействие с другими членами команды разработки.
Присоединяйся к вебинару по теме курса 13 июля
На вебинаре можно понять: стоит ли идти на курс увидив, чему научитесь, задать интересующий вопрос преподавателю, и просто понять адекватность. Вебинар бесплатный, ко-во мест ограничено
[ На курсе мы ]
Разберем на примерах понятия чистого и грязного кода. Увидим как именно грязный код затрудняет развитие проекта и провоцирует баги
Рассмотрим реальные проблемы, возникающие на проектах, и найдем способы их решения с помощью понятий чистого кода, рефакторинга и шаблонов проектирования
Решим сначала учебные задачи, специально подготовленные для курса, а потом закрепим полученные навыки на вашем проекте. Всего для курса подготовлено 150+ задач на шаблоны проектирования и рефакторинг
Изучим принципы и подходы к проектированию структуры кода
Отдельное внимание уделим взаимодействию разработчиков в команде и работе над проектом
[ Программа курса ]
Кто такой сеньер, отличия от middle и от lead
Рассмотрим рост разработчика от джуна до архитектора, и необходимые для роли джуна, мидла, сеньера, лида и архитектора технические, личные и коммуникативные навыки. Порассуждаем об отличиях между этими ролями, сформулируем ожидания, которые предъявляются коллегами и работодателем к каждой роли.
Также рассмотрим отличия между теоретическими знаниями и практическими навыками (техническими, личными и коммуникативными) разработчика и тем, как именно необходимо выстраивать собственное обучение. Оценим где именно вы находитесь на этой карьерной лестнице и каким образом вы могли бы наметить свое развитие.
Также договоримся об организационных моментах в рамках курса.
Понятия грязного, чистого кода, рефакторинга и архитектуры
В рамках этой темы рассмотрим и структурируем основные концепции, применяемые в программировании - компонент, абстракция, библиотека, инструмент, проектирование и архитектура, шаблоны проектирования. Также сформулируем проблемы, с которыми разработчик встречается во время проектирования и разработки, и каким образом и в каких случаях эти проблемы возможно преодолеть. Рассмотрим отличия качественно и некачественно спроектированного и написанного компонента, совместно выработаем критерии качества компонента, и отличия качественного кода от некачественного. Рассмотрим понятие и процесс рефакторинга, каким образом можно повысить качество кода в отдельном компоненте и во всем проекте.
Основы ООП
В рамках раздела рассмотрим базовые понятия объектно-ориентированного программирования и проектирования и взаимодействия классов и их иерархий между собой. Какими именно средствами ООП способно улучшить качество кода, и как именно пользоваться этими средствами в вашем коде: как разбивать предметную область на классы, как структурировать поля и методы внутри класса, как создавать иерархии классов, как обеспечивать взаимодействие между классами. Также разберем некоторые ошибки, которые возникают при применении ООП.
Процесс превращения кода в ПО
В рамках этой темы рассмотрим чем отличается код от программного обеспечения, что такое ПО и компонент ПО, как именно компоненты объединяются в ПО. Также еще раз вернемся к понятию unit-тестирования и увидим, как именно написание unit-тестов экономит время разработки.
Коснемся технических средств, которые облегчают совместное владение кодом командой разработки: системы управления задачами, системы контроля версий, процесса code review.
Взаимодействие разработчиков в команде
Здесь рассмотрим организацию создания ПО не с точки зрения технических средств, а с точки зрения взаимодействия между людьми в команде. Разберем иерархию команды, способы взаимодействия и разделение ответственности между разными ролями в команде. Также затронем scrum и назначение его ритуалов, а также то, что понимается под scrum в некоторых компаниях. Назовем основные ошибки коммуникаций и сформулируем алгоритм выстраивания коммуникаций в команде, который позволит избежать наиболее серьезных проблем.
Работа над проектами
Эта тема - время, зарезервированное для формулирования заданий и обсуждения курсовых проектов. Несколько занятий будут посвящены выбор темы проекта, проектированию и работе над кодом проекта. Можно взять новый проект, можно поработать над проектом с работы (при условии соблюдения NDA) или над pet-project. Для каждого проекта будут указаны потенциальные проблемы, а также даны рекомендации по улучшению подходов и архитектуры. Работа над проектам будет продолжаться на протяжении всего курса, а на последнем занятии будет презентация проектов всей группе.
Принципы написания чистого кода
Раздел содержит теоретические сведения о принципах программирования, начиная с простейших KISS, DRY, YAGNI, и заканчивая сложными и зрелыми SOLID и GRASP. Каждый принцип разбирается на положительных и отрицательных примерах, демонстрирующих какие проблемы могут возникать в случае игнорирования этих принципов. А так как практически все архитектурные решения - это баланс между противоречивыми требованиями, мы также рассмотрим и поиска компромиссных решений.
Как пользоваться шаблонами проектирования
В этом коротком разделе мы рассмотрим понятие шаблона в природе и в разных областях человеческой деятельность, как именно эти шаблоны обнаруживаются и как именно их правильно применять.
Порождающие шаблоны проектирования
В этом разделе мы рассмотрим шаблоны проектирования, ответственные за удобное создание новых объектов (или групп объектов) в вашей программе. Начнем с Factory Method, Factory, коснемся Builder, затронем более сложный шаблон Prototype. Также рассмотрим шаблон Singleton и почему его часто описывают как антипаттерн. Разберем понятие Dependency Injection, а также 2 шаблона, помогающие экономить ресурсы на создании/уничтожении объектов - Lazy Initialization и Object Pool. Каждый шаблон разбирается на положительных и отрицательных примерах.
Структурные шаблоны проектирования
В этом разделем разбере как выстраивать иерархии классов таким образом, чтобы их было легко поддерживать и изменять, и чтобы они провоцировали минимальное количество багов даже если взаимодействующие иерархии классов относятся к разным абстракциям и изначально созданы для разных задач. Мы начнем с простых шаблонов Adapter, Bridge и Composite, после этого рассмотрим Decorator и Facade. Также уделим внимание Flyweight, который используется для экономии ресурсов, Proxy для более перехвата вызовов метода другого объекта. Разберем более сложные шаблоны Aggregate, Extensibility, Pipes and Filters и Opaque Pointer. Все шаблоны будем рассматривать на положительных и отрицательных примерах.
Поведенческие шаблоны проектирования
Этот раздел посвящен шаблона проектирования, которые позволяют выстраивать удобное взаимодействие между разными объектами. Некоторые из них явно выделяют поведение в отдельную абстракцию (Strategy, Command), другие позволяют оперировать состоянием объекта (Memento, State), некоторые позволяют управлять задачами (Scheduled Task). Группа шаблонов позволяют динамически добавлять и удалять обработчики для других объектов (Chain of Responsibility, Protocol Stack), а шаблон BlackBoard пытается найти решение для задачи, которая может не иметь прямого алгоритмического решения. Каждый шаблон, как и всегда, разбирается на положительных и отрицательных примерах, которые позволяют применить его в курсовом проекте.
Что такое хорошая архитектура кода
Этот раздел посвящен обсуждениям о том, что такое хорошая и плохая архитектура кода, с каким проблемами сталкиваются разработчики, поддерживая код на протяжении длинного проекта, и как именно можно с этими проблемами справляться (с помощью рефакторинга архитектуры). Также рассмотрим частые ошибки начинающего архитектора и как их избегать.
Приемы рефакторинга
Дополнительный раздел посвящен очень важной вещи - рефакторингу. Мы рассмотрим как именно применять рефакторинг в вашем проекте, почему его так любят разработчики и не любят менеджеры (большинство). Разберем подходы к организацию рефакторинга в вашем проекта, и некоторые приемы.
Презентация проекта
Этот раздел посвящен презентации курсовых проектов участников, обсуждению проблем, возникших во время реализации, и использованных в проектах шаблонов проектирования.
[ После курса ты ]
1
По-иному посмотришь на свой опыт разработки
2
Будешь правильно пользоваться шаблонами проектирования
3
Сможешь аргументировано обосновывать свою точку зрения
4
Будешь применять принципы написания кода KISS, DRY, YAGNI, SOLID, GRASP
Каждый шаблон проектирования и принцип представлены не только объяснением, но положительными и отрицательными примерами и задачами.
[ Кто преподает ]
17 лет в IT, из них 9 лет опыта в разработке и 8 лет - в менеджменте. Имеет большой опыт полного цикла построения и развития команд разных направлений (от геоинформационных систем до сложных отделов мобильной разработки) в разных ролях - технической, процессной, административной и в роли сооснователя.
Ян Колбаско
[ Записаться на курс ]
Стоимость курса 999 BYN / 400$ в месяц
(Оплата в белорусских рублях по курсу доллара США, на дату платежа)
Все права защищены
В какие дни и сколько раз в неделю проходят занятия?
Занятия проходят 2 раза в неделю, дни недели группы выбираем все вместе

Сколько всего занятий и их длительность?
Всего 22 онлайн занятия длительностью по 1-1.5 часа. Курс длится 2 месяца и 1 неделю.
По окончанию курса студенты получают именной Сертификат Hard&Soft Skills
Присоединяйся к вебинару по теме курса 13 июля
На вебинаре можно понять: стоит ли идти на курс увидив, чему научитесь, задать интересующий вопрос преподавателю, и просто понять адекватность. Вебинар бесплатный, ко-во мест ограничено