alt text

Однажды Диоген увидел, как разработчик читает требования и плачет, а слёзы смывают грязь с его лица. Диоген перестал ходить к реке умываться, сказав: «Мальчик превзошёл меня в простоте жизни».

В мире разработки программного обеспечения, как и в философии, существуют различные школы мысли, подходы и мировоззрения. Каждый архитектор и разработчик — осознанно или нет — следует определённым принципам, которые, для нужд этой статьи, удивительным образом перекликаются с древними философскими учениями. Давайте рассмотрим эти параллели.

Я нагуглил некоторое количество философских школ и спешу предложить вам такую аналогию:

  • Киники — просто и минималистично.
  • Платоники — невыносимо сложно и идеалистично.
  • Стоики — надёжно, но рано или поздно всё упадёт.
  • Софисты — красиво, но непрактично.
  • Прагматики — работает, и ладно.
  • Схоласты — бесконечные обсуждения архитектуры, но ни одной строчки кода.

Теперь давайте остановимся подробнее на каждой школе мысли.

Киники

  • «Зачем нам фреймворк? Есть же bash!»
  • Документация? «Читайте код».
  • CI/CD? git push --force решает все проблемы.
  • Docker? systemd нам в помощь.
  • Намеренно пишут неортодоксальный код, чтобы «встряхнуть» команду.
  • Проводят демонстрации багов прямо на проде.

Платоники

  • Реальный код — это лишь несовершенная тень идеального дизайна.
  • Каждый баг — это лишь тень несовершенства реального кода.
  • Нам нужен ещё один слой абстракции между абстракциями.
  • Простое решение не может быть правильным по определению.
  • В идеальном мире каждый метод — это интерфейс.
  • Настоящая архитектура существует только в UML-диаграммах.

Стоики

  • Падение прода неизбежно, а каждая ошибка может стать последней.
  • Стремление важнее результата — «Ничего не получилось, но мы сильно старались».
  • Никто не ощущает баги — о них только думают.
  • Не облекай свой код в пышные абстракции.
  • Люди пишут код с багами невольно.
  • Являюсь ли я частью проблемы или её решения?

Если вы слышите, как кто-то читает молитву о безмятежности, то перед вами стоик: «Боже, дай мне душевный покой принять тот код, который я не могу изменить, мужество изменить тот, что могу, и мудрость отличить одно от другого».

Софисты

  • Красота кода важнее его практичности.
  • На код-ревью больше обсуждают стиль, чем функциональность.
  • «Да, это медленнее работает, зато посмотрите, какая архитектура!»
  • Могут убедить заказчика, что баг — это фича.
  • На код-ревью побеждает не самый правый, а самый красноречивый.

Прагматики

  • «Работает? Не трогай. Не работает? Почини как можешь».
  • Документация? «Код сам себя документирует».
  • Архитектура — это то, что получилось в итоге.
  • Технический долг? «Будущие проблемы решим в будущем».
  • «Лучшее — враг хорошего, а рефакторинг — враг работающего».

Схоласты

  • Команда может месяцами обсуждать «идеальную архитектуру».
  • Создаются сложные диаграммы и документация.
  • Проводятся бесконечные митинги по дизайну.
  • Каждое решение требует согласования на архитектурном комитете.
  • Но реальный код так и не пишется.

Заключение

Возможно, главный урок, который мы можем извлечь из этой аналогии — это то, как много вокруг людей с неправильными подходами и мировоззрениями. Но не унывайте и помните мудрые слова Марка Аврелия:
«Сегодня мне придётся столкнуться с людьми навязчивыми, неблагодарными, заносчивыми, коварными, завистливыми, неуживчивыми. Эти свойства проистекают от незнания ими добра и зла. Я же, познавший прекрасную природу добра и постыдную — зла, понимаю и природу тех, кто заблуждается».

humorphilosophyarchitecture