- Добавляй новую функциональность только в том случае, если без нее нельзя завершить уже существующее приложение.
- Решить, чем система не является, столь же важно, сколь решить, чем она является. Не пытайся удовлетворить все мыслимые потребности; вместо этого сделай систему расширяемой, чтобы новые потребности могли быть удовлетворены совместимым образом.
- Хуже обобщения одного примера может быть только обобщение вообще без примеров.
- Если проблема не понята до конца, возможно, лучше не решать ее вовсе.
- Если ты можешь добиться 90 процентов нужного эффекта, затратив всего 10 процентов сил, используй более простое решение.
- Изолируй сложные места как можно тщательнее.
- Обеспечивай механизм, а не политику. В частности, клиент должен определять политику пользовательского интерфейса.