Comments 8
Эту теорию стоит рассмотреть через призму Cynefin Framework. Грубо говоря, домен Simple -- это когда мы находимся в зоне комфорта, делаем нечто привычное, что умеем делать хорошо, не задумываясь о том, какой метод выбрать. Тревожность нулевая. Complicated требует аналитического подхода, мы вырываемся из рутины и возрастают и интерес, и тревожность. При этом тревожность вырастает незначительно, потому что бОльшая часть процессов остаются под нашим контролем. В домене Complex мы не можем применить аналитику, т.к. у нас недостает информации. Мы применяем исследовательский подход. Тут тревожность возрастает сильно. Мы как человек с завязанными глазами в незнакомой комнате: движемся осторожно, чтобы не удариться, запоминаем полученную информацию. Негативную информацию воспринимаем острее и запоминаем на более долгое время: например, то, как нас шандарахнуло током, мы помним долго, и избегаем повторения такого опыта. Домен Chaos -- это тревожность на максималках. Этот домен возникает в любого вида соревновании, в любой неожиданной ситуации и т.д.
Так вот инженерия -- это дисциплина, которая ДОЛЖНА вращаться вокруг домена Complicated. Нам должны быть понятны причинно-следственные связи той области, где мы работаем, должны быть минимизированы неожиданности. И мы спокойно, с большим интересом и разумной степенью тревожности должны заниматься созиданием... На практике, когда это касается software engineering (что в моем понимании является извращением термина) нас принудительно втягивают в неподобающий домен сложности. Нет внятных требований -- добро пожаловать в хаос. Грянут увольнения -- начинается соревнование "последний герой". Тоже хаос. Легаси код -- мы как слепые котята тыкаемся в стены, боясь тронуть то, чего не понимаем. Пока боимся -- в хаосе, когда начинаем трогать и оттуда идет запах -- попадаем в Complex. А начальството спрашивает как с рутины... Например, хочет, чтобы мы в офисы вернулись, как будто мы кассиры в быстрофуде. Таймтрекеры ставит, и т.д. И в целом да, ходят выгоревшие невыспавшиеся программисты и создают иллюзию производительности. Потому что тревожные.
Я задумывался отдельно на тему условного легаси: кода и сопровождающих его технологий. Этот археологический культурный слой неизбежно растёт со временем в большинстве проектов. То есть с годами его становится столько, сколько не было прежде нигде и никогда.
Это как бы создаёт минимальную базу тревожности.
Есть технологии, которые позволяют избежать легасилизации, но большинство проектов на них забивает. Там, где нужно чуть-чуть больше мотивации (например, чтобы дать методу недвусмысленное имя, или большой коммит разбить на несколько поменьше и каждый по отдельности описать в commit message) мы могли бы удержаться в Complicated с небольшой "тревожностью". Но, как правило, мы выбираем простой путь "и так сойдет".
Легаси -- это постоянно растущий технический долг. А с долгами (у нормального человека) растет тревожность, но лишь до определенного предела: потом становится все по фиг.
Можно попробовать сделать такое предположение: какой тип характера скорее бросит вызов легаси? Зная все перспективные сложности и побочные последствия процесса его устранения.
Рекомендую книгу Jonathan Boccara "The Legacy Code Programmer's Toolbox: Practical Skills for Software Professionals Working with Legacy Code". Там есть такая сентенция, что от легаси кода можно получать удовольствие. Но описан единственный способ это сделать: начать устранять легаси :)
Спасибо!
Есть два типа инженеров и менеджеров: первые лучше всего подходят для прорыва и создания нового кода и решений, вторые для их спокойной поддержки и сопровождения, в том числе в статусе «легаси».
Я отношу себя к первому типу. Когда-то мне довелось руководить и полным переделыванием этого сайта. Но Legacy уже настолько больше, чем прежде, что полностью отказаться от его приятия, я считаю, невозможно.
И прорыв, и смирение -- это два варианта поведения в хаосе. Мы как мыши в том эксперименте, только одних херачат током, других нет (скорее "пока нет"). Настоящий же инженер в родной среде обитания напоминает кота на диване (см. книгу "Как пасти котов"): спокоен, независим, иногда "тревожится" себе в удовольствие на поймать мышку.
Тревожность и производительность: как стресс влияет на работу