Pull to refresh

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

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

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

  • Киники — просто и минималистично.

  • Платоники — невыносимо сложно и идеалистично.

  • Стоики — надёжно, но рано или поздно всё упадёт.

  • Софисты — красиво, но непрактично.

  • Прагматики — работает, и ладно.

  • Схоласты — бесконечные обсуждения архитектуры, но ни одной строчки кода.

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

Киники

  • «Зачем нам фреймворк? Есть же bash!»

  • Документация? «Читайте код».

  • CI/CD? git push --force решает все проблемы.

  • Docker? systemd нам в помощь.

  • Намеренно пишут неортодоксальный код, чтобы «встряхнуть» команду.

  • Проводят демонстрации багов прямо на проде.

Платоники

  • Реальный код — это лишь несовершенная тень идеального дизайна.

  • Каждый баг — это лишь тень несовершенства реального кода.

  • Нам нужен ещё один слой абстракции между абстракциями.

  • Простое решение не может быть правильным по определению.

  • В идеальном мире каждый метод — это интерфейс.

  • Настоящая архитектура существует только в UML-диаграммах.

Стоики

  • Падение прода неизбежно, а каждая ошибка может стать последней.

  • Стремление важнее результата — «Ничего не получилось, но мы сильно старались».

  • Никто не ощущает баги — о них только думают.

  • Не облекай свой код в пышные абстракции.

  • Люди пишут код с багами невольно.

  • Являюсь ли я частью проблемы или её решения?

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

Софисты

  • Красота кода важнее его практичности.

  • На код-ревью больше обсуждают стиль, чем функциональность.

  • «Да, это медленнее работает, зато посмотрите, какая архитектура!»

  • Могут убедить заказчика, что баг — это фича.

  • На код-ревью побеждает не самый правый, а самый красноречивый.

Прагматики

  • «Работает? Не трогай. Не работает? Почини как можешь».

  • Документация? «Код сам себя документирует».

  • Архитектура — это то, что получилось в итоге.

  • Технический долг? «Будущие проблемы решим в будущем».

  • «Лучшее — враг хорошего, а рефакторинг — враг работающего».

Схоласты

  • Команда может месяцами обсуждать «идеальную архитектуру».

  • Создаются сложные диаграммы и документация.

  • Проводятся бесконечные митинги по дизайну.

  • Каждое решение требует согласования на архитектурном комитете.

  • Но реальный код так и не пишется.

Заключение

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

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

Tags:
Total votes 4: ↑4 and ↓0+4
Comments0

Articles