Стремление программистов понимать суть вещей побуждает их на инстинктивном уровне создавать такие пользовательские взаимодействия, которые четко соотносятся с внутренним функционированием продукта. Забывая о том, что программа должна помогать пользователю достигать его целей, они делают программы, отражающие механизм их устройства.
Какими бы ни были эти изменения — хорошими или плохими, они добавляют программистам работы. Кроме того, каждое такое изменение понижает общее качество кода, поскольку неизбежно оставляет после себя некрасивые сращивания и рубцы.
Из нескольких своих недавних поездок я сделал вывод, что тревога в сообществе программистов нарастает. К сожалению, хуже всего чувствуют себя лучшие и опытные программисты. Они прикладывают титанические усилия, но излучают цинизм и впадают в тоску, понимая, что их умения растрачиваются попусту. Они могут и не знать точно, как именно получается, что их квалификация не находит правильного применения, но они не могут не видеть очевидного. Многие из лучших программистов вообще перестали программировать, поскольку работа раздражает их. Они ушли в преподавание, религию, писательство, консультационную сферу, потому что эти занятия не оставляют ощущения пустой траты времени и сил.
пилот небольшого самолета заблудился в облаках. Он идет на снижение, пока не оказывается рядом с офисным зданием, и кричит человеку в открытом окне: «Не подскажете, где я?» На что человек выдает ответ: «Вы в самолете, примерно в тридцати метрах над землей». Пилот тут же берет верный курс и спустя некоторое время благополучно приземляется в аэропорту. Пассажиры самолета удивленно спрашивают, как он понял, куда лететь. И пилот говорит: «Тот человек ответил мне совершенно точно и правдиво, но эта информация была абсолютно бесполезна, поэтому я сразу догадался, что этот человек — разработчик программного обеспечения из Microsoft, а я знаю, где расположено здание Microsoft по отношению к аэропорту».
Значительному количеству разработчиков программных продуктов неведомо, как создавать удобные в использовании программы, но вместо этого им хорошо известно, как пичкать их новыми опциями, потому они делают именно это.
* * * Мы испытываем неприязнь к программным продуктам вовсе не из-за их недостаточных функциональных возможностей, а из-за их необходительного поведения.