1. Кто такой сеньoр, отличия от middle и от lead- Рост и карьера разработчика
- Куда дальше?
- Технические навыки и качество
- Способность к самостоятельной работе
- Взаимодействие в команде
2. Понятия грязного, чистого кода, рефакторинга и архитектуры- Понятие компонента, абстракции и уровня абстракции
- Понятие библиотеки, инструмента
- Понятие архитектуры приложения
- Принципы архитектуры: coupling и cohesion
- Понятие шаблонов проектирования
- Понятие грязного и чистого кода
- Пример чистого кода
- Пример грязного кода
3. Основы ООП- Историческая справка: от мнемокодов к ООП
- Класс, поле, метод
- Принципы ООП
- Инкапсуляция
- Наследование
- Полиморфизм
- Взаимодействие классов
- Критика ООП
- Функциональное программирование
4. Процесс превращения кода в ПО- Написание кода
- Что такое программное обеспечение
- Создание компонентов
- Объединение компонентов
- Unit-тестирование
- Совместная разработка, git и code review
- Основы git
- Pull Request и процесс code review
- Использование сторонних библиотек
- Системы управления задачами
5. Взаимодействие разработчиков в команде- Основные характеристики команды
- Коммуникации в команде
- Незапланированные встречи
- Почта
- Code review
- Концепция Гейта
- Definition of Ready и Definition of Done
- Agile, Scrum, Kanban
- Рекомендации как общаться в команде
6. Работа над проектами- Организационные моменты
- Выбор проекта
- Тестовый фреймворк
- Приложение
- Продумывание структуры проекта
- Работа над кодом
- Создаем ПО из кода
7. Принципы написания чистого кода- Структура кода
- Классы как компоненты
- Приложение как набор компонент
- KISS
- DRY
- YAGNI
- SOLID на примерах
- О принципах
- Single Responsibility Principle
- Open/Closed Principle
- Liskov Substitution Principle
- Interface Segregation Principle
- Dependency Inversion Principle
- Шаблоны GRASP на примерах
- О GRASP
- Обобщенные
- Без четких границ и структуры
- Для чего
- Обязанности и действия
- Creator
- Information Expert
- Low Coupling
- Controller
- High Cohesion
- Indirection
- Polymorphism
- Protected Variations
- Pure Fabrication
- Как пользоваться шаблонами проектирования
- Подход к решению с помощью шаблонов
- Шаблоны как способ повторного использования решений
8. Диаграммы классов и инструменты- Модель С4: знакомство
- Карты кода
- Диаграмма кода
- Что такое UML
- Типы UML диаграмм
- Диаграмма классов
- Диаграмма компонентов
- Диаграмма последовательности
- Почему важно визуализировать сложный код
- Общие правила построения диаграмм
- PlantUML
- Что это такое
- Как использовать для генерации кода
9. ВоркшопПрактическое занятие с преподавателем на котором вы порисуете код
10. Порождающие шаблоны проектирования- Factory Method
- Abstract Factory
- Builder
- Prototype
- Singleton
- Dependency Injection
- Lazy Initialization
- Object poo
11. Структурные шаблоны проектирования- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
- Aggregate
- Extensibility
- Marker
- Pipes and filters
- Opaque pointer
12. Поведенческие шаблоны проектирования- Chain of Responsibility
- Command
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Template method
- Visitor
- Blackboard
- Interpreter
- Null object
- Protocol Stack
- Scheduled task
- Single-serving visitor
- Specification
13. Приемы рефакторинга- Процесс рефакторинга
- Что делать перед рефакторингом
- Почти TDD
- После рефакторинга
- Технический долг
- Запахи кода
- Приемы рефакторинга
- Составление методов
- Перемещение функций между классами
- Организация данных
- Упрощение условных выражений
- Упрощение вызовов методов
- Решение задач обобщения
14. Что такое хорошая архитектура кода- Отличия хорошей и плохой архитектуры кода
- Размывание архитектуры
- Рефакторинг архитектуры
- Проблемы поддержания архитектуры
15. Презентация проектаЭтот раздел посвящен презентации курсовых проектов участников, обсуждению проблем, возникших во время реализации, и использованных в проектах шаблонов проектирования.