Каждый сотрудник Design and Test Lab имеет право на карьерный рост в рамках организации.

Цели программы карьерного роста:

  1. Реализация заинтересованности сотрудников в профессиональном и карьерном росте.
  2. Обеспечение роста социального и материального.
  3. Предоставление возможностей для профессионального самовыражения и творчества.
  4. Формирование корпоративных условий социальной защищенности и социальных гарантий.

Идеология:

Компания — средство реализовать свои профессиональные, творческие и социальные устремления.

Лозунг:

Честолюбие — это то, от чего в последнюю очередь отрекаются мудрецы!

Требования в карьере делятся на несколько типов:

  • знать, например: “знать шаблоны проектирования”;
  • уметь, применять, например: “уметь рефакторить”, “применять шаблоны программирования”;
  • соблюдать, например: “соблюдение стандартов документирования кода”.

Экзамены проводятся относительно избранных источников.

Правильное отношение к карьерным экзаменам

Правильное отношение к карьерному экзамену — повысить свой уровень квалификации, иметь больше знаний и навыков, чтобы эффективнее решать поставленные задачи, получить больше ответственности и больше полномочий.

Неправильное отношение — сдать экзамен для галочки, выучить-сдать-забыть, и весь другой деструктивный негатив.

Подготовка к экзаменам

“Знание стандартов документирования кода”

Проверяется устным или письменным экзаменом.

Библиография:

“Знать шаблоны проектирования”

Проверяется устным или письменным экзаменом.

Библиография:

  • Эрих Гамма, Р. Хелм, Р. Джонсон, Дж. Влисс. “Приемы объектно-ориентированного проектирования. Паттерны проектирования”.

Вопросы:

  1. Назовите принцип объектно-ориентированного проектирования для повторного использования (по Гамме)?
  2. Назовите второе правило объектно-ориентированного проектирования (по Гамме)?
  3. Какая самая трудная задача в объектно-ориентированном проектировании (по Гамме)?
  4. В чем отличие класса объекта от типа объекта?
  5. Назовите механизмы повторного использования?
  6. Назовите назначение паттерна X?
  7. Назовите паттерн для назначения X?
  8. В чем отличие паттерна X от Y?
    • Abstract Factory от Builder
    • Abstract Factory от Factory Method
    • Strategy от State
    • Adapter от Decorator
  9. Где можно было бы применить паттерн X в текущих или прошлых проектах?

“Знать архитектуры приложений”

Проверяется устным или письменным экзаменом.

Библиография:

  1. Мартин Фаулер. “Шаблоны корпоративных приложений”.
  2. Эрик Эванс. “Предметно-ориентированное проектирование (DDD). Структуризация сложных программных систем”.
  3. Сэм Ньюман. “Создание микросервисов”.
  4. Владимир Обризан, Сергей Зайченко “Конспект эксперт-лекций по надежному программному обеспечению”.
  5. ISO/IEC/IEEE 42010 Systems and software engineering — Architecture description, 2011.
  6. Гради Буч. “Объектно-ориентированный анализ и проектирование”

Вопросы:

  1. Что такое архитектура (architecture)? Что такое архитектурное описание (architecture description)?
  2. Почему архитектурные ошибки очень дороги в исправлении, будучи обнаруженными на поздних этапах разработки?
  3. Какие методы раннего обнаружения архитектурных ошибок вы знаете?
  4. Что такое исполнимая спецификация?
  5. Что такое шаблон Спецификация (Specification)?
  6. Что такое шаблон Репозиторий (Repository)?
  7. Что такое информативный интерфейс?
  8. Поясните принцип command-query separation, зачем он нужен?
  9. Поясните многослойную архитектуру приложения, ответственности всех слоев.
  10. Что такое предохранительный уровень (anti-corruption layer)?
  11. Что такое адаптивность?
  12. Что такое конфигурируемость?
  13. Что такое тестопригодность?
  14. Что такое предметно-ориентированные языки? Как они способствуют надежному программированию?
  15. Что такое сущность (entity)? Что такое объект-значение (value-object)?
  16. Что такое агрегат?
  17. Что такое структура классов? Что такое структура объектов? В чем их отличие?

“Понимание основных концепций и атрибутов качества программного обеспечения”

Проверяется устным экзаменом.

Библиография:

  1. Ian Sommerville, “Software Engineering”.
  2. Владимир Обризан, Сергей Зайченко “Конспект эксперт-лекций по надежному программному обеспечению”.
  3. Гради Буч. “Объектно-ориентированный анализ и проектирование”

Вопросы:

  1. Перечислите знакомые вам атрибуты качества программного обеспечения?
  2. Дайте определение понятиям: сложность; надежность; отказоустойчивость; тестопригодность; производительность; доступность; адаптивность; конфигурируемость;
  3. Какими метриками определяется свойство ______?
  4. Охарактеризуйте ваш текущий проект с точки зрения атрибутов качества.

“Знание стандартов спецификации API (Swagger, gRPC)”

Проверяется устным экзаменом.

Библиография:

  1. Swagger
  2. Google API Design Guide
  3. gRPC
  4. Владимир Обризан, “Конспект лекций по надежному программному обеспечению”
  5. TBD: Service design patterns book.

Вопросы:

  1. Что такое API?
  2. Что такое REST API?
  3. На каком этапе разработки нужно разрабатывать спецификацию API?
  4. Что такое исполнимая спецификация?
  5. В чем преимущества исполнимой спецификации перед неисполнимой?
  6. Сравните стоимость ошибки в спецификации API со стоимостью ошибки в реализации API.
  7. Что такое Swagger?
  8. Для каких задач применяется Swagger?
  9. Что такое gRPC?
  10. В чем отличие эндпоинта (endpoint) от операции (operation)?
  11. Что такое ресурс? Что такое коллекция?
  12. Назовите основные структурные блоков Swagger-спецификации.
  13. На каких языках описывается Swagger-спецификация?
  14. Для чего используется блок components/schemas в Swagger-спецификации?
  15. Допустимы ли два одинаковых HTTP-метода для одного пути в Swagger-спецификации?
  16. В чем отличие типа данных number от integer в Swagger-спецификации?
  17. Какие способы валидации данных предоставляет Swagger-стандарт?
  18. Как задается паджинация (pagination)?
  19. Назовите типичные шаблоны проектирования REST API.
  20. Приведите пример совместимого и несовместимого изменения в REST API.