Психбольница в руках пациентов
Шрифт:
Он не проявляет сочувствия к тем, кто интеллектуально слабее, чем он. Про себя, не имея физической силы, чтобы делать это публично, он смеется над более крупными ребятами, не обладающими его смекалкой и интеллектом. Его философия проста и жестока: держи удар или умри. Любой другой присутствующий на «спортплощадке», не способный с ним состязаться, считается недостойным. Он не задумывается о чувствах или талантах более слабых людей. Система его ценностей выражена в неофициальной иерархии, основанной на внутреннем развитии его собственного острого интеллекта. В среде равных себе, не бугаев, его отношение таково: если я могу одолеть тебя – в интеллектуальном состязании – я твой повелитель и я лучше тебя.
Подобно бугаям, одаренным физической силой, хорошие программисты также от природы талантливы, и дух состязания
И вот с таким «ботаником» происходит интересная вещь. Перейдя из школы в реальный мир, он обнаруживает, что способность интеллектуально доминировать над другим человеком переходит нетронутой в зрелое, цивилизованное общество взрослых. Его здесь защищают социальные ограничения, и его уже не побьют на игровом поле. При переходе из подросткового мира в мир взрослых физическая сила перестает быть аргументом, но интеллектуальные разборки становятся все более сильным оружием.
Характер интеллектуального бугая – способность доминировать над другими при помощи умственных способностей – в мире взрослых информационной эры приобретает невиданную силу. В гражданском обществе стало допустимым применение интеллектуальных пинков в виде непостижимого программного обеспечения, стали допустимыми щелчки эмоциональными полотенцами по исстрадавшимся людям, которые всего лишь пытаются извлечь наличные из банкомата.
Бугаи, обладавшие огромной властью в школе, обнаруживают, что находятся теперь во власти своих бывших жертв. Процесс превращения во взрослых делает многих бугаев достойными людьми, и многие из них говорили мне с сожалением о своем подростковом поведении.
Бывший лучший центровой команды по баскетболу, ростом метр девяносто, обнаруживает, что его физическая доблесть бесполезна в зале для совещаний, тогда как бывший председатель школьного клуба астрономии ростом метр семьдесят пять обнаруживает, что его умственные способности позволяют маневрировать и наносить удары с непревзойденным проворством. Инфантильный «ботаник»-адвокат способен одержать победу в суде при помощи острого языка и изощренного ума. «Ботаник»-доктор получает власть над жизнью своих пациентов, в прошлом бугаев. И – вот это сюрприз – чахлый «ботаник»-программист получает доступ к огромной власти, поскольку теперь он контролирует доступ всех остальных людей к информации.
Применение этой силы не ограничивается никакими процессами взросления. Они доминируют над другими при помощи своих интеллектуальных способностей лишь потому, что могут это делать, и не видят ничего дурного в издевательствах над пользователями, каковыми являются устрашающе сложные продукты. Они глумятся, подшучивают, смеются над «чайниками», которые недостаточно умны, чтобы пользоваться компьютерами. Да и рабочие привычки этих людей – изоляция, многочисленные сверхурочные и внеурочные – не оказывают особого цивилизующего воздействия на их поведение.
Лишь приближаясь к тридцати годам, я осознал, каким был грубияном. Обычным грубияном, кулаками которого были способности к программированию, а ростом и длиной рук – владение сложными системами. И я издевался над теми, кому не по силам оказывались сложности использования компьютеров.
Глава 8
Отмирающая культура
Программирование – деятельность до некоторой степени «потусторонняя» и эмоционально весьма насыщенная. Именно такая насыщенность делает программирование более похожим на призвание, жаргон программистов более похожим на самостоятельный язык, и благодаря ей братство разработчиков программ создало свою культуру. В этой главе я покажу, каким образом культура программирования влияет на природу программных продуктов.
Культура программирования
В недавнем субботнем приложении к «Таймс» мне довелось прочесть занимательную историю американской пары, после выхода на пенсию уехавшей жить в Мексику. Они купили участок в предместье крупного города и наняли архитектора-американца для проектирования
Чертежи указывали, что на фасаде дома должно быть четыре окна, произведенные конкретным изготовителем, и приводили даже точный идентификационный номер товара. Владельцы дома обнаружили, что на фасаде три окна, совершенно иных по виду и размерам. На их расспросы мексиканский строитель пожал плечами и сказал: «Это ведь окна. В плане указано, что окна на этой стороне. В чем проблема?»
Владельцы и архитектор здания происходили из одной культуры, имели общие ценности, тогда как строитель происходил из другой культуры, а значит, иначе оценивал аспекты проблемы. Несомненно, ему удалось обеспечить заказчиков окнами за меньшие деньги и ценой меньших усилий, а это – в его мире – и было первоочередной задачей. Владельцы и архитектор, американцы, полагали, что наличие чертежей требует четкого следования этим чертежам. Строитель же, мексиканец, полагал, что чертежи – это лишь предложение, а не требование. Он полагал, что его собственные императивы бережливости и простоты комплектования естественным образом преобладают над любыми спецификациями. Он искренне старался претворить в жизнь видение архитектора, но применял к проблеме собственные культурные фильтры – собственные ценности.
Повторное использование кода
Подобно мексиканскому строителю, который ставил стоимость выше соображений проектирования, предоставленные сами себе инженеры ценят эффективность программирования больше, чем это необходимо пользователю. Лучшим свидетельством в пользу этого тезиса является практика повторного использования кода, то есть кода, который был ранее создан для какого-то иного проекта или же мог быть приобретен за определенную сумму у сторонней фирмы. Написанный код не просто экономит время; очевидно, что и другие программисты могут его использовать, и к тому же код не содержит ошибок. Одно из уникальных свойств программ состоит в том, что любую процедуру можно выполнить всего одной командой, но при этом размер процедуры не ограничен. Иначе говоря, если процедура уже написана, ее можно задействовать одной командой. Следовательно, любой уже написанный модуль кода оказывается значительным подспорьем для программистов. Они могут включать его в свои программы в качестве черного ящика, внутреннее устройство которого никогда не требует их вмешательства. Программист таким способом экономит время не только непосредственно на этапе программирования, также и на размышлениях и тестировании. Для большинства программистов повторное использование кода становится более важным, чем практически любое другое соображение. Знаменитый идеолог UNIX Эрик Реймонд (Eric Raymond) говорит:
«Хорошие программисты знают, что писать, великие – что надо использовать повторно».
Основной побочный эффект повторного использования кода заключается в том, что крупные блоки большинства программ существуют не потому что этого захотел некий проектировщик взаимодействия, но потому, что некий программист уже проделал необходимую работу в рамках другого бюджета. Многие программы из тех, что мы встречаем, существуют лишь потому, что уже существовали ранее.
К примеру, приложения для настольных компьютеров содержат так много меню и текстовых диалоговых окон потому, что все оконные системы Мiсrоsоft Windows, Мас OS, OS/2, Solaris – предоставляют готовые модули кода, обеспечивающие работу таких функций. И наоборот, ни одна из этих систем не содержит большого количества кода для механизмов drag-and-drop; вот почему в приложениях так мало непосредственного манипулирования (direct manipulation). Диалог можно создать при помощи шести-восьми строк простого декларативного кода. Идиома drag-and-drop требует примерно сотни строк весьма запутанного процедурного кода. Выбор программиста здесь очевиден. Выгоды конечного пользователя в контексте такой экономии обычно не рассматриваются.