Certificate of Hard&Soft Skills
]
[
This certificate is awarded to
Timofei Davydik
upon the successfully completion of a program of study
course «‎Technical Leadership»‎
lasting 54 hours
Teacher of the course
]
[
Pavel Veinik
CEO of Hard & Soft Skills
Developer from 2003. Worked of EPAM, Workfusion, and other products and services companies. Pavel worked of a smaller company and a big corporations.
Specialization is architecture for distributed systems, microservices, applied linguistics and system engineering.
Experience as the developer, manager and architecture makes you want to see problems from different perspectives.
Now Pavel do architectures tasks in the company of EPAM.
The course programme included:
]
[
1.The definition of a good Tech Lead

1.1 The ability to think
1.2 The ability to use technologies and tools
1.3 The ability to make hotfixes quickly
1.4 Architectural competence
1.5 The role of the developer in outsourcing and product

2. Fundamentals of systems engineering

2.1 Software development project as a system
2.2 Functional and structural components of the system
2.3 System and supersystem
2.4 Stakeholders and interaction with them
2.5 A systemic view of the role of a Tech Lead

3. The boundaries of the possible, quality criteria, laws of distributed systems

3.1 Limitations
  • 3.1.1 Limitations of technique
  • 3.1.2 Limitations of algorithms
  • 3.1.3 Difficulty limitations 
3.2 Performance standards and criteria
  • 3.2.1 Reading files
  • 3.2.2 Network transmission
  • 3.2.3 Document search
  • 3.2.4 Fast algorithms
3.3 Principles and laws of distributed systems
  • 3.3.1 SOLID
  • 3.3.2 Transactions, ACID, isolation levels
  • 3.3.3 BASE
  • 3.3.4 CAP theorem
  • 3.3.5 Features and limitations of any distributed system
4. Application architecture as a way of building an application

4.1 Design patterns
  • 4.1.1 Creational patterns
  • 4.1.2 Structural patterns
  • 4.1.3 Behavioral patterns
  • 4.1.4 Integration patterns
  • 4.1.5 Fault tolerance patterns
  • 4.1.6 Scalability patterns
4.2 Classification of structural/functional application components
  • 4.2.1 Data warehouses
  • 4.2.1.1 SQL
  • 4.2.1.2 noSQL
  • 4.2.1.3 And others
  • 4.2.2 Queues
  • 4.2.3 Caches
  • 4.2.4 File storages
  • 4.2.5 Balancers
  • 4.2.6 ORM frameworks
  • 4.2.7 And others
4.3 Integration of systems, the system as a component of a larger system
  • 4.3.1 Systems integration styles
  • 4.3.1.1 File sharing
  • 4.3.1.2 General database
  • 4.3.1.3 RPC
  • 4.3.1.4 Messages
  • 4.3.2 Working with messages
  • 4.3.2.1 Creation of messages
  • 4.3.2.2 Direction of messages
  • 4.3.2.3 Converting messages
  • 4.3.2.4 Processing messages
  • 4.3.2.4 Message сhannel
  • 4.3.2.5 Message transmission system management
4.4 Cloud сервисы и архитектуры

5. Systematization of existing structural components of an application

5.1 Data warehouses
  • 5.1.1 SQL
  • 5.1.2 noSQL
  • 5.1.3 And others
  • 5.2.2 Queues
  • 5.2.3 Caches
  • 5.2.4 File storages
  • 5.2.5 Balancers
  • 5.2.5 Distributed computing
  • 5.2.6 ORM frameworks
  • 5.2.6 CDN
  • 5.2.7 And others
6. Examples of architectural solutions and their discussion

7. Working on your own projects

8. Development tools, approaches and technologies

8.1 Monitoring and notifications
8.2 Log processing
8.3 Virtualization
8.4 Release automation
8.5 Transparency and debugging
8.6 Configuration management
8.7 Testing and quality management

9. Releases

9.1 Migrations
9.2 Updating artifacts
9.3 Zero-downtime
9.4 Version control

10. Approaches to architecture

10.1 Monolithic
10.2 Microservices
10.3 CQRS
10.4 Scalability
10.5 Flexibility
10.6 In a startup
10.7 Examples

11. Programming languages: convenience, applicability and limitations

12. Position of the Tech Lead, system, supersystem, stakeholders, and boundaries of responsibility

Сертификат Hard&Soft Skills
]
[
Сертификат подтверждает, что
Тимофей Давыдик
успешно окончил курс
«‎Технический лидер» продолжительностью 54 часа
Преподаватель курса
]
[
Павел Вейник
CEO в Hard & Soft Skills
Разработчик с 2003. Работал в EPAM, Workfusion, в других продуктовых и сервисных компаниях, как очень маленьких, так и в корпорациях. Специализации - архитектура распределенных систем, highload, микросервисы, прикладная лингвистика, системная инженерия.
Опыт в ролях разработчика, менеджера и архитектора позволяет видеть проблемы с разных точек зрения.
Сейчас выполняет архитектурные задачи в компании EPAM.
Пройденная программа курса
]
[
  1. Понятие хорошего техлида

    • 1.1 Умение думать
    • 1.2 Умение применять технологии и инструменты
    • 1.3 Умение делать хотфиксы быстро
    • 1.4 Архитектурная компетентность
    • 1.5 Роли разработчика в аутсорсе и в продукте

  2. Основы системной инженерии

    • 2.1 Проект по разработке ПО как система
    • 2.2 Функциональные и структурные компоненты системы
    • 2.3 Система и надсистема
    • 2.4 Стейкхолдеры и взаимодействие с ними
    • 2.5 Системный взгляд на роль техлида

  3. Границы возможного, критерии качества, законы распределенных систем

    • 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. Архитектура приложения как способы компоновки приложения

    • 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. Систематизация существующих структурных компонентов приложения

    • 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 Остальные
  6. Примеры архитектурных решений и их обсуждение

  7. Работа над собственными проектами

  8. Инструменты, подходы и технологии, внутренние для разработки

    • 8.1 Мониторинг и оповещения
    • 8.2 Обработка логов
    • 8.3 Виртуализация
    • 8.4 Автоматизация релиза
    • 8.5 Прозрачность и отладка
    • 8.6 Управление конфигурациями
    • 8.7 Тестирование и управление качеством
  9. Релизы

    • 9.1 Миграции
    • 9.2 Обновление артефактов
    • 9.3 Zero-downtime
    • 9.4 Управление версиями

  10. Подходы к архитектурам

    • 10.1 Монолиты
    • 10.2 Микросервисы
    • 10.3 CQRS
    • 10.4 Масштабируемость
    • 10.5 Гибкость
    • 10.6 В стартапе
    • 10.7 Примеры

  11. Языки программирования: удобство, применимость и ограничения

  12. Позиция техлида, система, надсистема, стейкхолдеры и границы ответственности

    • 12.1 Баланс скорости и качества
    • 12.2 Технический долг и развитие бизнеса