Каждые двадцать лет люди заново переизобретают гибкие подходы Agile. Почему так? Попробуем разобраться в коренных причинах этого, путем фиилософских рассуждений об абстракциях.

Что такое программирование? Это попытка выстроить набор абстракций, превратив много мелких деталей в какой-то один объект, и так далее, по принципу матрешки, все сложить в одну большую абстракцию со свойствами и поведением. Это называют системой, подсистемой и т.п.

Но так ли уникальна эта работа? Не делают ли ее люди, далекие от программирования? Конечно делают!

Любой бизнес и любые его части, включая продажи, постоянно занимаются построением абстракций для клиентов, которые платят деньгами или еще чем-то за их материализацию. Если так посмотреть, то вся экономика — это и есть нагромождение абстракций, желаний и ожиданий разных людей.

Но в чем же разница? Разница в том, что именно абстрагируется. И если в программировании все заранее детерминировано, но при этом допускается огромное число комбинаций при построении абстракций, то в экономике все сложнее — элементами, входящими в абстрагируемые подсистемы и системы, являются устремления и мысли людей в конкретный момент времени, которые подвержены практически любым последующим изменениям, в отличии от детерминированной природы вычислительных устройств. Детерминизм обеспечивается только верой и убежденностью — исключительно гуманитарными категориями, как бы кто не верил в свою технарскую сущность.

Откуда появляется недопонимание между бизнесом и программистами, и почему срываются сроки проектов или почему бизнес программистов не всегда успешен?

Ответ кроется в фундаментальном правиле несовпадения абстракций.

Неправильное определение систем и подсистем, неверное архитектурное проектирование, изменение требований заказчика — знакомо ли вам такое? Почти весь поток негодования программисты и заказчики друг на друга изливают именно по этим причинам. Но является ли принятое программистом решение относительно построения абстракции верным или неверным в любом случае? Конечно же нет. Можно говорить лишь о том, что абстракции одного ИТ-решения или архитектурного паттерна удовлетворяют или не удовлетворяют абстракции других сисием и подсистем, в том числе, построенных людьми от бизнеса.

Несовпадение абстракций на уровне систем и подсистем софта и железа приводит к ошибкам runtime.

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

Как видите, это почти всегда вопросы, относящиеся к конкретной ситуации с конкретными абстракциями.

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

Но жить как то надо, ведь постоянно пересматривать все абстракции — это очень энергозатратно для мозга.

Именно поэтому постоянно происходят попытки стандартизировать и заранее спроектировать процессы программирования (waterflow), а затем опять откатиться к статистическим методам Agile.
То же самое, и даже ещё сложнее, происходит в бизнесе. Там люди пытаются придумать абстракции, которые встраиваются не в другие жесткие и что-то гарантирующие абстракции, как в ИТ продуктах, а наоборот, пытающиеся угадать абстракции других людей.

Конечно, бизнес (и государство) идет по пути упрощения ситуаций, вводя нормы и правила. Но их жесткость не может быть обеспечена ничем, кроме как абстракциями верящих в них людей.

Какой можно сделать вывод программисту?

Не увлекайся внешней оболочкой модных веяний, все фундаментально постоянно и было так всегда, и не только у программистов. Помни, что любое твое суждение, мнение, решение ты делаешь в рамках построенных тобой, но и не только тобой абстракций. Если ты не сверил это с чужими абстракциями, включая абстракции бизнеса, какими бы бесчеловечными они не казались, это твоя проблема, и тебе ее проще решить, поменяв свои абстракции, попробовав предугадать или исследовав чужие абстракции. Чтобы поменять чужие абстракции, нужно встать на путь проповедника и обратить других людей в веру твоим абстракциям. Если ты встал на этот путь, будь готов к еще более сложным задачам по управлению абстракциями, помимо программирования. Будь готов к переговорам и обращению в веру других людей в общие абстракции, которые не будут иметь под собой детерминированной основы и будут ограничены во времени. Причем, ты можешь никогда и не узнать, почему у них в последствии пропала вера или изменилась абстракция.

Ограничивая абстракции принудительно, вводя правила для других, ты встаешь на путь войны и разрушения. И не факт, что в ходе войны не разрушат твое.

Помни, что успех будет только тогда, когда разные абстракции дополняют друг друга, создавая эффект синергии.

Комментарии (7)


  1. HerrDirektor
    21.11.2018 09:10

    Как называется вещество, которое провоцирует… кхм-хм… такой своеобразный стиль изложения?


    1. vdem
      21.11.2018 09:59

      Заголовок спойлера
      Родился на улице Герцена, в гастрономе номер двадцать два. Известный экономист, по призванию своему — библиотекарь. В народе — колхозник. В магазине — продавец. В экономике, так сказать, необходим. Это, так сказать, система… э-э-э… в составе ста двадцати единиц. Фотографируете Мурманский полуостров и получаете «Те-ле-фун-кен». И бухгалтер работает по другой линии — по линии библиотекаря. Потому что не воздух будет, академик будет! Ну вот можно сфотографировать Мурманский полуостров. Можно стать воздушным асом. Можно стать воздушной планетой. И будешь уверен, что эту планету примут по учебнику. Значит, на пользу физике пойдёт одна планета. Величина, оторванная в область дипломатии, даёт свои колебания на всю дипломатию. А Илья Муромец даёт колебания только на семью на свою. Спичка в библиотеке работает. В кинохронику ходят и зажигают в кинохронике большой лист. В библиотеке маленький лист разжигают. Огонь… э-э-э… будет вырабатываться гораздо легче, чем учебник крепкий. А крепкий учебник будет весомее, чем гастроном на улице Герцена. А на улице Герцена будет расщеплённый учебник. Тогда учебник будет проходить через улицу Герцена, через гастроном номер двадцать два, и замещаться там по формуле экономического единства. Вот в магазине двадцать два она может расщепиться, экономика! На экономистов, на диспетчеров, на продавцов, на культуру торговли… Так что, в эту сторону двинется вся экономика. Библиотека двинется в сторону ста двадцати единиц, которые будут… э-э-э… предмет укладывать на предмет. Сто двадцать единиц — предмет физика. Электрическая лампочка горит от ста двадцати кирпичей, потому что структура, так сказать, похожа у неё на кирпич. Илья Муромец работает на стадионе «Динамо». Илья Муромец работает у себя дома. Вот конкретная дипломатия! «Открытая дипломатия» — то же самое. Ну, берём телевизор, вставляем в Мурманский полуостров, накручиваем там… э-э-э… всё время чёрный хлеб… Так что же, будет Муромец, что ли, вырастать? Илья Муромец, что ли, будет вырастать из этого?
      ссылка


      1. Alegor
        21.11.2018 10:16

        цепочки Маркова и не такую ересь сгенерят, главное натренировать :)


  1. Alegor
    21.11.2018 09:54

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


  1. vdem
    21.11.2018 09:54

    del


  1. Vlad_fox
    21.11.2018 11:22
    +1

    исходя из частоты ключевых слов

    абстракции, программирование

    автор пытается продать себя как теоретика в программировании.
    Нужен тег — реклама, лучше — самореклама, или — прокрастинация.


  1. sbnur
    21.11.2018 11:23
    +1

    The road to wisdom? — Well, it's plain
    and simple to express:
    Err
    and err
    and err again
    but less
    and less
    and less.


    Piet Hein