Философское отступление: Дьявол в деталях, а…

Программисты очень любят присказку «Дьявол в деталях». Используется она обычно в качестве оправдания, типа мир такой сложный, заказчики такие «странные», денег (времени) таки мало, вот и получается строго по Черномырдину: «Хотели как лучше, получилось как всегда».

Любопытно то, что дьявол (с точки зрения программистов) живет почему-то в деталях…

Думаю, что все разработчики с большим опытом сталкивались с тем, что все проекты можно расставить на шкале между двумя крайностями.

Крайность 1: вновь появляющиеся проблемы странным образом [относительно] легко решаются, почему-то оказывается, что архитектура программы позволяет решить новые проблемы без существенных переделок.

Крайность 2: «чтобы они не делали, не идут дела», новые проблемы приводят к переделке всего и вся, архитектура летит к черту, а вместе с ней и производственные планы.

На мой взгляд, большинство проектов расположены около второй крайности, что подтверждается статистикой (на которую я случайно наткнулся): «около 9% проектов крупных компаний было завершено во время и в пределах бюджета; аналогичного успеха удалось достигнуть в 16% проектов мелких компаний» [Д. Леффингуэл, Д. Уидриг, Принципы работы с требованиями к программному обеспечению, «Вильямс», 2002, стр. 35].

Вроде бы уже можно бы и задуматься, но ведь «дьявол в деталях», значит, надо заниматься деталями!

Забавно еще и то, что фраза про дьявола явно незакончена. В сети есть рассуждения и предположения на эту тему, например:

  • Дьявол кроется в деталях, вся машина принадлежит Богу
  • Или Бог в мелочах, а дьявол в крайностях

Не буду разбирать эти высказывания, программисты явно говорят не об этом.

Вернусь к мысли о крайностях и архитектуре.

Мы знаем примеры гениальной архитектуры. Например, архитектура человеческого тела безусловно гениальна. Замечу, что архитектура тела — это компонентная архитектура высокого уровня. Архитектор собирал тело не из молекул (или чего там еще мелкого), а из органов. Очевидно, что кто-то еще конструировал органы – компоненты нужного качества (может тот же самый архитектор, а может и нет).

Вернемся к программам. Все мы знаем, что если архитектура программы сделана хорошо, то шансов взлететь у проекта становится больше, а чертей (дьяволов?) в программе заметно меньше. Замечу, меньше становится не деталей, а чертей, так как не в каждой детали есть черт… (кстати, сколько чертей может поместится в одной детали или на одной строчке исходного кода? И зависит ли это от языка программирования?)

Исходя из вышесказанного потока сознания, моя личная версия присказки звучит так:

Дьявол в деталях, если нет Ангела в устройстве

Или, если уменьшить уровень мистики: чтобы в программе было поменьше чертей, надо тщательней продумывать устройство программы и устройство деталей.

Опубликовано в

2 комментария


  1. Читаю книгу, натыкаюсь на цитату [Макс Мах, «Времена не выбирают»]:

    «как говорится, дьявол в деталях, а если речь о кулинарии, то тем более. В приготовлении таких сложных блюд, как плов, все ведь решают частности, специфика, ингредиенты и процесс.»

    Еще один кусочек понимания становится на место: в искусстве, а кулинария — это одно из важнейших искусств, все решают детали. И это принципиальное отличие искусства от инженерии.

    То, что хорошо в плове, плохо в промышленном программировании. В разработке ПО мы всегда должны получать результат не ниже чем на твердую четверку, независимо от бригады поваров.

    Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *