Do the simplest thing that could possibly work
Разрабатывайте самое простое, что только может работать.
Это правило годится и для исправления багов, и для новых систем.
Многие инженеры мечтают о «идеальной» архитектуре: масштабируемой, распределённой, красивой. Это ошибка. Лучше глубже понять текущую систему и сделать самое простое решение.
Простое может выглядеть скучно
Джуны любят рисовать сложные схемы из кэшей, очередей, прокси. Настоящее мастерство — уметь делать меньше. Великий дизайн выглядит тривиально: «О, задача оказалась простой».
Unicorn и стандартный Rails REST API — примеры: всё нужное достигается очевидными средствами.
Практика
Нужно ограничение частоты запросов в Go-сервисе?
- Вариант 1: Redis + алгоритм «протекающего ведра».
- Вариант 2: счётчики в памяти (теряются при рестарте).
- Вариант 3: включить rate-limit в edge-прокси одной строкой конфига.
Если последнее покрывает требования — выбирайте его.
Развивайте продукт, начиная с минимума и усложняя только по новым требованиям. Это YAGNI как высший принцип.
Возражения
-
Слякоть из костылей
Костыль не прост — он добавляет сложности. Настоящее простое решение требует понимания всей системы и часто сложнее придумать. -
Что такое «просто»?
Простота — это минимум сущностей, минимум переходов, минимум новых инструментов. Она не всегда очевидна и требует инженерной работы. -
Масштабирование
Простое не значит «только сейчас». Unix-сокеты, CGI, файлы — примитивы, на которых построены крупные системы. Если завтра потребуется масштаб, выясните новые факты и добавьте минимально необходимое.
Делайте самое простое, что только может работать — и будете удивлены, как далеко это вас заведёт.