Проследуем Мантрой Системного Мышления

Мне нравится порядок, в котором устроены руководства, и порядок, в котором даются задания.

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

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

Формулировка «возьмите какое-то одно звено» пока вызывает ступор, потому что я до сих пор словно не получил внятного ответа на вопрос: «Выходит, что можно делать zoom-in, zoom-out и брать за целевую систему разные системы в рамках моделирования на разных системных уровнях?»

Если пытаться ответить, то ведь можно. Почему нет? Иначе зачем всё это вообще? И помню про безмасштабность.

В последних материалах про роли и функции жирно подчёркивается важность контекста, и важность контекста — это не про перевёртыш «термины важны и не важны». Контекст важен абсолютно всегда. Системный уровень важен абсолютно всегда. Эти границы надо чётко находить, понимать и думать в их рамках.

Я думаю так: если на каком-то уровне есть создатель, роль, процесс/поведение, по которому создатель создаёт нечто, что является конструктивом-аффордансом для функционального объекта::система, который уже, выполняя свою функцию в какой-то точке пространства-времени, оказывает некое полезное влияние на физический мир, то про целевую систему тут говорить можно, так? Да… нужно!

Но я словно упускаю до сих пор что-то. Но что?

Ну например, я хорошо помню из «Рац. Работы» про граф создателей, да и в R5 это часто повторяют, и то, что целевую систему нельзя путать с описаниями или с конструктивами, которые создаются как аффордансы для подсистем целевой системы.

Непонятно, про какие звенья мне сейчас надо думать.

Быть может, если бы я заправлял конвейером по штамповке сепулек, мне было бы немного проще? Не уверен.

Попробую наконец пройти по мантре.

Что надо изменить в окружении целевой системы?

Сначала я подумал что-то вроде: «В окружении целевой системы надо изменить уровень фрустрации лиц, ответственных за финансовые B2B-отношения, упростить им работу по методам сбора задолженностей, выставления счетов-инвойсов, ведения учёта цифровых двойников физических инвойсов и новомодных e-invoices».

При повторном проходе — фрустрация не физична. Фрустрация — это эффект, и не очень-то “окружения”, а скорее психологический эффект у каких-то агентов в этом окружении. Поэтому тут надо заземлиться. От чего в физическом мире возникает фрустрация, откуда ноги растут? Ноги растут от состояния дебиторской задолженности — требования об оплате должны быстрее и надёжнее доставляться должникам, проходить через смену состояний: из «выставлено / ждёт оплаты / просрочено» в «оплачено / учтено», например.

А вот уменьшение фрустрации и уменьшение ручной координации этих переходов, чреватой кучей ошибок, — вот это уже эффект, которого надо добиться.

Каким способом/методом меняем окружение целевой системы?

Вот тут я задумался. Автоматизация::сервис, предоставляющая понятные средства и представления для выполнения работ по знакомым методам агентов из окружения целевой системы, — это способ/метод?

В этом месте у меня совсем всё разрушилось в голове, и я обратился за помощью к FPF.

FPF сказал, что я начал путаться в типах и использовать плохие формулировки, вроде зонтичного термина «автоматизация» и полисемичного — «сервис».

Сложно согласиться! Но хорошо, что мне хватило внимания к себе, к распознаванию дребезга.

Так каким же способом/методом меняем окружение целевой системы?

Способом/методом — «проведение требований об оплате через цикл сбора задолженности (collection-flow)», который включает в себя подспособы/подметоды:

  • создание и поддержание цифрового двойника счёта;

  • доставку требования должнику по подходящему каналу связи;

  • предоставление способа оплаты долга;

  • напоминание и эскалацию (chasing);

  • обработку ответных сообщений и возражений;

  • фиксацию поступления денег и синхронизацию с внешними учётными системами.

И тут сразу переходим к роли.

Какова роль целевой системы?

Роль системы можно назвать как-то так — «собиратель платежей по дебиторке».

Почему это функциональный объект / роль? Ну он прямо функциональный :slight_smile: На эту роль можно назначить аффордансом «Васю», который будет сидеть и малоэффективными средствами обзванивать и обписывать контрагентов, культурно требуя заплатить деньги. А можно назначить систему Octa Core, заколотить в неё своих клиентов, быстро настроить интеграцию с платёжной системой, расписание выставления платежей — и она начнёт делать всё, что может, по роли «собиратель платежей по дебиторке».

А еще кажется что на 100% оно само всё-таки не может, есть спорные пограничные случаи, поэтому правильным аффордансом на эту роль вдруг может оказаться киборг Вася + Octa Core, но тут я не уверен)))

Из чего будем делать целевую систему?

Целевую систему будем делать из программного комплекса::система, реализующего автоматизированные системы, задачами которых являются:

  • исполнение подролей роли «собиратель платежей по дебиторке»;

  • интеграции с внешними платёжными системами;

  • интеграции с каналами связи;

  • реализации моделера-интерфейса для настройки поведения целевой системы.

Конкретнее — из чего целевая система сделана-то?

Из:

  • программных компонентов;

  • модели данных;

  • адаптеров для интеграций с внешними системами;

  • интерфейсов настройки, наблюдения и использования.

Что ещё нужно для того, чтобы система работала?

Нужны:

  • инфраструктурная платформа;

  • система сборки, доставки и развёртывания изменений;

  • система мониторинга / наблюдаемости и обратной связи;

  • внутренние конфигурации.

Какими методами работы делаем целевую систему?

Целевую систему Octa Core делаем методами разработки продуктовых программных систем.

Какие это методы? Ну, одним «написанием кода» тут не обходится и никогда не обходилось.

Нужны:

  • разработка концепции использования на основе реальных use-cases по сбору задолженности;
    (это прямой ход обратно на первый пункт мантры, чтобы разбираться снова и снова, что там в окружении и что должно меняться);

  • разработка концепции системы и функционального устройства Octa Core;

  • принятие архитектурных решений по данным, интеграциям, надёжности и изменяемости;

  • инженерия платформы сборки, доставки, конфигурации и эксплуатации;

  • кодирование как реализация поведения системы в коде и моделях данных;

  • испытания и инженерные обоснования того, что система действительно выполняет нужную роль;

  • сопровождение и непрерывное развитие по обратной связи из рантайма.

И вот тут я снова стал путаться — натыкаться на мысли: «а как же продажи, маркетинг, онбординг, customer support и вообще инженерия самой организации? Нам же дальше надо будет на роли создателя отвечать. А разве создатель тут — только программисты и технари?», и я опять пошёл в FPF.

На что получил ответ, коротко: я уже в своём моделировании по мантре выбрал де-факто более узкое звено, и это правильно. Описывая методы создания и развития, некорректно мешать тут разные звенья из графа создателей.

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

Я в большей мере играю до сих пор роли как раз в «техническом звене», несмотря на мои попытки выйти в другую ветку, поэтому продолжу думать по мантре об этом звене.

Какова роль создателя?

Роль создателя тут — инженер, а точнее инженер продуктовой программной системы.

Кто/что будет создателем?

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

Дополнительные вопросы

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

Сразу с самого явного — о явном разделении звеньев, не интуитивном, не контринтуитивном, а просто тупо явно типизированном, хотя бы как-то.

Мантра заставляет думать сразу про «параллельные» ветки графа неизбежно, но надо отделять одно от другого, не мешать типы, роли и уровни.

Мантра заставляет спотыкаться, да. Такой «спотыкательный waterfall мышления». Даже если ты знаешь про следующий пункт наперёд и можешь в него свалиться, пока думаешь по предыдущему, — это ничего. Но вот если ты не сваливаешься, а вообще застопорился, то, скорее всего, в предыдущем пункте было подумано «не то и не туда», напутано. Я дважды обращался к FPF, чтобы уточнять себя и исправлять ошибки.

FPF + мантра — это мощнейший инструмент. А FPF + мантра + интернализация в свои мозги через мышление письмом, а не копипасту, — это вообще сказка.

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

Это системный вопрос. Использовать как, кому? Под использованием предполагается прагматика — чтобы от использования был толк.

Сказать честно: чтобы это использовалось максимально качественно в проекте, мне надо поменять свою роль, и желательно сразу на CEO/CTO. Думаю, не надо объяснять тут, что в стартапе такую смену власти провести невозможно. Значит, надо менять проект :slight_smile:

Ну а если без крайностей и по существу, то в проекте, конечно, надо менять методы работы. Если мы рассматриваем только техзвено, которое я тут моделировал, — то это самая большая беда.

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

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

Ооо, мантра системного мышления заставляет думать буквально во все стороны. Даже в рамках одного звена находится, что сделать.

Что и кому надо предпринять, чтобы повысить шансы успешности проекта?

C-level-костяку — осознать ошибки в своём мышлении и стратегировании, услышать голос сбоку-снизу, то есть мой.

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

Разумеется, я ещё не обладаю многими мастерствами, и, конечно, есть способ «переубедить», привлечь внимание, договорить. Мне с этого сейчас только опыт. Но в чём именно? Правильно ли я вообще практикую переубеждение / привлечение внимания / договаривание / доказывание — я не знаю.

В частности, что надо предпринять лично вам?

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


Предприятие создаёт разные системы: целевую/продукт, клиентуру, инвестуру (инвесторов в себя ведь тоже надо собрать, а затем холить и лелеять), ещё и сообщество сотрудников, которые как-то организованы (его же тоже надо создавать). Это потом всё будет расписано точнее.

Но да, “кодирование ненужного” проблему не решит, надо договориться, что кодируем и как причинно-следственно оно связано с продуктом. Там будут, кстати, примеры “сервисов” (и сразу предупреждение, что в руководствах и FPF немного разное отношение к термину “сервис” – хотя и вполне совместимое, если поразмыслить).

1 лайк

Большое спасибо за комментарий Анатолий Игоревич!

Значит верно думаю – не надо смешивать эти системы, очень внимательно следить чтобы не смешивались.

Свежий FPF сам хорошо триггерится на слово “сервис” и начинает подчеркивать его трижды, объясняя со всех сторон после одного из ваших последних (емнип) обновлений.

C кодированием ненужного – тут очень тяжело. Особенно волнительна ситуация с именно что неадекватным вайбкодингом.

Я некоторое время слышу истории из больших европейских организаций, вплоть до банков, где менеджеры среднего и верхнего звена начали повально выдавать вместе с ЛЛМ очень посредственные “продукты”, а те инженеры-программисты и опы которые остались не знают что с этим делать, потому что первые требуют пропихивать это в продакшен!

Одно дело было эти истории слушать, другое наблюдать как подобным ринулся заниматься сео текущего маленько стартапа, вплоть до “я вас тут сейчас всех научу”, и самописные без маркетингов “пресс”-релизы – “мы тут как компания выпустили новый продукт!”

Я правда не знаю что с этим делать сейчас, как с этим работать

Ну, у меня был бесплатный семинар вот совсем недавно, я на нём подчеркивал: если тебе не с чем сравнивать, то ты не можешь сказать – ошибка, или не ошибка. Для новичков ошибки невидимы. Поэтому если кто-то сделал “не-продукт”, то он может и не подозревать об этом ))) Если это начальник – ну штош, пусть тратит свои деньги. Если деньги инвестора – ну, хорошо бы инвестора предупредить о происходящем )))

1 лайк

Точно.
Да, инвесторы пока в безопасности)))

Стартап по сути уже целый год как делает выручку, при том на том самом “скучном не ai first” махровом Octa Core о котором я пишу последние посты. Вот кстати хорошая мысль у меня была на прошлой неделе, о которой я забыл – если начальнику мозги вправить совсем не получится, то я просто должен заниматься именно этой целевой, улучшать ее подсистемы и тд)

First time?) Как будто до этого всего те же менеджеры не пропихивали в продакшен “продукты”, которые из-под палки написаны на коленке потому что “надо вчера”.

2 лайка

Ну конечное же нет, не first time. Но вот только и не same thing.

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

Ему нужен был инженер в роли некоторого “трансформера” – тот, кто превращает описание “хачу вот так” в работающий объект.

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

Орг бюрократия, код-ревью, “а зачем мы это делаем?”, и просто медленные агенты-трансформеры – это было каким никаким трением

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

GIGO работает, но теперь на скорости х100500

Я не подразумевал что “менеджеры стали хуже”, конечно нет. Я о том что боттлнек сильно сместился. Если раньше им была реализация, и толковый инженер мог тормозить поток, то сейчас это как раз качество постановки задачи, а тормозов никаких нет, проблема стала уже физической, менеджеры как пропихивали так пропихивают, только теперь столько что в “толкового инженера” не влезает, у системы нет иммунитет в виде ограниченной пропускной способности, у “толковых инженеров” нет мастерства/механизма/ и тупо сил уже с этим бороться, они буквально в ужасе. И это одновременно на фоне “программисты нам теперь не нужны, может подсократим их?”

Все это поделие просачивается в прод, его бесконечно надо чинить и переделывать, при том не переделывании менеджеры из под которых слоп-код вышел встают в позу “а чо оно не работает, у меня на лаптопе работало, а ну чините!”, и сказать им “бери клод код и сам чини” – не вариант.

Очень увлекательно за этим смотреть, я вангую еще большее повышение спроса на компетентных ai native инженеров-программистов, впереди очень много работы! :smiley:

Стало побыстрее, кто ж спорит) Джин исполняет желания моментально, а то что желание плохо продумано и плохо сформулировано, так за это расплата предусмотрена, как в любой сказке.

Давайте так, инженеры прогибаются под плохие решения тоже на раз два, даже если они хорошие и всё такое. Четыре раза уточняли спецификацию, четыре раза говорили набору людей (БА, СА, архитекторы), что так работать не будет, четыре раза получали “давай делай”, четыре раза переделывали. В фактических методах работы, там где они плохие, ничего не изменилось, кроме скорости. Была непрерывная поставка багов медленная, стала непрерывная поставка багов быстрая.

Ура! Баги на аналитиков и прочих проектировщиков обычно не заводят. А теперь достаточно руки убрать и сказать, ну это же твоё решение, джин его реализовал, ко мне какие вопросы? Если человек в любой роли, ответственность за принимаемые решения на себя взять не хочет, то кто ему поможет. Ну раньше с компьютером ругались, что он не то делает, пусть теперь с агентами ругается. Они вежливые, не увольняются в отличие от людей. А когда проект колом встанет, потому что менеджеры наиграются, а инженеров не останется, тогда сказку про золотую рыбку придётся перечитать)

Всё по-старому, либо ждёте пока расплата наступит для тех, кто играется за чужие/свои деньги, либо становитесь в роль инженера-менеджера и начинаете рассказывать, как надо работать… Предварительно таки пройдя резедентуры до конца. Ну или проходя резедентуры.

Подписываюсь под каждым словом. Я с вами полностью согласен. Просто это нам тут хорошо и понятно куда двигаться и развиваться, а “они там” повально страдают сейчас – птычку жалко!

Со своей колокольни я в инженера-менеджера становлюсь во всех проектах уже с первых шагов, стараюсь не упускать ни одной возможности.

В каких-то случаях это удается много проще – там где сразу заходишь в глазах/картине мира клиента как “консультант”. Тут если не слышат, то хотя бы слушают, и в конце концов начинают слышать.

В контрактных работах тяжелее, особенно туда куда зашел как IC. Но задача от этого становится только интереснее.

Никогда такого не было, и вот опять! (c)

Натыкался на такое сто раз, вспоминается принцип Питера :wink:

Единственный способ, который помогает - пропитка.
20 раз повторишь одно и то же разными словами, и через какое-то время кто-то из C-левела сам придёт с аналогичной гениальной идеей :wink:

3 лайка

Вы видимо давно не бадались с твиттерскими :)))

А если серьезно, то повторено и пропитано было уже до дыр в языках.

в минувшую пятницу моего коллегу СТО эта история настолько утомила, что он чуть было не покинул проект на перед меня! Вот дела)))

шантаж кажется сработал. Будем смотреть развитие дальше и продолжать оказывать воздействия :slight_smile:

1 лайк