Необратимые действия

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

  • отправка e-mail, СМС и прочего;
  • удаление чата;
  • удаление профиля и т.п.

Обычно перед таким действием система спрашивает: Вы уверены?
Но люди не читают, не думают наперёд, торопятся и всё равно делают необратимое действие, а потом ищут способ восстановить.
На одном b2b проекте представитель заказчика просил добавить в систему двойной вопрос на удаление:
- Вы уверены?
<Да>
- Вы точно уверены?

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

Но есть действия, которые пользователь выполняет часто и "задалбывать" его вопросами про уверенность — лишний шаг.
Приличные продукты для таких необратимых действий делают возможность оперативной отмены по горячим следам.
Например, при отправке письма в gmail можно отменить отправку по-быстрому (временем отмены можно управлять).
Или при удалении чата в Телеге можно отменить удаление в течение 5 секунд.

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

А выводы по необратимым действиям такие:
1. Если действие можно сделать обратимым — сделайте его таким. Особенно полезно в b2b-проектах, когда случайное удаление записи может приводить к тому, что люди готовы бэкап развернуть лишь бы восстановить.

2. Если действие необратимо и вы решили спрашивать подтверждение — спрашивайте максимально чётко с донесением последствий действий. У меня есть отдельная мини-заметка (https://telegra.ph/UX-neobratimyh-processov--pro-udalenie-04-17) про это.

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

Корректура в конце

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

Сейчас в меня полетят помидоры от магов корректорской гильдии, но я должен об этом сказать. Орфография переоценена. Да, ошибки снижают доверие и обидно оскорбляют русский язык и Розенталя лично. Но разве «тся или ться» — это главное в жизни?

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

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

Потому что запятую скорее всего простят, а вот бесполезность и алогичность — нет.

Сожми окошко

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

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

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

Хорошо бы ещё подобрать шрифт, оформление, но это уже совсем для задротов.

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

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

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

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

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

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

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

Почему пользователи уходят

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

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

А вот ситуацию, которая попадает во вторую категорию, анализируем, находим истинную причину неудовлетворенности и извлекаем из этого максимальную пользу. За пользователей из этой категории стоит побороться, узнав, что им не нравится. Если цена, то предложите скидку. Если не хватает функционала, то узнайте, как улучшить продукт. Но не забываем про положительный ROI. Нелогично тратить $50к на разработку нового функционала, чтобы вернуть одного пользователя LTV c которого будет $1к.

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

Принцип которого мы придерживаемся это Customer Obsession. Мы проводим много времени разговаривая с клиентами, собираем отзывы и только после этого приступаем к работе. Это позволяет проактивно предотвратить отток пользователей и не тратить времени на поиски причины.

Время — невосполнимый ресурс

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

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

Что вы станете делать, если баннеры до сих пор не готовы, а уже 7 октября? Вы будете искать способы закончить раньше. Этих способов не так уж и много — либо пожертвовать проработкой макетов (запустить меньше посылов, сделать макеты проще), либо пожертвовать себестоимостью, наняв, к примеру, пять дополнительных дизайнеров.

Единственное, что вы не сможете сделать, когда опаздываете — это добавить себе ещё неделю, чтобы закончить проект: машину времени пока не изобрели. Пожертвовать деньгами или качеством — можно. Уменьшить проработку — можно. Добавить себе срок — нет.

Время стоит беречь не только в проектах, но и в личной жизни. Всё так же — если уже 20:00, а вы ещё не ходили в спортзал, то вы никак не можете сделать так, чтобы сейчас стало 18:00 — вы можете только не пойти в спортзал. Если вы приехали на работу в метро, а по дороге слушали музыку или изучали новинки в Arcades — вы просто приехали на работу на метро. А эти же 40 минут можно было потратить на чтение книги или спокойно поспать.

Берегите время.