Кладовочка

О разном, чтобы было под рукой онлайн

Принципы, которые должен знать архитектор ПО

97 принципов из одноимённой книги-сборника — сжатая мудрость десятков практикующих архитекторов. От коммуникации до технического долга.


Бизнес и коммуникация

  1. Не ставьте своё резюме выше интересов клиента. Технологии ради технологий — предательство доверия.
  2. Возможно, ваша главная проблема не в технологиях. Люди, процессы, бюджет — часто важнее кода.
  3. Общение — король, ясность и лидерство — его верные слуги. Без коммуникации архитектура мертва.
  4. Вы ведёте переговоры чаще, чем вам кажется. Каждое согласование — переговоры.
  5. Всем заправляет бизнес. Технические решения обслуживают бизнес-цели.
  6. Подготовьте убедительное экономическое обоснование. Без цифр ваше решение — мнение.

Простота и сложность

  1. Снижайте неотъемлемую сложность, устраняйте второстепенную. Боритесь с тем, что создано вами.
  2. Простота лучше универсальности. YAGNI: вам не понадобится.
  3. Простое должно быть простым. Не усложняйте простые вещи ради «архитектурной чистоты».
  4. Не мудрствуйте. Сложность — не признак мастерства.
  5. Лучшее — враг хорошего. Не стремитесь к идеальной архитектуре.
  6. Масштаб — враг успеха. Растущая система требует растущей дисциплины.
  7. Не создавайте решения «на перспективу». Решайте сегодняшние проблемы.

Проектирование и код

  1. Производительность приложения определяется его архитектурой. Не оптимизациями постфактум.
  2. Создание архитектуры — искусство баланса. Компромиссы неизбежны.
  3. Архитектурные компромиссы — осознанный выбор между противоречивыми требованиями.
  4. Приготовьтесь выбрать два из трёх. Быстро, дёшево, качественно — выберите два.
  5. Одна строка рабочего кода стоит 500 строк спецификации. Код — истина.
  6. Программирование — часть процесса проектирования. Архитектор, не пишущий код, теряет связь с реальностью.
  7. Архитектор должен быть практиком. Иначе его решения — фантазии.
  8. Архитектор — прежде всего разработчик. Не должность, а роль.
  9. Проектируйте только то, что можете запрограммировать. Абстракции без реализации опасны.
  10. Начните с ходячего скелета. Работающий прототип лучше идеальной схемы.
  11. Лучшие программы не строят — их выращивают. Архитектура эволюционирует.

Требования и предметная область

  1. Ищите истинный смысл требований. За каждым требованием — потребность.
  2. Разберитесь в предметной области. Без доменных знаний архитектура оторвана от жизни.
  3. Изучите профессиональный жаргон. Ubiquitous language — общий язык с заказчиком.
  4. Чётко определённые задачи решаются качественно. Размытые требования — размытый результат.
  5. Сомневайтесь в допущениях — особенно в собственных. Ваши убеждения — главный источник ошибок.
  6. Когда видите единственное решение — спросите других. Единственность — признак неполноты анализа.
  7. Правила диктует контекст. Универсальных решений не существует.

Данные и инфраструктура

  1. В основе всего — данные. Код меняется, данные остаются.
  2. База данных как Крепость. Защищайте целостность данных.
  3. Управляйте не только кодом, но и данными. Схема, миграции, версионирование.
  4. Архитектор должен разбираться в оборудовании. Железо определяет ограничения.
  5. Выбирайте инфраструктуры, хорошо сочетающиеся с другими. Интеграция — ключ к масштабированию.
  6. Небоскрёбы не масштабируются. Монолитная архитектура имеет пределы.
  7. Обеспечьте непрерывную интеграцию. CI — не опция, а необходимость.

Качество и технический долг

  1. Сбои неизбежны. Проектируйте устойчивость, а не отсутствие сбоев.
  2. Используйте количественные критерии. Без метрик нет управления качеством.
  3. Думать о производительности никогда не рано. Поздняя оптимизация — переписывание.
  4. Не забывайте о производительности. Но не оптимизируйте преждевременно.
  5. Проверяйте решения на прочность по ключевым характеристикам. Тестируйте нефункциональные требования.
  6. Расплатитесь по техническим кредитам. Долг растёт с процентами.
  7. «Срезание углов» сейчас обойдётся слишком дорого потом.
  8. Уделяйте пристальное внимание поддержке и сопровождению. Система живёт дольше, чем пишется.
  9. Ваша система станет унаследованной — учитывайте это при проектировании.

Люди и команда

  1. Предоставьте разработчикам независимость. Микроменеджмент убивает архитектуру.
  2. Поддерживайте разработчиков. Архитектор — не контролёр, а помощник.
  3. Не контролируйте — наблюдайте. Дайте команде свободу в рамках ограничений.
  4. «Я» в архитектуре не существует. Архитектура — продукт команды.
  5. Делитесь знаниями и опытом. Архитектор-одиночка — бутылочное горлышко.
  6. Найдите и удерживайте энтузиастов. Один увлечённый стоит десятерых равнодушных.
  7. Ответственное руководство важнее внешнего впечатления.
  8. Отвечайте за свои решения.
  9. У программной архитектуры есть этические аспекты.

Мышление архитектора

  1. Встаньте! Меняйте перспективу, смотрите на систему с разных точек.
  2. Посмотрите с высоты 300 метров. Детали замыливают картину.
  3. Руководствуйтесь неопределённостью. Планируйте для неизвестного.
  4. Пробуйте, прежде чем сделать выбор. Прототипируйте архитектурные решения.
  5. Время меняет всё. Сегодняшнее правильное решение — завтрашний антипаттерн.
  6. Не спешите решать задачи. Дайте проблеме «отлежаться».
  7. Записывайте свои обоснования. Почему принято именно это решение — важно.
  8. Осознавайте последствия изменений. Взмах крыла бабочки в архитектуре.
  9. Освойте новый язык. Новый язык — новый способ мышления.
  10. Учитесь у архитекторов зданий. Физические ограничения дисциплинируют.
  11. Боритесь с повторениями. DRY — на уровне архитектуры.
  12. Добро пожаловать в реальный мир. Теория и практика — разные вещи.
  13. Остерегайтесь «хороших идей». Не каждая идея должна быть реализована.
  14. Всё будет не так, как задумано. Готовьтесь к изменениям.

Антипаттерны

  1. Не увлекайтесь архитектурными метафорами. «Система как живой организм» — красиво, но бесполезно.
  2. Патология шаблонов. Шаблон ради шаблона — вред.
  3. Решений на все случаи жизни не существует. Silver bullet нет.
  4. Сделать наспех и сбежать — преступление. Передача непродуманной архитектуры — саботаж.
  5. «Архитектор ПО» пишется со строчной буквы. Не культивируйте эго.
  6. Неоднородность побеждает. Гомогенные системы — миф.
  7. Проблемы могут быть больше, чем их отражение в зеркале. То, что вы видите — не вся картина.
  8. Повторное использование зависит не только от архитектуры. Культура и процессы важнее.
  9. Бизнес и недовольный архитектор. Если архитектор недоволен — он строит неправильную систему.
  10. Для пользователя интерфейс — это и есть система. Архитектура не видна пользователю — и это нормально.

Связанные статьи на сайте

Что дальше


Связанные статьи: Архитектурные роли в ИТ: кому какие принципы важнее