Что ты знаешь о споре между Робертом Мартином и Кейси Моратори о чистоте кода и архитектуре
Что проверяют
Понимаете ли вы, что за громкими цитатами стоит один конкретный спор: сколько стоит абстракция и что мы оптимизируем, стоимость изменения кода или работу машины. Заодно смотрят, умеете ли выбирать сторону по контексту, а не по авторитету.
Для питониста это ещё и проверка, представляете ли вы, куда в вашем коде реально уходит время.
Как отвечать
Сначала предмет спора, потом своя позиция.
Роберт Мартин исходит из того, что код читают чаще, чем пишут, поэтому оптимизируется стоимость изменения: короткие функции, полиморфизм вместо ветвления, инверсия зависимостей, тесты как страховка рефакторинга.
Кейси Муратори в разборе «Clean Code, Horrible Performance» взял ровно эти правила и померил. Иерархия классов с виртуальным вызовом на каждый элемент проигрывает плоскому массиву и обычному ветвлению в разы: объекты размазаны по куче, кэш процессора и предсказатель переходов работать не могут. Его позиция шире одного бенчмарка: проектировать от формы данных и от машины, а структуру выращивать из уже написанного кода, а не придумывать слои заранее.
Дальше приземлите на Python. В CPython накладные расходы интерпретатора настолько велики, что разница между виртуальным вызовом и ветвлением в них тонет. Зато вторая половина аргумента бьёт точно: цикл по объектам против векторизации, список словарей против колонок, ORM, создающая объект на каждую строку. То есть спор переводится так: слои держим на границах, а горячий путь строим вокруг данных и подтверждаем замером.
Где спотыкаются
Пересказывают вывод «оба правы и дополняют друг друга», так и не назвав предмет разногласия. Получается вежливо и пусто, а собеседник хотел услышать про цену абстракции.
Приписывают Муратори любовь к архитектурным паттернам и модульности. Он критик именно такого проектирования, и путаница сразу показывает, что человек знает о споре по пересказам.
Переносят вывод на весь код: выкидывают функции и классы там, где время уходит в сеть и базу, и получают нечитаемый сервис без выигрыша. Обратная крайность не лучше: кандидат не может назвать ни одного места, где абстракция действительно стоила скорости.