После того, как вчера я опубликовал первую часть своих заметок, появился ряд комментариев, авторы которых либо читают абзац через абзац, либо упорно игнорируют прочитанное. Специально для тех, кто не делает каждый день HardReset, не ныряет с аквалангом и не пишет социальные плагины: я пишу сугубо своё личное мнение. Я много раз говорил в тексте первой заметки и повторю это ещё много раз в дальнейшем. Я рассказываю про то, почему именно я не могу пользоваться WP7, и излагаю своё личное мнение, основанное на своём личном опыте, почему всё именно так, как оно есть сейчас. Я даже не заикаюсь о том, насколько моё личное мнение кореллирует с мнением какой-либо Целевой Аудитории - это за рамками данных заметок и вообще тема отдельного разговора. Имеете другое мнение? Изложите в своём блоге...
Ну а теперь вернёмся к нашим баранам. Все три причины, которые я изложу дальше, будут по прежнему относится к реализации в WP7 работы с социальными сетями, но, по моему мнению, это всё же различные проблемы, обусловленные различными причинами.
Претензия №4. Постоянные ожидания загрузки информации
Несмотря на очень плавную анимацию интерфейса, и расхваленное во многих хвалебно-рекламных публикациях "отсутствие тормозов", после запуска какого-либо приложения, тебе, как пользователю, всё время приходится ждать... Например, после запуска программы People и перехода на экран "Что нового?" нужно подождать несколько секунд, чтобы загрузилась актуальная информация. Тоже самое происходит практически во всех остальных дополнительных приложениях - ты всё время ждёшь загрузки информации. Сказать, что это раздражает, значит выразить эмоции очень мягко и интеллигентно.
Такое поведение приложений обусловлено архитектурой самой системы: чтобы избежать тех самых "тормозов" в работе интерфейса, очень малому перечню системных приложений разрешено обновлять свои данные в фоновом режиме. И, судя по всему, программа People в этот список не вошла... Про сторонние приложения и говорить не стоит - никто из них не имеет права, находясь в фоне, обновлять информацию через интернет. Только слать нотификации, но про эту реализацию мы поговорим чуть позже.
Насколько я могу догадаться, при начальном проектировании системы, авторы приняли фатальное по своей значимости допущение: что сценарий использования интернета на будущем смартфоне с WP7 будет таким же, как на десктопе. На десктопе интернет есть всегда, в любой момент работы компьютера. Это многими воспринимается как данность, которая существует, как воздух. Авторы-идеологи WP7 почему-то забыли, что мобильный телефон, в отличии от десктопа, имеет подключение к интернету только эпизодически. И дело не только в плохом развитии мобильных сетей конкретно на территории exUSSR, дело в принципе организации сотовой передачи данных. Она СОТОВАЯ. Т.е. где-то она есть, но и есть много мест, где её просто нет - нижние этажи зданий, например, метрополитен, отдалённые уголки города, просто крупные строения с большим количеством посетителей и т.п. А сюда же ещё нужно добавить задержки на переключение между сотами и особенно - на переключение между сотами разных стандартов 2,5G-3G. Вообще, насколько мне известно, пока еще ни в одной стране мира нет зоны 100% мобильного интернета, ибо это банально нерентабельно. Поэтому проектировать сотовый телефон в расчёте на то, что он ВСЕГДА подключён к интернету - это верх дилетанства и банальной глупости.
В результате такого фатального допущения мы имеем то, что мы имеем - кривую реализацию. Хорошо, если телефон подключён к очень быстрому и не загруженному Wi-Fi - ждать загрузки информации в приложениях, может быть, ты будешь всего секунду, но если ты используешь подключение к сотовой сети, то время ожидания оказывается не прогнозируемым, иногда выходящим за все рамки возможного. И тебя мало утешает мысль, что вот эти твои долгие минуты ожидания положены на алтарь "быстрого" интерфейса.
Можно ли "вылечить" текущую ситуацию, и если можно, то как? Вылечить можно. Путь только один, самый правильный, но и самый сложный - разрешить приложениям обновлять данные в фоновом режиме. В этом случае действительно придётся столкнуться с проблемой распределения приоритетов для различных процессов внутри ОС. Это не простая работа, один раз ребята из Microsoft уже пытались её решить (в Windows Mobile), но так и не смогли довести это решение до ума. Однако, та неудача ещё никак не означает, что эта проблема не решаема в принципе! Время идёт, накапливаются наработки и различные решения - главное, суметь выбрать правильные!
Второй шаг на этом пути, который, кстати говоря, можно было бы сделать уже сейчас - научить приложения корректно обрабатывать ситуации отсутствия интернета. Сейчас система, как я уже сказал выше, вообще не подразумевает, что интернета может не быть, или что у него может быть медленная скорость. Эта задача хотя и связана с первой, но является отдельной неотъемлимой частью любого процесса создания приложений - т.н. "обработка ошибок". Но если обычно она решается на уровне программного кода из-за ошибок в обработке данных, то в данном случае речь идёт о корректной обработке пользовательских ситуаций: "Пользователь запустил приложение; приложение пытается обновить данные; скорость подключения к интернету меньше хх Кб/с. Что делаем?" И вариантов ответов на этот вопрос может быть очень много, на самом деле... Надо думать, надо выдавать решения, креативить...
Претензия №5. Выдёргивание листа
Некоторое время назад в интернете гуляла байка, будто бы в США некоего мальчика осудили за то, что он положил своего домашнего хамелеона на стопку цветной бумаги и стал резко выдёргивать лист за листом из под рептилии. Бедная животинка не выдержала такого жуткого эксперимента (19 раз!) и сдохла. Соседи - Добрые Самаритяне - донесли на малолетнего сорванца, и местный судья приговорил хулигана к 2 годам лишения свободы. Эту хохму все посмаковали и забыли о ней...
А я лично вспоминаю её каждый раз, когда пытаюсь на WP7 использовать приложение "People": "Над хамелеонами, значит, мы не разрешаем издеваться, а над простыми пользователями - пожалуйста?!" Как я уже говорил выше, после запуска приложения ему нужно некоторое время, чтобы обновить информацию из интернета. Когда это происходит очень быстро - проблемы нет. Проблема появляется, когда подключение не быстрое (а именно так бывает чаще всего в наших российских условиях). Ты запускаешь приложение, видишь перед собой некую ленту новостей, начинаешь читать... читаешь, читаешь... и вдруг "БАЦ!!!" - из под тебя "выдёргивают лист"! Программа получила новый объём данных, проиндексировала его и позиционировала ленту типа "на 10 новость с начала" - в результате перед тобой новый экран, и ты должен судорожно скроллить вверх и вниз, чтобы найти секунду назад читаемое тобой сообщение и продолжить недавнее чтение. Находишь, продолжаешь читать, успокаиваешься, расслабляешься и вдруг снова, без какого-либо предварительного объявления войны, "БАЦ!!!" и перед тобой - новый экран!
Вообще-то, если называть вещи своими именами, без всякой хохмы, это и есть то самое типичное издевательство над пользователем, за которое отвечающих за реализацию приложения нужно не просто осуждать на общественно-исправительные работы, а ремни из спины нарезать, ибо пользователь ещё и денег заплатил из своего кармана, а получил сплошную нервотрёпку.
Я уверен, что именно эту проблему решить можно было бы очень просто - достаточно продумать сценарии взаимодействия, скурпулёзно расписать их и после этого поставить корректную задачу программистам. Но мой личный опыт показывает, что продукты Microsoft создаются так, как это удобнее и проще программистам, а не пользователям. Ибо сама компания несёт в себе дух программистов, создана программистами и культивируется программистами. "Дизайн взаимодействия" для таких компаний - слова ругательного свойства. Поэтому я чуть более чем полностью скептичен в перспективах решения подобной проблемы, ибо её даже невозможно внятно объяснить программистам, т.к. в ответ ты наверняка услышишь: "Мы всё сделали в рамках ТЗ! Какие к нам вопросы?"
Претензия №6. Вход для уборщицы
У студии "Пилот" есть замечательный короткометражный мультик: "
Золотые ворота". За две с половиной минуты авторы мультфильма умудрились рассказать "шершавым языком плаката" всю подноготную о навороченных системах безопасности. Предлагаю вам его посмотреть, чтобы понять, при чём тут "уборщица".
Этот мультфильм представляется мне хорошей иллюстрацией к своей следующей своей претензии, почему я стараюсь избегать использования WP7. В этом случае речь идёт о такой вроде бы как удобной и должно быть кому-нибудь даже полезной фиче, как параллельный вывод информации из чата в нескольких залогиненных местах одновременно. Понимаете о чем я? Это про то, что если я выполняю вход в on-line со смартфона с WP7, но перед этим я ещё залогинился на ноутбуке, то вся история моего общения с кем-либо будет выводиться одновременно в этих двух устройствах. Вроде бы пока ничего такого криминального, да? Фокус тут в том, что если десктопный Windows Live Messenger услужливо сообщит о факте, что выполнен вход с ещё одного устройства, и предоставит мне возможность при желании отключить это второе устройство, то телефон на WP7 свято верит, что он - единственный во вселенной! Никакого уведомления о том, что всё моё текущее общение дублируется где-то на экране другого компьютера, телефон не выводит! И НИГДЕ в интерфейсе телефона невозможно проверить эту информацию. Причем, такая ситуация происходит не только с Windows Live Messenger (Аллах бы с ним, его почти никто не пользует), но и с чатом Facebook.
Это не просто уязвимость в защите персональных денных, это буквально ворота на задний двор. Главное, что почти делать никому ничего не надо - всё работает на автомате! Даже я, человек имеющий привычку полностью гасить компьютер после окончания работы, подобным фортелем несколько озадачен. Есть много способов получить логин от компьютера жертвы. Windows Live Messenger у большинства использующих его юзеров логиниться автоматом. Точно так же автоматически выполняется вход на страничку Facebook у большинства обычных пользователей. Всё. Делать больше ничего не надо - всё ваше общение в программе "Сообщения" (ну, кроме SMS, разумеется) будет выводиться на второй экран без всякого вашего на то ведома.
И это делает система, для которой безопасность данных пользователя ставится во главу угла! ШИКААРНО!.. Можно посмотреть мульт еще раз...
Всё на сегодня...
Приближается Новый Год. Всех читающих мои заметки я искренне поздравляю с этим праздником! На каникулах я хочу завершить своё это небольшое повествование, рассказав, чем же изначально плоха система Notifications, которую WP7 позаимствовала у iPhone, о других "болезнях детства", а самое главное - об основе основ - о проектировании взаимодействия, точнее, об его полном отсутствии в WP7, и сделать выводы, к чему это приводит.
Еще раз всех с праздником! И пусть в Новом Году нам всем посчастливиться наконец-то увидеть действительно умную мобильную ОС!