Certificate of Hard&Soft Skills
]
[
This certificate is awarded to
Kseniya Danish
upon the successfully completion of a program of study
course «Middle to Senior»‎
lasting 30 hours
Teacher of the course
]
[
Senior Software Engineer Team Lead at Indy
Vitaly Zanevsky
Developer since 2016. Twice winner of the Northern Eurasia Programming Contest.
Specializations: Node.js, JavaScript, TypeScript, Apache Kafka, MongoDB, PostgreSQL, AWS, Kubernetes.
  • Senior Software Engineer Team Lead: Indy
  • Senior Software Engineer: ColabPro Inc.
  • Software Developer: instinctools EE Labs
  • Lecturer: Yanka Kupala State University of Grodno
Managed the process of transferring the system from using AWS SQS to Apache Kafka. With the team built the entire eventual consistency of the project on Kafka. Vitaly has been using Kafka for a year and a half on the project to perform background tasks, such as processing data from files or sending email messages.
During his career he has trained several Middlel full-stack developers and now heads and mentors people as a Team Lead and Senior Software Engineer. An expert in software development for business needs.
The course programme included:
]
[
1. Who is a senior developer and what are the differences between middle and lead roles?
2. Concepts of clean code, dirty code, refactoring, and architecture.
3. Basics of object-oriented programming (OOP).
4. The process of turning code into software.
5. Collaboration among developers in a team.
6. Working on projects.
7. Principles of writing clean code.
8. Class diagrams and tools for creating them.
9. Workshop.
10. Creational design patterns.
11. Structural design patterns.
12. Behavioral design patterns.
13. Refactoring techniques.
14. What constitutes good code architecture.
15. Project presentation.

Сертификат Hard&Soft Skills
]
[
Сертификат подтверждает, что
Ксения Даниш
успешно окончила курс
«‎Middle to Senior» продолжительностью 30 часов
Преподаватель курса
]
[
Senior Software Engineer Team Lead at Indy
Виталий Заневский
Разработчик с 2016 года. Дважды призер Northern Eurasia Programming Contest.
Специализации: Node.js, JavaScript, TypeScript, Apache Kafka, MongoDB, PostgreSQL, AWS, Kubernetes.
  • Senior Software Engineer Team Lead: Indy
  • Senior Software Engineer: ColabPro Inc.
  • Software Developer: instinctools EE Labs
  • Lecturer: Yanka Kupala State University of Grodno
Руководил процессом перевода системы с использования AWS SQS на Apache Kafka. С командой построил на Kafka всю eventual consistency проекта. Полтора года применяет на проекте Kafka для выполнения фоновых задач, таких как обработка данных из файлов или отправка email-сообщений.
За свою карьеру обучил несколько full-stack разработчиков среднего уровня, а сейчас возглавляет и наставляет людей в качестве тимлида и старшего инженера-программиста. Эксперт в разработке ПО под нужды бизнеса.
Пройденная программа курса
]
[
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. Презентация проекта

Этот раздел посвящен презентации курсовых проектов участников, обсуждению проблем, возникших во время реализации, и использованных в проектах шаблонов проектирования.