Человеческий фактор в программировании
Шрифт:
Как это ни странно, во многих организациях, искренне стремящихся улучшать качество, существуют правила и условия, которые препятствуют его улучшению. Даже такие простые вещи, как способы определения сроков исполнения и составления бюджетов, значительно влияют на качество проектов. Обычно все факторы — бюджет, распределение ресурсов, подбор персонала, методология и сроки исполнения — уже определены на тот момент, когда проект передается разработчикам. На какой стадии можно достичь улучшения качества? Нам нужна по крайней мере одна степень свободы. Если все переменные ограничены, система становится сверхопределенной, а путей к победе у нас нет. Чем при возникновении проблем жертвуют в первую очередь? Качеством!
Обсуждайте сроки исполнения
Разработчики должны непосредственно участвовать в определении сроков поставки продукта и стадий исполнения проекта. Определение сроков следует рассматривать как переговоры, в ходе которых могут быть найдены компромиссы. «Да, проект можно сдать к концу года, если вас устраивает 15 ошибок на каждую тысячу строк. Либо мы можем пообещать более низкую частоту ошибок, если вы согласны вдвое сократить количество экранов».
Методы повышения качества программного обеспечения не всегда сложны и необязательно требуют больших затрат. Некоторые простые приемы могут привести к значительным изменениям. Прежде всего, определите свои приоритеты — присвойте качеству высокий приоритет. Не допускайте, чтобы ваш бизнес зависел от рыночных окон. Старайтесь думать о прибыли от инвестирования, а не о сдерживании затрат.
Далее, признавайте и поощряйте качество. Обращайте на него внимание. Обеспечьте обратную связь и широкий доступ к информации. Прислушивайтесь ко всему. Помните, что все новости являются хорошими, особенно плохие. Поощряйте критические оценки. Отслеживайте и изучайте ошибки и корректируйте рабочий процесс, а не только программу. Пусть светит солнце — сделайте рабочий процесс более видимым. Способствуйте перекрестному обучению — пусть каждый учит каждого. Когда вопрос качества имеет особое значение, применяйте только лучшие ингредиенты. И всегда ведите переговоры о сроках исполнения!
По материалам журнала American Programmer, февраль 1992 г.
VI
Юзабилити программного обеспечения
34
Согласованность и условности
Мы окружены пользовательскими интерфейсами. Возможно, этот термин получил широкое распространение благодаря компьютерному программному обеспечению, однако каждая система и каждый компонент оборудования, имеющие пользователя, по определению имеют и пользовательский интерфейс. Как показал психолог и бывший исследователь компании Apple Дональд Норман (Donald Norman, 1988 [53]), мы можем многое узнать о том, как разрабатывать и строить хорошие пользовательские интерфейсы для программного обеспечения, если посмотрим вокруг. Нужно просто подумать о том, как средства управления приборами, устройствами и инструментами делают их применение проще или сложнее.
Вспомните о том, как вы последний раз брали машину напрокат или одалживали ее у друга. Вероятно, это была другая модель или марка, отличавшаяся от модели той машины, которой вы обычно пользовались. Вы садились на место водителя, пристегивались, подстраивали зеркала и потом трогались с места. Вопрос: сколько секунд у вас ушло на то, чтобы изучить пользовательский интерфейс данной системы? Посещали ли вы для этого специальные курсы? А может быть, просматривали видеофильм о том, как пользоваться этой машиной? Или же вы смогли разобраться в этом самостоятельно без чтения руководства по эксплуатации?
Пользовательские интерфейсы большинства современных автомобилей, за небольшим досадным исключением, подчиняются Великому Закону Юзабилити (Constantine, 1991 [14]). Этот закон гласит, что пользовательский интерфейс должен давать возможность пользователю, обладающему знаниями в данной области, применять систему без дополнительного обучения и штудирования руководства по эксплуатации или других инструк-ций вне самой системы. Другими словами, хороший пользовательский интерфейс дает пользователям, уже знающим то, что они делают, возможность приступить к работе без необходимости изучения чего-либо еще.
Конечно, вы уже умели водить машину. Возможно, вы уже были опытным автолюбителем — не обязательно профессионалом, но квалифицированным и подготовленным водителем. Для опытного водителя вождение автомобиля становится, как говорят психологи, избыточным навыком. Вы можете делать это, применяя только часть сознательного внимания. В следующий раз, когда вы будете вести машину и говорить с пассажиром, попробуйте провести простой, но показательный эксперимент. Во время разговора постарайтесь осознать факт того, что вы в этот момент ведете машину. Как это может происходить? Вождение автомобиля — очень сложная задача с точки зрения обработки информации. Это выяснили военные ученые и инженеры, когда пытались создать компьютерную программу, способную управлять автофургоном. Что касается обычного разговора, то это еще более сложная задача, чем управление машиной. Тем не менее опытные водители способны следить за нитью разговора и с помощью устойчивых подпрограмм переводить большую часть задач, связанных с движением автомобиля, в фоновый режим.
Когда вы сели за руль непривычной для вас машины, то подстроиться под новый пользовательский интерфейс вам помогли два обстоятельства. Во-первых, этот интерфейс, вероятно, очень хорошо соответствовал вашему обычному и «естественному» диалогу с машиной. Во-вторых, интерфейс, видимо, не сильно отличался от интерфейса в вашей машине. Приборная панель и элементы управления в большинстве машин выполнены в соответствии с несколькими основными соглашениями. Переключение передач находится либо на рулевой колонке, либо на полу между водителем и пассажиром; спидометр, как правило, расположен на приборной доске прямо перед глазами; руль обычно круглый, а переключатель сигнала поворота, расположенный слева на рулевой колонке (за исключением стран с левосторонним движением), поворачивается по часовой стрелке при повороте направо и против часовой стрелки при повороте налево — так же, как и сам руль управления. Этот интерфейс соответствует принятым условностям и является внутренне непротиворечивым. Время от времени вы можете столкнуться с чем-нибудь необычным, и тогда вам придется немного повозиться с тем, как, например, включать фары, но на это понадобится лишь несколько мгновений.
Многие люди удивляются, когда узнают, что лишь единичные элементы типового пользовательского интерфейса обычного автомобиля регулиру-ются государственными или федеральными стандартами. Закон не требует даже наличия руля и не настаивает на его круглой форме. Некоторые специальные автомобили действительно строятся с другими рулевыми механизмами, рассчитанными на особые классы пользователей. Несколько лет назад одна германская автомобильная компания установила на одну из своих спортивных моделей руль овальной формы, однако водители его возненавидели. Руль управления принято делать круглым, потому что вращение круглого колеса, как показал долгий опыт, является одновременно хорошей метафорой и эффективным механизмом для задания направления поворота.
Однако так было не всегда. В начале автомобильной эволюции было испробовано множество других механизмов поворота. В ранних моделях использовались рычаги — отчасти потому, что механическая часть тогда была проще. Но в результате естественного отбора, производимого инженерами и водителями, в конце концов победили круглые рули. Эта эволюция стала возможна именно потому, что конструкторы автомобилей не были ограничены непродуманными стандартами. Кроме того, их ничто не вынуждало отличаться ради различий — просто из-за того, что какая-то компания заявила об интеллектуальном праве собственности на общий вид круглых рулевых механизмов.