ITMINE: о бизнес-анализе
1.28K subscribers
15 photos
14 files
196 links
Канал о бизнес-анализе от ITMINE: вакансии, анонсы мероприятий, полезные материалы о БА и не только.
По всем вопросам и предложениям или для вступления в чат для общения пишите в личку (@g_shesterov) с краткой информацией о себе.
Download Telegram
- Когда вы общаетесь, используйте визуальные подкрепления. И неважно, общаетесь вы письменно или устно. Я вот, например, часто делаю вывод о том, что человек — классный коммуникатор (и кайфую от перспективы рабочего общения с ним), когда:
- Если к нему подходит разработчик с вопросом "Че-то я тут не понял, что написано в требованиях", берет его за шкирку и тащит к доске/флипчарту, чтобы маркером помогать доносить мысль.
- Общаясь с заказчиком на звонке, почти всегда шарит досочку в Miro или прочий инструмент как для фиксации того, о чем идет общение, так и для рисования схем в процессе, чтобы задействовать больше каналов.
- В письмах периодически, как и в спеке, что-то рисует: диаграммы, чтобы вместо или в дополнение к тексту ярче донести инфу; макеты, чтобы показать, как это будет выглядеть на UI.
- Вместо описательных отсылок к чему-то делает скриншоты и рисует на них стрелочки ("вот тут кнопка — на ней описка")
- Когда доносит мысль, показывает ее активным жестикулированием (но лучше в меру — чуть поменьше гангста-рэпперов): например, считая пункты, загибает пальцы. Ну а что, это тоже визуализация 😊

В общем, строго рекомендую как минимум просто попробовать. Вероятно, со временем у вас в большинстве коммуникаций также будет срабатывать условный рефлекс "Так, а что я буду показывать в процессе? Как это показать?" Где-то грустит один заказчик, когда аналитик на звонке начинает рассказывать сценарии юз кейсов голосом, читая их со спеки у себя под рукой, а потом, прочитав это минут за 10, спрашивает "Все ли хорошо, есть ли комменты?" Не меньше грустит и разработчик, когда открывает спеку аналитика, окидывает взглядом 50 страниц сплошного текста и понимает, что в ближайшие дни секс его мозгу обеспечен.
🔥13👍21
Заметка о 4-х ключевых вопросах аналитика перед стартом работ: https://www.artofba.com/post/how-to-take-task-into-work-part2-four-key-questions
Рабочие и жизненные примеры, плюс в целом интересно читается.
👍6
Очередной очерк от любимого дядюшки: https://medium.com/analysts-corner/when-use-cases-arent-enough-bb2094f5b01d

От себя: редко встречал использование именно таких таблиц на практике. Зато когда-то на собеседовании мне задали вопрос из этой области: как бы ты описал требования к такому вот проекту (несколько систем между собой активно взаимодействуют, при этом для конечного юзера либо нет операций, либо их одна-две полезных). Я перебрал все, что знаю (разные диаграммы, алгоритмы текстом и пр.). Собеседующий удивился и сказал, что самое элементарное и подходящее я не назвал — юз кейсы (ведь там же есть сценарии, так?). Я начал активно доказывать, что юз кейсы — не для таких ситуаций, и на минут 20 мы ушли в дискуссию. Зато по итогу человек сказал, что редко встречает ситуацию, когда его переубеждают, и был весьма доволен. Может, и вам пригодится 😊
Приветствие!

Продолжим цикл ошибок, и сегодня — не всегда критичное, но часто раздражающее явление: общение с ЗЛ языком требований решению (#12).
Сразу очертим, когда эта претензия не применима: когда аналитик извлекает требования к решению из ЗЛ, и это контекстно-уместно (“Давай заказчик, толкай мне, что за система нужна и как она должна работать“). Например, у вас что-то наподобие аутстаффинга, и свои аналитики есть на стороне клиента. Эти аналитики обеспечивают вашу команду спекой, пусть даже и не очень качественной, а вы, скорее, переводчик с иностранного для команды. Или же, например, когда заказчик сам уже обладает по какой-то причине спекой в голове и стремится всунуть вам ее в ухо: дает детальное описание того, что он хочет, языком решения; активно интересуется деталями реализации.
Но если (что гораздо чаще встречается) заказчик — бизнес-стейкхолдер и ждёт от вас полную качественную реализацию IT-услуги с минимумом своего вовлечения, то проблема выше — не ок, и ситуацию надо менять.

Пример, который я периодически я привожу на тренингах: представьте, что вы пошли постричься. А заодно представьте, что вы не эксперт в домене стрижки и вообще делаете это у данного мастера впервые. И вот вас спрашивают (требования извлекают, ага…): Вас машинкой с какой насадкой стричь? Сколько сантиметров оставить на висках? Под каким углом прикладывать ножницы к волосне? Если пример не близок, то представьте, что вы отдали машину в СТО, и там посыпались такого же плана вопросы.
Мотивация мастера понятна — человек хочет, чтобы вы спеку написали, а он её бездумно выполнил. Но только вот я лично от подобных вопросов чувствую себя глупым и мне некомфортно от того, что я не могу дать уверенный ответ. К чему это приведёт: хоть глупо и мне, но к этому мастеру я вряд ли приду снова, если будут альтернативы (просто потому, что мне было некомфортно).

А что он мог бы сделать? Как реализовать мои потребности — это требования к решению, его зона ответственности. Если у него есть переживания за них, он может у меня их зааппрувить (но моим языком). Но не извлекать из меня прямыми вопросами! А вот что ему действительно надо сделать, так это понять, что мне от него нужно (требования ЗЛ): “Расскажите, какую стрижку хотите; покажите на фотке; а вот наши фотки, кстати — тыкните пальцем, что нравится”. Его задача — активно помочь мне без своего проф. жаргона выдать мои хотелки.

Чем иногда аналитики жгут в этом плане:
- Э, пиу, заказчик! Смари, какой я словарь данных нафигачил. Проверь плз! (1)
- Какие эндпойнты апишки будем дергать? Мне нужна информация. (2)
- Какие есть ограничения дизайна/требования к операционной среде/атрибуты качества/…? (3)


Что объединяет все эти примеры? Попытка извлечь (прямыми вопросами или через “проверь мой черновик”) требования к решению. Эти требования описывают решение, а потому они часто формулируются языком домена решения (”классические” критерии приемки в US, кстати, избавлены от этой проблемы, именно поэтому есть рекомендации по языку их формулировки). И весьма велика вероятность, что бизнес-кастомеры не знают, как ответить на такое, и плачут. Просто представьте, что вы — не БА и не айтишник и вы обратились к ИТ-аутсорсингу: сайт мне для бизнеса запилите. Вы серьёзно ответите на такие вопросы от аналитика на той стороне?

А что же тогда делать (не считая исключений, описанных в начале)?

1) Примите за отправной факт, что ключевой источник требований к решению — вы. Стейкхолдеры — источники требований ЗЛ. Именно вы проектируете решение с позиции требований, основываясь на требованиях ЗЛ и бизнес-требованиях.

2) Очевидный вывод из предыдущего: извлекайте из ЗЛ именно требования ЗЛ (тут сделаю трассировку на видео, которое недавно постил: https://www.youtube.com/watch?v=4hU3CAkFJsQ). Осмыслите пример со стрижкой выше. Вам надо понять, каковы потребности у ЗЛ и что им нужно от решения (как они с ним хотели бы взаимодействовать и каким видеть), а не то, как решение должно себя вести — в этом, вероятно не очень ярком акценте, вся суть описанной ситуации.
👍7
3) Если вам все-таки нужно требования к решению обсудить с ЗЛ не на стороне вашей команды (например, чтобы зааппрувить подход, выбрать подход из альтернатив, зааппрувить весь набор требований, чтобы получить sign off на них), подумайте, как это сделать так, чтобы ЗЛ все это поняли и не чувствовали себя идиотами.

Для примеров выше:

(1) А вам вот точно нужно получить от заказчика подтверждение требований к данным? Уверены? А зачем? Ему точно не все равно, какая у вас там модель и словарь данных? Может, одобрение надо получить на критерии приемки сторей, содержимое юз кейсов, макеты интерфейса, а требования к данным — это то, что под капотом обеспечивает функциональные поведенческие требования?

(2) Может, использование API — это то, как реализовать потребности стейкхолдеров, а не что им нужно? Точно стейкхолдеру нужно, чтобы вы использовали метод GetGeoData? Или ему все-таки нужно, чтобы на сайте на карте точкой была отображена локация? Обсудите с ним именно этот момент (что именно в плане отображения нужно), а API и методы выберите сами вместе с командой.

3) Да, упомянутая информация важна, но прямые вопросы из разряда “Какие у тебя есть требования к решению” не прокатят. “Смотри, заказчик, сегодня мы обсуждаем требования к операционной среде. Давай я поясню, что это такое: … Соответственно, давай подумаем, какие браузеры будем поддерживать? Предлагаю исходить из того, какие браузеры у нашей целевой аудитории. URL — это ссылка, по которой юзеры будут открывать систему. Есть предпочтения? Хостинг давай обсудим — есть вариант внешнего, есть еще вот такие варианты. Девайсы давай обсудим — пытаемся сделать красивенько на смартфонах?” И т. п.

4) И тут же надо затронуть такой момент, как высылка 100-страничной спеки голубем заказчику с посылом “Читай и подписывай!”. Да, такое часто нужно делать. Но как это сделать так, чтобы его этой спекой не придавило? Обдумайте такие варианты:
а) Обучить заказчика или иных ответственных ЗЛ тому, как это делать: поясните необходимость этого, методику изучения документа, порядок изучения (на что обратить внимание в первую очередь, какие детали можно просканировать, а в какие нужно аккуратно вчитаться).
б) Помогите ЗЛ: устройте ряд встреч по обсуждению спеки, где вы презентуете ключевые вещи и живым языком изложите содержимое.
в) Замените детальные около-технические артефакты на более живую выжимку (да, вы при этом берете риск самостоятельной проработки более мелочных требований). Например, оставьте раздел спеки c требованиями к UI- элементам за рамками изучения заказчиком и попросите изучить только UI-макеты, причем, допустим, в виде динамического кликабельного прототипа.
г) Склонитесь к более простым подходам к хранению требований (например, User Stories) или к активному разбавлению спеки визуальным контентом, который обычно легче воспринимается.
8🔥2
А вот такое объявление от нас (вдруг тут есть желающие или желающие у уже прошедших обучение 😊)

Мы проводим сейчас набор на курс. Группу планируем стартовать с 11 марта. Тренер — Герман Шестеров. В группе есть места, плюс мы приятно обновили условия и формат (см. ниже):

📌 ~55 часов тренингов (мы увеличили количество и часов, и занятий), ориентированных на практику, разбор теоретического материала и разбор заданий.

📌 Вся теоретическая часть выдается в виде слайдкастов (записанный тренером голос + видео с камеры + презентация). Вы сможете изучать это в то время, той обстановке и динамике, которая Вам удобна

📌 100-200 часов внеаудиторной самостоятельной работы (часть которой — с проверкой тренером и разбором результатов)

📌 ~4 мес. основного курса + 2 мес. на дополнительный практический проект (в случае участия в нем). Формат: по будним дням, вечером, 1 или 2 дня в неделю, с 19 до 22, с периодическими свободными неделями для самостоятельной работы

Стоимость обучения – 799$ без участия в дополнительном проекте (цена снижена с 950$) + 299$ за дополнительный проект (он оплачивается отдельно, после прохождения основного курса). Оплата – в BYN, по курсу НБРБ на момент оплаты.

Узнать больше о курсе, а также оставить заявку на обучение можно на сайте. Вы также можете просто написать нам: @itmineby, info@itmine.by или позвонить по телефону +375 29 340-80-90.
🔥1
Поговорим об ошибке #13не-работа с требованиями к данным. На самом деле, ошибкой это назвать сложно, поэтому лучше трактовать обратное как рекомендацию, которая может принести вам много счастья. В этом контексте мы уже ранее обсуждали, что ограниченность применяемых техник — это своего рода ошибка, если она идёт от неосведомленности или нежелания стучать по клаве.

Что такое требования к данным? Это то, как аналитик видит информацию, которой система должна оперировать. Мы же информационные системы аналитим, агась? В общем, это подвид требований к решению, и многие теоретики относят это к функциональным требованиям (в дополнение к поведению системы).

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

Что имеется в виду под “сторонами”? Смотрите, вот вы начали с того, что кажется вам простейшим и логичным: описали поведение системы (хочу, чтобы система делала сюда, а туда не делала). Нужно ли что-то ещё? В совсем бедных системах — вероятно, нет. Но дальше вы можете подумать: а что, если подать описанное в виде юз кейсов? О, прикольно, повылезало гораздо больше исключительных сценариев, о которых сразу не подумали. А что, если ещё и макеты нарисовать? Ого, а тут вот UX-косяки стали явными. Ну то есть в этом контексте мы фактически одни и те же требования (поведение системы) показали с разных “сторон” — вначале тупо описали текстом то, что система должна делать, потом — объединили это в логические наборы шагов под грифом операций пользователей в системе, потом — показали, как это может быть или точно будет выглядеть на UI для пользователей. И тут несколько плюшек, которые вы получите от этого:

1) В процессе проработки всех этих артефактов вы что-то новое для себя вынесете: упущения в требованиях, внутренние противоречия и прочие недоработки.

2) Обсуждая такие штуки с ЗЛ, вы и им покажете будущую систему с иных углов, а потому — выявите гораздо больше полезной информации. Одно дело, когда вы кинете сторю заказчику с посылом “Читай пункт за пунктом, как система должна себя вести”, и совсем другое — когда вы объясните сценарий использования, плюс визуально покажете UI для него. Ровно аналогично и для команды разработки: им проще будет понять задачу и разработать ее без ошибок, если они и юз кейс прочитают, и на UI посмотрят.

Это еще не все 🙂 У информационных систем есть множество иных аспектов, о которых стоит как минимум подумать, а как максимум — проработать в плане требований: параметры качества (производительность, доступность, удобство и пр.), операционная среда (браузеры, хостинг, экраны, железо, температура и пр.), внешние системы, с которыми нужно сотрудничать и т. п. Кстати, а часто такие вещи фигурируют в ваших user stories или где-то рядом с ними? 🙂

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

Я не буду детально описывать, как работать с требованиями к данным. Если вкратце, то это вполне себе покрывается моделью данных (про нее можно вот тут почитать), словарем данных, плюс, если видится нужным, DFD-моделями и диаграммами состояний для ключевых данных. Отмечу только, что это мегаполезная “сторона”, которую не рекомендую никогда упускать, если в вашей системе есть работа с данными.

Если по шагам, то что стоит делать… и не жадничать в плане эффортов на это… и да, даже в agile, когда вы сторьки пишете:
6
1. Когда вы прорабатываете функциональные поведенческие требования, стройте в параллели модель данных (пусть будет называться Logical Data Model, хоть есть и разные взгляды на то, как это назвать). Например, это можно сделать с помощью UML Class Diagram, но есть и иные нотации. Если не знакомы с этой штукой, ссылка выше вам в помощь.

1.1. Делая это, вы как минимум глубже поймете и систематизируете для себя суть того решения, которое вы колбасите. Плюс это отличный повод проработать вопросы, которые модель “ставит” в процессе построения. А они могут быть такими:

- Как данные в системе появятся? Продумано ли это? Какие операции с ними необходимо иметь возможность осуществлять (мы уже упоминали CRUDL в одной из предыдущих заметок, а вот тут можно почитать про это детальнее). Мощняцкая штука!
- Как связаны данные А с данными Б? Связи могут сильно повлияют на поведенческие требования. Например, есть Категории товаров и есть Товары. Если для них актуальна связь вхождения одного во второе, причем композиционная, то при удалении категорий надо продумать каскадное удаление входящих в них товаров.
- В какой множественности связаны данные А с данными Б? Это великолепный источник бизнес-правил и требований, о которых вы практически точно не подумали бы ранее. А сколько в Категории может быть Товаров? А вот три и не больше — такое у нас внутреннее ограничение в компании.

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

2. В параллели с этим же, либо чуть позже (но не стоит, конечно, ждать конца проработки поведения системы) сделайте словарь данных: описание атрибутов каждого класса данных из модели. Сослаться на классную обучалку я тут не могу, ибо пока не написали, но если вкратце, то это означает, что Товар имеет Название и Цену. И вам нужно эти параметры обдумать и зафиксировать, а именно: как они называются, обязательны ли они для класса данных, какого они типа и прочие детали, которые описывают как формат, так и процесс получения этой информации.

2.1. По аналогии с первым пунктом: прорабатывайте вопросы, которые в процессе появляются. Например, из типовых:

- Цена для товара обязательна? Может ли на каком-либо из этапов Товар быть пока еще без Цены? А если обязательна, то как мне это предусмотреть на UI во всех формах создания/редактирования Товара?
- Цена — это какой тип данных? Это число, но какое? В какой валюте? Дробные цены могут быть? Сколько знаков в дробной части? Максимальная цена — она есть и какая? Минимальная (0, например, у товара может быть)? Все это порождается бизнес-правилами или “хотелками” ЗЛ? Обсуждая эти вопросы со стейкхолдерами вы можете многое узнать о домене и его отражении в решении. Плюс, естественно, это все даст вам понять, как UI построить в плане внесения или изменения Цены (проверки формата, предотвращение некорректного ввода, подсказки и прочие аспекты UI).
- Если ваши данные импортируются из других программных систем или должны экспортироваться туда, то описанное становится еще более актуальным: вам в любом случае нужно будет продумать, как и откуда получать данные, какие могут быть при этом ошибки и как на них системе реагировать, как синхронизировать форматы данных в вашем решении и источнике/получателе.

3. Понимая картину данных, вы можете взглянуть (еще одна “сторона”) на перемещение (потоки) данных в системе. Для этого есть такой инструмент, как Data Flow Diagrams. Не скажу, что лично мне они сильно помогали (как-то не особо много полезных инсайтов я получал в процессе построения — все они закрывались уже на этапе модели и словаря), но, возможно, вам нанесут пользу. Кстати, контекстная диаграмма (с которой, подозреваю, почти все знакомы) — это часть DFD. И вот контекстная диаграмма на этапе проработки скоупа решения — это прямо огонь-огненный.
👍1
4. Если так получается, что какая-то сущность данных у вас имеет “сложную жизнь”, т. е. активно меняет состояния в процессе жизни (например, Товар может быть в режиме черновика, потом — одобрен, забронирован, доставлен, заархивирован), то дабы эту жизнь понять и по аналогии с описанным выше найти пробелы, о которых вы ранее и не думали, на помощь спешит UML State Machine Diagram. Также клевая штука, когда есть необходимость посмотреть на жизненный цикл класса данных и уложить его в голове/обсудить со стейкхолдерами.

По итогу я бы сказал, что первые два пункта тут — примерно обязательны. Остальное — опционально и ситуативно, но попробуйте 🙂
10
Следующая из постоянно встречающихся проблем (#14) — упущение негативных сценариев в поведенческих требованиях. Как и большинство ошибок выше, это, в основном, беда джунов.

В чем суть:

Легко описать базовые успешные сценарии поведения системы. Когда юзер делает X или наступает событие Y — вот как по шагам должна реагировать система. Некоторые юзер стори на этом у людей и заканчиваются (да что уж там — у некоторых бизнес-анализ на этом начинается и заканчивается… а потом удивляемся, почему на нас девелоперы смотрят как на г… слегка свысока). Тут легко упустить, что вы должны в контексте поведения продумать также все негативные сценарии и либо их предотвращение, либо реакции системы.

Воспользуюсь примером из своей же статьи про юз кейсы, ибо юз кейсы — это как раз прекрасный способ не упустить такие сценарии (если юз кейсы не близки, представьте, что вы пишете юзер стори — думается, ваши критерии приемки не сильно отличаются от описанного ниже). Итак, черновой основной cценарий юз кейса Снять наличные для системы Банкомат:

1. Актер вставляет банковскую карту в банкомат.
2. Система предлагает актеру ввести ПИН-код карты.
3. Актер вводит ПИН-код и подтверждает ввод.
4. Система отображает список доступных операций с банковской картой.
5. Актер инициирует операцию снятия наличных средств.
6. Система предлагает актеру указать сумму для снятия средств.
7. Актер выбирает интересующий его вариант суммы из отображенных на экране.
8. Система отправляет запрос вторичному актеру на вычет запрошенной суммы из баланса актера на счету, привязанном к текущей карте.
9. Система получает подтверждение о вычете суммы со счета актера от вторичного актера.
10 Система выдает в слот для наличных средств запрошенную актером сумму.
11. Система печатает чек, отражающий детали выполненной операции по снятию наличных средств.


Собственно, простейшая ошибка, которую вы можете совершить касательно поведения системы, — это не подумать о том, что может пойти не так.
Как не сделать ошибку? А довольно просто: возьмите каждый шаг базового сценария (если вы, конечно, не в форме эссе это описывали, а систематизировали, как выше, плюс атомаризировали шаги). И спросите свое критическое мышление: а что в шаге может пойти не так, как заложено сценарием? Желательно пока что ограничиться действиями актёра в системе и событиями системы (включая ее внешние зависимости), а не рандомными факторами окружающей среды (например, актер палец сломал о клавишу банкомата или банкомат провалился под землю из-за внезапно начавшегося землетрясения). Да, там тоже могут лежать требования разного вида, но это уже более продвинутый вариант.

3: Человек может ввести код неверно? А может он не цифровую клавишу нажать, а что-нибудь типа Enter случайно?
8, 9: Бабосиков на счету может не хватить? Сервис проверки этого факта может не быть доступен (ну вот сломался и лежит)? Сетка, по которой надо запросы на проверку отправить, может отвалиться?
10. Налички может не хватить?
11. Бумаги может не оказаться? А краски?
Человек на любом шаге до завершения операции может захотеть отменить ее?


После того, как вы поднатужились и крепко подумали, далее нужно:
а) Решить, будете ли вы что-то с каждым ответвлением делать или же забьете на это. Второй вариант, конечно, так себе, но бывают вопросы бюджетов, сроков, приоритетов и пр.
б) Если таки нужно сие учесть, то решить, как: предотвратить внештатную ситуацию ИЛИ обработать ее по факту наступления. Тут есть общее rule of thumb: предотвращение ошибки лучше уведомления о ней по факту совершения. Но опять-таки иногда в игру вступают бюджеты, сроки, ограничения технологий и пр. факторы.
в) Описать желаемое поведение системы в требованиях (текст, диаграммы, макеты).

Погнали проектировать банкомат мечты:

3. Предотвратим некорректное нажатие? Почему нет, хотя бы частично? Задизейблим на этапе ввода ПИН-кода все кнопки, кроме цифровых и отмены. Так мы минимизируем вероятность нажатия лишнего, неуместного.
А неверный код можем предотвратить? Не, не можем (мы не можем заранее предсказать, что есть верно или нет), а потому это а) проверка системой кода после потверждения ввода, б) юзер-френдли уведомление об этом по факту совершения ошибки.

8, 9: Проблему со средствами на счету мы не предотвратим (мы не знаем заранее, какую сумму человек хочет снять). Единственное (в виде брейнсторма): мы можем проактивно проверить баланс сразу после выбора операции снятия (желательно в фоне, дабы не подвисал сам сценарий операции), и если у актера там 0, то можем вывести уведомление об этом в уголке. Именно уведомление, а не непробиваемую стену перед выбором суммы — актер ведь может в фоне через телефон закинуть деньги на счет, увидев такое. Это просто пример рассуждений, чтобы было понятно, какие вещи стоит осмыслить.

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

10: Можем предотвратить беду с нехваткой налички? Да, но опять-таки в контексте не самой налички, а сценария использования. И снова мы можем повесить уведомляшку об этом на UI прямо на старте использования банкомата (бабла нет, не подходи ко мне!), плюс не дать начать сценарий снятия денежек.

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

2-7. На каждом шаге до подтверждения снятия суммы у человека должна быть понятная опция отмены, а лучше даже отмены и корректировки сделанного: 1) отмена операции в принципе, 2) возврат назад на один шаг, 3) корректировка введенных цифр кода (думается, этот момент очевиден, но лучше явно проговорим).

Ну и представьте, что в продакшн пошла система без учета всего описанного 🙈 Аналитик, девелопер, тестировщик — все дружно отключили мозг, попивая смузи. И вот только не надо тут про аджайл (запилим черновик системы, а потом допилим на основе фидбека) — таким черновым банкоматом кто-то будет пользоваться, ругая при этом мам разработчиков (что нередко нынче встречается, в эпоху MVP). Проработка упомянутого — не rocket science, а элементарное ожидание от команды и аналитика в первую очередь.
🔥13
Продолжаем подсвечивать типовые ошибки, и на этот раз у нас неверное понимание сути бизнес-правил и, как следствие, неправильный (читай, бесполезный) процесс работы с ними (#15).

Многие (реально многие) думают, что бизнес-правила — это какие-то чуть-чуть особенные требования (которые, например, касаются бизнеса чуть больше, чем прочие требования — вообще вариантов трактовки “по наитию” я встречал вагон и тележку) : нужно, чтобы вот тут, в хедере, было лого компании. Ну типа как это о компании, о бизнесе.

Что такое на самом деле бизнес-правила (буду в заметке использовать БП, хоть вне ее это и легко спутать с бизнес-процессом)? Умных определений много, но давайте сформулируем по-простому: это какое-то принятое “правило” из окружающего решение контекста. Заметьте, это не требование (TO BE относительно решения), а информация из контекста (AS IS или TO BE для домена, государства, мира, галактики и пр.). Кто-то может поспорить, являются ли по науке “правила” за пределами бизнеса (локального домена) частью этого понятия, но я рекомендую их таковыми считать — и далее вы увидите, почему.

Ещё раз, БП — не требования (т. е. формулировки того, что нужно от решения ЗЛ, или каким решение должно быть). БП — это, грубо говоря, источники требований (как и стейкхолдеры, внешние системы, документация и пр.). Например, требование “На UI сайта должен присутствовать логотип компании” может в качестве источника иметь пожелание стейкхолдера (спонсор так хочет), а может — БП (согласно брендбуку компании все ПО компании должно иметь ее логотип на UI). Обратите внимание на формулировку: раз это не требование, то и формулировка не относится к нашему целевому решению — она относится к бизнесу, отрасли, государству и т. п.

Отсюда вытекает ключевое свойство БП: они существуют вне решения, безотносительно него. Будет решение / не будет — на актуальность БП это слабо влияет (есть более тонкие случаи, но оставим это за рамками текущего формата).

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

Итак, есть требования, рождённые воспаленным мозгом ЗЛ, а есть БП с разной степенью изменчивости. Требования, которые от ЗЛ, — это “хотелки”. Их сделал раз — и дальше спи спокойно, пока ЗЛ не прибежит с новой хотелкой. БП же может естественным образом меняться (например, ставка рефинансирования в стране X) или относительно никогда не меняться (формула расчёта скорости в физике).

Соответственно, а что это все нам дает в практическом плане:

Если вы а) зафиксируете БП в отдельном месте, собранные воедино, б) пометите для них важные для вас вещи (например, область деятельности — компания, отрасль, государство и пр.; изменчивость — ежегодная, не меняющееся и т. п ), в) в явном виде дополнительно сформулируете в нужном месте требования к решению, порождаемые этим БП, и сделаете трассировку одного на другое, то, во-первых, вы жжете, возьмите с полки пирожок, а во-вторых — вы резко улучшили процесс управления требованиями:

1) Поддержку требований в актуальном состоянии. Вы не просто запилили то, что сказали, а пометили себе или иным ЗЛ периодически чекать актуальность правила и менять решение, когда нужно (например, по мере выхода новых гос. постановлений и иных изменений контекста). Смотрите на разницу: а) Заказчик, какая тут ставка налога? Глаголи, а мы запилим. б) Это относится к БП, а потому мы собрали это в одном месте под грифом “Государственные постановления”, чтобы ты, заказчик, со своей стороны мог всегда отследить, какие постановления имеют отражение в нашем решении, и уведомить нас, если выйдут новые или отменят старые.
🔥1
2) Change management. Прибегает заказчик и говорит, что вот тут, мол, логотип надо поменять. И вы, такие, а) Сэр йес сэр, поменяем! б) Ээ, стоп, это брендбук компании? Точно ему можно противоречить? А он ещё актуален? Если нет, то вот тут и тут тоже, может, стоит поменять, плюс впредь иметь полную свободу действий в оформлении UI?

3) Реюзабилити информации. БП кросс-проектны в масштабах отделов/компаний, а иногда даже — в контексте рынков (например, формат currency в US — такой; GDPR в ЕС регулирует такие вот вещи). И если держать их отдельно и применять на разных проектах в масштабе компании-заказчик или еще шире, это может всем облегчить работу и сделать её тупо качественнее — вы больше заметите, учтете, предусмотрите сходу, без лишних поисков информации и пыток стейкхолдеров.

Несомненно можно найти и прочие бенефиты описанного выше (хотя бы даже то, что вы один раз уяснили налоговую ставку, поняли, что это распространяется на все требования в контексте решения и не будете, как попугаи, повторять “Заказчик, а на этой странице как посчитать? А на этой? На этой? -> Вы че, дебилы, я вам пять раз уже пояснял!”). Что можно порекомендовать в плане работы? В целом, это прослеживается выше, но дополнительно:

БП не извлекаются прямым вопросом “Какие у вас БП?”. В сферическом проекте в вакууме вам могут сказать “Вот наш документ с БП”, ибо ведение каталога БП организации рекомендуется умными теориями бизнес-менеджмента. Однако чуть чаще, чем никогда, вам придётся самим их подмечать. Пример:
Вот тут нужно, чтобы человек мог положить товар в корзину, и не больше четырех! -> Так, стоп, почему не больше четырех? -> Ну у нас так принято. ->Это какое-то правило в компании? Почему оно так? Ну ок, пометим себе. И тут вы поняли, что это не просто пожелание Васи-стейкхолдера, а принятая в компании политика. Вы проницательно подметили, что в компании есть БП (БП-01: Покупатель не имеет права приобрести более 4-х товаров в рамках одного заказа), поместили это в каталог БП (отдельный раздел в вашей спеке или страничка в Confluence), оттрассировали требования в нужном месте на это БП (например, критерий приемки в истории: "При попытке добавления пятого товара в корзину я вижу уведомление о том, что не могу иметь более четырех товаров в одном заказе (см. БП-01)") — собственно, все, база для пожинания плодов классной организации информации построена.
👍11🔥3
Кстати, а у кого какие книжки прямо вот серьёзно повлияли на проф. развитие? Огонь, если поделитесь 🙏

У меня лично либо таких книг было немного, либо это было уже так давно, что импакт позабыт. На тему бизнес-анализа это, очевидно, Вигерс — все, что было после него на тему работы с требованиями, казалось уже сильно вторичным. Плюс GTD Дэвида Аллена и Джедайские техники Максима Дорофеева — эти книги сильно помогли разгребаться в условиях потока дел, плюс как аналитику дали повод еще что-то упорядочить 😊
👍81
Сегодня довольно простая проблема на повестке дня, и наверняка вы ее прекрасно знаете и избегаете, но полноты ради не могу не очертить — нечеткие action items (посылы к действию) (#16).

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

Это весьма нередкое явление в практике. Проблема уже описана: отсутствие посыла к действию там, где он уместен, или нечеткий посыл к действию.

Что интересно, я помню это как один из первых пунктов в своем обучении на роль БА: всегда в коммуникациях формулируй явно, что тебе нужно.

Надо сказать, что обучение у меня иногда напоминало SM-сессии, ибо протекало ещё в том контексте, когда не старались дуть в попу всем и каждому, а потому такой диалог не был редкостью: Вася, я вот тут не понимаю, что имеется в виду -> И, пилять? Че от меня-то ты хочешь? Мне посочувствовать тебе, побыть отдушиной или помочь? Сформулируй явный запрос. И вообще это правильно, если мы говорим про рабочий контекст (в бытовом вы быстро сойдёте за нудилу, проверено). Вот типовые вопросы-ситуации, которые периодически встречаются:

- (В контексте получения информации) Я тут не понимаю, мне сложно. В голове уже какой-то хаос.
- (В беседе с разработчиком или менеджером) У меня проблема, я не знаю как решить.
- (В общении с заказчиком):
- Мы просуммировали пункты, которые обсудили на звонке: а)..., б)…, в)…
- Вот предлагаемые нами варианты решений: а)…, б)…, в)…
- (В беседе с коллегой-аналитиком) Вот мой документ. Написаль!
- (И снова в беседе с менеджером) Я вчера написал документ...

Основная проблема с отсутствием ожидаемого действия от собеседника — это трата времени. Иногда собеседник угадает, что вам нужно. Иногда — не угадает или не захочет гадать, потому вы перекладываете эффорты по прояснению коммуникации на него. Мы даже как-то с коллегами договорились, что человеку можно не отвечать, если он не сформулировал явно, что он хочет. В итоге в подкорку въелось, что даже если action item очевиден, он все равно нужен в явном виде. Аналитик на то и аналитик, что делает неявные вещи явными во имя чистоты коммуникаций.

- Я тут не понимаю, мне сложно. В голове уже какой-то хаос. Не мог бы ты помочь его прояснить, ответив на следующие вопросы? (то есть не “я в домике, я ничего не понимаю и отказываюсь даже думать о том, где именно непонятно”, а “я провел анализ, дистиллировал непонятные моменты и облек их в вопросы”)
- У меня проблема, я не знаю как решить. Вот эту часть раскопал, а тут у меня затык. Поделись идеями, если они у тебя есть, как мне двигаться дальше.
- Мы просуммировали пункты, которые обсудили на звонке. Изучите их, пожалуйста, и прокомментируйте те, с которым не согласны или где есть поправки.
- Вот мой документ. Изучи его, пожалуйста, на предмет полноты, правописания, плюс за любые иные комментарии буду очень признателен!
- Я вчера написал документ. И да, не всегда обязательна, но часто полезна и создаст о вас крутое впечатление такого рода приписка. Это FYI, чтобы держать в курсе касательно моей занятости. Доступен для новых задач.

Посыл тут не сложен. Суть всего-лишь в том, чтобы это делать. Кстати, в письменной коммуникации нас ещё учили выделять (например, болдом) посылы к действию, чтобы сразу было ясно по сканированию, че тебе надо от получателя. Please, provide you answers/feedback. Please, confirm/approve.

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

Вот идёт ретроспектива:

Коллеги, у нас в спринте был косяк — багов наклепали по самые уши. Что будем делать? - > А давайте внедрим код ревью! - > А давайте!

К чему может привести завершение обсуждения на подобной ноте? К тому, что на следующей ретроспективе встанет вопрос: Кто делал код ревью? Епт, ну что вы за люди, ну почему никто не делал?
2
И тут все просто. Не прозвучало, что такое внедрять, кому внедрять и когда внедрять. Я и сам до сих пор нередко попадаю в эту ловушку. Легко собраться и нагенерить в воздух варианты решений для сложной проблемы, а потом уйти с осознанием “Ну, я сделал все, что мог”. И да, иногда, когда кто-то на встрече говорит "Стоп, решаем, какие конкретно шаги кто делает и когда”, порой хочется его стукнуть (ибо думать, кому чем конкретно заниматься и тем более к какому сроку — больнее). Но, как вы понимаете, надо. Было у вас такое: Ребята, давайте соберёмся ->Давайте! Спустя месяц. Блин, так и не собрались :( Давайте поактивнее, поактивнее. Да, это бытовой пример, и тут нет манагера, который назначит ответственных и поставит срок либо получит оценку на него, но суть проблемы все равно видна. Если вы (или человек, выполняющий роль менеджера в контексте) не решили и не проговорили, кто, конкретно что и к какому сроку будет делать (или же когда будет очередная точка среза, в которой анализируем прогресс и либо оставляем как есть, либо что-то корректируем), это вполне себе может уйти в небытие.

В беседах с заказчиком и им подобными аналогичное актуально, только с поправкой на то, что это внешние для вас стейкхолдеры (ну то бишь, естественно, аккуратнее с постановкой им задач и прочим командно-приказным оттенком). Если вы в процессе беседы выработали экшн айтемы с любой стороны, суммаризируйте обязательно их в конце и/или в минутах встречи: Дальнейшие действия: Вася-БА доработает документ и пришлёт на изучение в течение недели; Пётр-заказчик не позднее среды уточнит и пришлёт параметры доступа к системе, чтобы аналитики могли туда зайти и поковыряться.

Повторюсь, что как и многие предыдущие советы, эти вещи легко внедрить в практику. Надо просто осознать для себя, что это важно делать, и тупо делать. Как минимум вы будете выглядеть профессиональнее для окружающих (ну или душнее — одно из двух, все равно неплохая вероятность), но скорее всего и решение проблем у вас станет существенно более оперативным и продуктивным.
🔥14
Привет всем! Небольшая подборка познавательных или просто интересных заметок для тех, кто соскучился по чтиву:

How to deal with a spicy client — не помешало бы раскрытие деталей и конкретные практические советы по каждому пункту, но если вы уже бывали в подобных ситуациях, то описанное отзовется.

Waterfall to Agile: A Necessary Mindset Shift For Business Analysts — будет полезным как для тех, кто не работал в контексте agile, так и для погруженных в ту самую его вариацию, в которой этот mindset пока еще не внедрен (agile — это концепция работы для команды, а не набор процессных практик, чего, к сожалению, не понимают многие agile-команды). Тут снова не хватает практических деталей и примеров (это вообще постоянная боль иноязычных “статей” 🙂), но тем не менее может быть полезным освежить представление.

Steal these guidelines for your next meeting — классные посылы для фасилитирования встреч с некоторыми интересными идеями.

What Apple’s Vision Pro Tells Us about User Stories — просто интересное чтиво об известном кейсе.
👍10
Салют!

Продолжаем тему ошибок и рекомендаций на их базе, и сегодня поговорим об ещё одном коммуникационном аспекте — подача контекста (#17). Это довольно интересная штука, которая при осознанном использовании может выставить вас огненным коммуникатором и резко повысить эффективность общения. И наоборот, очевидно 🙂 И пусть это вполне себе правило хорошего тона в коммуникациях любых мастей (т. е. при прочтении призываю замаппить это на личный опыт общения любого плана), особенно серьёзное значение это приобретает в почтовой переписке — из за её асинхронности и ограниченности канала общения.

Вначале сформулируем саму рекомендацию: не предполагайте, что собеседник знает/помнит о вопросе столько же, сколько и вы, а потому погружайте его проактивно в контекст. Соответственно, ошибка тут — систематически этого не делать.

Поехали с примерами:

1) Вы извлекаете требования из заказчика, и в письме вы сформулировали следующее:

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

Какой могла бы быть моя реакция, будучи я заказчиком: Блин, а нафига им это? Может, они шпионы? Чего они сюда лезут?

Соответственно, ответ вполне себе может быть таким: Добрый день, Василий. Хотелось бы уточнить, а как это связано с запросом на разработку?

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

Сравните с таким вариантом:

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

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

2) Вы пишете ПМу (или поставьте сюда любого иного человека и любую иную тематику): Коля, привет! Вот моя спека!

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

Я сам периодически бываю на стороне получателя подобных коммуникаций. Это может вызывать целую гамму эмоций: от раздражения до прокрастинации (камон, ну опять сейчас надо уточнять и раскапывать, что тут от меня хотят). Последствия вполне себе те же, что и в примере выше: задержки, неэффективность, раздражение от перекладывания работы на собеседника, а в случае неоднозначных в плане уместности вопросов или комментариев — эмоции всех цветов.

Что надо делать:

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

Привет! Когда будут материалы? VS
Привет! Ты не сказал на созвоне, когда выложишь материалы. У меня как раз есть время их изучить, и было бы круто получить ориентир на то, когда ты сможешь их выложить, чтобы я уже мог активно над ними корпеть.