Гуманный аналитик
411 subscribers
162 photos
5 videos
5 files
83 links
🔹 Про анализ, проектирование и всё, что так или иначе связано с информационными системами.
🔹 Статьи, кейсы, мнения, важные новости, дайджесты.
🔹 Понятным языком, уважительно, для людей.
Download Telegram
💣 Регулярные выражения нерегулярны

Заголовок сегодняшнего поста звучит парадоксально, но, если копнуть вглубь (я сам это недавно сделал, а теперь хочу поделиться с вами), то всё встаёт на свои места. Он отражает историческую и теоретическую эволюцию термина "регулярные выражения".

В формальной теории языков и автоматов регулярные языки — это класс языков, распознаваемых конечными автоматами. Они описываются регулярными выражениями в классическом смысле, то есть выражениями, которые поддерживают только:
конкатенацию (ab);
объединение (a|b);
звезду Клини (a*).

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

🤔 А если конкретнее?
Рассмотрим пример с так называемыми обратными ссылками (\1, \2,...). Это механизм, позволяющий ссылаться на группы символов, которые были найдены ранее, при поиске совпадений.

import re

text = 'Kappa'
pattern = r'(\w)\1'
result = re.search(pattern, text)
print(result.group(0)) # Output: pp

Данный код выведет на экран "pp". Следующий же позволит найти уже повтор слов.

import re

text = 'scary scary movie'
pattern = r'\b(\w+)\s\1\b'
result = re.search(pattern, text)
print(result.group(0)) # Output: scary scary

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

💬 Другой пример
Существуют конструкции lookahead и lookbehind, позволяющие проверять условия, не двигаясь по строке. Так, если мы хотим найти слово "cat", но только при условии, что после него следует пробел или знак препинания, то это можно реализовать следующим образом:

import re

text = "I have a cat. My friend has two cats!"
pattern = r"\bcat\b(?=[\W\s])"
matches = re.findall(pattern, text)
print(matches) # Output: ['cat']

В данном случае результат будет содержать единственное слово "cat", так как второе вхождение не отвечает нашим условиям.

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

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

#любопытное #программирование
🔥3👍1
Находясь в отпуске в Стамбуле 🇹🇷, я невольно задумался о его уникальной транспортной системе. Здесь столкнулись не только культуры Европы и Азии, но и специфические условия: этот город расположен на гористой местности, сразу на двух континентах, отделённых Босфором, а европейская часть вдобавок разрезана протяжённой бухтой.

К чему это привело? Вот несколько тезисов на основе моих наблюдений.

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

👉 Интероперабельность. Разнообразные виды транспорта — метро, автобусы, трамваи, фуникулёры, электрички, морские переправы — объединены достаточно понятной схемой передвижения, пересадочными узлами и единой системой оплаты Istanbulkart. Хотя тут есть и свои нюансы.

👉 Масштабируемость. Город постоянно растёт (один участок издали даже напоминает виды Нью-Йорка), а значит, транспортным службам надо успевать адаптироваться. Проведение ветки метро до нового аэропорта — тому пример.

👉 Резервирование. Из пункта А в пункт Б часто можно добраться несколькими способами. Наличие дублирующих схем позволяет повысить надёжность и, что немаловажно, комфорт для жителей и гостей города.

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

Ну как, ничего не напоминает?😉

В общем, приятно осознавать, что мир вокруг тебя может работать по схожим законам, независимо от масштаба и конкретной локации.
🔥5
Чётко сформулированные и согласованные требования — залог успеха любого проекта. Или нет? Вспомнился относительно недавний случай, когда даже составленное ТЗ не уберегло от провала проекта.

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

Попадали ли вы в подобные ситуации? Если да, то обязательно делитесь в комментариях: в чём был камень преткновения, чем всё закончилось и какой урок вы для себя вынесли.

#требования
👍2🔥2🤔1
Есть в этом что-то подбадривающее. А это как раз то, что нужно в начале рабочей недели 😎

#юмор
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😢2😁1
📡 Навигация по каналу 📡

Большое спасибо всем, кто подписан на мой канал! Надеюсь, вам будет интересно.

А чтобы было ещё и удобно, я подготовил навигацию на канале.

📍 Поиск по форме:
#статьи@humane_analyst – когда хочется почитать
#видео@humane_analyst – пусть говорят
#таблицы@humane_analyst – скрупулёзное сравнение
#карточки@humane_analyst – тезисно о важном
#майндмап@humane_analyst – ментальные карты

📍 Поиск по содержанию:
#анонсы@humane_analyst – когда что-то грядёт
#кейсы@humane_analyst – разборы кейсов
#подборки@humane_analyst – тематические подборки
#дайджест@humane_analyst – что попало в поле зрения
#юмор@humane_analyst – юмор, мемы, для души
#книги@humane_analyst – книжная рубрика
#гайды@humane_analyst – полезные руководства
#события@humane_analyst – важные мероприятия
#нетленка@humane_analyst – непреходящая ценность
#быловремя@humane_analyst – вспоминаем былое
#жиза@humane_analyst – жизненные ситуёвины
#любопытное@humane_analyst – интересное и невероятное

📍 Поиск по темам:
#термины@humane_analyst – термины и определения
#требования@humane_analyst – работа с требованиями
#стейкхолдеры@humane_analyst – заинтересованные стороны
#собесы@humane_analyst – готовимся к собесу
#визуализация@humane_analyst – нотации, диаграммы
#цвет@humane_analyst – применяем цвет со смыслом
#методыуправления@humane_analyst – agile, водопад и пр.
#системныйподход@humane_analyst – про системы и системное мышление
#архитектура@humane_analyst – архитектура
#программирование@humane_analyst – кодим, пилим
#проектирование@humane_analyst – системный дизайн
#интеграции@humane_analyst – сервисы, брокеры и пр.
#данные@humane_analyst – данные, хранилища, БД
#uxui@humane_analyst – UX и UI
#мозг@humane_analyst – всё, что относится к мозгу
#роботы@humane_analyst – про разных всяких роботов
#4ir@humane_analyst – 4-ая промышленная революция
#qa@humane_analyst – QA и тестирование
#продукт@humane_analyst - управление продуктом

📍 Про вашего покорного слугу:
#знакомство@humane_analyst – немного о себе
#выступления@humane_analyst – мои выступления
#судейства@humane_analyst – мой опыт члена жюри/судьи
#достижения@humane_analyst – что-то великое
🔥2
Гуманный аналитик pinned «📡 Навигация по каналу 📡 Большое спасибо всем, кто подписан на мой канал! Надеюсь, вам будет интересно. А чтобы было ещё и удобно, я подготовил навигацию на канале. 📍 Поиск по форме:…»
📖 "Искусство системного мышления: необходимые знания о системах и творческом подходе к решению проблем" Джозефа О’Коннора и Иана Макдермотта

Ну, вот добрался я до обзора этой довольно известной работы. Что в ней, давайте разбираться.

🌟 Содержание. В книге раскрываются основы системного мышления — мышления, направленного на выявление и учёт зависимостей между элементами сложных структур.

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

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

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

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

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

💡 Резюме. Нужно ли читать эту книгу конкретно системному аналитику в IT? Наверное, не обязательно, но для общего развития и саморефлексии будет полезно. Плюс у вас, возможно, после прочтения в голове сложится мозаика по рабочим ситуациям и вас, к примеру, перестанет удивлять, что после изменения или увеличения нагрузки в одной части распределённой системы страдает другая, казалось бы никак не связанная часть.

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

#книги #системныйподход #визуализация #психология
👍7🔥1
☝️ Снова про системное мышление

В прошлый раз я делал обзор книги "Искусство системного мышления", а сейчас решил выпустить этот пост, как говорится, по горячим следам. Теперь к сути.

📺 Если ты работаешь в Сбере, то могу порекомендовать пройти внутренний курс под названием "Системное мышление". В нём в лёгкой форме (а точнее в форме мини-сериала с поучительными последствиями) разбираются основы системного мышления на примере принятия бизнес-решений.

Содержание достаточно понятно, для просмотра не надо быть многоопытным руководителем или руководителем вообще. Ближе к концу курса даётся база из теории ограничений систем (ТОС) Голдратта. В общем, полезно 💯!

🤓☝️ С изучения данного курса можно начать знакомство с предметом, а потом плавно перейти к книге. Хотя следовать этому порядку совсем не обязательно. Но что точно стоит сделать, так это прояснить следующее.

В курсе наличествует одно терминологическое расхождение с "Искусством системного мышления". Авторы курса говорят о положительных обратных связях, отрицательных и, цитата для контекста: "Вместе две эти петли составляют балансирующую обратную связь". Иными словами, под балансирующей связью понимают совокупность положительной и отрицательной связей. Наверное, такая точка зрения имеет право на существование, но может невольно сбить с толку тех, кто осваивает материал. Причина этого — ниже.

📚 Если обратиться к первоисточникам (не только к работе О’Коннора и Макдермотта), то принципиально выделяется только два типа связи — положительная и отрицательная. Причём в литературе термин "балансирующая обратная связь", "уравновешивающая обратная связь", "компенсирующая обратная связь" и "стабилизирующая обратная связь" используется как синонимы для отрицательной обратной связи, символизируя тем самым факт того, что благодаря этому типу связи система сохраняет свою стабильность, некое равновесное состояние.

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

🧐 Итого. Разночтение, которое меня когда-то самого поставило в тупик, я объяснил. Предупреждён — значит вооружён. Других неожиданностей в процессе обучения быть не должно.

#системныйподход #сбер
🔥3
🛎️ Мониторинг бизнес-процессов

Коллега из Сбера дебютировал в качестве автора на Хабре, представив свою статью про построение системы сквозного бизнес-мониторинга.

Поскольку переизбытка материалов по вопросам мониторинга в открытых источниках явно не наблюдается, а я в своë время стоял у истоков описываемой системы, то не мог не поделиться с вами ссылкой на неё. Вот она: тык.

🤷‍♂️ Да, если после прочтения предыдущих абзацев у вас возникает вопрос о том, зачем может быть нужен бизнес-мониторинг и почему привычного мониторинга на базе Prometheus может не хватать, то точно стоит почитать.

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

#статьи #мониторинг #сбер
👍2🔥2
Масштабирование уровня данных

Друзья, сегодня у меня для вас ещё одна полезная шпаргалка от Алекса Сюя (взято отсюда). Информация представлена лаконично, наглядно.

Пожалуй, единственное, чего мне не хватило на картинке, так это партицирования (секционирования) БД. Однако такое отсутствие тоже объяснимо, поскольку данная методика (подробнее) часто рассматривается как более низкоуровневая.

#архитектура #проектирование #данные
🔥3👍1
🌛 Ночь больших технологий

Сегодня хочу проанонсировать довольно необычное событие — big tech night. Это коллаборация Яндекса, Сбера, X5, Т-Банка и Lamoda.

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

👉 Мероприятие будет проходить 12 сентября в Москве. Притом между площадками будет организован трансфер 🚍, так что теоритически будет возможность побывать в нескольких местах.

Для посещения необходима регистрация на сайте: https://bigtechnight.ru/ Там же можно ознакомиться с программой более детально.

P.S. По моим данным "оттуда"😎, посетителей ждёт ещё кое-что интересное. Каждая компания-организатор для посетителей готовит свои "фишки": иммерсивные экскурсии, IT-стендап, поэтический AI-слэм, Robo-зона с роботами-официантами и пиццамейкерами, лаборатория софт-скиллов и др.

#события #анонсы #ai #сбер #роботы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3👌1
Вышло интересное видео, которое я не мог обойти стороной. В нём рассматривается привычная многим классификация требований к разработке ПО по Вигерсу, а также разбирается её методологическая непоследовательность.

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

➡️ В чëм выражается последовательность
Предлагается предъявлять требования к бизнесу и пользователям (сотрудникам). Это позволяет (на каждом из трёх уровней требований) располагать субъектом, к которому предъявляются требования.

➡️ В чëм выражается системность
Всё есть система. Три уровня требований соотносятся с тремя уровнями систем. Так, если двигаться вглубь, то это: организационная система (бизнес-система), человеко-машинная система, техническая система.

Итого. Видео получилось свежим, наполненным смыслами и делающим шаг в верном, как мне кажется, направлении.

#требования #системныйподход #видео
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍2🤔2👀1
Отечественный поисковик на букву Я меня немало озадачил. В ответ на запрос о натуральных ключах сущностей мне уже на первой странице было предложено 3 ссылки на всякую, прости Господи, хиромантию.

Увидев такую выдачу, я всерьёз подумал: может, стоит обратиться к одному из контактов, чтобы он изгнал бесов из поисковика? 🤣🤣🤣

#юмор
😁4🤔2😢2😭1
🧐 Выбор между User Story и Use Case

Вопрос о предпочтении одного метода описания требований перед другим — User Story или Use Case — регулярно всплывает среди участников команд разработки и в профильных чатах. Давайте попробуем разобраться, какой метод действительно лучше выбрать, и можно ли вообще комбинировать оба подхода?

🚩 Что такое User Story?

User Story (пользовательская история) описывает поведение системы с точки зрения конечного пользователя, причём простым языком. Это короткое предложение, которое обычно формулируется следующим образом: "Как <роль>, я хочу <действие>, чтобы достичь <цель>".

▌ Плюсы:
- простота формулировки;
- фокусировка на потребностях пользователей;
- гибкость и традиционность для Agile-проектов.

▌ Минусы:
- отсутствие детализации и технических аспектов;
- требует постоянного взаимодействия с командой разработки для выяснения деталей;
- может вызвать ложное чувство простоты реализации.


🚩 Что такое Use Case?

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

▌ Плюсы:
- ясность сценариев и выполняемых взаимодействий;
- подходит для сложных систем с множеством ролей и вариантов поведения;
- идеально подходит для документирования традиционных водопадных проектов.

▌ Минусы:
- более сложный процесс подготовки и согласования;
- может показаться излишне бюрократичным для небольших команд и гибких подходов;
- в наглядности значительно уступает средствам визуализации вроде BPMN.

🕯Это, если тезисно и с определённой долей условности. Но как с этим работать — об этом далее.


🚩 User Story и/или Use Case?

🚩 Когда выбирать один из методов?

Выбор зависит от контекста проекта.

- Если команда работает по Agile, где важны короткие итерации и постоянная обратная связь, User Stories будут логичным выбором.
- Для больших и комплексных систем с высоким уровнем неопределëнности или критическими требованиями рекомендуется использовать Use Cases.

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

🚩 Можно ли совмещать методы?

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

1⃣ Начните с высокоуровневых User Stories, чтобы быстро настроиться на образ результата, определить границы реализуемой функциональности и расставить приоритеты.
На этом этапе некоторые команды дополнительно создают диаграмму вариантов использования UML (Use Case Diagram), чтобы иметь возможность обозреть всю функциональность.

2⃣ Углубитесь в отдельные аспекты с помощью подробных Use Cases, особенно там, где требуются точные спецификации (например, обработка ошибок, неочевидное поведение или граничные условия).
Обычно одна User Story детализируется одним Use Case, при этом User Story в данном случае выступает своего рода заголовком для Use Case.

3⃣ При необходимости дополните Use Cases диаграммами процессов в релевантной нотации.
Так, на практике даже можно встретить подход, при котором каждый Use Case ограничивается несколькими ключевыми ветками сценария, а самая детальная логика представляется в виде развесистой диаграммы на BPMN.

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


🚩 И напоследок

Если требуется углубиться в вопрос разработки User Story или Use Case, советую ознакомиться с моей подборкой видео (ссылка), а точнее — с её 4-м разделом.

#требования #методыуправления #термины #статьи #гайды #визуализация
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥5👍2👌1💯1
🥤🍔 Продуктовые метрики

Каждый, кто работает в продуктовой команде, время от времени слышит "мау", "ретеншн" и прочие кажущиеся заклинаниями слова 🧙🏻‍♀️🔮🪄. Не всем и не всегда они понятны, поэтому сегодня я решил этому вопросу посвятить отдельный пост.

Прежде всего, стоит сказать, что речь идёт о продуктовых метриках — показателях, собираемых и оцениваемых владельцами продуктов (Product Owner, PO) с целью определения соответствия продукта ожиданиям его пользователей. Конечная цель — определить, что стоит улучшить, какую фичу добавить, какую убрать и т.п.

Но, поскольку творчество и любознательность не стоят на месте, было придумано множество различных метрик на разные случаи жизни. И с достаточно внушительным перечнем можно ознакомиться в прикреплённой статье (ссылка).

Я же предлагаю сфокусироваться на самой базе. А это пять метрик, применяемых практически каждым PO. Вот они. ⁀➴

1️⃣ Активность пользователей (DAU/MAU/WAU)

🔜 Описание: ежедневная активность (Daily Active Users), месячная активность (Monthly Active Users), недельная активность (Weekly Active Users) — показывают количество уникальных активных пользователей за соответствующий период времени.
🔜 Цель: измерение популярности и вовлечённости пользователей продукта.

2️⃣ Удержание пользователей (Retention Rate)

🔜 Описание: процент пользователей, продолжающих пользоваться продуктом спустя определённое время после первого взаимодействия.
🔜 Цель: оценка лояльности аудитории и качества продукта.

3️⃣ Отток пользователей (Churn Rate)

➡️ Описание: доля клиентов, прекративших использование продукта за указанный промежуток времени.
➡️ Цель: выявление проблемных зон и улучшение удержания пользователей.

4️⃣ Время жизни клиента (Lifetime Value, LTV)

➡️ Описание: совокупная прибыль, которую приносит клиент за весь срок пользования продуктом.
➡️ Цель: оптимизация расходов на привлечение🔥 новых клиентов и повышение доходности каждого пользователя.

5️⃣ Коэффициент конверсии (Conversion Rate)

🔜 Описание: отношение числа целевых действий (регистрация, покупка, подписка и др.) к общему числу посетителей сайта или приложения.
🔜 Цель: оценить эффективность маркетинговых усилий и удобство интерфейса продукта.

😒 Зачем это знать аналитику?

А затем, чтобы:
— общаться с PO на одном языке;
— понимать потребности бизнеса;
— принимать обоснованные решения при проектировании систем.

#статьи #продукт #термины
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Сегодня хотел бы поговорить про клиентский путь. Это довольно широкое понятие, но оно всегда про удобство. Так вот, звонит телефон, я снимаю трубку и голос говорит, что я один из лучших клиентов их банка 😎 и они поздравляют меня с днём рождения.

Приятно, и про днюху правда 🎂🥳. Однако я уже много лет как закрыл все счета в этом банке. Мне говорят, мол пришлëм вам подарок, и спрашивают, согласен ли я получить. Я понял, что вряд ли что-то хорошее стоит ждать, но согласился.

И ведь прислали! Это была ссылка в SMS, при переходе на которую меня встретило сообщение, что для продолжения требуется установить на телефон приложение банка🙈. А что дальше? Может, ещё и счета открыть предложат и их пополнить на кругленькую сумму?

Вот такой он тернистый клиентский путь.

#uxui
🔥2🎉2
🏫 Снова в школу?

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

Я был в Школе 21 в Новосибирске. Если кто не знает, Школа 21 — это образовательное заведение от Сбера, в котором можно получить IT-профессию 👩🏻‍💻.

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

Теперь о впечатлениях. Они только положительные 🔥! Было здорово выступить перед столь заинтересованной аудиторией. Вопросов было много, в том числе онлайн от слушателей из кампусов Школы 21 из других городов 💪. Время пролетело незаметно.

#выступления #события #сбер
🔥7👍4