Ответ
Да, 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+.