суббота, 26 ноября 2016 г.

Тепличные системы



Наверное, все сталкивались с ситуацией, когда код в продукте - какое-то страшное нагромождение, которое "хочется взять и .... переписать", или бизнес-процессы в компании закручены клубком и всё как-то не работает. Часто возникает желание "начать с чистого листа" и в спокойной обстановке "сделать всё по уму". Но не выходит, потому что постоянно "мешают" - отвлекают каким-то запросами, проблемами. Клиент у них там чего-то резко захотел странного, надо быстро деплоиться, issues от саппорта сыплются, руководство срочно требует чего-то такого всем куда-то внедрить, чтобы работать лучше стали.

Сегодня я бы хотел поговорить о стремлении "сделать всё по уму" и о том, почему это опасно делать. Эта заметка навеяна моим личным опытом, а так же книгами Нассима Талеба, где я увидел очень хорошие формы для тех мыслей, которые уже некоторые время бродят у меня в голове.

Итак, о чем мечтает каждый автор? О том, чтобы ему дали карт-бланш ("чистый лист") на то, что бы разработать что-то в соответствии с лучшими практиками, технологиями и методологиями. Чтобы его не отвлекали в этой работе от стремления к идеалу, не торопили, заставляя "срезать углы". Дайте уже спокойно поработать! 

Это относится вовсе не только к программным продуктам, это может относиться к любым системам. Например, к организационным структурам и пронизывающим их бизнес-процессам.

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

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



Каждый раз, когда мы беремся что-то изобретать, у нас есть гипотеза о том, что и зачем мы делаем. Она появляется у нас в голове из предыдущего опыта, от того, что мы поговорили с какими-то людьми и они передали нам свои идеи, что мы где-то что-то прочитали или услышали. Из всего супа идей варится наше понимание цели и ожидаемого результата деятельности. Сколько бы у нас не было опыта и информации, то, что мы имеем - это всегда только гипотеза, которая всегда более или менее неверна. 

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

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

Талеб называет этот стиль мышления "платонизмом" - предпочтение фокусироваться на идеальном в противовес реальному. Забвение того факта, то реальность не совпадает с нашими представлениями о ней. Платонизм-по-Талебу создаёт ложное ощущение того, что мы понимаем, что происходит. Ложное ощущение уверенности в себе. Действительно, у нас же такие красивые и передовые модели, что может пойти не так?

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

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


Окей, это всё была философия и теория. Какие практические выводы из всего этого сделал для себя я?
"Top-down" подход
  1. Если видишь, как узкий круг лиц за закрытыми дверями принимает решения о реорганизации - жди беды. Оттуда вылезет какой-нибудь процессный монстр. Перед тем, как издохнуть он успеет помотать нервы сотрудникам. В такой ситуации надо либо сразу искать убежище, либо пытаться побиться в этот "узкий круг", чтобы заранее воздействовать на результат.
  2. Если решение разрабатывается в "top-down" подходе, где берут некую концепцию и пытаются "натянуть" её на текущую реальность - жди беды. Это один из тех методов, на которые надо наклеить предупреждающий знак - "никогда не пользоваться". 
  3. Бойся красивых, логичных и симметричных концепций - они приведут тебя в ад. 
  4. Если всё идет слишком гладко - жди беды. Скорее всего, выбран именно тот путь "проверки", который подвержен ошибке подтверждения. 
  5. Если кто-то даёт точные прогнозы - не верь им. Если таких прогнозов требуют от тебя - прояви скромность и честно скажи: "не знаю".
  6. Если не видишь в своей идее слабых мест, это не значит, что их нет. Это значит только то,что ты их просто не видишь. Включай "диверсионное мышление", обсуди её с самым вредным и критически настроенным коллегой, ищи failure stories схожие по ситуации. Ищи опровержения.
  7. Не надо расстраиваться, если "мешают работать", подсовывая "неудобные проблемы". Раз тебя достают, значит ты делаешь что-то нужное. Гораздо хуже, если о твоей работе не вспоминают. Скорее всего, ты уже оторвался от реальности, и неизбежное столкновение с ней будет болезненным.
Ничего нового не сказал, правда? Подвох в том, что все эти принципы просты в теории, но сложны на практике. Они идут против естественного для человека хода мыслительного процесса, они создают дискомфорт. В кутерьме и спешке, когда нет времени спокойно подумать, легко поддаться искушению и сделать ровно наоборот. Чтобы применять всё это на практике, необходимо иметь высокий уровень интеллектуальной дисциплины. По моему глубокому убеждению это вопрос личной компетенции каждого человека. Никакие навязанные извне процессы и практики не помогут, если этого нет внутри.

За сим прощаюсь с вами, спасибо за внимание.