В наше время живет гораздо больше паковщиков, чем картостроителей. Одна из целей этой работы - показать эффективные методы картостроения, но другая цель -- объяснить, почему озарения многих из нас кажутся непонятными для других. Мы должны осознать, когда наши представления творцов-программистов непонятны для коллег-паковщиков, чтобы дать им возможность освоиться со сложными явлениями, требующими некоторого времени на обдумывание. Мы также должны осознать, что быть правым -- это не значит быть популярным, а личная заинтересованность в качественной работе часто приносит больше удовлетворения и меньше стресса, чем страусиное поведение.
Мы должны также осознать, что возможно эффективное взаимодействие с картостроителями, даже с теми, кто далек от нашей области. Признавая существование специфического коммуникационного барьера при общении с одними, мы также должны осознавать, что с другими взаимодействие часто оказывается гораздо проще, чем можно было бы предположить.
Необходимо также четко осознавать границы нашей ответственности. Если при обсуждении с заказчиком оказывается, что он не ухватывает существенные моменты задачи, помните, что наша личная, поставленная нами самими цель -- найти наилучший ответ -- не обязательно означает заставить заказчика принять один лишь этот ответ. Любое размышление, которое допускает одну стратегию, обычно допускает несколько других стратегий, каждая из которых имеет свои достоинства и недостатки. Это всегда можно обобщить и получить удовлетворение от хорошо проделанной работы по изучению возможностей и обоснования своего выбора заказчику. Если, при полном понимании, заказчик делает выбор, который вам кажется глупым, то каким еще способом организация заказчика может чему-то научиться?
Вы не должны спасать весь мир, только свой небольшой кусочек и еще чуть-чуть, если сможете!
В своей книге Peopleware Том де Марко (Tom de Marco) и Тим Листер (Tim Lister) наводят на мысль, что великие программы делают "однородные" (gelled) команды, и предлагают способы повысить сплоченность команд. Рассматривая "однородные" команды, мы можем заметить в них легкость общения и эффективность работы. Но добавим в уравнение концепцию картостроения, и картинка изменится. "Однородные" команды выглядят скорее как группы эффективно взаимодействующих друг с другом картостроителей, поскольку они могут ссылаться на общую мысленную карту ситуации с помощью нескольких, возможно странно звучащих слов. (Как-то раз разработчики назвали свою подсистему связи с гарантированной доставкой "Фабрикой спагетти". Дело было в неких колечках, свободно летающих в воздухе.)
Они могут не просто быстро обмениваться информацией о своих картах - они могут отрывать кусочки своих карт и перемещать их. Они могут обмениваться кусочками своих карт. Они могут очень быстро реагировать все вместе, как команда. Все они знают, что происходит, они уже тщательно проработали все в своих умах. Они не петушатся и не теряют время на несинхронные действия. Они соответствуют друг другу, хотя у них могут отличаться вкусы в музыке, политике и еде. От роста производительности захватывает дух, тот, кому посчастливилось работать в такой команде, знает, о чем идет речь.
Необходимо найти время для обеспечения понимания всеми того, с чем они имеют дело, и жить станет интереснее, поскольку в 17 часов каждый будет испытывать ощущение успеха.
Попадание в эту ситуацию не случайно, оно воспроизводимо.
Как инженеры-программисты, мы могли бы описать обучение как формирование ассоциаций между референтами [referents - объекты и события, на которые делаются ссылки]. Небо голубое. Дождь в Испании выпадает главным образом на равнине. Эти факты, поддающиеся заучиванию, можно назвать "пакетами знаний": маленькие кусочки истины (или заблуждений), которыми мы обладаем.
Можно долго идти по пути собирания пакетов знаний. Раннее обучение (как оно направляется взрослыми) для большинства детей почти полностью фокусируется на добывании пакетов знаний. Вещи, которые следует и не следует делать. Методы выполнения задач. Данные, которые необходимо запомнить, чтобы потом вспомнить в нужный момент.
Трюк с пакетами знаний состоит в идентификации ключевого свойства ситуации и определении действия, которое нужно предпринять. Кто-то может достигнуть высокого положения и степеней, управлять автомобилем, и даже знакомиться с представителями противоположного пола используя пакеты знаний. Особо талантливые пользователи пакетов знаний могут набить свои головы мегабайтами законов и умеют складывать в уме шестизначные числа. Некоторые политики опускают стадию распознавания паттерна и используют один единственный универсальный пакет знаний для всего.
Конечно, мы не складываем пакеты знаний в своей голове стопкой, как тарелки. С самого раннего возраста наша естественная реакция на каждый новый пакет - это вопрос: "Почему?"
Мы стремимся соединить пакеты знаний, чтобы создать структуру в нашем знании, мысленную карту, которая дает нам понимание причин и следствий в ситуации. Это понимание позволяет нам получать решение для любой проблемы в рамках этой ситуации, вместо попыток выбрать бездумно заученную реакцию.
В дальнейшей жизни мы должны периодически проводить время в размышлениях, или фантазиях, исследуя отношения между тем, что мы знаем. Это расширяет нашу интегрированную карту и позволяет нам идентифицировать на карте структуры, которые применимы в различных областях. Затем мы можем получить более подробную карту, в которой то, что математики называют "изоморфизмом" (isomorphism), а программисты называют "наследованием" (inheritance), позволяет нам повторно применять знание.
Мы реорганизуем наши мысленные карты, чтобы получить более простые выражения и иметь возможность удержать в уме больше знаний. Когда мы находим более простой способ посмотреть на вещи, то оказывается, что трудно вспомнить, на что это было похоже, когда предмет казался сложным, и мы сами подросли (вырос наш уровень познания). Если есть понимание, то где кончается личность и начинаются собственно данные? Если вспомнить о пакетах знаний, то граница очевидна.