System Design

Зачем эта секция

  1. Проверка навыков - может ли кандидат построить работоспособную архитектуру приложения на основе собранных требований.
  2. Проверка умения взвешивать плюсы и минусы выбранных решений, способность выявлять и нивелировать долгосрочные риски

Этапы

Понимание поставленной задачи

Нужно самостоятельно задавать вопросы на понимание границ проектируемой системы, сценариев использования продукта. Также нужно собрать функциональные и нефункциональные требования.

Нужно обсуждать:

  • конкретную функциональность
  • аудитория
  • сроки
  • границы проектируемой системы
  • интеграция с партнерами

Высокоуровневый дизайн

Для наглядности можно нарисовать схему компонентов и связи между ними.

Погружение

  • Технологический стек
  • Клиент-серверное взаимодействие
  • Тестирование
  • Метрики