понедельник, 30 мая 2011 г.

Резкие изменения

Практически во всяком продукте есть необходимость развиваться как вширь, так и ввысь. "Вширь" - это добавление каких-то новых возможностей без изменения основных принципов продукта. Добавили еще один художественный фильтр в Picasa - это "вширь". Не каждый такое добавление и заметит. "Ввысь" - это существенное изменение принципов работы с пользователем.   Введение ribbon в MS Office 2007 - это было "ввысь".

Мотивация для развития "вширь" проста и очевидна - ежедневно продуктовая команда получает пачки запросов типа "а можно еще вот чтобы так...". Мотивация для изменения "ввысь" немного сложнее и сама она скорее характерна для retail продуктов, чем для "заказных":

  • хотим выглядеть другими. Иногда нужно дистанцироваться от мрачного прошлого, иногда нужно подчеркнуть динамику. Обычно исходит от отдела маркетинга. 
  • хотим лучше соответствовать своей (или еще не своей) аудитории. Пытаемся стать удобнее и тем привлечь правильную аудиторию. Может быть просто пытаемся следовать моде - в конце концов понятие удобства субъективно. :)
  • просто пришлось в конце концов. Старые концепции становятся неадекватными новым задачам. Дальнейший рост без смены модели слишком труден.

По каким-бы причинам такое радикальное изменение не произошло - понравится оно не всем. Этих "не всех" может быть много. Можно их условно разделить на две группы

  • Иррациональная. Те, кто уже привык и не хочет разбираться с новым. Оно им не нравится, просто потому, что оно другое. Скорее всего, не существует конечного списка исправлений, которые могли бы исправить ситуацию, не уничтожая новую модель полностью. Отсутствие такого списка позволяет точно идентифицировать таких клиентов.
  • Рациональная. Кто-то использует продукт таким образом, что в новой модели ему объективно жизни нет или она очень трудна. Есть вполне конкретные сценарии и есть вполне конкретные проблемы, хотя выделить их за потоком возмущения может быть не просто. Почему-то интересы этой группы не учли при планировании изменений или учли и сознательно проигнорировали. Эти сценарии могут быть вполне вменяемыми, просто их не учли. Или совершенно странными и вы их даже вообразить не смогли.

А теперь интересный вопрос - что с ними делать и что они теперь будут делать с вами?

С иррациональной группой сделать ничего нельзя, кроме как предоставить старый интерфейс обратно (лучше, конечно, об этом с самого начала подумать). Но это не всегда возможно и не всегда разумно. Попытки сгладить отдельные углы ничего принципиально не изменят. Если не будет совместимого интерфейса, то многие уйдут. Чем легче уйти, тем больше уйдут. Иррациональность проявится также в том, что конкурентное решение не обязано быть лучше, или хотя бы более похожим на утерянное. Ниже отличная иллюстрация на примере уважаемого человека, недовольного Firefox 4:

Message #1:
... в продукт вносятся ЗАМЕТНЫЕ изменения. Не значимые, а именно заметные, бросающиеся в глаза. 
И все. Жопа.

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

А продукт не стал удобнее. Он стал кошмарно неудобным для "приверженных пользователей". И все ваши полезные новеллы утопают в кошмаре, которым вы их окружили. 

Хочется стукнуть по рукам и сказать:"ничего не трогай, гад!" 

...


Message #2:

... привыкнуть к этому новому уродству у меня не получилось. Поэтому я решил ... установить Гугл-Хром...Во-вторых, если уж и привыкать к новому интерфейсу, то лучше к совсем новому. Лису я не простил. 


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

Не следует, конечно, полагать, что иррациональное здесь синоним неправильного, просто всегда есть место субъективным симпатиям и привычкам. К примеру, мне когда-то очень нравилось ACDSee 2.9(?), а при апгрейде ее до ACDSee 3.2 мне она стала так неприятна, что у меня до сих пор где-то есть старый добрый дистрибутив. Обновленный продукт не нравился, категорически. Может быть он не был плохим, но мне не подходил совсем - тем более, что никаких собственных причин для апгрейда у меня не было.

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


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

А как же урок не делать радикальных изменений? Так без необходимости их бы и не делали. :)

среда, 25 мая 2011 г.

Проблемы и узкие места

Очень хочу порекомендовать книгу "Цель: процесс непрерывного совершенствования" Э. Голдратт. Написана в стиле художественного романа и этим похожа на "Роман об управлении проектами" ДеМарко, но ИМХО выше ДеМарко на голову - ситуация очень жизненная. Вечно опаздывающие проекты, "некогда точить пилу" и недостаточно времени на семью - ситуация в IT чуть менее, чем типовая. Как искать решение без привлечения нешних ресурсов должно быть интересно многим. Ко всем выводам читателя и главного героя подводят очень аккуратно - никаких натяжек. Язык перевода точно не хуже детективов и читается отлично.

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

Обсуждая эту книгу на кухне, прозвучала мысль, что где-то узкого места может и не быть. К примеру, у нас имела и имеет место ситуация, когда производительность системы неудовлетворительна, но узких мест в ней нет. Система тормозит однородно, если так можно сказать. Однако, если подумать, то узкое место выявить можно - хотя для этого необходимо перейти в другую плоскость анализа. Общая медленность системы есть результат ее архитектуры в какой-то степени и в пожалуй даже больше степени, результат повседневно применяемых практик программирования - они скорее определяются используемыми инструментами (библиотеками и фреймворками), чем собственно архитектурой. Очевидно, применяемые практики не удовлетворительны, однако изменить их, предложить новые, предложить политику перехода от старых практик к новым - на это банально нет времени. Пилить надо. Итак узкое место в производительности системы все-таки есть - это нехватка времени разработчиков. Возможно, что это узкое место не есть истинная причина - копая глубже, можно искать и найти причины нехватки времени. Для знакомства с методами анализа систем в поиске узких мест можно посмотреть другую книгу: Эли Шрагенхайм, Управленческие дилеммы. Теория ограничений в действии

Один из симпатичных мне выводов второй книги (перекликается с якокковскими мыслями о "крохоборах") - не слишком увлекайтесь оптимизацией расходов, в вырожденном случае они легко сводятся к нулю, обнуляя однако и прибыль