Чинить баги по TDD

Один из кейсов, которые я рассмотрю на своём мастер-классе 26 октября (https://tdd.timepad.ru/event/1074439/?utm_source=telegram&utm_medium=messenger&utm_campaign=mypost-bugs) — это исправление багов по TDD.

Вот прилетает к нам задача, скажем «Жму на кнопку — не работает». Обычно мы чиним такие баги весьма тупо — поднимаем фронт и бек, придумываем гипотезу, и начинаем дебажить: вносим исправление и жмём на кнопку. Если заработало — отлично, если нет — просто перебираем дальше гипотезу за гипотезой. Иногда мы перебираем гипотезы настолько беспорядочно, что даже не убираем следы предыдущих попыток.

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

Правильный процесс выглядит так: открываем контроллер в API, куда ходит кнопка, а дальше ставим под сомнение каждый нижележащий метод, проговаривая про себя гипотезы, к примеру: «я сомневаюсь, что метод get_users() не возвращает неактивных пользователей». Если сразу не находим теста, который доказывает обратное — пишем свой. Если тест падает — отлично, у вас уже есть тест, и остаётся только написать код. Если написанный тест не падает — git checkout --, и ставим под сомнение следующий метод.

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

Наблюдения

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

Обучение наблюдателей отличается тем, что помимо вводной о проекте к обучению подключается картограф, который подробно объясняет методику наблюдения и принципы работы с картой. Так же, полевиков обучают работе в специальной программе — QGIS.
QGIS — это масштабная открытая геоинформационная система (ГИС), данные которой может использовать любой желающий.

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

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

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

По методологии, на наблюдения выходят обычно 4 полевика. Они работают в разные дни, делается это для того, чтобы каждый из них дал свою оценку и увидел то, что мог не увидеть другой (поэтому так важен опыт и внимательность). Иногда только на четвертом проходе обнаруживается какая-то важная пробема..
Получается, работу наблюдателя можно разделить на две части — работа в поле, где он собирает информацию, и обработка полученной информации за программой.
Благодаря этому, исследователям и аналитикам передается уже готовый проект — файл QGIS, где каждая проблема привязана к координатам, имеет индекс, описание и фотографию. Таким образом, информация уже готова для обработки.

Болит за тексты

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

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

Логика такая:

1 - экран (приветствие)
2 - экран (рассказываем про топ возможности нашего каталога трусов)
3 - экран (говорим, что можно купить трусняк в один клик без мозговой боли)
4 - кидаем пользователя на каталог, а лучше на топовые труселя с покупкой в один клик

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

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

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

Расскажите, как у вас это устроено? Опрос будет под постом.

А я вам статеек накидаю полезных про UX копирайтинг:

1. https://bit.ly/2OLJEKY - подробно разложена тема UX копирайтинга

2. https://bit.ly/2QQ2JhE - опыт Google по написанию текстов

3. https://bit.ly/34oMOed - про UX писателей

Первое занятие, 16.01.2018. Блок исследования.

Часть первая, знакомство.
Преподаватель блока — Алина Ермакова, эксперт в области исследования пользовательских интерфейсов.
Сейчас Алина руководит отделом исследований пользовательского взаимодействия в Сбербанк-Технологии. Как оказалось, мы с ней пересекались на обучении основам юзабилити, которое она проводила в рамках курса повышения квалификации около года назад (в это время я работал продуктовым дизайнером в сбертехе).

Самое главное, что должно было произойти в первый день учебы — распределение студентов по проектам, с которыми мы будем работать ближайшие 1,5 месяца. По прошествию этого времени будет защита, причем серьезная — с презентацией и жюри.
Но перед тем, как начать распределение проектов Алина рассказала лекцию о том, зачем дизайнеру может понадобиться исследование. Я сжато передам основную мысль.

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

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

Как человек решает задачи в интерфейсе

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

1. Сформулировать задачу. Я подписан на один канал в Телеграме. Он хороший, но надоел оповещениями. Хочу их отключить.

2. Выполнить действие. Полагаю, это делается где-то в самом канале. Захожу в ленту, тыкаю на канал. Вижу внизу большую кнопку Mute. Ага, это наверняка она. Нажимаю.

3. Оценить результат. Кнопка изменилась: Mute → Unmute. Рядом с названием канала появилась иконка с перечёркнутым динамиком. Полагаю, оповещения выключены.

На каждом шаге интерфейс может помогать, а может вставлять палки в колёса. Вот как это бывает:
https://antonz.ru/user-actions/

Модель двойного алмаза

Если дивергентное мышление — это поиск множества решений одной проблемы, то противоположным ему будет конвергентное мышление — отсекание всего лишнего, анализ вглубь.

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

Если рассматривать этот процесс в рамках разработки продукта, то получится примерно такая история:

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