Gmail: про эксклюзивность

Gmail: про эксклюзивность

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

В 2004 году Google запускает бета-тестирование своего почтового сервиса Gmail, но делает это весьма интересно. Чтобы получить доступ, тебя должны пригласить. У одного пользователя было только одно приглашение.

Вокруг сервиса образовалась такая шумиха, что дело доходило до безумия. Народ продавал инвайты на Ebay от $65 до $125 за штуку. Те, кто получал заветное приглашение, чувствовали себя избранными.

По итогу сервис привлек большую аудиторию и выпустил версию для всех.

Мясо

Прием эксклюзивности или чего-то "закрытого" применяется часто. Из известных у меня на памяти: Лепра и Аура Яндекса. Помню, как в ленте фейсбука все клянчили друг у друга приглашения.

Люди активно реагируют на то, что ему недоступно. Принцип дефицита позволяет создать дополнительную ценность продукта и привлечь внимание. А что делать уже с этим вниманием дело ваше.

Посмотрите на свои продукты. Можно ли к ним применить принцип эксклюзивности?

Вопрос: есть команда из трёх человек

Вопрос: есть команда из трёх человек: сильный разработчик, который делает быстро, но поверхностно; есть слабый разработчик, который делает медленно, но работающий код (и часто переделывает за сильным) и есть тимлид/пм (я), который не сильно разбирается в коде. Сильный буллит слабого, что тот не разбирается и вообще плохой программист. Что делать?

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

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

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

Сила комментария

Сила комментария

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

— На карточке клиента: за что предоставили скидку 20%
— На форме заказа: что в дверь звонить не надо
— В тикете техподдержки: ссылка на обсуждение в багтрекинге

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

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

Например, на «Дадате» мы используем систему защиты от сетевых атак. У нее есть интерфейс, где можно заблокировать конкретный IP-адрес. Указываешь IP, жмешь «добавить в черный список», злодей получает бан. Что может быть проще?

Проблема в том, что непонятно, кто заблокировал IP и почему. В большинстве случаев это и неважно, но иногда пригодилось бы для разбора. Решить проблему элементарно — добавить поле «комментарий».

Но постойте, можно же сделать нормальные поля «сотрудник» и «причина блокировки»? Да, можно, но непонятно:

— точно ли нужны именно эти поля?
— действительно ли они нужны?

Добавлять поля просто «чтобы были» — так себе идея. А выяснить реальные сценарии как раз и поможет поле «комментарий». Потом, если что, можно заменить его на поля с конкретным назначением.

Комментарий — элемент хаоса. Но с ним система устойчивее.

Сожми окошко

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

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

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

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

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

Брови заголовков

Исследования (https://www.nngroup.com/articles/first-2-words-a-signal-for-scanning/) показывают, что пользователи не читают заголовок полностью, а лишь первые несколько слов.

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

Как же тогда решать эту проблему? Используйте брови заголовков.

Брови заголовков — это описательное ключевое слово или фраза, расположенная над основным заголовком.

К примеру: у вас на главной странице банка есть слайдер, а в слайдере предложение с пониженной процентной ставкой по кредиту — добавьте к заголовку бровь «Кредиты». Время, которое пользователь потратит на принятие решения о том, интересна ему эта статья или нет, максимально сокращается.

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

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

Брови заголовков
— достаточно короткие для сканирования
— используют понятные ключевые слова
— дают пользователю контекст
— легки для восприятия

PHP Intl. Правильная транслитерация кириллицы

PHP Intl. Правильная транслитерация кириллицы

Современные фреймворки предоставляют готовый функционал в составе библиотек или хелперов для работы с библиотекой ICU (http://site.icu-project.org/home) через API Intl.

Такой функционал необходим для поддержки интернационализации разрабатываемого веб-сервиса. На основе указанной локали могут устанавливаться форматы отображения валют, времени и даты, а также подбираться настройки для инициализации транслитераторов (https://www.php.net/class.transliterator).

В разделе «Телеграм-каналы (https://chulakov.ru/notes)» сайта Студии во время автоматического импорта постов из наших каналов производится транслитерация названий заметок для формирования ЧПУ (https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%BC%D0%B0%D0%BD%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_URL).

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

Например, уникальная часть URL заметки (https://chulakov.ru/notes/development/php-8-pocti-novogodnij-podarok) про релиз PHP 8 после транслитерации имела вид php-8-pocti-novogodnij-podarok. Замена некоторых букв произошла некорректно.

Для того чтобы транслитерация кириллицы производилась по традиционным правилам, необходимо произвести конфигурацию объекта-транслитератора (https://www.php.net/manual/ru/transliterator.create.php), передав следующее значение параметра $id:

Russian-Latin/BGN; Any-Latin; Latin-ASCII; NFD; [:Nonspacing Mark:] Remove; NFC;

После такой конфигурации результат преобразования наименования заметки изменится на php-8-pochti-novogodniy-podarok.

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