| 17. Поиск истины | |
| На сколько бы не была сложна высшая математика, она все же имеет одно неоспоримое преимущество перед проектированием архитектуры. В математике существуют незыблемые аксиомы, от которых можно протянуть неразрывную логическую цепь и доказать все что угодно, если это «что угодно» действительно истинно. Вся сложность заключается именно в построении такой цепочки. | |
| В проектировании архитектуры таких аксиом, увы, не существует. Никакая логика и никакой алгоритм не помогут найти стопроцентно верного решения. | |
| Проектирование архитектуры похоже на поиск выхода из черного лабиринта глубокой ночью. Если вы в этом лабиринте впервые — вы обязательно набьете себе бесчисленное количество шишек и никогда не сможете выйти из него кратчайшим путем. Паттерны проектирования, хорошие привычки, стиль, различные рекомендации — это всего лишь тусклый фонарик, который будет освещать путь на шаг вперед. Все остальное вам даст только опыт, состоящий из постоянного прохождения лабиринта и набивания шишек. Если разработчик программного обеспечения решил встать на путь архитектора, то ему следует быть готовым к тому, что этот путь будет тернист. | |
| Проектирование это прежде всего опыт и интуиция, и только потом — логика и рассчет. Проектирование — наука гуманитарная, а не техническая. Для проектирования лучше подходят слова «красиво» и «изящно», чем «логично» и «верно». Довольно распостраненной ошибкой является применении математического подхода и образа мышления в проектировании — ни к чему хорошему эти методы не приводят. | |
| Проектирование в некотором смысле можно сравнить с написанием сихов. Самые прекрасные стихи рождаются сами собой, без мучительного поиска подходящей рифмы. Они возникают как единый образ, без какой-либо нудной доводки. Подобно этому самые гениальные архитектурные решения рождаются из ниоткуда, без какой-либо детальной логической проработки — в один прекрасный момент в голове рождается полная картина происходящего. Проблема заключается в том, что это случается очень редко, и, вместо того, чтобы руководствоваться интуицией, человек начинает руководствоваться логикой. | |
| При проектировании архитектуры программного обеспечения перед собой следует ставить единственную цель — придумать красивое решение. Красивое во всех смыслах этого слова, красивое во всем. Не следует думать о том, хватит ли программе памяти, не будет ли она тормозить, и прочих второстепенных проблемах. Следует ставить всего одну цель — красивое решение. Опыт показывает, что следствиями красивого решения являются вполне приемлемая производительность и достаточно рациональное использование ресурсов. | |
| Есть множество методологий программирования и проектирования, однако, каждая из них представляет собой лишь ветхую защиту от весьма ограниченного круга проблем. Единственное, что заставит ваш фонарик светить ярче — время, опыт, и постоянное набивание шишек. | |