Федор Борщев

Feature flags

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

Чаще всего набор фиче-флагов формирует фронтенд, и отсылает на бекенд в момент каждого запроса. Так можно легко ставить a\b тесты — просто выбираем две когорты, одной добавляем фичу, а другой — нет, и смотрим на поведение.

Пример реализации — GitHub, который передает фиче-флаги в HTTP-заголовках. Прямо сейчас в API гитхаба таким образом включается-выключается одновременно 30 фич.

Есть ещё одно очень полезное применение фиче-флагов — полное отключение функций приложения в зависимости от среды. К примеру, у нас ЦРМ есть фича — уведомлять пользователя по СМС о статусе заказа. Но я не хочу, чтобы СМС уходили с тестовых стендов или из CI, даже если кому-то хватит ума прописать боевые ключи на них. Поэтому я делаю фиче-флаг ENABLE_NOTIFICATIONS и включаю его только в переменных окружения на проде. По умолчанию флаг выключен, поэтому где мы ни развернули мой бекенд — он никогда не пошлет сообдщений живым людям, если его явно об этом не попросить.

См. также:

  • Подробное объяснение пользы фиче-флагов от самого Мартина Фаулера
  • Launch Darkly — централизованное управление включенностью фич
  • Unleash — то же самое, но бесплатно и self-hosted

Давайте не любить новые фичи

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

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

Туду-лист хорошего продуктолога

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

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

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

Менеджер, который любит фичи, превращается в трудолюбивого идиота

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

Давайте экономить деньги и не любить фичи.

Небольшие доработочки

«А давайте ограничим длину обзора до 140 символов? Ну, вдруг мы захотим их в СМС рассылать, да и вообще нечего перегружать людей длинными обзорами. Это же 5 минут всего?».

Нет.

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

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

Что будет, если пользователь отправил обзор длиннее 140 символов? Просто обрежем, или покажем сообщение об ошибке? Если сообщение об ошибке, то где? Что напишем в сообщении? Нужен ли копирайтер? Сможем ли мы доступно объяснить пользователям, что нельзя отправлять больше 140 символов? Есть ли у нас в гайдах стили для таких ошибок? Нет? А кто нарисует?

Ворд целиком состоит из небольших доработочек
Ворд целиком состоит из небольших доработочек

Еще вопросы

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

Есть ли свободные фронтендеры? Должно ли сообщение об ошибке повторять текст, который мы написали для сервера? Если нет, то кто напишет новое сообщение? Как нам сделать, чтобы в будущем любое изменение к «правилу 140» внедрялось одновременно и на сервере, и на клиенте?

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

Счетчик символов

Кто запилит счетчик? Кто проверит работоспособность на IE9 (вдруг мы — сайт банка)? Где мы его расположим? Как он будет выглядеть? Есть ли свободные дизайнеры?

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

А как мы объясним посетителям, что раньше было можно писать длинные обзоры, а теперь нельзя? Наверное, нужно научить саппорт отвечать на такие вопросы. А еще нужно обновить API и оба мобильных приложения. А что делать с уже написанными обзорами? Обрезать до 140 символов? Если обрезать, то по границе слов или предложений? А что, если граница предложения будет намного больше 140 символов?

Выводы

  • У качественных продуктов не бывает небольших доработок.
  • Объем работ прирастает очень быстро. То, что при планировании кажется 5 минутами, моментально превращается в неделю.
  • Пропихнуть фичу в следующий спринт — легко. Написать — сложно. Поддерживать всю жизнь — заебешься.

Эта заметка написана по мотивам поста из блога компании Интерком. Я сделал перевод, чтобы повысить вероятность того, что этот текст осилит менеджер занятый пропихиванием жизненно важной фичи в релиз.

Книга: Теория игр

Потратил 3 недели на «Теорию Игр». Книга учит принимать стратегические решения на основе одноименной теории — раздела прикладной математики, изучающего оптимальные стратегии (см. википедию).

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

Авинаш Диксит, Барри Нейлбафф — Теория игр

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

Фундаментальная игра в теории игр — Дилемма Заключенного:

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

Трумен Капоте приводит наглядный пример дилеммы заключенных в своей книге «Хладнокровное убийство». Дик Хикок и Перри Эдвард Смит арестованы за бессмысленное убийство семьи Клаттеров. Свидетелей не было, однако тюремный осведомитель назвал полиции их имена. Во время допроса полиция настроила их друг против друга. Капоте позволяет нам проникнуть в мысли Перри:

…Это, как и выдуманный «свидетель», было сказано просто для того, чтобы заставить его подергаться. Этого не может быть. Или они имеют в виду… Эх, если бы он только мог поговорить с Диком! Но их держали порознь; Дик сидел в камере на другом этаже.

…А Дик? Возможно, они и с ним провернули такой же трюк. Дик был умным убедительным актером, но стержня в нем нет, слишком легко поддается панике.

…«И прежде чем уйти из этого дома, вы убили всех, кто там был». Очень может быть, что каждому из бывших заключенных в Канзасе они поют одну и ту же песенку. Они, наверное, допросили сотни людей и многих из них обвинили в этом убийстве; мы с Диком просто еще двое таких же…

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

В итоге признался сначала Дик, а затем и Перри. Такова природа этой игры.

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

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

Чарльз Уиллан — Голая статистика

Статистика — единственная полезная наука, которую нельзя изучить через википедию:

Википедия: непонятно о статистике

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

Чарльз Уиллан — Голая статистка / Charles Wheelan — Naked Statistics

Читать «Статистику» стоит всем, чья работа связана с цифрами. Если ваша — не связана, то почитайте хотя бы начало, где автор рассказывает о популярных приемах вранья при помощи статистики.

Покупайте на озоне.

На самом деле точность может маскировать — случайно или вполне намеренно — недостоверность, вызывая у нас ложное ощущение определенности. Паранойя охватившая Джозефа Маккарти, сенатора от штата Висконсин и ярого антикоммуниста, достигла своего апогея в 1950 году, когда он не только утверждал, что в Госдепартамент США внедрились коммунисты, но и доказывал, что располагает поименным списком этих людей.

Во время своего выступления в г. Уиллинг Маккарти потрясал в воздухе листком бумаги: «Я держу в руке список из 205 фамилий членов Коммунистической партии. Они известны госсекретарю. Тем не менее эти люди продолжают работать в Госдепе, более того, они формируют внешнюю политику страны!».

Впоследствии выяснилось, что Маккарти держал в руке чистый листок бумаги однако указание точного числа (205) придало словам сенатора большую достоверность, несмотря на столь наглую ложь

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

На результаты обоих опросов наверняка повлияет и то, что люди, готовые в них участвовать, отличаются от людей, предпочитающих не отвлекаться на подобные вещи. Если вы попросите 100 человек в каком-либо общественном месте заполнить совсем небольшую анкету, то те 60, которые согласятся это сделать, наверняка будут существенно отличаться от остальных 40, которые вас проигнорируют

Принципиальная айдентика

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

Упаковка молока Братьев Чебурашкиных — разные начертания в зависимости от жирности

Вот пара тезисов:

  • Агентством руководит два человека — Влад и Вика Ермолаевы. Вика — управляющий директор и жена Влада.
  • Братья Чебурашкины продавали свои продукты до запуска новой айдентики — Влад показывал фото упаковки в стиле «Домика в деревне».
  • Запуск новой упаковки совпал с санкциями и кризисом, как раз тогда с рынка ушел один из ключевых конкурентов — финский Валио.
  • Братья Чебурашкины — идеальный клиент: доверяют и почти не дают правок. История, как решали убрать логотип с коробки: «Посмотрите на коробку. Ну что, вы ее действительно не купите, если убрать логотип?».
  • Команда с самого начала целилась на дизайнерские награды, еще при продаже.
  • «Еромлаев Бюро» приходят на презентации с тремя вариантами решения: по ТЗ, Улучшенный и Радикальный. Продают третий вариант, приходят к нему через два первых.

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

Как измерить что угодно

Купил эту книгу из-за второго названия — «Оценка стоимости нематериального в бизнесе». Про оценку нематериального нет ничего, а вот про измерения — очень даже.

Дуглас Хаббард — Как измерить что угодно. Оценка стоимости нематериального в бизнесе

Древний грек Эратосфен Киренский прикинул длину земной окружности не выходя из библиотеки, зная расстояние между двумя городами и разницу в длине солнечной тени. Дуглас Хаббард восторгается подходом Эратосфена и учит читателей «интуитивным измерениям» — такое умение пригодится любому менеджеру. В условиях неопределенности лучше принимать решения на основе промежутка возможных значений, чем вообще без учета показателей.

Автор доказывает, что измерение — итеративный процесс, где задача каждой итерации — уменьшить неопределенность. Чтобы разобраться в неизвестном показателе, не нужны масштабные измерения и сбор статистики — просто прикиньте промежуток (автор почему-то называет его 90% доверительным интервалом) и вы уже будете знать намного больше, чем раньше.

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

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

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

Чтобы выяснить это, вы можете официально опросить всех работников, потратив много времени и денег. При этом, скорее всего, ответ будет точнее, чем вам необходимо. Допустим теперь, что взамен вы выберете наугад пять человек. Вызовите этих людей и спросите, сколько времени они обычно тратят на дорогу. Предположим, будут получены следующие ответы: 30, 60, 45, 80 и 60 минут.

Возьмем самое высокое и самое низкое значения в выборке — 35 и 80. Вероятность того, что медиана значений продолжительности поездок на работу и домой для совокупности работников находится в этом интервале значений составляет 93%. Я называю это Правилом пяти. Правило пяти несложно, оно работает, и можно доказать его статистическую обоснованность для решения целого ряда задач. Когда выборка настолько мала, интервал значений может быть очень широким, но если он окажется значительно уже предыдущего интервала значит, вы провели измерение.

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

  1. Если это имеет хоть какое-то значение, значит, оно обнаруживается или наблюдается.
  2. Если это обнаруживается, значит, оно обнаруживается в каком-то количестве (или количественном интервале).
  3. Если это обнаруживается в количественном интервале, его можно измерить»

Как ставить результативные задачи

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

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

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

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

Ставьте задачу дизайнеру, как стоматологу — не лезьте в процесс. Описывайте желаемый результат:

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

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

Постановке результативных задач стоит поучиться у Бюро Горбунова:

  • Совет, как писать ТЗ на сайт.
  • Настоящая задача для «Додо пиццы».
  • Настоящая задача для «Регуляра».