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

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

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

Тот неловкий момент, когда решил раз в месяц ознакомиться с какой-нибудь инструкцией в формате pdf, а Adobe Reader встретил тебя диалоговым окном обновления Тот неловкий момент, когда решил раз в месяц ознакомиться с какой-нибудь инструкцией в формате pdf, а Adobe Reader встретил тебя диалоговым окном обновления.

И пусть ребята из Mozilla одумались и полностью пересмотрели свой алгоритм обновлений, сколько программистов до сих пор считают нормальным подобное поведение? Почему нормально, что обновление аудиоплеера останавливает воспроизведение моей музыки и я вынужден пять минут наблюдать распаковку ресурсов? Я точно знаю, архив можно распаковать в фоне, с проигрыванием музыки это никак не связано! Давайте попробуем понять, как должна работать идеальная система обновления.

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

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

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

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

 

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