среда, августа 29, 2007

Возлюби юзера своего...

«Всякий, возвышающий сам себя, унижен будет, а унижающий себя возвысится»
Евангелие от Луки 18:14.


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

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

Мы, конечно, понимаем, что в конечном итоге получаем зарплату именно из кармана юзера. Поэтому, прежде чем начать писать новую программу, мы собираем у них требования, пишем ТЗ, СИСы, Use Cases и User Stories. Но как часто нам кажется, что в ТЗ написан бред, и мы гораздо лучше понимаем, что на самом деле надо пользователю. А глупый юзер, начинает артачиться и упираться, настаивая на своем. На этот случай у нас есть железный аргумент: «Это сделать не возможно», или по-другому - системные требования и ограничения. Благо, юзер ничего в этом не смыслит, и ему, скрипя зубы, приходится соглашаться на наш правильный дизайн.

Вот так создаются программы, которые никому не нужны.

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

Когда готов прототип новой системы, и тебе кажется, что ты сделал все и даже чуть–чуть больше для того, чтобы пользователь был счастлив, я всякий раз испытываю ужасное разочарование, когда заказчик просит переделать все по-своему. Он всегда просит добавить какие-то дурацкие кнопки и надписи в твой элегантный и эргономичный интерфейс. Он выкидывает самую классную форму и просит вместо нее сделать какое-то убожество.

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

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

Любите своих пользователей, будьте терпеливыми и мудрыми. И возможно когда-нибудь, вам удастся попасть в ряды настоящей элиты программистов. В ряды тех, кто делает те самые 20% проектов, которые закончились успешно и в срок.

2 комментария:

Andrew "Small" Vasiliev комментирует...

Подпишусь под каждым словом.

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

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

npx комментирует...

Хорошо написано. Последний абзац можно оформить в виде плаката и повесить в офисе на видном месте, чтоб молодеж знала к чему надо стремиться:)