Ещё фичу?
137 subscribers
91 photos
2 videos
2 files
10 links
Пишем о системном анализе и it на человеческом языке.
Полезные материалы, упрощение работы и повышение зп. 💻🌱

https://clck.ru/3So7AS
Download Telegram
🧐 А точно нужен уметь рисовать человечков и стрелочки?
(сегодня про Use Case диаграмму)

➡️ Вот смотришь ты первый раз на эту Use Case Diagram
и, скорее всего, делаешь вот такое лицо 😶
Что это вообще такое?..какие-то человечки, кружочки, стрелочки...
И что, это вот все должно мне что-то объяснить, так, что ли?

🌱Просто поначалу кажется, ну что это - просто очередной рисунок,
чтобы было что приложить к бумагам, так, для отчетности, и ничего больше.
Думаешь, мол: у нас есть требования, есть API, есть логика,
зачем тут еще эти человечки вокруг кружочков бегают, ну совсем же непонятно.😑

➡️ Но стоит тебе взяться за задачи посерьезнее, и вдруг понимаешь, в чем тут весь смысл))
❗️Эта диаграмма нужна совсем не для того, чтобы показать, как именно система работает,
её задача в другом она показывает, кто с системой вообще взаимодействует, и почему он это делает.

Возьмем, к примеру, вот такую задачу:
Сделать восстановление пароля
вначале она выглядит до смешного простой:

😔пользователь кликнул кнопку
😔вбил свою почту
😔получил письмо
😔поменял пароль

Однако стоит копнуть чуть глубже, и тут же вылезают новые действующие лица:
пользователь/сервис, который отправляет письма/сервис капчи/система авторизации
😶 И вся картина становится совсем иной

Так из чего же вообще эта диаграмма состоит?

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


😔А вот сам Use Case это про какое-то действие или конкретную цель.
Например: войти в систему/восстановить пароль/создать заявку
😔А стрелочки потом уже просто показывают, кто с чем связан и кто с чем взаимодействует.

Но, конечно, самое интересное только начинается)
Стоит тебе только начать рисовать Use Case Diagram, как вдруг сами по себе начинают всплывать вопросы:
а кто у нас письмо отправит?
а капчу мы точно хотим сделать обязательной?
а если администратор, он тоже сможет это действие выполнить?
а внешний сервис тут вообще нужен нам, или как?


📎И тут есть одна маленькая грустная жиза:
очень многие сначала стараются запихнуть в Use Case Diagram буквально вообще всю логику системы:
и статусы, и условия, и алгоритмы, да и добрую половину требований туда же

В итоге выходит такая схема, на которую потом и смотреть-то страшно.
При этом сама Use Case Diagram создана для ответа лишь на один, но очень важный вопрос:
кто вообще взаимодействует с нашей системой и чего он от нее хочет добиться.
👌А вот все остальное, как правило, уже давно существует на других диаграммах.

😔Потом уже со временем ты начинаешь пользоваться этой диаграммой не потому, что так принято,
а просто потому, что она очень помогает тебе самому не запутаться в какой-то конкретной задаче.
Особенно это заметно на всяких интеграциях))
когда участников становится так много, что их уже больше, чем тех, кто присутствует на созвоне 😐

🤓Сохраняй шпаргалочку и не бойся учиться новому!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤‍🔥1🔥1
⚙️ Аналитик, проектировщик, архитектор - в чём разница?

💙Когда кто-то говорит: "я аналитик", сразу думаешь
"ну что ж, начинается игра в угадайку" 😑
Ведь где-то он занимается сбором требований,
в другом месте проектирует API,
а то и вовсе погружается в архитектуру, подбирает методы интеграции.

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

🤩Однако, если попробовать всё это упростить,
картинка вырисовывается примерно такая:
😔Представим задачу
нам надо организовать вход на платформу через Госуслуги.
Пользователь нажимает кнопку проходит авторизацию и, вуаля, оказывается в своём личном кабинете.

😔Вот так, в одном предложении, вся задача и описана)
А вот дальше уже начинается движ

🤩 Итак, аналитик:
🔴сперва разбирается, кто вообще может пользоваться входом через Госуслуги
🔴 потом выясняет, что же делать, если у пользователя уже есть аккаунт
🔴 думает, как правильно связать профили
🔴 выявляет, какие ошибки могут возникнуть
🔴 решает, что конкретно показывать человеку
🔴 и, конечно, учитывает все ограничения, которые есть со стороны бизнеса.

То есть аналитик отвечает на вопрос:
что именно у нас тут должно функционировать?

🤩 Потом приходит проектировщик:
🔴прикидывает, какие именно методы здесь пригодятся
🔴определяет, что конкретно нужно передавать в запросах
🔴рисует, как станет выглядеть структура ответа
🔴продумывает, как системы между собой станут общаться
🔴и вообще, где у нас будет располагаться та или иная логика

То есть:
как это будет устроено?

🤩 А потом архитектор смотрит на всё это
и начинает задавать уже другие вопросы:
🔴сможет ли наше решение выдержать ожидаемую нагрузку
🔴не сломает ли оно вдруг существующую авторизацию
🔴понадобится ли нам какая-то отдельная очередь
🔴как именно обеспечить должный уровень безопасности
🔴и, главное, не наваливаем ли мы себе сейчас технический долг

То есть:
а всё ли мы делаем правильно, строя это?

😔Потому что на реальных проектах роли часто смешиваются,
ведь на настоящих проектах все эти роли нередко переплетаются:

👌Системный аналитик вполне может сидеть и проектировать API.
👌Проектировщик запросто способен углубиться в обсуждение архитектуры.
👌Архитектор же иногда и сам погружается в бизнес-логику.

😔Поэтому если кто-то говорит:
"У нас аналитики этим не занимаются"
или
"Это работа архитектора"

то сразу хочется уточнить:

а кто у вас, собственно, скрывается под этим словом? 🤨
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍3🔥3
🖌 Грамотная постановка задачи UX-дизайнеру

©️Если ты только недавно начал взаимодействие с дизайнерами,
то нужно запомнить истину:
Если ТЗ для дизайнера изначально было не очень,
то даже самый красивый макет вряд ли вытянет ситуацию.

©️Потому что иногда задача прилетает примерно такая:
"Нужно сделать страницу регистрации. Чтобы было современно, удобно и красиво".
А дальше дизайнер сидит и начинает гадать:
🔵Красиво это как? Современно это как?
🔵Кто вообще пользователь? Что он делает?
🔵Какие ограничения есть?
🔵Это новая страница или переделка существующей?
🔵Что обязательно должно остаться?
🔵Есть ли ошибки? Есть ли роли? Есть ли состояния?

И проходит пара-тройка дней, а результат....ну, вы знаете этот сценарий ⤵️
🟣 дизайнер нарисовал
🟡 аналитик посмотрел
🔵 продукт посмотрел
🟢 разработчик посмотрел
➡️ все сказали: "ну не совсем то" 🙈

✳️ И запускается карусель бесконечных уточнений:
💭 а давайте ещё вот это добавим
💭 а здесь перенесём
💭 а мы забыли важный кейс

Хотя на самом деле корень всех бед лежит куда глубже,
и проявился он намного раньше.
Когда мы даём задание дизайнеру, ему ведь не просто красивые пиксели нужны
и не пожелания в стиле "хочу как у Тинькофф", ему нужен контекст.
➡️ Со временем собирается минимальный набор примерно такой:
📌Что делаем:
Не "новый экран".
А: страница регистрации для новых поставщиков

📌Зачем делаем
Не "так захотел бизнес".
А: "сейчас пользователи не понимают, какой вариант регистрации выбирать, из-за чего растёт количество ошибок".

📌Кто пользователь
Новичок? Опытный пользователь?

📌Какой сценарий проходит человек
Нажал кнопку → открыл страницу → ввёл данные → получил результат

📌Все состояния
Загрузка, Ошибки, Пустые данные, Успех, Ограничения

📌Что нельзя менять
Вот этот пункт почему-то регулярно забывают 🙂
А потом оказывается:
"Ой, этот блок нельзя трогать, он приходит из другого сервиса"
или
"Ой, здесь юридический текст обязателен"
или
"Ой, эта кнопка завязана на старую логику"


💡И вообще,
если правильно поставить задачу дизайнеру, это сэкономит время не только ему,
выигрывают от этого абсолютно все)
‼️ Ведь тогда аналитику не придётся сто раз переделывать требования,
разработчик не будет забрасывать уточняющими вопросами,
а тестировщик точно поймёт, что же мы имели в виду под загадочным "удобно".
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
👨‍🎨 Фреймворки для аналитика: какие бывают и зачем нужны

Если собрать в одной комнате десять аналитиков и спросить
какой фреймворк самый важный, через пять минут начнётся драка.😱

💥 Потому что кто-то скажет BPMN, кто-то начнёт защищать UML, кто-то вспомнит про C4,
а кто-то вообще заявит, что главное это SQL и больше ничего в жизни не нужно.
💥 Новичков это часто пугает.
Складывается впечатление, что нужно срочно выучить все существующие схемы и нотации.

💥 А потом открываешь BPMN, видишь полсотни значков, ромбиков и стрелочек,
и начинаешь подозревать, что идти в аналитику было ошибкой...🤦‍♂️
💥 Хотя большинство фреймворков нужны для довольно простой вещи:
они помогают ответить на конкретный вопрос, разберём:

📌 BPMN
💭 Он нужен, когда предстоит разобраться в запутанном процессе:
Кто и что делает, в какой момент времени, какое действие запускает следующий шаг.
Если вы работаете с согласованиями, сложными закупками или документооборотом,
то этот инструмент здорово упростит вам жизнь.


📌 UML Sequence Diagram
💭 Диаграмма последовательности UML работает иначе.
Она нужна для понимания того, как системы общаются между собой:
кто кого вызывает, какие методы при этом дергаются и что возвращается в ответ.
Это спасает при интеграциях, когда в цепочке участвуют хотя бы пять сервисов,
обсуждать их на словах трудно, люди просто не могут удержать всю эту архитектуру в голове.


📌 ER-диаграмма
💭 ER диаграмма помогает разобраться с данными.
Вы смотрите на нее и понимаете, какие сущности есть в системе, как они связаны и где лежат.
Это очень выручает, когда вы раскапываете новую для себя систему или проектируете изменения в базе данных.


📌 User Story Map
💭 USM позволяет разложить крупную задачу на понятные пользовательские сценарии.
С ней гораздо проще договориться, что реально нужно для первой версии продукта,
а что можно спокойно отложить на потом.


📌 CJM (Customer Journey Map)
💭 А вот CJM смещает фокус на самого человека.
Эта карта показывает систему глазами пользователя:
где он путается, на каком шаге начинает злиться и где вообще бросает процесс на середине.
Это нужно, чтобы понять поведение людей, а не техническую сторону проекта.


‼️ Но сами по себе эти фреймворки не имеют никакой ценности.
Компании не нанимают аналитика только за умение красиво рисовать схемы,
а нанимают за способность разобраться в процессе и найти решение.

Просто иногда нарисовать BPMN оказывается самым быстрым способом объяснить этот процесс команде,
то же самое касается UML, ER и любых других инструментов.

📎Поэтому если вы сейчас взялись изучать очередной обязательный инструмент,
попробуйте начать не с заучивания значков)
💥Сначала разберитесь, какую именно проблему он помогает решить.
Выучить обозначения можно за пару вечеров,
но гораздо важнее понять, когда их действительно стоит применять на практике.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54👍4
☹️ Типовые факапы в интеграциях и как их избегать

🔴Интеграции штука вроде бы простая, но на деле часто подкидывает сюрпризы.🙏
Вот сидишь на груминге, всё выглядит максимально безобидно:
👉 взять данные из соседней системы
👉 другая команда даст апишку
👉 мы вызовем метод
👉 и нужные данные отобразятся

Звучит как задача на пару дней)
⚪️А потом (как обычно) оказывается, что у интеграции свои законы.

За несколько лет работы мы заметили, что большинство проблем возникает вокруг одних и тех же вещей ↘️

📌Факап №1.
Никто не договорился, кто за что отвечает

😔 Самый популярный сценарий:
одна команда считает, что поле должно заполнять другая команда,
вторая команда считает ровно наоборот.
Итог? Поле пустое, сроки уже горят,
а на созвоне человек десять судорожно пытается понять, чья же это, в конце концов, головная боль.😠
Поэтому на этапе проектирования полезно задавать скучные вопросы:
👉 кто владелец данных?
👉 кто отвечает за их хранение?
👉 а за актуальность кто?
👉 кто исправляет ошибки?
Чем раньше мы расставим все точки над "и", тем меньше потом будет сюрпризов.


📌 Факап №2.
Интеграцию проектируют по счастливому сценарию


😔 Очень часто обсуждается только вариант:
запрос отправился 👉 ответ пришёл 👉 пользователь счастлив.
😔 Но реальная жизнь почему-то любит другие сценарии:
👉 что если сервис вдруг недоступен?
👉 или ответ придёт не сразу, а через полминуты?
👉 а если вдруг статус вернётся совсем не тот, что мы ждали?
👉 что, если пришла пустая структура, хотя должна быть?
👉 или данные вроде есть, но заполнены как-то не полностью?

Именно поэтому один из самых полезных вопросов на обсуждении интеграции:
"а что будет, если всё пойдёт не по плану?"

📌 Факап №3.
Документация не совпадает с реальностью

😔 Любой аналитик хотя бы раз открывал документацию,
видел поле string, а потом получал в него целый массив объектов...😒
😔 Или спека обещала один набор данных, а реальный ответ АПИ принёс ещё двадцать полей сверху.😐
‼️Так что, если есть хоть малейшая возможность, проверяйте методы сами.
Постман в этом плане очень быстро помогает понять, где вы находитесь

📌 Факап №4.
Все считают, что данные всегда будут идеальными
👉 ИНН без ИНН
👉 дата без даты
👉 пустые строки вместо значений
👉 лишние пробелы
👉 неожиданные спецсимволы
👉 дубликаты
Если данные приходят из внешней системы, рано или поздно кто-нибудь обязательно пришлёт что-нибудь интересное.
Вопрос лишь в том, когда это случится)

📌 Факап №5.
Забыли про версионирование

😔 Пока интеграция новая, всё отлично.
Но пройдёт год, появится новая версия метода, а потом ещё одна.
Кто-то решит изменить структуру ответа.
😔Потом начинается археология:
"Ээ, а какой контракт сейчас используется в проде?"
📏📏📏📏📏📏📏📏

👌Поэтому все изменения в АПИ лучше обсуждать сильно заранее и обязательно где-то фиксировать,
иначе однажды можно узнать о новой версии метода прямо из упавших логов,
которые внезапно покраснели.☺️

🌱 А ещё - большинство проблем в интеграциях связаны не с кодом)
Они появляются на этапе, когда команды что-то не договорили, не уточнили или решили проверить потом.
🌱 Вот почему хорошая интеграция начинается совсем не с написания АПИ,
а с кучи, порой неудобных, вопросов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👏3🔥21
🤪 Как проводить интервью с пользователями

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

Ведь пользователи редко говорят все как есть.

А бывает, что и вовсе рассказывают не то, чем занимаются на самом деле.😏

ℹ️Вот спросишь, скажем: "как часто этой функцией пользуетесь?",
а в ответ: "почти каждый день!"
Откроешь потом статистику, а там последний раз человек заходил три месяца назад...
и такие штуки происходят постоянно.
🤩Так что хорошее интервью – это не просто проход по списку вопросов.
Это, по сути, попытка вытянуть наружу, как человек реально себя ведет, что делает.

📌Ошибка №1: спрашивать, что пользователь думает, а не что он делает.
✖️Плохой вопрос: "Вам удобно работать с системой?"
👌Хороший вопрос: "Покажите, как вы выполняли эту задачу в последний раз."

В первом случае человек начнет рассуждать, давать оценку.
Во втором – покажет, что происходит на практике.
А практика, как правило, намного интереснее, чем любые рассуждения..


📌Ошибка №2: самому подсказывать ответы.
Пример диалога:
- Вам было сложно найти эту кнопку?
- Наверное, да.
- А если бы мы перенесли её наверх, стало бы удобнее?
- Наверное, да.

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


📌Ошибка №3: говорить больше, чем пользователь.
Парадоксально, но иногда аналитик занимает процентов восемьдесят времени интервью.
Объясняет, уточняет, рассказывает про будущие доработки, делится идеями.
А потом встреча заканчивается, и оказывается, что про пользователя почти ничего нового не узнали.👊


📌Ошибка №4: искать подтверждение своей идеи.
😋 Это вообще любимая ловушка.
Аналитик уже придумал решение и теперь задает вопросы так, чтобы услышать именно нужный ему ответ.
После такого интервью можно получить подтверждение буквально любой идеи,
вот только толку от этого немного...


📌Ошибка №5: не попросить показать.
Самые полезные фразы на интервью:
"Покажите, пожалуйста"/"А можете продемонстрировать?"/"Как это выглядит в системе?"

😔Потому что между словами пользователя и его реальными действиями иногда лежит целая пропасть.
Любой аналитик хотя бы раз слышал фразу "да тут всё просто".
После чего открывался экран с двадцатью вкладками, тремя Excel-файлами и инструкцией на сорок страниц.


🤩 Именно поэтому хорошие интервью нужны не для того, чтобы узнать, что пользователь думает.
Они нужны, чтобы понять, как человек работает на самом деле,
а это далеко не всегда одно и то же.
Please open Telegram to view this post
VIEW IN TELEGRAM
1❤‍🔥1💯1
📄 Файловые интеграции: старо, но работает

🤩 Многие начинающие аналитики представляют свою работу как проектирование современных систем с REST API, Kafka и т.д.
Кажется, что весь айти мир 🤩 это сплошной поток данных в реальном времени.

🤩 А потом такой специалист попадает на реальный проект
и слышит от коллег:
Значит так, раз в пятнадцать минут мы забираем XML-ку с того FTP-сервера, а после обработки кладем ответ в папку рядом.

И тут наступает легкий шок...😳
😔 Выясняется, что файловые интеграции никуда не делись, их по-прежнему полно везде:
в банках, крупных корпорациях и госсекторах.
😔 И особенно там, где нужно наладить обмен данными между совершенно разными организациями.

🤩Почему это до сих пор живет? Все дело в простоте.
Эта схема настолько элементарна, что может стабильно работать десятилетиями.
Одной стороне нужно просто создать файл, другой его забрать и прочитать.
Не нужно поддерживать постоянное соединение, не нужно переживать, доступна ли вторая система прямо в эту секунду.
👌Принцип "положил и забыл" в определенных условиях работает идеально.

🤩При этом внешняя простота файловых интеграций обманчива,
так как за ней скрывается серьезная техническая логика.
🤩Аналитику приходится заранее находить ответы на сложные вопросы:
🪵 как система должна реагировать на дубликаты файлов?
🪵 можно ли обработать документ, если из нескольких тысяч записей в нем некорректна только одна?
🪵 каким образом подтверждать успешное получение данных или сообщать об ошибках?


🤩 Особое внимание здесь уделяется схеме данных.
Если в REST можно открыть Swagger, быстро дернуть запрос и посмотреть ответ, то здесь весь контракт зашит в структуру файла.
Лишний атрибут, не тот формат даты или какой-то странный символ в строке - и процесс встанет.

🙆‍♂️ Для опытного специалиста файлы ➡️ это не устаревшая технология, а прагматичный инструмент.
В нем нет хайпа или сложной событийной архитектуры, но есть стабильность.

Пока мы рассуждаем о технологиях будущего,
какой-нибудь старый добрый XML-файл прямо сейчас спокойно делает свою работу, даже не зная, что его уже десять лет пытаются отправить на пенсию.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2💯2
🗂 Логи - это то место, куда аналитик приходит после того, как закончились версии.

Расследование любой проблемы в интеграциях обычно начинается одинаково:
кто-то пишет: "не работает" и всё...😳
Нет подробностей, ошибок, нет картинок с экрана. Просто не работает.😒

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

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

💙 И вот тут открываются логи. В логах видно:
💙запрос даже не ушёл вовне, потому что его не пустила внутренняя проверка
💙или всё ушло, но там вернулась ошибка
💙или же всё прошло как надо, а проблема в показе данных
Хорошо запоминаются случаи, когда уже нашли, кто, кажется, виноват.

✔️ Почти написано письмо, приготовлены слова, люди ждут на звонок
и в голове готово объяснение, почему проблема у соседей.
😥 Но логи показывают, что ошибка у нас...
Становится неловко, но зато время сэкономлено.

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

🤩А логи обычно всё честно показывают и рассказывают:
когда пришёл запрос, что было внутри, куда всё ушло, что вернулось назад
и где именно всё пошло не так.

🤩 Пожалуй, по-настоящему взрослым аналитик становится в тот момент,
когда перестаёт говорить: "кажется, интеграция сломалась",
а начинает: "дайте пять минут, я посмотрю логи".

И это, что удивительно, почти всегда помогает быстрее, чем любое обсуждение.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32🔥2
Зачем аналитику нужны юнит-тесты и стоит ли лезть в код

💀 Братва, у меня плохие новости..кажется, я начал читать код.

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

Потом открывается метод..в методе вызывается другой метод, в другом методе ещё один..
какой-то Helper, потом AbstractManager, потом ProviderFactory, потом ManagerProviderFactoryExecutor.
Уже начинает казаться, что разработчики соревнуются между собой, кто придумает название класса страшнее.😋
😔 Через сорок минут ты уже сидишь в таких дебрях, что сама система смотрит на тебя с уважением.

🤩 У аналитиков есть страшилка о том, что если открыл код, то всё, приехали...
теперь нужно срочно учить Java, писать микросервисы и спорить в комментариях про архитектуру.

Да нет же!
Никто не ждёт, что ты будешь переписывать бэк по вечерам вместо просмотра сериала))
Но вот понимать, что происходит внутри системы, иногда бывает очень полезно.
Потому что:
🤩документация говорит одно,
🤩разработчик на созвоне говорит второе,
🤩тестировщик говорит третье.
А код тем временем:
🤩Хаю хай, кожаные, сейчас расскажу, как тут что работает. 😔

🤩И знаете, что я обнаружил?
Самая интересная штука часто вообще не код.
Самая интересная штука это юнит-тесты.

🧐 Я раньше относился к ним примерно как к брокколи:
вроде полезно, но добровольно не полезу))
➡️ А потом открыл несколько тестов и понял, что это буквально шпаргалка от разработчика самому себе.

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

Иногда один тест рассказывает о системе больше,
чем документ, который последний раз обновляли во времена,
когда Internet Explorer ещё считался браузером.😬

Более того,
именно в тестах часто находишь всякие приколы, например:
💙 в требованиях про ограничение никто не написал.
И документации про него ни слова, и на демо его никто не показал.
Зато в тесте гордо лежит проверка на этот кейс.
И ты сидишь такой:
- ах вот где ты прятался, маленький засранец))

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

А это, между прочим, две очень разные лиги 😏
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥43👍3
🚨 Тот самый аналитик, который всех бесит на созвонах

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

Например, ситуация ➡️ вы обсуждаетеновую фичу
😔разработчик говорит, что все понятно и они сделают,
😔тестировщик подтверждает готовность,
😔продакт уже хочет закрывать встречу и бежать дальше.
Все мысленно уже вышли из звонка. 🤤

🌱 И тут наш красавецаналитик:
🤔 А что будет, если пользователь откроет сразу две вкладки?

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

🤩Начинаются вопросы про то:
🤩 что делать, если данные из внешней системы не придут
🤩 или придут не полностью
🤩 или если кто-то нажмет кнопку пять раз подряд.

🤦‍♂️ Остальные участники начинают смотреть на него так, будто он лично решил испортить им вечер..

🤩Но на самом деле это обычная профдеформация.
Там, где все видят просто новую фичу, аналитик видит потенциальное место катастрофы.

🤩Можно сравнить это с тем, что внутри аналитика живет такой маленький тревожный хомяк:
Пока команда радуется, как все круто получилось,
этот хомяк в голове аналитика носится в колесе и паникует:
😱 А ЕСЛИ ПОЛЬЗОВАТЕЛЬ СДЕЛАЕТ КАКУЮ-ТО ДИЧЬ???

И ведь пользователь эту дичь обязательно сделает)) причем в первый же день после релиза.

😒 У пользователей будто есть какой-то секретный чат,
где они договариваются проверять самые дебильные сценарии, которые нормальному человеку в голову не придут.

🤩Поэтому аналитик и заваливает всех вопросами в духе "а что, если".
Именно это часто спасает команду от очень неприятных разборок, потому что
баг на тестовом стенде 🤩 это рабочий процесс,
баг на проде 🤩 это уже срочное мероприятие с участием руководителей и смсками на уровне:
🚨🚨 КОЛЛЕГИ, У КОГО ЕСТЬ ИНФОРМАЦИЯ? 🚨🚨

Ну и по итогу, тот самый раздражающий вопрос про две вкладки был очень даже уместным))

🤩 Так что, когда в следующий раз аналитик снова начнет докапываться до мелочей на созвоне, не спешите закатывать глаза.
Возможно, прямо сейчас он предотвращает ваш будущий созвон в 8 утра с темой:
"Разбираем последствия вчерашнего релиза" 😒
Please open Telegram to view this post
VIEW IN TELEGRAM
3😁3🔥2
😵‍💫 Рабочий день аналитика, или как не словить выгорание раньше дедлайна

🤩 Знакомо это чувство,
когда утром открываешь ноутбук с полной уверенностью,
что сегодня точно получится спокойно сесть за требования?

🔫 Обычно эта уверенность живет минут семь.
🤩Потом пишет разработчик,
🤩следом прилетает вопрос от продакта про старые задачи,
🤩а там и внезапный созвон подоспел + созвон после созвона

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

❗️Но потом стало понятно, что работа аналитика в реальности устроена иначе.
Чаще это не тишина и глубокая концентрация, а наоборот...
постоянные попытки собрать мысли в кучу, пока тебя дёргают с "есть 5 минуток?".😳
И ведь никто ведь не врёт, у всех реально "на пять минут",
просто существует закон айти, по которому пять минут автоматически конвертируются в сорок))

✳️После пары таких дней мозг начинает ощущаться как браузер,
в котором открыто вкладок...ну штук сто.
где-то играет музыка, где-то висит запрос к базе,
где-то черновик требований,
а на какой-то вкладке ты уже минут двадцать пытаешься вспомнить, зачем вообще ее открыл.👎

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

✳️ Сначала казалось, что это подставит команду,
но знаете, что на самом деле произошло? Да ничего))
Никто не уволился, процессы не встали, разработчики не начали писать код на салфетках в ожидании моего ответа.
✳️ Зато я перестал переписывать один и тот же абзац требований по четыре раза,
потому что меня дёрнули ровно в тот момент, когда я наконец-то понял, как его сформулировать.

В общем, мысль такая
выгорание часто берется не от самого объема работы, а от этого бесконечного переключения между контекстами.
Поэтому иногда самая полезная задача на день - это... дать себе спокойно закончить хотя бы одну мысль. 
Звучит как читерство, но работает. 😌
Please open Telegram to view this post
VIEW IN TELEGRAM
👌32👍2
📝 Методы сбора требований: почему выучить названия вообще не самое сложное.

⬇️Когда начинаешь в системном анализе,
⬇️то кажется, что самое важное - выучить теорию:
интервью, воркшопы, анкетирование, наблюдение.
🫦 Звучит солидно, на собеседовании помогает,
но на первой же реальной задаче все эти знания часто рассыпаются. 😫

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

🔖 Возьмем классику: заказчик просит добавить новую кнопку.
Первая реакция ➡️ надо созваниваться. 📞
Но бывает, что самый важный разговор уже случился, просто про него забыли.

🤩Описание API, старые постановки, документация - все это уже может лежать в базе.
Порой проект знает о себе больше, чем люди, которые над ним работают,
стоит сначала поискать ответы внутри системы, а не бежать сразу к людям.
🤩И может случиться так, что документация оказывается куда разговорчивее участников встречи)

🔖 Другая история: когда пользователь жалуется, что ему неудобно работать.
✳️ Можно долго засыпать его вопросами о том, когда именно это началось и что конкретно не так.
✳️ А можно просто попросить показать, как он выполняет свои задачи.
И вуаля, через пять минут наблюдения понимаешь больше, чем за час интервью.

🔖 И любимый момент: когда на встрече собираются пять человек и каждый по-своему описывает один и тот же процесс.
Спустя время оказывается, что общего понимания нет ни у кого.
✳️ Тут и спасают воркшопы, т.к. иногда полезнее всего просто собрать всех в одной комнате и дать им возможность поспорить друг с другом.
В таких дискуссиях требования выкристаллизовываются гораздо быстрее, чем в серии одиночных бесед за неделю.

💡 Вообще со временем понимаешь, что методы сбора требований - это просто инструменты, как молоток или отвертка.
Никто же не режет хлеб отвёрткой. Хотя...наверняка кто-то и так делает. 😅

Поэтому ценность аналитика вообще не в том, что он может перечислить пять методов сбора требований, тут ценность в другом:
он понимает, когда стоит открыть документацию,
а когда лучше поговорить с пользователем,
а когда собрать всех на один воркшоп,
а когда вообще ничего не спрашивать, а просто пять минут молча понаблюдать.
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2💯1
📝 User Story:
почему фраза "Как пользователь, я хочу..." ещё ничего не значит


Когда впервые слышишь про User Story, думаешь, что это элементарная штука:
достаточно взять шаблон:
Как <роль>, я хочу <действие>, чтобы <ценность>

подставить нужные слова
и пойти пить кофе.
Кажется, что работа сделана. 😎
Но потом приходит разработчик, читает это предложение и спрашивает: "а делать-то что конкретно?" 🤨

Проблема здесь в том, что User Story порой путают с техническими требованиями.
На самом деле она их не заменяет, её задача объяснить, зачем эта фича вообще нужна.
Возьмём пример:
Как пользователь, я хочу скачать отчёт, чтобы работать с ним офлайн.

Класс, но...
Какой формат? Кто может скачать? Есть ограничения по размеру? Что делать, если отчёт ещё не сформировался?
Получается, что User Story ответила только на один вопрос: "зачем?"
А вопросы "что?" и "как?" всё ещё лежат и грустят. 😢

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

💡 И тут важно вспомнить про
acceptance criteria
Именно они превращают красивую хотелку в понятную задачу.
⬇️Например, если мы пишем User Story:
Как пользователь, я хочу восстановить пароль, чтобы снова попасть в аккаунт.

⬇️И сразу рядом критерии:
🔵 ссылка действует 24 часа
🔵 повторно использовать её нельзя
🔵 после смены пароля старый перестаёт работать
🔵 если токен просрочен - показываем ошибку

📎Когда есть такая конкретика,
то разработчик понимает логику, а тестировщик знает, что именно проверять.
Это избавляет от споров о том, кто и как что-то "не так понял". 😱

Вообще есть очень простой способ проверить свою User Story.
⬇️
⬇️
⬇️
➡️ Закройте всё, кроме одного предложения, и задайте себе вопрос:
"Если убрать все остальные требования, разработчик сможет реализовать фичу?"

Если ответ "да" - скорее всего, вы случайно написали не User Story, а полноценное ТЗ))
Если ответ "нет" - всё нормально, значит, User Story выполняет свою работу)


📎Она объясняет ценность, а детали живут рядом и именно так с ней работать гораздо приятнее,
потому что User Story перестаёт быть формальностью ради Скрама
и становится нормальной отправной точкой для обсуждения фичи. 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍3❤‍🔥1
👍 Use Case: документ, который новички либо боятся писать,
либо пишут вообще на всё подряд


Аналитики могут проходить через стадию, когда Use Case кажется универсальным инструментом.
Стоит только разобраться, как он работает, и рука сама тянется описывать через него всё подряд:.
😔 авторизацию, поиск, кнопку "Сохранить", открытие модалки
и вообще на всё, что шевелится. 🤭

🤩Обычно это длится до первого серьезного разговора с тимлидом, который спрашивает, а зачем вообще здесь этот документ?
Чаще всего путаница возникает потому, что Use Case путают с обычными требованиями.

🤩Это не список всех возможных проверок, ошибок и ограничений, он решает другую задачу:
👉 показывает как пользователь взаимодействует с системой, чтобы достичь своей цели?

💙Например, взять регистрацию пользователя.
Именно зарегистрироваться ➡️ это и есть цель.
А дальше сценарий:
💙 открыл страницу регистрации
💙 заполнил поля
💙 нажал кнопку
💙 получил письмо
💙 подтвердил почту
💙 вошёл в систему

Вот и всё. Никаких требований вроде "поле должно быть обязательным", "длина пароля от 8 символов" и "ошибка 400" здесь быть не должно,
потому что это уже требования, а не Use Case.

🤩Понять, нужен ли Use Case, очень просто.
Задайте себе вопрос:
пользователь идёт к цели или просто нажимает кнопку?

💙 Если цель есть, то Use Case пригодится.
💙 Если же задача звучит как:
добавить чекбокс/переименовать поле/поменять цвет кнопки,
То писать ради этого Use Case примерно так же логично, как вызывать пожарных, чтобы зажечь свечку))

🤩Есть ещё одна крайность ➡️ попытка предусмотреть вообще всё.
Основной сценарий, куча альтернативных веток и исключений
превращают документ в бесконечный сериал, как будто пишешь сценарий к новому сезону Игры престолов))
На самом деле вполне достаточно описать главный путь и пару важных нюансов.
🤨 Документ, куда включено всё подряд, никто в здравом уме читать не будет.

По сути, Use Case ➡️ это короткая история.
В ней есть герой, есть его цель и чёткая последовательность действий.
Если после прочтения и разработчик, и тестировщик, и заказчик понимают,
что будет происходить в системе, значит, документ сделали как надо.
Если же у каждого своё представление, то стоит готовиться к долгим и бесплодным созвонам)
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2🔥2
📊 CRUD-матрица:
табличка, которая задаёт вопросы лучше некоторых аналитиков

Есть очень простой способ понять, нужна ли проекту CRUD-матрица:
😔 если на вопрос "кто может удалить договор?"
в комнате прозвучало хотя бы два разных ответа..поздравляю, она вам уже нужна 🌟

Вообще CRUD выглядит максимально скучно. Обычная табличка:
сверху роли, слева сущности, а внутри четыре буквы:
C, R, U, D.

⬇️Может показаться, что это очередной рутинный инструмент, чтобы аналитикам было чем заняться в пятницу вечером))
⬇️Но стоит заполнять её на практике и всё меняется:
Берёшь, например, сущность "Заявка" и видишь, что оператор может делать Update.
Тут думаешь: "а он случайно не может править любую заявку?".
Оказывается нет, может только свою, да и то если она в статусе "Черновик" и ещё на согласовании не была.

😔И вот одна буква U превращается в целый список условий, в этом и весь прикол ⭐️CRUD-матрицы⭐️
Она нужна не для того, чтобы аккуратно заполнить таблицу эксель, а для того, чтобы заставить всех задуматься над деталями.


💥Если будете составлять её впервые,
не пытайтесь сразу нарисовать огромную таблицу на сто ролей и пятьдесят сущностей.
💥Начните с простого:

1️⃣Выпишите основные сущности.
именно те, с которыми работает система: заявки/договоры/пользователи/документы,
а не экраны или кнопки

2️⃣Затем добавьте роли, только реальные.
Очень хочется написать "Администратор", "Пользователь", "Менеджер" и закончить,
но лучше потратить две минуты и проверить, не забыли ли вы ещё какого-нибудь оператора или модератора.

3️⃣И главное - не ставьте CRUD-операции на автомате как шаблон.
Каждую букву лучше мысленно заменить вопросом.
😔Не просто "Update", а "когда именно он может изменить?"
😔Не просто "Delete", а "точно удалить, а не архивировать?"
😔и не "Read", а "просмотр всех записей или только своих?"
Вот на этих вопросах обычно и всплывают ограничения, про которые никто не вспомнил на обсуждении.


🔖 Ещё совет:
Если в вашей CRUD-матрице почти везде стоят одинаковые буквы ➡️ не спешите радоваться)
Скорее всего, вы просто ещё недостаточно глубоко покопались,
потому что реальные системы очень любят фразы вроде:
"можно, но.." ➡️ эти самые "но" потом становятся требованиями, тест-кейсами и багами.

🔖 По сути, CRUD - это инструмент,
который помогает вытащить на свет скрытые ограничения и разобраться, где система прячет свои нюансы.
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥1💯1
📄 Vision Document - документ,
который отвечает на вопрос: "а что мы вообще строим?"

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

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

🤨 Что такое Vision Document?
По сути, это документ, который описывает проект с высоты птичьего полёта,
никаких деталей, бизнес-правил или технических моментов.

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

🤨 Что обычно там пишут?
Набор разделов может отличаться от компании к компании, но чаще всего встречаются:
📌 цель проекта
📌 описание проблемы
📌 целевая аудитория
📌 бизнес-цели
📌 ключевые возможности продукта
📌 ограничения
📌 границы проекта (Scope/Out of Scope)
📌 критерии успеха

✔️ После такого документа уже гораздо проще переходить к требованиям.

🤨 Чем Vision отличается от ТЗ?
🌼 Vision отвечает на вопрос "что мы хотим получить?"
➡️ А требования отвечают: "как именно это должно работать?"
Например,
в Vision может быть написано, что пользователь должен быстро восстановить доступ к аккаунту,
а в требованиях уже опишут, что ссылка для восстановления действует 24 часа, её нельзя использовать повторно и после смены пароля токен становится недействительным.
Разница очевидна.


🤨 Когда Vision особенно полезен?
💙если запускается новый продукт,
💙если проект большой и в нём много команд, много заинтересованных лиц
💙или если есть риск, что каждый понимает цель по-своему.

📌 Ведь чем больше людей работает над продуктом,
тем ценнее становится единое понимание того, что вообще строится.
Потому что плохие проекты редко разваливаются из-за неправильно написанного требования
и гораздо чаще проблема начинается раньше - когда команда с самого начала представляла конечный результат по-разному.
И вот здесь Vision Document
становится не просто документом, а отправной точкой для всех дальнейших решений.
Please open Telegram to view this post
VIEW IN TELEGRAM
2❤‍🔥1🔥1