Следует ли спрашивать Middle-разработчика о принципах проектирования (Design)?

«Следует ли спрашивать Middle-разработчика о принципах проектирования (Design)?» — вопрос из категории Софт-скиллы, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый пример ответа, который можно адаптировать под свой опыт.

Ответ

Да, Middle-разработчик должен понимать и применять базовые принципы проектирования.

Ожидаемый уровень знаний включает:

  • Принципы: SOLID, DRY, KISS.
  • Паттерны проектирования: Умение применять Factory, Strategy, Observer, Adapter в реальных задачах.
  • Архитектурные решения: Способность обосновать выбор между монолитом и микросервисами для конкретного случая.
  • Качество кода: Опыт рефакторинга, работа с зависимостями.

Пример проверки понимания инверсии зависимостей (Dependency Injection):

// Плохо: Жесткая привязка к конкретной реализации
class PaymentService {
    private PayPalGateway gateway = new PayPalGateway();
}

// Хорошо: Зависимость от абстракции, внедряется извне
class PaymentService {
    private final PaymentGateway gateway; // Интерфейс
    public PaymentService(PaymentGateway gateway) {
        this.gateway = gateway;
    }
}

Не стоит углубляться в сложные Enterprise-шаблоны — это уровень Senior+.