Рубцовая ткань. Что это такое? У нас один из партнеров написал скрипт, доводящий наш продукт “до ума” в недружелюбной для продукта среде. Видимо, в какой-то момент этот скрипт передавался от одного админа к другому и второй оставлял свои примечания, в основном в духе “WTF?!”. Там правда было очень много жутких и страшных извращенных приемов программирования. Но веселее всего то, что во многих местах продукт уже давно не требовалось допиливать скриптом, он давно уже научился сам нормально решать неприятные ситуации, а админ за админом продолжали поддерживать эту обвязку. Исправления в продукте вызывали поломку этой обвязки, и эти поломки чинились еще более жуткими обвязками, но все эти многие слои обвязок были НЕ НУЖНЫ, потому что в ее сердцевине уже давно не было проблемы. Это наиболее яркая иллюстрация того, что я называю РУБЦОВАЯ ТКАНЬ. Это код, это обходные решения, построенные из-за невозможности решить суть проблемы. Хуже всего, что со временем суть проблемы вообще забывается и эта рубцовая ткань может стать вполне самостоятельным “организмом”, высасывающим силы из команды. Рубцовая ткань это не всегда код. Это может быть процесс, или шаблоны поведения в команде. Сложившиеся когда-то давно под воздействием каких-то обстоятельств, которые уже могли давно пропасть, а рубец остался. Наилучшая иллюстрация это анекдот про “здесь так принято”
Клетка. В ней 5 обезьян. К потолку подвязана связка бананов. Под ними лестница.
Проголодавшись, одна из обезьян подошла к лестнице с явными намерениями достать банан. Как только она дотронулась до лестницы, вы открываете кран и из шланга поливаете ВСЕХ обезьян очень холодной водой. Проходит немного времени, и другая обезьяна пытается полакомитЬся бананом. Те же действия с вашей стороны. Третья обезьяна, одурев от голода, пытается достать банан, но остальные хватают ее, не желая холодного душа.
А теперь уберите одну обезьяну из клетки и замените ее новой обезьяной.
Она сразу же, заметив бананы, пытается их достать. К своему ужасу, она увидела злые морды остальных обезьян, атакующих ее.
После третьей попытки она поняла, что достать банан ей не удастся. Теперь уберите из клетки еще одну из первоначальных пяти обезьян и запустите туда новенькую. Как только она попыталась достать банан, все обезьяны дружно атаковали ее, причем та, которую заменили первой еще и с энтузиазмом.
И так, постепенно заменяя всех обезьян, вы придете к ситуации, когда в клетке окажутся 5 обезьян, которых водой вообще не поливали, но которые не позволят никому достать банан. Почему?
Потому что тут так принято... И в коде, и в поведении убирать рубцовую ткань очень сложно, потому что в первую очередь нужно понять, что она рубцовая. Ведь она живая, люди работают, шестеренки крутятся. Просто она грубая и не гибкая. Но убирать надо, для чего надо приучаться смотреть все время в корень проблем
Post #30
729