Детский сад штаны на лямках.
Какой же ты сеньор, если не можешь быстро закодить алгоритмическую задачку просто на скиллах, на быстром мышлении. Даже если особо никогда АСД не изучал (что уже само по себе зашквар), ну за столько-то лет должен был осознанно выработать набор типовых паттернов кодирования задачек подобной сложности. Ну и натренировываться на собесах постоянно, это же абсолютное требование по карьере.
Если честно, в последнее время я всё больше склоняюсь к тому, чтобы не бороться с эйчаровским злом, а примкнуть к нему. Ужесточить найм до абсолютного предела, спрашивать обязательно например на собесах
1. Вам надо выбрать стиль (ООП,ФП...)/язык/фреймворк для нового проекта. Определите требуемые свойства как типы-предикаты (пропозиции) и постройте формальные пути между ними, показывающие их совместимость или конфликты. Используйте одну из наиболее сильных систем классификаций -- h-levels из гомотопической теории типов.
2. Смоделируйте каждую сущность в проекте (таблицу базы, модель ORM) как Sigma-тип, где первая проекция содержит сами данные, а вторая - доказательство инвариантов. Например
Σ(x:User).(valid_email(x .email) × valid_password(x .password)))
Реализуйте каждый эндпоинт как функтор
F: Request → Response
где естественное преобразование
η: F ⇒ G
между функторами разных эндпоинтов автоматически обеспечит согласованность их композиции.
=
Вот тогда и найм быстро самовосстановится.
