Как стать автором
Обновить
129.93
JUG Ru Group
Конференции для Senior-разработчиков

Кто-нибудь, остановите feature creep

Время на прочтение6 мин
Количество просмотров7.1K

На днях Apple выпустила очередную версию macOS. Но когда на презентации этой версии холёные топ-менеджеры наперебой говорили «amazing», я смотрел на анонсированные фичи и вместо «amazing» ощущал «ну блин, зачем». В macOS позволили добавлять виджеты прямо на рабочий стол, и из-за подобных вещей ощущаю, что компания постепенно захламляет свой продукт и предаёт свою собственную идеологию минимализма.

Новые фичи могут делать продукт не только лучше, но и хуже. Кто постарше — помните, как приложение NERO Burning ROM превратилось в монстра с тысячей щупалец? Ты хочешь просто записать CD-R, а ощущаешь, словно безумный комбайн поглощает всю твою жизнь. Или вот функции редактирования видео в Photoshop — это правда нужно? Может, Photoshop и без них достаточно сложная штука, а видео лучше оставить другим приложениям? А сториз в Телеграме точно делают всем только лучше, или кому-то они замусорят инструмент рабочей коммуникации? Почему мы не умеем вовремя останавливаться?

И в случае с macOS мне особенно обидно. Ведь Apple — это компания с подходом «мы не предустанавливаем на ноутбуки стороннюю дребедень за копеечку, как делают другие». С подходом «мы не обклеиваем ноутбуки рекламными наклеечками вроде Intel Inside». С подходом «ничего лишнего». А теперь она сама превращает собственную ОС в пёстрое лоскутное одеяло (не только виджетами).

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

Что происходит

Давно существуют взаимосвязанные понятия «feature creep», «software bloat» и «bells and whistles». Как всё это говорить по-русски — не совсем понятно, разве что для последнего есть вариант «свистелки и перделки». 

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

«Software bloat» — любое «раздувание» софта (не обязательно фичами), когда он начинает тормозить или требовать больше ресурсов (памяти, хранилища, трафика), не предлагая ощутимых улучшений.

«Bells and whistles» — дополнительные или декоративные элементы, в которых нет критической необходимости. Само по себе это понятие не ругательное (никто ведь не против хорошей отделки квартир и не призывает жить без неё). Но этим можно слишком увлечься в ущерб главным вещам.

По-моему, против feature creep высказался ещё Кен Томпсон в 1970-х, когда была сформулирована «философия UNIX». Там первым делом был озвучен тезис:

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

(«Make each program do one thing well. To do a new job, build afresh rather than complicate old programs by adding new "features"»)

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

Думаю, всё это «излишнее разбухание» применимо не только к софту. Есть история о том, как в 90-х Стив Джобс повторно возглавил Apple, попробовал понять «что мы сейчас продаём» и сам не смог разобраться в ассортименте. Компания предлагала такую прорву разных компьютеров, что чёрт ногу сломит. Куча названий, куча конфигураций — а в итоге люди не понимали, что им подходит-то.

В итоге Джобс «ударил кулаком по столу» и сказал, что дальше будут только четыре главных наименования, а всё прочее от лукавого:

  • домашний ноутбук MacBook

  • профессиональный ноутбук MacBook Pro

  • домашний десктоп iMac

  • профессиональный десктоп Mac Pro

Прошли десятилетия, а Apple по-прежнему любят в числе прочего за подобную простоту ассортимента. Но, по-моему, теперь компания сама это отчасти размывает. Помните, как когда-то на презентации показывали просто «iPhone 5», а не «iPhone 15, iPhone 15 Plus, iPhone 15 Pro, iPhone 15 Pro Max» (а ведь есть ещё iPhone SE)? Что дальше, дополнительный «iPhone 16 Pro Max Ultra Best Top Extra Самый Лучший Мамой Клянусь»?

Кто виноват

Почему так происходит? По-моему, к feature creep приводит целый ряд причин.

Первая причина это ты в том, что добавление функциональности ощущается «заведомо хорошим».

Созидание — хорошо, разрушение — плохо, как можно быть против созидания? Разработчикам ведь за то и платят, чтобы они пилили фичи, так? Если тебе какая-то возможность не нужна, так просто не используй её, в чём проблема? 

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

Вторая причина: негативный эффект кумулятивен, он не заметен сразу, а накапливается постепенно.

Если хочется добавить в ОС «ещё одно встроенное приложение», то польза от него понятна, а вот вред не особо. Ну, станет в доке 15 приложений вместо 14, это что-то изменит? Поэтому каждому человеку, который решает «добавить ли что-то», проще добавить.

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

Как можно заметить, когда-то в доке macOS было гораздо меньше элементов
Как можно заметить, когда-то в доке macOS было гораздо меньше элементов

Третья причина: премии сами себя не выплатят.

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

А что звучит лучше для начальства: «мы сделали фичу» или «мы подумали и решили не делать фичу»? Кто-нибудь получал премию за достижение «ты не допустил feature creep»? Вот и получается, что сделать фичу для сотрудников лучше, даже если пользователям от неё хуже. Так и произошло с Apple во время отсутствия Джобса: там поощрялось создание новых моделей компьютеров, а в итоге получился непонятный зоопарк.

Четвёртая причина: «проклятие знания».

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

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

Пятая причина: отсутствие пользовательского запроса.

Когда какой-то фичи нет, пользователи могут активно просить «добавьте». А вот обратных просьб «избавьтесь от feature creep» чаще всего нет. Люди могут не заметить полезный пункт среди груды других и это сделает их опыт хуже, но они не напишут «сделайте поменьше фич».

Получается, можно брать прилетающие запросы «добавьте вот это и станет лучше», честно все воплощать, а в итоге остаться в недоумении: «я же делал лучше, как просили, почему теперь люди разбегаются?»

Шестая причина: думаю, IT-гиганты оказываются заложниками ожиданий аудитории. 

Та же Apple когда-то выходила на сцену, говорила «смотрите, теперь экран ретиновый», и люди говорили «вау». И теперь от неё хотят «вау».

Поэтому она не может сказать про macOS «больше приложений уже не нужно, так что в этом году мы просто рефакторим». Рефакторинг — это не «вау». Такое не поймут, акции упадут: «они там в тупике, больше ничего придумать не могут». А надо, чтобы акции росли.

Получается, что в Apple вынуждены каждый год выкатывать фичи, хотят того или нет. Причём такие, чтобы эффектно выглядели в презентации. Свернуть горы для новой файловой системы APFS недостаточно, этим не впечатлить обычных пользователей, которым плевать на файловые системы. Давайте виджеты на рабочий стол добавим, вот тут слайды получатся яркие!

Что делать

Ладно, проблема есть. А что нам с ней делать-то?

Не думаю, что её можно «взять и победить». С лишними фичами нам придётся жить. Но можно насколько-то уменьшить проблему, и это лучше, чем ничего.

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

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

  • А чтобы все её осознавали, о ней нужно говорить. Собственно, я вот сейчас это и делаю. Но говорить нужно не только в публичных местах вроде Хабра, а и внутри продуктовых команд.

  • Раз может не быть внешних сигналов «что-то пошло не так», нужно самостоятельно время от времени задумываться, точно ли всё по-прежнему в норме. Знаете старое выражение «Регулярно спрашивайте себя, не хрень ли я делаю?» Вот здесь оно уместно.

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

  • Полезно проверять, как продукт выглядит для нового пользователя, незнакомого с контекстом. Смотреть, как он его использует, и этим ломать своё «проклятие знания».

  • Полезно измерять «какими фичами насколько активно пользуются».

  • Полезно задумываться «если бы эта фича была платной, стал бы кто-то платить за неё?»

  • Полезно задумываться «если наш продукт используют более чем для одной задачи, точно ли это должен быть один продукт, а не несколько разных?»

  • Ну и наконец: важно уметь говорить «нет». Непростой скилл — без шуток думаю, что многим проще что-то добавить в продукт, чем объяснить, почему этого делать не надо.

Напоследок — минутка рекламы. Мы в JUG Ru Group проводим конференции. Они для разработчиков и тестировщиков, а не продактов, так что доклады там не про feature creep, а про вещи вроде «Переход с SQL на Cassandra». Если такая техническая конкретика интересна, обратите внимание на ближайшие (октябрь-ноябрь):

— Joker (Java-разработка)
— Heisenbug (тестирование)
— Mobius (мобильная разработка)
— HolyJS (JavaScript)
— PiterPy (Python)
— VideoTech (видеотехнологии)

Теги:
Хабы:
Всего голосов 39: ↑36 и ↓3+33
Комментарии60

Публикации

Информация

Сайт
jugru.org
Дата регистрации
Дата основания
Численность
51–100 человек
Местоположение
Россия
Представитель
Алексей Федоров