В этом посте я расскажу об одной интересной точке зрения на программное обеспечение, которую будет полезно узнать любому программисту. Суть в восприятии разрабатываемой Вами программы как дворецкого.
Когда я говорю «дворецкий», я подразумеваю слугу, официанта или любой другой обслуживающий персонал. Т.е. персону, работа которой состоит в помощи, обслуживании, выполнении за Вас грязной работы и умении пропасть с глаз долой за мгновение до того, как Вам бы этого захотелось.
Работа дворецкого — служить своему хозяину. Если хозяин хочет пить, дворецкий должен уже стоять рядом, держа поднос с несколькими напитками на выбор. Дворецкий обязан хорошо выглядеть. Прекрасно, если на нём одет костюм, однако ощущать себя в нём дворецкий должен не так, как в похожем костюме ощущает себя бизнесмен или политик. Дворецкий не имеет права на собственное «эго»: сделал работу — и растворился в воздухе.
Это именно то, как программный продукт (или устройство) должно взаимодействовать со своими пользователями.
Чтобы объяснить эту мысль детальнее, я приведу пример программы с поведением дворецкого. Таким примером станет Google Chrome. Давайте посмотрим на поведение Хрома при работе с вкладками, а именно на то, каким образом происходит позиционирование кнопки закрытия вкладки и изменение ширины вкладки. Это поведение хорошо описал Basil Safwat:
"… Хром теперь будет изменять размер табов так, чтобы заполнить оставшееся место, но только после того, как курсор мышки покинет функциональную область в верхней части окна; то есть это происходит только тогда, когда пользователь закончил взаимодействие с вкладками и перенес фокус своего внимания куда-то в другое место. ..."
Если Вы хотите понять поведение Хрома детальнее — установите его и попробуйте сами. Но если вкратце, то Хром после закрытия вкладки сохраняет ширину всех остальных вкладок неизменной и пользователь может не двигая курсор мыши продолжить закрывать следующие вкладки. Если пользователь передвинет мышь — Хром поймет, что закрываться вкладки больше пока не будут и увеличит ширину вкладок для обеспечения лучшей читабельности их названий.
Это хороший пример того, когда программа ведет себя как хороший дворецкий — предугадывает поведение хозяина и делает его жизнь удобной и комфортной.
А теперь пример плохого дворецкого: 99% всего программного обеспечения.
Грустно, но в сегодняшнем состоянии мира программного обеспечения не приходится далеко ходить за примером программы, которая не ведет себя нужным образом. Почти каждая программа, которой я пользуюсь ежедневно, от моей операционной системы до текстового редактора и дистанционки кондиционера — все они, как на зло, дают мне понять, что это я являюсь слугой, а они — мои хозяева.
Конечно же, мир не черно-белый и программа может иметь как положительные, так и отрицательные черты, но общая ситуация именно такова — программам плевать на пользователей.
Пару примеров наплевательского отношения:
Моих душевных сил не хватает для продолжения списка издевательств программ и устройств над людьми — я думаю, каждый из нас мог бы что-то добавить в этот список. Вместо этого давайте поговорим о том, почему так происходит. Вот моя теория.
Разработчик программного обеспечения — это хорошо оплачиваемая, престижная и интеллектуальная работа. И как результат — большинство разработчиков ПО имеют нехилое такое «эго». И это, в принципе, неплохо: «эго» — прекрасный мотиватор для покорения новых вершин, создания гениальных вещей и выполнения выдающейся работы. Но вот ведь в чём дело — у того, кто хочет быть хорошим дворецким не может быть никакого «эго»! Услужливость, покорность и осознание своей второстепенной роли никак не совместимы с гордостью.
Вот Вам и противоречие: у программистов есть гордость, а у дворецких её быть не должно.
Когда разработчик ПО создаёт программу, он всегда должен помнить, что несмотря на всю его гениальность как программиста, несмотря на прекрасный дизайн, эффективный язык программирования, супер-архитектуру и прочие важные вещи, его работа — это всего лишь работа дворецкого, который должен любой ценой удовлетворить хозяина и уйти с дороги.
Я думаю, что если мы поймём эту «эго»-проблему, мы сможем заметить её в своих проектах, когда она возникнет и всё-таки создать ПО, которое будет хорошим и послушным слугой пользователя, а не его плохим хозяином.
Прим. переводчика: автор неявно так в самом конце переходит от аналогии «программа-дворецкий» к аналогии «программист-дворецкий» (видимо, не хочет обижать читателей-программистов), но именно эта мысль статьи, мне кажется, является ключевой. Программист — это работник сферы услуг и я не вижу, почему эта мысль может являться обидной. Я сам программист и прекрасно осознаю, что моя работа — обслуживать потребности других людей в сфере обработки информации. Это прекрасная, творческая, ответственная и важная, но всё-равно всего-лишь второстепенная задача. А основные задачи с помощью моего ПО будут решать его пользователи. Именно их сэкономленное время и нервы, именно результаты их труда на моём ПО переполняют меня гордостью. И именно за ними последнее слово в выборе интерфейсов, требованиям к функционалу и т.д. Кто платит — тот и заказывает музыку. Эта статья хорошо дополняет прошлую мою статью в том смысле, что не нужно считать себя умнее всех.
Когда я говорю «дворецкий», я подразумеваю слугу, официанта или любой другой обслуживающий персонал. Т.е. персону, работа которой состоит в помощи, обслуживании, выполнении за Вас грязной работы и умении пропасть с глаз долой за мгновение до того, как Вам бы этого захотелось.
Работа дворецкого — служить своему хозяину. Если хозяин хочет пить, дворецкий должен уже стоять рядом, держа поднос с несколькими напитками на выбор. Дворецкий обязан хорошо выглядеть. Прекрасно, если на нём одет костюм, однако ощущать себя в нём дворецкий должен не так, как в похожем костюме ощущает себя бизнесмен или политик. Дворецкий не имеет права на собственное «эго»: сделал работу — и растворился в воздухе.
Это именно то, как программный продукт (или устройство) должно взаимодействовать со своими пользователями.
Чтобы объяснить эту мысль детальнее, я приведу пример программы с поведением дворецкого. Таким примером станет Google Chrome. Давайте посмотрим на поведение Хрома при работе с вкладками, а именно на то, каким образом происходит позиционирование кнопки закрытия вкладки и изменение ширины вкладки. Это поведение хорошо описал Basil Safwat:
"… Хром теперь будет изменять размер табов так, чтобы заполнить оставшееся место, но только после того, как курсор мышки покинет функциональную область в верхней части окна; то есть это происходит только тогда, когда пользователь закончил взаимодействие с вкладками и перенес фокус своего внимания куда-то в другое место. ..."
Если Вы хотите понять поведение Хрома детальнее — установите его и попробуйте сами. Но если вкратце, то Хром после закрытия вкладки сохраняет ширину всех остальных вкладок неизменной и пользователь может не двигая курсор мыши продолжить закрывать следующие вкладки. Если пользователь передвинет мышь — Хром поймет, что закрываться вкладки больше пока не будут и увеличит ширину вкладок для обеспечения лучшей читабельности их названий.
Это хороший пример того, когда программа ведет себя как хороший дворецкий — предугадывает поведение хозяина и делает его жизнь удобной и комфортной.
А теперь пример плохого дворецкого: 99% всего программного обеспечения.
Грустно, но в сегодняшнем состоянии мира программного обеспечения не приходится далеко ходить за примером программы, которая не ведет себя нужным образом. Почти каждая программа, которой я пользуюсь ежедневно, от моей операционной системы до текстового редактора и дистанционки кондиционера — все они, как на зло, дают мне понять, что это я являюсь слугой, а они — мои хозяева.
Конечно же, мир не черно-белый и программа может иметь как положительные, так и отрицательные черты, но общая ситуация именно такова — программам плевать на пользователей.
Пару примеров наплевательского отношения:
- Программы, которые показывают сплэш-скрин на половину экрана и остаются в таком состоянии по 10+ секунд, не давая возможность работать с другими программами
- Иконка Java в трее, которая постоянно показывает какие-то сообщения когда я запускаю любое Java-приложение. Я просто хочу работать с приложением, мне не интересны эти сообщения Java.
- Мой кондиционер, которые опускает воздухонаправляющие лопасти вниз каждый раз, когда я переключаю его из режима “Fan” в “Cold” или обратно, при том что я явно в обоих режимах установил их в верхнее положение. Почему они опускаются?
Моих душевных сил не хватает для продолжения списка издевательств программ и устройств над людьми — я думаю, каждый из нас мог бы что-то добавить в этот список. Вместо этого давайте поговорим о том, почему так происходит. Вот моя теория.
Разработчик программного обеспечения — это хорошо оплачиваемая, престижная и интеллектуальная работа. И как результат — большинство разработчиков ПО имеют нехилое такое «эго». И это, в принципе, неплохо: «эго» — прекрасный мотиватор для покорения новых вершин, создания гениальных вещей и выполнения выдающейся работы. Но вот ведь в чём дело — у того, кто хочет быть хорошим дворецким не может быть никакого «эго»! Услужливость, покорность и осознание своей второстепенной роли никак не совместимы с гордостью.
Вот Вам и противоречие: у программистов есть гордость, а у дворецких её быть не должно.
Когда разработчик ПО создаёт программу, он всегда должен помнить, что несмотря на всю его гениальность как программиста, несмотря на прекрасный дизайн, эффективный язык программирования, супер-архитектуру и прочие важные вещи, его работа — это всего лишь работа дворецкого, который должен любой ценой удовлетворить хозяина и уйти с дороги.
Я думаю, что если мы поймём эту «эго»-проблему, мы сможем заметить её в своих проектах, когда она возникнет и всё-таки создать ПО, которое будет хорошим и послушным слугой пользователя, а не его плохим хозяином.
Прим. переводчика: автор неявно так в самом конце переходит от аналогии «программа-дворецкий» к аналогии «программист-дворецкий» (видимо, не хочет обижать читателей-программистов), но именно эта мысль статьи, мне кажется, является ключевой. Программист — это работник сферы услуг и я не вижу, почему эта мысль может являться обидной. Я сам программист и прекрасно осознаю, что моя работа — обслуживать потребности других людей в сфере обработки информации. Это прекрасная, творческая, ответственная и важная, но всё-равно всего-лишь второстепенная задача. А основные задачи с помощью моего ПО будут решать его пользователи. Именно их сэкономленное время и нервы, именно результаты их труда на моём ПО переполняют меня гордостью. И именно за ними последнее слово в выборе интерфейсов, требованиям к функционалу и т.д. Кто платит — тот и заказывает музыку. Эта статья хорошо дополняет прошлую мою статью в том смысле, что не нужно считать себя умнее всех.