КУРСЫ
Технический лидер
Системная инженерия
Микросервисы
Architecture for Auto QA
Middle —> Senior
KAFKA
SKILLS
HARD SKILLS
БЛОГ
info@hardsoftskills.by
Программа за 2019-2021 год
курса
[
Технический лидер
]
Понятие хорошего техлида
1.1 Умение думать
1.2 Умение применять технологии и инструменты
1.3 Умение делать хотфиксы быстро
1.4 Архитектурная компетентность
1.5 Роли разработчика в аутсорсе и в продукте
Основы системной инженерии
2.1 Проект по разработке ПО как система
2.2 Функциональные и структурные компоненты системы
2.3 Система и надсистема
2.4 Стейкхолдеры и взаимодействие с ними
2.5 Системный взгляд на роль техлида
Границы возможного, критерии качества, законы распределенных систем
3.1 Ограничения
3.1.1 Ограничения техники
3.1.2 Ограничения алгоритмов
3.1.3 Ограничения сложности
3.2 Критерии, эталоны эффективности
3.2.1 Чтение файлов
3.2.2 Передача по сети
3.2.3 Поиск по документами
3.2.4 Быстрые алгоритмы
3.3 Принципы и законы распределенных систем
3.3.1 SOLID
3.3.2 Транзакции, ACID, уровни изоляции
3.3.3 BASE
3.3.4 Теорема CAP
3.3.5 Особенности и ограничения любой распределенной системы
Архитектура приложения как способы компоновки приложения
4.1 Шаблоны проектирования
4.1.1 Создающие
4.1.2 Структурные
4.1.3 Поведенческие
4.1.4 Шаблоны интеграции
4.1.5 Шаблоны отказоусточивости
4.1.6 Шаблоны масштабируемости
4.2 Классификация структурных/функциональных компонентов приложения
4.2.1 Хранилища данных
4.2.1.1 SQL
4.2.1.2 noSQL
4.2.1.3 Другие
4.2.2 Очереди
4.2.3 Кэши
4.2.4 Файловые хранилища
4.2.5 Балансировщики
4.2.6 ORM фреймворки
4.2.7 Остальные
4.3 Интеграция систем, система как компонент большей системы
4.3.1 Стили интеграции систем
4.3.1.1 Обмен файлами
4.3.1.2 Общая бд
4.3.1.3 RPC
4.3.1.4 Сообщения
4.3.2 Работа с сообщениями
4.3.2.1 Создание сообщений
4.3.2.2 Направление сообщений
4.3.2.3 Преобразование сообщений
4.3.2.4 Обработка сообщений
4.3.2.4 Канал сообщений
4.3.2.5 Управление системой передачи сообщений
4.4 Cloud сервисы и архитектуры
Систематизация существующих структурных компонентов приложения
5.1 Базы данных
5.1.1 SQL
5.1.2 noSQL
5.1.3 Другие
5.2.2 Очереди
5.2.3 Кэши
5.2.4 Файловые хранилища
5.2.5 Балансировщики
5.2.5 Распределенные вычисления
5.2.6 ORM фреймворки
5.2.6 CDN
5.2.7 Остальные
Примеры архитектурных решений и их обсуждение
Работа над собственными проектами
Инструменты, подходы и технологии, внутренние для разработки
8.1 Мониторинг и оповещения
8.2 Обработка логов
8.3 Виртуализация
8.4 Автоматизация релиза
8.5 Прозрачность и отладка
8.6 Управление конфигурациями
8.7 Тестирование и управление качеством
Релизы
9.1 Миграции
9.2 Обновление артефактов
9.3 Zero-downtime
9.4 Управление версиями
Подходы к архитектурам
10.1 Монолиты
10.2 Микросервисы
10.3 CQRS
10.4 Масштабируемость
10.5 Гибкость
10.6 В стартапе
10.7 Примеры
Языки программирования: удобство, применимость и ограничения
Позиция техлида, система, надсистема, стейкхолдеры и границы
ответственности
12.1 Баланс скорости и качества
12.2 Технический долг и развитие бизнеса