Илья Зонов
ведущий
ведущий
ведущий
гость
Первый выпуск знакомит с книгой Джона Оустерхаута, выросшей из курса в Stanford. Её задача — управление сложностью. Design не выделяется в одно большое предварительное действие: решения принимаются инкрементально, но Agile не отменяет времени на структуру.
Сложность определяется как всё, что затрудняет понимание или изменение системы. Она проявляется через change amplification, cognitive load и unknown unknowns. Главные причины — dependencies и obscurity: связь либо заставляет менять несколько мест, либо остаётся скрытой. Небольшие уступки накапливаются постепенно, как в истории про варящуюся лягушку.
Автор противопоставляет tactical и strategic programming. Тактический подход быстрее выпускает текущую фичу, но оставляет следующему изменению более дорогую систему. Стратегический требует регулярно вкладываться в дизайн, интерфейсы и тесты. Working code необходим, однако его недостаточно, если скорость команды падает с каждым релизом.
Практическая часть вводит deep modules: простой interface должен скрывать значительный объём реализации. Information hiding уменьшает число знаний снаружи, а leakage и temporal decomposition создают неявные связи. Somewhat general-purpose module часто глубже узкого набора операций, если общий механизм остаётся простым для частого сценария.