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