К основному содержимому
все выпуски
Code of Architecture · выпуск 30

A Philosophy of Software Design — выпуск 1

1:07:46

Участники выпуска

Содержание

Что обсудили голосом

Первый выпуск знакомит с книгой Джона Оустерхаута, выросшей из курса в 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 часто глубже узкого набора операций, если общий механизм остаётся простым для частого сценария.

Серия по книге
A Philosophy of Software Design
John Ousterhout
Плейлист книги