Книжный куб
11.1K subscribers
2.66K photos
6 videos
3 files
1.96K links
Рекомендации интересных книг, статей и выступлений от Александра Поломодова (@apolomodov), технического директора и эксперта в архитектуре
Download Telegram
Deductive Software Architecture Recovery via Chain-of-thought Prompting - Part I (Рубрика #Architecture)

Вчера перед сном прочитал интересный whitepaper про процесс SAR (Software Architecture Recovery) при помощи LLMs. Мне идея показалась интересной, чтобы кратко рассказать про нее.

1) Стандартный подход к Software Architecture Recovery обычно работал снизу-вверх (bottom-up). Условно, некоторый анализатор кода запускался строил архитектурные метрики, которые как-то характеризовали архитектуру проекта (что-то в духе кейсов из книги "Software Architecture Metrics: Case Studies to Improve the Quality of Your Architecture", про которую я уже рассказывал)
2) В этом paper исследователи решили пойти сверху-вниз (top-down) и начать с задания референсной архитектуры, а дальше уже классифицировать части кода как относящиеся к той или иной части этой референсной архитектуры. Это позволяет не просто собрать текущее состояние архитектуры как было в стандартном подходе, а оценить расхождение между референсной архитектурой проекта и тем, что у нас есть на самом деле:)
3) Авторы говорят о том, что этот подход больше похож на то, как работают software engineers, так как обычно инженеры знают какая базовая архитектура в проекте, поэтому могут использовать эти знания при изучении кода

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

#Architecture #Software #Metrics #LLM #AI #ML #Engineering #RnD
👍113🔥2
Deductive Software Architecture Recovery via Chain-of-thought Prompting - Part II (Рубрика #Architecture)

Продолжая рассказ про дедуктивный процесс SAR (Software Architecture Recovery) при помощи LLMs, я расскажу своими словами про шаги этого процесса

Phase 1. Reference architecture definition - собственно, именно эта фаза добавляется авторами и позволяет потом добавить использование LLMs
1) Select reference architecture - здесь авторы предлагают выбрать референсную архитектуру, упоминаются стандартные layered architectuure, MVC, но сходу можно припомнить и другие подходы вида MVVM, Onion Architecture, ...
2) Define architectural components - здесь авторы определяют компоненты архитектуры, именно они будут использоваться LLMs для дальнейшей классификации кода. Например, для типовой layered architecture выделяются следующие уровни: presentation, application service layer и так далее
3)Define component & interaction indicators - здесь авторы в текстовом виде описывают правила взаимодействия компонентов, что дальше используется для классификации. Например, в случае с layered architecture авторы описывают свойства presentation layer
Pr1 . . sets the attributes of UI components, e.g., sets the text of a TextView.
Pr2 . . . notifies listeners about user events, such as button clicks or list item selections.
Pr3 . . . transforms domain objects into visual representations


Phase 2. Code unit classification - эта фаза рекурсивная и направлена снизу-вверх. Авторы предлагают выбрать гранулярность, а потом запустить классификацию. Например, начать с методов классов, дальше аггрегировать это в классы, потом в неймспейсы и так далее
4) Evaluate code units against indicators - собственно, здесь немного prompt engineering + код с описаниями методов попадает в LLM (GPT-4) на оценку для классификации по компонентам из референсной архитектуры
In a layered software architecture, one of the layers is the (layer_name) layer, which (layer_responsibility).
Consider the context of an Android Java project “(project_name)”:
(project_domain_description)
Here are some indicators that a Java method in the project may belong to a class in the (layer_name) layer:
(layer_indicators)
The class ‘(class_name)’ contains the method ‘(method_name)’:
(method_source_code)
Check whether this method satisfies each indicator above. Mention the specific line of code that supports your reason. At the very last
line, write the boolean verdicts separated by a comma, e.g., ‘true, true, false, true’. If indeterminate, say ‘false’.

5) Aggregate classified code units - здесь мы агрегируем ответы с прошлого этапа и получаем классы, в которых были методы, а дальше запускаем их на предыдущий шаг для повторной классификации и так пока не доберемся до нужного нам уровня абстракции

На выходе такого процесса у нас получается некоторая классификация программных компонент с учетом референсной архтитектуры нашего проекта. Авторы сделали PoC для Android приложения K9 Mail и сравнили ручную разметку экспертами с тем, что насчитала модель - precision и recall для классификации оказались 72% и 71% соответственно. В итоге, авторы отметили, что есть еще пространство для улучшений и сформулировали свой план дальнейших исследований, включающих в себя работу над референсными архитектурами, а также полевое исследование в компаниях с применением этого метода.

#Architecture #Software #Metrics #LLM #AI #ML #Engineering #RnD
🔥7👍52
Влюбленные в математику (Рубрика #Math)

Вчера я был на премьере этого документального фильма Ольги Ажнакиной в Центральном доме кинематографистов в Москве. Фильм рассказывает истории трех молодых ученых-математиков: Александра Безносикова, Дарины Двинских и Александра Гасникова. Интересно, что их истории рассказываются закадровым голосом главных героев, но параллельно мы видим как они работают в ведущих научных центрах, включая МФТИ, Сколтех, ВШЭ, Иннополис и Сириус. Когда, я смотрел фильм, то сам вспомнил как мне нравилась математика, как я учился в ЗФТШ, а потом на Физтехе и как думал, что стану ученым, но ушел в индустрию и последние 20 лет работаю в IT:) Ученым я не стал, но получиив специальность по прикладной математике и физике с переменным успехом прикладываю ее к решению рабочих задач. Если же возвращаться к фильму, то вчера после самого просмотра был открытый микрофон и вопросы из зала, на которые отвечали режиссер и главные герои фильма и вот что там обсуждалось
1) Почему фильм именно про математиков?
Режиссер ответила, что изначально у нее было "стереотипное видение ученых-математиков" как скучных и несовременных людей. Фильм стремится разрушить этот стереотип, показывая математиков как "свободных, творческих, креативных молодых ребят"
2) А где трудности и препятствия, что преодолевают ученые? Кажется в фильме у ребят все получается?
Тут ответ был в том, что получается далеко не все. Например, часть где Александр Гасников решает стать не просто ученым, а научным функционером, заняв пост ректора Иннополиса - тут есть и нерв и преодоление себя. Кстати, тут мне сразу вспоминается дуальность А-Януса и У-Януса из "Понедельник начинается в субботу" Стругацких
3) Почему фильм такой короткий?
В нем действительно всего полчаса, но смотрится он на одном дыхании
4) Почему фильм заканчивается танго главной героини?
Ответ про красоту математики, которую можно сравнить с красивым танцом.

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

P.S.
Во время просмотра фильма я вспоминал книгу знаменитого математика Эдуарда Френкеля "Love and Math: The Heart of Hidden Reality" ("Любовь и математика"), которая показалась мне похожей по настроению и которая раскрывает красоту и элегантность математики, сравнивая ее с произведением искусств.

#PopularScience #Mathematics #Math
13👍9🔥6
The issue of monorepo and polyrepo in large enterprises (Рубрика #Architecture)

Недавно прочитал старенький whitepaper 2019 года от Nicolas Brousse из Adobe с анализом подходов к управлению репозиториями исходного кода в крупных компаниях. Собственно сравниваются подходы монорепозитория и полирепозитория (множества отдельных репозиториев). Монорепы используют такие компании как Google, Meta, Microsoft, а полирепозитории были в Amazon, Netflix, Lyft и так далее. Автор ссылается на исследование "Advantages and disadvantages of a monolithic repository: a case study at Google", в котором есть хорошее сравнение компромиссов монореп и полиреп и подсвечиватся плюс монорепы вида, что монорепы
Encourages consistent and high-quality code, and empowers engineers to study and learn from the institutional knowledge of their company, crystallized in the form of source code

Дальше автор рассматривает разницу через три призмы

1) Cultural Alignment (культурное соостветствие)
Структура репозиториев отражает корпоративную культуру. Монорепы подходят для коллаборативных сред (например, Google с философией «открытого сотрудничества»), а полирепозитории — для культур, ориентированных на автономию (например, Netflix с принципом «свободы и ответственности»). Интересно, что у нас полирепозиторий в Т-Банке
2) Team Cognition (командное познание)
Монорепозитории разрушают функциональные силосы, способствуя целостному пониманию задач за счёт видимости общего кода и снижения коммуникационных барьеров, что коррелирует с повышением качества софта.
3) Tradeoffs (компромиссы)
Обе модели имеют технические сложности (например, масштабируемость монорепозиториев), но монорепы стимулируют культурные изменения, улучшающие конкурентоспособность через DevOps-практики и инновации без ограничений.

В итоге, автор подчеркивает, что технические аспекты важны, но культурные преимущества монореп
- Усиление коллаборации
- Устранение разрозненности
- Оптимизация процессов разработки
особенно ценны для крупных компаний, ориентированных на гибкость и качество

P.S.
На тему различий рекомендую почитать сравнение от Carlos Arguelles, инженера, что долго проработал в Amazon на CI/CD инфрой, потом ушел в Google на несколько лет, а потом вернулся в Amazon. Я раньше уже разбирал его статью "How Amazon and Google view CI/CD in an entirely different way".

#CI #SRE #Architecture #Software #Infra #QA
👍136🔥2👏1
Hooked: How to Build Habit-Forming Products (На крючке) (Рубрика #Management)

Эта уже классическая книга Нира Эяля рассказывает о том, как создавать продукты, которые захватывают пользователей и становятся неотъемлемой частью их повседневной жизни. В книге представлена модель крючка в виде процесса из четырех зацикленных шагов, что позволяют формировать привычки пользователей. В самой модели следующие четыре части
1) Trigger (триггер): запускает поведение пользователя через внешние сигналы (например, уведомления) или внутренние мотивации (эмоции или мысли).
2) Action (действие): поведение, выполняемое в ожидании вознаграждения, которое должно быть максимально простым для пользователя.
3) Variable reward (переменное вознаграждение): результат действия, который удерживает пользователей благодаря своей непредсказуемой природе.
4) Investment (инвестиция): вклад пользователя в виде времени, данных, усилий или денег, что повышает вероятность возвращения к продукту.

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

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

1) Duolingo создал формирующий привычку опыт изучения языков:
- Триггер: отправляет ежедневные уведомления о целях изучения языка.
- Действие: предлагает геймифицированные, легко выполнимые уроки.
- Переменное вознаграждение: предоставляет очки опыта и достижения за серии успехов.
- Инвестиция: отслеживает прогресс и адаптирует пути обучения на основе результатов пользователя.
Я сам пользуюсь duolingo и у меня нерпрерывный streak сейчас в 2 года

2) TikTok стал крайне привлекательным, используя модель hooked:
- Триггер: внешние триггеры включают видео, которыми делятся друзья, в то время как внутренние триггеры обращаются к желанию развлечься.
- Действие: предлагает простой процесс создания аккаунта и легкий просмотр видео.
- Переменное вознаграждение: представляет постоянный поток разнообразных, персонализированных коротких видео.
- Инвестиция: позволяет пользователям создавать и делиться своими собственными видео, увеличивая привязанность к платформе.

3) Slack стал популярной платформой для коммуникации на рабочем месте и она тоже применяет модель hooked:
- Триггер: использует как внешние, так и внутренние триггеры для привлечения внимания пользователей.
- Действие: предлагает удобный интерфейс для легкого обмена сообщениями и участия в каналах.
- Переменное вознаграждение: доставляет вознаграждения в виде положительной обратной связи и уведомлений о выполнении задач.
- Инвестиция: поощряет вклад пользователей через обсуждения и участие в проектах.
Мы использовали Slack до того, как перешли на наш мессенджер Time.

Но есть у модели и стандартные проблемы, которые могут уменьшать ее эффективность
1) Несоответствие потребностям пользователей - неспособность понять реальные проблемы пользователей или создание решений для несуществующих проблем.
2) Чрезмерное усложнение модели - слишком сложный UX или слишком много фичей могут оттолкнуть пользователей
3) Неэффективные системы вознаграждений - если вознаграждения слишком предсказуемы, то это плохо. Одновременно плохо, если они неконсистентны между собой и не поддерживают интерес и мотивацию пользователей.
4) Пренебрежение фазой инвестиций - слишком слабое или слишком сильное поощрение вклада пользователей в приложение приведет к тому, что они сорвутся с крючка
5) Этические проблемы - привычки должны приносить пользу клиентам иначе легко провалиться на темную сторону силы

#Management #ProductManagement #Econimics #PopularScience
🔥83👍3
Обложки книг "Hooked: How to Build Habit-Forming Products" и "На крючке" и несколько иллюстраций самой модели.
👍94🔥3
Adaptive Enterprise Architecture: Towards a model (Рубрика #Architecture)

Недавно я решил почитать whitepapers по enterprise architecture и наткнулся на статью ученых из Морокко, где они пытаются скрестить ежа с ужом, а точнее корпоративную архитектуру со скрамом:) В начале статьи авторы отмечают, что текущие подходы к корпоративной архитектуре (TOGAF, Zachman) не обладают необходимой гибкостью для обработки быстрых, разноуровневых изменений, что характерны для модных ныне цифровых трансформаций. Они сосредоточены на реактивных процессах, ориентированных на заполнение кучи документов и с их помощью сложно управлять непредвиденными изменениями. Дальше авторы решают сформулировать набор критериев для адаптивной корпоративной архитектуры, куда входят такие вещи как
1) Support multi-level dynamics
(поддержка многоуровневой динамики) - изменения бывают на разных уровнях и идут с разной скоростью, а значит архитектурный процесс должен уметь работать с каждым типом изменений. Авторы отмечают, что стандартный подход с архитектурой as-is и to-be уже не является статичным, а подвергается различным изменениям, что надо учитывать в архитектурных процессах
2) Sensing of change (ощущение изменений) - процесс должен поддерживать ощущение идущих вокруг изменений и позволять планировать свои инициативы для адаптации к изменениям
3) Process of adaptation (процесс адаптации под новые потребности) - это ключевая часть подхода авторов, что называется adaptive enterprise architecture
4) Complexity of change management (комплексность управления изменениями) - TOGAF и Zachman проваливают этот критерий, ребята хотят подход, который будет сильно проще с точки зрения управления изменениями
5) Handling of unforseen changes (обработка непредвиденных изменений) - это нужно для современных корпораций, что сталкиваются с высокими темпами непредвиденных изменений в своем бизнес окружении.
6) Explicit management of adaptability trade-offs - авторы отмечают важность явного управления компромиссами по адаптивности к изменениям. Сейчас это зачастую просто одно из нефункциональных требований или атрибутов качества решений, а в новом подходе им надо управлять явно
7) Evaluation of adaptation (эволюция адаптации) - для управления адаптацией ее надо уметь измерять, а занчит нам нужны метрики внутри процесса корпоративной архитектуры

Дальше авторы сравнивают по этим критериям разные подходы к корпоративной архитектуре и оказывается, что все они не удовлетворяют критериям. Они объединяют подходы в группы
1) Approaches based on guidelines (Zachman, TOGAF, Koffi A.D, LEAP, DYA)
2) Integration oriented approaches (Shmidt R & al, Zimmerman A & al)
3) Co-evolution oriented approaches (DEEVA, ACEM, ...)

И дальше авторы решают предложить свой подход, который удовлетворяет критериям и полагается на проверенные временем agile подходы, а точнее на Скрам. Дальше они рассказывают о том, какой Скрам замечательный, а потом натягивают его на архитектуру
1) У нас появляется роли architecture owner, business/IT owners. Первый отвечает за стратегический alignment, а вторые за оптимизацию бизнес-процессов и технического решения
2) Работа идет в циклах по 2-4 недели и используются скрам ритуалы: weekly cross-owner syncs, architecture reviews для обеспечения фидбека
3) Появляется архитектурный беклог, в котором приоритизируются изменения корп архитектуры, а также есть KPI и отслеживание движения As-Is / To-Be на графиках
Все остальные ритуалы agile про связь бизнеса и IT остаются на месте, просто EA беклог и ритуалы адаптивной корпоративной архитектуры живут рядом.

Для меня это whitepaper показался натягиванием совы на глобус без особых объяснений как это будет работать на практике, а не на бумаге:)

#Architecture #Software #Management #Governance #Engineering
👍102🥴2🔥1
Иллюстрации для статьи "Adaptive Enterprise Architecture: Towards a model". Качество изображений оригинальное (в pdf они были настолько же плохими с точки зрения разрешения)
3🔥3👍2
Стипендия Т-Образования (Рубрика #Edu)

Уже в четвертый раз открылась ежегодная стипендиальная программа для талантливых студентов. Она доступна для студентов российских вузов очной формы обучения и любого курса, кроме выпускного. Для попадания в программу нужно будет пройти отбор (экзамен, портфоли и интервью), причем пройти экзамен и подготовить портфолио надо до 7 апреля включительно. В программе есть 2 трека: аналитика и разработка.
Для тех, кто получит стипендию будут доступны плюшки в виде
- 25к рублей в месяц в течение учебного года
- Ментор в виде сотрудника Т-Банка
- Доступ к образовательным материалам компании, куда входят курсы, лекции и т.д., а также приглашения на закрытые отраслевые мероприятия
- Упрощенный отбор в штат на работу в Т-Банке после окончания стипендии

В общем, если бы в мое бытие студентом была такая программа, то я бы точно попробовал в ней поучаствовать (но скорее всего не прошел по конкурсу).

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

#Edu #SelfDevelopment
🔥84👍2
Клубная встреча "Стратегия визионеров" от SouthHub (Рубрика #Management)

В один из вечеров на этой неделе я был на клубной встрече SouthHub, где мы обсуждали вопросы миссии, видения, стратегии и того, как эти высокие материии влияют на компанию. Правда, у нас был и практический интерес - как распознать, что тебе про эту миссию, видение и стратегию рассказывает визионер, наподобие, Стива Джобса, Илона Маска, Билла Гейтса или мошенник, наподобие, Элизабет Холмс, Сэма Бэнкман-Фрида или Адама Ноймана. Для подготовки к обсуждению нас попросили перед встречей глянуть документальный фильм "The Inventor: Out for Blood in Silicon Valley" ("Изобретатель. Жажда крови в Силиконовой долине"), который рассказывает историю единорога Элизабет Холмс под названием "Theranos", который обещал изменить сферу медицинских анализов. Сам фильм отлично рассказывает историю в динамике, приводя кусочки публичных интервью с Элизабет, а также остальными ключевыми участниками событий, поэтому рекомендую его посмотреть, если еще не видели - больно история интересная вышла.

Если же возвращаться к вопросу про отличия визионера от мошенника, то мы в ходе обсуждений пришли к выводу, что
1) Все высокие материи в виде миссии, видения, стратегии можно свести к высокоуровневым вопросам
- Зачем мы что-то делаем? - Миссия
- что конкретно мы делаем? - Видение
- Как мы это делаем? - Стратегия
2) Визионеры из списка выше (Джобс, Маск, Гейтс) отличаются от мошенников из списка ниже (Холмс, Бэнкман-Фрид, Ноймана) только результатами. Если бы у последних трех все сошлось, то мы бы продолжали говорить о них, как о звездах мира бизнеса. По-факту, многие визионеры топят со своей стратегией до талого и у кого-то получается довести "fake it until make it" до состояния made, а у кто-то остается у разбитого корыта
3) Но результаты визионера - это слишком lagging indicator, то есть мы хотим понять раньше выйдет ли что-то из задумки очередного визионера. Для этого можно задать ряд вопросов к его стратегии и проверить насколько консистентно выглядят ответы. Например, можно посмотреть под разными углами, например, так
- Четкое и реалистичное видение
- Детальный план реализации
- Участие заинтересованных сторон
- Эмоциональная привлекательность vs. Манипуляция
- Соответствие долгосрочным целям
- Прозрачность и доверие
- Реалистичность обещанных результатов

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

#Management #Leadership #Strategy
👍12🔥63
Вопросы, для оценки реалистичности стратегии визионера (Рубрика #Strategy)

В прошлом посте я рассказывал про Theranos и подход к стратегии от Элизабет ХЗолмс. Там я указал список разных точек зрения, под которыми стоит посмотреть, чтобы попробовать отличить настоящую стратегию от фейковой, а в этом посте я чуть подробнее их раскрою

1) Четкое и реалистичное видение

Настоящая стратегия: Представляет ясное, вдохновляющее и достижимое видение, которое соответствует миссии и ценностям организации. Цели конкретны, измеримы и выполнимы.
Признаки мошенничества: Слишком расплывчатые или грандиозные заявления без реалистичного плана или осуществимости. Обещания невероятных результатов с минимальными усилиями — тревожный знак.
2) Детальный план реализации
- Настоящая стратегия: Включает конкретные шаги, распределение ресурсов, контрольные точки и планы на случай непредвиденных обстоятельств для достижения целей.
- Признаки мошенничества: Отсутствие конкретных деталей о том, как будут достигнуты цели, или чрезмерное использование модных слов и абстрактных концепций без четкого плана действий.
3) Участие заинтересованных сторон
- Настоящая стратегия: Активно привлекает членов команды и заинтересованных лиц к процессу планирования и принятия решений, способствуя сотрудничеству и прозрачности.
- Признаки мошенничества: Действует в изоляции или в условиях секретности, препятствуя участию других. Мошенники часто используют срочность, чтобы избежать проверки.
4) Эмоциональная привлекательность vs. Манипуляция
- Настоящая стратегия: Вдохновляет через искреннее общение, эмоциональный интеллект и соответствие общим ценностям.
- Признаки мошенничества: Использует тактику давления, страх или чрезмерное возбуждение, чтобы побудить к импульсивным действиям без должной оценки.
5) Соответствие долгосрочным целям
- Настоящая стратегия: Учитывает текущие приоритеты в сочетании с долгосрочными целями и демонстрирует адаптивность к изменяющимся обстоятельствам.
- Признаки мошенничества: Сосредотачивается на краткосрочных выгодах или нереалистичных обещаниях без учета долгосрочной устойчивости.
6) Прозрачность и доверие
- Настоящая стратегия: Вызывает доверие через открытое общение, проверяемые утверждения и надежное руководство.
- Признаки мошенничества: Использует чрезмерно сложные структуры для сокрытия намерений или избегает предоставления проверяемой информации об организации или руководстве.
7) Реалистичность обещанных результатов
- Настоящая стратегия: Устанавливает достижимые цели, подкрепленные данными, анализом рынка и реалистичными прогнозами.
- Признаки мошенничества: Делает преувеличенные заявления о гарантированном успехе или доходах, которые звучат слишком хорошо, чтобы быть правдой.

Чем больше красных флажков выскакивает при анализе визионерской стратегии, тем менее вероятно, что это реальная возможность, а не скам:)

#Management #Leadership #Strategy
8👍4🔥3