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