The Programmers' Stone (Программистский камень) - [2]
Чтобы понять, что же на самом деле делают программисты, требуется альтернативная стратегия мышления (называемая картостроение — mapping), поскольку программирование по сути — это процесс усвоения возможностей системы, природы задачи и желания, а затем выражение результатов исследования на языке программирования. Вся суть в исследовании деталей наших желаний и понимание их таким способом, что мы можем отследить всю их сложность. Решение проблемы картостроителем может привести к красивым, компактным, элегантным программам, в которых нет места для ошибок. Картостроение может осуществлять программирование, но способ, каким оно это делает, невозможно объяснить на языке паковщика (ориентированном на действия).
Паковщики, таким образом, заключают, что хакеры «необъяснимы» и отвергают их работу, говоря, что сложность по своей внутренней сути необъяснима, и мы должны создавать все более сложные процедуры, чтобы избежать ответственности.
К счастью, многие управленцы в организациях продолжают поощрять обдумывание на основе интуиции и эмпирического опыта, без попыток вложить их в прокрустово ложе процедурных (основанных на действии) инструкций. Это трудно сделать, но это единственный способ довести что-то до результата.
Очень важно осознать, что картостроение — это не еще одна процедурная методология, которую нужно загрузить в голову паковщика. Это другой способ посмотреть на все вещи сразу. Необходимо осознать, что реально возможно принять личную ответственность за работу вместо того, чтобы уйти от нее, прячась за процедуру.
Программирование настолько ближе к чистому картостроению, насколько вы сможете выбраться за пределы своего черепа. Именно поэтому это удовольствие. Это путь бесконечных открытий, понимания и учебы.
Объектно-ориентированный подход (OOП) и картостроение очень интересно взаимосвязаны. ООП очень по-разному воспринимается картостроителями и паковщиками. Карта картостроителя — это вид объектной модели, в которой множество объектов и взаимосвязей. Картостроитель рассматривает ООП как элегантный способ разрабатывать программы, если они уже поняли проблему. Паковщик смотрит на ООП как на способ побродить вокруг проблемной области, создать программные объекты, а затем просто соединить их как получится. Таким образом, ООП воспринимается как процедурный механизм для перехода от проблемы к программе без вмешательства понимания. Если бы было возможно учесть абсолютно каждый аспект проблемной области и не нужно было заботиться об эффективности, то этот подход мог бы сработать. Но в действительности при проектировании объектов и их классификации всегда необходим хороший вкус, поскольку необходимо разрабатывать программные объекты, хорошо соответствующие объектам реального мира, но которые можно соединить вместе, чтобы получить жизнеспособную компьютерную систему. Это требует понимания и является строго работой картостроителя. Это проясняет, почему есть ОО проекты, которые заходят в тупик с результатом в виде смеси реальных и вспомогательных объектов, использующих множество избыточных схем адресации для взаимодействия через Брокеры Объектных Запросов (ORB), без ясной концептуальной целостности в инициации, выравнивании нагрузки и журналировании.
Программисты-паковщики часто настолько слабо контролируют свои объекты, что вообще теряют их, и все заканчивается утечками памяти, что приводит к падению программы. Решение паковщика в этом случае — покупка средств обнаружения утечек памяти, а не восстановление контроля над своими объектами, чтобы все работало как надо.
Картостроение и Тотальное Управление Качеством (TQM)
После 2-й мировой войны американцы послали в Японию д-ра Деминга (W. Edwards Deming) помочь привести в порядок промышленность, которая была странной смесью средневековья и индустриальной эры и была разрушена войной. Деминг предложил идеи, включающие сбор статистики о деятельности при массовом производстве, просил занятых этой деятельностью рабочих подумать о способах ее совершенствования и требовал убедиться, что каждый работник понимает, что он делает. Эти идеи позднее развились в то, что мы сейчас называем «Тотальное Управление Качеством» (Total Quality Management — TQM).
Результат (как нам говорят) получился сверхординарный. За одно поколение японская промышленность была восстановлена и продвинулась от изготовления в ограниченных количествах велосипедов до мирового лидерства в высокотехнологичных производствах — кораблестроении, автомобилестроении и электронике. «Японский метод» был реимпортирован на Запад и стандартизирован как ISO 9001, международный стандарт «Качества», на который равняется бизнес и который фокусируется на определении процедур для всего на основе хронометрирования и проверок (ticking & checking). Вообще-то, хотя предполагаемые преимущества еще никто не увидел, еще есть организации, применяющие идеи Деминга, и есть его последователи, которые выискивают эти преимущества.
Осознавая важность картостроения, предложим другой взгляд на то, что произошло в Японии на самом деле. Картостроение определенно можно пробудить травмой. Вот возможные способы травмировать людей: