Теги: политика  

ISBN: 978-5-4461-2141-

Текст
                    

The Creative Programmer WouтER GROENEVELD fOREWORD ВУ fELIENNE f-IERМANS MANNING SHELTER ISLAND
Креативный программист ВАУТЕР ГРУНЕФЕЛД ПРЕДИСЛОВИЕ ФЕЛИЕН ХЭРМАНС Санкт-Петербург. Москаа. Минск 2024
ББК УДК 32.973.2-018 004.41 Г90 Грунефелд Ваутер Г90 Креативный программист. - СПб.: Питер, 2024. - 272 с.: ил. - (Серия «Биб­ лиотека программиста»). ISBN 978-5-4461-2141-О Подобно написанию музыки, созданию нового бизнеса или планированию маркетинговой кампании, программирование является творческой деятельностью. Так же как и техническим навыкам, креативности можно научиться и улучшать ее, постоянно практикуясь! Вооружитесь ме­ тодами, позволяющими обратить креативность на пользу более эффективному решению проблем, повышению производительности и созданию более совершенного программного обеспечения. В книге рассматриваются семь составляющих креативности в разработке ПО: технические знания, сотрудничество, ограничения, критическое мышление, любознательность, творческие методики и состояние ума. По мере прочтения вы сможете применять знания к задачам программи­ рования. Суть каждого урока помогают усвоить многочисленные примеры и упражнения. Особенно вам понравится уникальный тест решения проблем в стиле креативного программирования, кото­ рый поможет оценить, насколько творчески вы подходите к выполнению программистских задач. 16+ (В соответствии с Федеральным законом от 29 декабря 2010 г. N11436-ФЗ.) ББК УДК Права на издание получены по соглашению с Manning 32.973.2-018 004.41 Puьtications. Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав. Информация, содержащаяся в данной книге, получена из источников, рассматриваемых издательством как надежные. Тем не менее, имея в виду возможные человеческие или технические ошибки, издательство не может гарантировать абсолютную точность и полноту приводимых сведений и не несет ответственности за возможные ошибки, связанные с использованием книги. В книге возможны упоминания организаций, дея­ тельность которых запрещена на территории Российской Федерации, таких как Meta lnstagram Platforms lnc., Facebook, и др. Издательство не несет ответственности за доступность материалов, ссылки на которые вы можете найти в этой книге. На момент подготовки книги к изданию все ссылки на интернет-ресурсы были действующими. ISBN 978-1633439054 ISBN англ. 978-5-4461-2141-О Authorized translation of the English edition © 2023 Manning Puьtications. This translation is puьtished and sold Ьу permission of Manning Puьtications, the owner of all rights to puьtish and sell the same. © Перевод на русский язык ООО «Прогресс книга», 2024 © Издание на русском языке, оформление ООО «Прогресс книга», 2024 © Серия «Библиотека программиста», 2024
Оглавление Предисловие .................................................................................. ...... 11 Введение .................................................................................. ............ Благодарности Об этой книге .................................................................................. ... 15 .................................................................................. ..... 17 Как устроена эта книга .................................................................................................. Форум 13 17 liveBook ............................................................................................................... 18 От издательства .................................................................................. .. 19 Иллюстрация на обложке ...................................................................... 20 Об авторе .................................................................................. ........... 21 Глава 1. В начале творческого пути ........................................................ 22 1.1. Что же такое творчество? ..................................................................................... 23 1.2. Зачем вообще нужно творчество ....................................................................... 27 1.3. Разные уровни творчества ................................................................................... 29 к креативпости .............................................................. 31 программирования ................... 32 1.4. Дорожная карта пути 1.4.1. Семь составляющих креативного 1.4.2. Тест: решение проблем в стиле креативного программирования 1.5. Глава .............................................................................................. 35 Структура последующих глав ............................................................................. 39 2. Технические знания .................................................................. 41 2.1. Без вклада не будет творческого результата .................................................. 2.2. Сбор знаний 44 .............................................................................................................. 46
6 Оглавление 2.3. 2.2.1. Разнообразьте поступающую информацию ....................................... 46 2.2.2. Отсеивайте информацию на входе ........................................................ 47 Усвоение знаний ...................................................................................................... 49 Управление знаниями ................................................................................ 51 2.3.1. 2.4. Действия на основе знаний .................................................................................. 54 2.5. к тетех и 2.4.1. От записной книжки 2.4.2. От заметки 2.4.3. Заметка о ведении заметок 2.4.4. От прерывания - - genex ............................................ 56 к действию ......................................................................... 58 ...................................................................... 61 к действию ................................................................. 63 Пример рабочего процесса ................................................................................... 64 - 2.5.1. Пятиступенчатый рабочий процесс ...................................................... 66 2.5.2. Рабочий процесс па практике: кодинг ................................................. 69 2.5.3. Рабочий процесс па практике: изучение новых языков программирования 2.5.4. ................................................................................................ 69 Рабочий процесс па практике: написание текстов .......................... 70 Итоги ................................................................................................................................... 71 Общение .................................................................................. 72 Командное сотрудничество ................................................................................. 74 Глава 3. 3.1. 3.2. 3.1.1. Мотивы камераты 3.1.2. Команды мечты ............................................................................................ 79 Коллективная география ...................................................................................... 81 ....................................................................................... 75 3.2.1. Жидкие сети .................................................................................................. 81 3.2.2. Творчество заразительно .......................................................................... 84 3.2.3. Переезд в стимулирующую среду 3.2.4. Кластеры гениев .......................................................................................... 86 время ........................................................................ 90 Кривая принятия ......................................................................................... 91 3.3. Творческая работа сквозь 3.3.1. 3.4. ......................................................... 85 Если поток творчества замедляется ................................................................. 93 ........................................................................................ 93 3.4.1. Социальный долг 3.4.2. От технического долга к долгу социальному .................................... 3.4.3. Запахи сообщества ...................................................................................... 95 94 3.4.4. Как избавиться от социального долга .................................................. 97 Итоги ................................................................................................................................... 99
Оглавление Глава 7 4. Ограничения .....•................•........•......... ................................ 100 4.1. Мышление в рамках ограничений 4.1.1. .................................................................. 103 Зеленое или коричневое поле? ............................................................. 104 4.1.2. Таксономия ограничений ....................................................................... 105 4.2. Внутренние ограничения ................................................................................... 106 4.2.1. Внутренние аппаратные ограничения ............................................... 107 4.2.2. Внутренние программные ограничения ........................................... 109 ................................................................................. 11 О 4.4. Самоограничения .................................................................................................. 113 4.4.1. Страстные пиксельные художники .................................................... 115 4.3. Наложенные ограничения 4.4.2. Пусть ограничения ведут вас к творческим решениям ............... 4.4.3. Garne 117 Воу и ограничения ........................................................................ 118 121 4.4.4. Консоли мечты ........................................................................................... 4.4.5. Ограничения в языках программирования ...................................... 123 4.4.6. Ролики про взломщиков и демосцена ............................................... 124 4.5. Достижение оптимального баланса ............................................................... 126 4.5.1. Правильный объем ограничений как средство абстраrирования ................................................................................................... 127 4.5.2. Сладость или rоречь? ............................................................................... 129 4.6. Работа с ограничениями на практике ............................................................ 130 4.6.1. Дивергентное мышление ........................................................................ 131 4.6.2. Наивность и ограничения ...................................................................... 133 4.6.3. Наивная, но легендарная поэтесса ...................................................... 4.6.4. Наивный Джеймс Бонд ........................................................................... 135 4.6.5. Наивная реализация алгоритмов 134 ........................................................ 136 Итоrи ................................................................................................................................. 138 Глава 5. Критическое МЫПIЛение ......................................... .................. 139 5.1. Творческое критическое мышление ............................................................... 142 5.2. Творческий процесс .............................................................................................. 143 5.2.1. Критическая проверка ............................................................................. 144 5.2.2. Сосредоточенное мышление ................................................................. 146 5.2.3. Рассеянное мышление ............................................................................. 5.2.4. Сочетание рассеянного и сосредоточенного мышления ............. 148 146
8 Оглавление это средство, а не цель ........................................................ 151 5.3. Креативность 5.4. Распространенные заблуждения о критическом мышлении ................. 153 - 5.4.1. Межъязыковые противоречия 5.4.2. Ослепительная вспышка озарения ..................................................... 5.4.3. Неведение и целенаправленное открытие ............................................................. 155 156 ....................................... 157 5.4.4. Я самый великий ....................................................................................... 5.4.5. Я самый модный ........................................................................................ 159 5.4.6. Гугл-кодинг .................................................................................................. 160 5.4.7. Длинный список ложных представлений о программировании для новичков 5.4.8. 158 ............................................................... 162 Преобразование предрассудка в озарепие ........................................ 163 5.5. Слишком много самокритики 5.6. Почему критическое мышление других тоже важно ................................ 165 Итоги ................................................................................................................................. 166 .......................................................................... 163 Глава 6. Любознательность ................................................................. . 167 как импульс для креативпости ................................... 170 Растущая тяга к знаниям и странствиям ...................................................... 171 6.1. Любознательность 6.2. 6.2.1. Фиксированное мышление и мышление роста .............................. 172 6.2.2. Верить 6.2.3. Вырастание из зоны комфорта ............................................................. 6.2.4. Мышление роста и креативность ........................................................ 176 6.3. Держите курс 6.4. 6.5. - значит делать .......................................................................... 173 17 4 на любознательность ............................................................... 178 6.3.1. Настойчивость и твердость характера ............................................... 178 6.3.2. Сила воли - истощимый ресурс .......................................................... 180 От любознателыюсти к мотивации ................................................................ 181 ........................................................................... 181 6.4.1. Внутренняя мотивация 6.4.2. Внешняя мотивация ................................................................................. 182 6.4.3. Сочетание внутренней и внешней мотивации ................................ 183 Мультипотенциальность .................................................................................... 184 6.5.1. Истинные призвания во множестве своем 6.5.2. Как быть со множеством интересов .................................................... 6.5.3. Специализация - ...................................... 185 187 враг креативности? .............................................. 188
Оглавление 6.5.4. 9 Универсалыюсть или специализация в технологических областях ............................................................................. 191 Нежданные открытия .......................................................................................... 193 6.6. 6.6.1. Как на что-нибудь натолкнуться ......................................................... 193 6.6.2. Открытость впечатлениям ..................................................................... 194 6.7. О веселье .................................................................................................................. 195 6. 7 .1. Валяние дурака .......................................................................................... 6.7.2. Только для развлечения: задачка с плохим парнем ...................... 198 Итоги ................................................................................................................................. Глава 197 199 7. Творческое состояние ума ......................................... .............. 201 7 .1. Как прийти в правильное творческое настроение ..................................... 204 7 .2. Поток глубокой работы ....................................................................................... 205 7.2.1. Оптимальное переживание .................................................................... 205 7.2.2. Углубленная работа .................................................................................. 208 7.2.3. Углубленная работа и поток в движении .......................................... 210 7.2.4. Поддержка ходьбы или отсутствие таковой .................................... 212 7 .3. Прерывайтесь! ........................................................................................................ 214 7.3.1. Осознавать, что прерывания существуют ........................................ 216 7.4. 7 .5. 7.3.2. Подготовка к прерываниям ................................................................... 217 7.3.3. Каких прерываний нужно остерегаться? .......................................... 218 7.3.4. Осознанность повышает сосредоточенность ................................... 219 Провоцирование творческих озарений ......................................................... 220 ........................................................................ 221 7.4.1. Поодиночке или вместе? 7.4.2. Сон и озарение ........................................................................................... 223 7.4.3. Заметка о стимуляторах ......................................................................... 224 Корпоративное творческое состояние ума ................................................... 225 7.5.1. Креативность и окружающая среда .................................................... 226 7.5.2. Рабочее место как творческая мастерская ........................................ 229 7.5.3. Рабочее место как тихая гавань ............................................................ 231 Итоги ................................................................................................................................. 232 Глава 8. Творческие методики 8.1. ......................................... ......... ............ 234 О творческом инструментарии ........................................................................ 237
1О Оглавление 8.2. 8.3. 8.4. Подборка. Инструментарий художника ....................................................... 239 8.2.1. Обучение через искусство ...................................................................... 239 8.2.2. Крадите как художник 8.2.3. Сила свободного времени ............................................................................ 242 ...................................................................... 245 Подборка. Инструментарий писателя ........................................................... 248 8.3.1. Инструментарий Владимира Набокова ............................................ 248 8.3.2. Инструментарий Джеффа Дайера 8.3.3. Инструментарий Энн Ламотт ..................................................... 250 .............................................................. 251 Подборка. Инструментарий программиста ................................................. 253 8.4.1. Инструментарий Анны Бобковска 8.4.2. Инструментарий прагматичного программиста ............................ 256 8.4.3. Инструментарий Эмили Морхауз ..................................................... 253 ..................................................... 258 Итоги ................................................................................................................................. 260 Глава 9. Итоговые мысли о креативности ... ......................................... ... 262 9.1. Помните: творческой личностью может быть каждый ............................ 263 9.2. Несколько слов о развивающихся взглядах на творчество .................... 264 9.2.1. От технического индивидуализма - к игре в креативпой команде .................................................................................................................... 265 9.2.2. 9.3. Вновь я посетил ... CPPST ...................................................................... 267 Когда не стоит быть творческой личностью ................................................ 268 9.4. Дальнейшее чтение ............................................................................................... 269
Предисловие Когда я узнала о том, что Ваутер собирается написать книгу, меня охватило вол­ нение. Ваутер исследует те качества, которыми должен обладать программист, чтобы быть продуктивным и креативным, но до сих пор его работа привлекала внимание лишь в научных кругах. Как замечательно, подумала я: теперь о том, как подойти к нашей работе еще более творчески, узнает куда более широкая аудитория! Креативность - странная штука. Никто не будет спорить с тем, что программи­ рование является творческим занятием, но что есть творчество и каким образом можно полнее раскрыть свои творческие способности? Если человек просто много знает и умеет применить нужные знания в нужный момент, - можем ли мы уже считать его творческим? Ваутер утверждает, что технические знания являются необходимым, но недостаточным условием. Он идет дальше и напол­ няет свою книгу невероятной смесью увлекательных исторических примеров и практических упражнений, а также многочисленными отсылками к статьям, книгам и научным работам (как связанным с программированием, так и далеким от него) для углубленного изучения. Я высоко ценю откровенные размышления Ваутера о его собственных методах. Проще простого призывать читателей делать что-то определенное ( «всегда пи­ шите заметкю> или <<работайте в команде, постоянно общаясь друг с другом~). Ваутер же открыто говорит о том, насколько трудно выполнять такие рекоменда­ ции, рассуждает о своих неудачах в попытках сделать это и в заключение всегда приводит конкретный совет, который представляется одновременно действенным и выполнимым - а это довольно редкое сочетание. Радует то, что книга наполнена упражнениями и побуждает попробовать раз­ личные методики на практике - ведь если что-то и трудно делать в теории, так это в первую очередь творить! Мой экземпляр книги уже превратился в запис­ ную книжку, пестрящую заметками, к которым так и хочется применить уроки Ваутера, касающиеся их организации и контроля результатов, - верный знак того, что его упражнения поистине увлекают и воодушевляют! В книге углубленно рассматриваются различные стороны созидательной де­ ятельности, начиная с написания заметок и мозгового штурма и заканчивая
12 Предисловие креативной командной работой и методиками. В дополнение к практическим советам книга опирается на внушительную научную базу и знакомит читателя с теориями, относящимися к творческим способностям. Из нее я узнала об ор­ ганизации знаний, типичных ловушках критического мышления и о том, как ис­ пользовать существующие ограничения, чтобы подтолкнуть творческую мысль. Не сомневаюсь, что книга «Креативный программист>> окажется полезной каж­ - от учащихся старших классов, делающих первые шаги Python, до состоявшихся разработчиков на С++, имеющих десятки дому программисту в освоении лет опыта за плечами. Мне не терпится увидеть, на какие творческие проекты опа подвигнет читателей! Доктор Фелиен Хэрманс (Felienne Hermans), computer science, профессор Амстердамский свободный университет
Введение Как бы ни ослепляли меня (в хорошем смысле этого слова) на протяжении одиннадцати лет моей работы инженером-разработчиком техническая сторона и архитектура программ, все это время ко мне пе переставала взывать мистиче­ ская сила, заключающаяся в нетехнических навыках программирования. Когда я занялся подготовкой специалистов и адаптацией новых сотрудников, в глаза мпе бросились некоторые странности. Как так получалось, что новобранцы в основном успешно осваивали фреймворки и лучшие практики, по порой им пе удавалось постичь то, что действительно было важным? Я говорю об интеграции в команду и об умении решать проблемы. Что означает быть поистине великим программистом помимо очевидного технического мастерства? Этот вопрос не давал мне спать по ночам и в конце концов снова привел меня в научно-образовательную среду. После четырех лет интенсивного обуче­ ния и публикации множества научных работ по данной теме я могу сказать: теперь я с большей ясностью понимаю, что такое быть поистине отличным программистом. Это означает быть Креативным Программистом. Проблема заключается в том, что разрозненные научные публикации - при том, что они прекрасно читаются, - лишены контекста и едва ли выходят за пределы, очерченные университетом. Кроме того, я был настроен дать что-то сообществу программистов. Благодаря заинтересованности и помощи издательства Manning эта идея вскоре материализовалась в виде легко усваиваемых глав и издания с ранним доступом 1, запустив цикл обратной связи и переписывания текста па повышенных оборотах. 1 Автор применяет терминологию, принятую в индустрии компьютерных игр. Ранний доступ (анzл. early access), альфа-доступ (alpha-access) или платная альфа (раid-а1рhа)­ модель финансирования в игровой индустрии, с помощью которой пользователи пла­ тят за игру на ранних стадиях создания (пре-а.льфа, альфа, бета) и получают доступ к предварительной полной версии, а разработчики могут использовать полученные средства для доведения игры до полноценного вьmуска. Те, кто платит за ранний доступ, как правило, помогают в отладке игры, дают обратную связь, вносят предложения по улучшению игрового процесса, а в дальнейшем им может быть предоставлен доступ к особенному контенту игры. - Примеч. пер.
14 Введение Результатом нашего сотрудничества явилась смесь теории и практики - прак­ тический подход, подкрепленный научными доказательствами и призванный помочь в решении сложных задач, которые встают перед программистом. Я постарался сделать эту книгу по возможности доступной ( и занятной) и для джуниора, и для умудренного опытом гуру. Когда вы дойдете до конца книги, в ваших руках окажутся все инструменты, необходимые для того, чтобы стать Креативным Программистом. Мы осветим в общей сложности семь различных, но тесно переплетенных тем: технические знания, общение, ограничения, кри­ тическое мышление, любознательность, творческое состояние ума и креативные методики. Надеюсь, что понятия, разъясняемые в этой книге, дадут импульс вашей творче­ ской мысли и будут с пользой служить долгие годы. Если вам есть что обсудить или чем поделиться, пожалуйста, обращайтесь. Я всегда рад помочь и очень ценю обратную связь. Как вы убедитесь, прочитав эту книгу, Креативный Про­ граммист не может существовать без креативного сообщества. Еще раз спасибо за то, что купили эту книгу, и приятного чтения!
Блаzодарности Первые наброски этой книги были созданы мною единолично, но многие идеи, которые помогли придать ей форму, безусловно, были основаны на превос­ ходной работе окружающих меня людей. Одному из них, Энди Ханту (Andy Hunt), я хотел бы выразить особую благодарность. Если бы в 2009 году я не открыл для себя его книгу <<Pragmatic Thinking and Learning,>1, то, возможно, никогда не проявил бы интереса к мыслительным процессам и психологии программирования. Благодарю всех тех замечательных людей, с которыми я имел удовольствие работать, и всех прежних работодателей, которые разрешили мне организовать экспериментальные курсы по различным вопросам, освещаемым в этой книге. Выражаю огромную благодарность моим научным руководителям, докторам Йоосту Феннекенсу Uoost Vennekens) и Крису Эртсу (Kris Aerts) из Лёвенского католического университета, которые позволили мне идти своим путем, вместо того чтобы принудительно ограничивать тематику моей работы областью соб­ ственных исследовательских интересов. Благодарю также всех, кто работает в данной индустрии, и членов научно-образовательного сообщества, с которыми я проводил собеседования в рамках своего исследования. Возможно, мне никогда не захочется это признавать, но первый набросок данной книги имел довольно грубые очертания, пусть и содержал множество хороших идей. Я благодарен моему редактору Коннору О'Брайену (Conner O'Brien) за критический разбор написанного и за то, что порой он заставлял меня удалять дорогие моему сердцу фрагменты. Дорога была тернистой, а необходимость выверять баланс между теорией и практикой беспокоила меня не на шутку, но в конце концов Коннор всегда наставлял меня на правильный путь. Благодарю также издателя Майкла Стивенса за то, что он разглядел потенциал этой книги уже на первой нашей встрече. Хочу также выразить огромную при­ знательность всем сотрудникам издательства Manning, которые помогли книге увидеть свет. 1 Томас Д., Хант Э. «Программист-прагматик~>.
16 Благодарности Спасибо всем, кто предоставил обратную связь о рукописи на различных стадиях (Abdul W Yousufzai), Алессандро Кампейсау (Alessandro Campeis), Андресу Сакко (Andres Sacco), Чаку Куну (Chuck Coon), работы над ней: Абдулу Юсуфзаи Диего Казелле (Diego Casella), Джордже Вукеличу (Dorde Vukelic), Эдипу Ка­ пичу (Edin Kapic), Эдмунду Кейпу (Edmund Саре), Джорджу Онофри (George Onofrei), Германа Риццо (Germano Rizzo), Хаиму Раману (Haim Raman), Жауме Лопесу Qaume L6pez), Джедидайе Риверу Клемонсу-Джонсону Qedidiah River Clemons-Johnson), Джереми Чену Qeremy Chen), Джозефу Перенье Qoseph Perenia), Карлу ван Хайстеру (Karl van Heijster), Малисе Миддлбрукс (Malisa Middlebrooks), Мануэлю Рубио (Manuel RuЬio), Маттео Баттисте (Matteo Battista), Максу Садрие (Мах Sadrieh), Мухаммаду Зохаибу (Muhammad Zohaib ), Нгиа То (Nghia То), Нурану Махмуду (Nouran Mahmoud), Оливеру Форралу (Oliver Forral), Ору Голану (Or Golan), Орландо Алеха Мендесу Моралесу (Orlando Alejo Mendez Morales), Прадипу Челлаппану (Pradeep Chellappan), Праджвалу Ханалу (Prajwal Khanal), Ричу Йонтсу (Rich Yonts), Самуэлю Бошу (Samuel Bosch), Себастьяну Феллингу (Sebastian Felling), Свапнил-кумару Дешпанде (Swapneel-kumar Deshpande) и Видье Винай (Vidhya Vinay). Особой благодарности также заслуживают: • Янник Лемменс (Yannick Lemmens), который ознакомился с одной из самых первых версий рукописи. Его энтузиазм определенно явился движущей силой проекта. • Линус де Мейер (Linus De Meyere); он всегда поддерживает мои проекты, какими бы несуразными они ни казались поначалу. • Питер Бриджер (Peter Bridger), мой связной из мира компьютерных техноло­ гий прошлых лет и хороший друг, который делился историями, радостными и грустными, и отвлекал, когда это было необходимо. • Фелиен Хэрманс (Felienne Hermans) - своей книгой «Мозг программиста~. (также опубликованной издательством Manning) она показала программи­ стам (и издателям), что существует явная потребность в «нетехнических~. книгах на технические темы. • Даниэль Грациотин (Daniel Graziotin), который помог мне обратить внимание на исследования креативности в контексте разработки программного обе­ спечения (ПО), хотя сам в итоге занялся другой смежной темой. И наконец, о человеке, которому я, по-видимому, обязан больше всех. Я благо­ дарю свою жену, Кристин Тулен (Kristien Thoelen), за то, что она терпела мое ворчание и нытье всякий раз, когда я натыкался на очередную преграду во вре­ мя написания книги. У меня есть ощущение, что это не последняя моя книга: прости, дорогая!
Об этой книге Название «Креативный программист~ подразумевает, что эта книга предназначе­ на главным образом для программистов всех уровней, которые заинтересованы в улучшении навыков решения проблем при помощи творческих способностей. Приобретя эту книгу, вы уже раскрыли первую и самую важную часть своего творческого потенциала - стремление узнавать новое! Надеюсь, что последу­ ющие главы несут в себе достаточно информации для того, чтобы поддержать это стремление. В отличие от других книг издательства Manning, эта не требует знания опреде­ ленных языков программирования или технологий. Мы углубимся в мир ког­ нитивной психологии и узнаем, что означает быть Креативным Программистом. Если вы уже занимались программированием - прекрасно, но это не является обязательным требованием. Немногочисленные примеры кода, приведенные здесь, лишены синтаксиса, присущего конкретному языку, и служат как вари­ анты использования различных творческих концепций: не требуется обширных знаний ни языков программирования, ни паттернов проектирования. Даже несмотря на то что эти подходы к творчеству, обычные и необычные, будуr в каждом случае адаптированы к миру программистов, они могут также прийтись по душе непрограммистам, имеющим отношение к технической сфере. Новые концепции пойдут на пользу техническим аналитикам, а руководители узнают, как творчески поддерживать команду. При желании данные методики можно приспособить и к другим предметным областям. В этой книге нас ждет масса таких примеров. КАК УСТРОЕНА ЭТА КНИГА Поскольку термин «творческие способности~ может быть истолкован неоднознач­ но, мы обсудим его происхождение, а также то, что означает быть творческим и как измерить этот показатель, в главе 1, которая направит нас по предстоящему пути. В каждой из глав со 2-й по 8-ю раскрывается и глубоко исследуется одна из главных тем, связанных с творческими способностями. Данные темы можно также увидеть
18 06 этой книге на обороте обложки. Это технические знания, общение, ограничения, критическое мышление, любознательность, творческое состояние ума и креативные методики. Как вы вскоре убедитесь, все они тесно взаимосвязаны. Книга была написана в расчете на последовательное прочтение глав, но не стесняйтесь читать их в лю­ бом порядке, следуя своей любознательности и выбирая то одну, то другую тему. Следите лишь за тем, чтобы не упустить важный контекст. В заключение главы 9 приводятся некоторые итоговые соображения о творче­ ских способностях в контексте программирования и информация к размышле­ нию, чтобы помочь интегрировать то, что вы узнали, в повседневную практику программиста. На случай, если по прочтении этой книги вы почувствуете, что хотите узнать больше, там же приведен список рекомендуемой литературы, сгруппированной по основным темам. В каждом разделе в главах 2-8 вы найдете упражнения, предназначенные для того, чтобы вы остановились и задумались. Некоторые из них легко выполнить, а над некоторыми нужно либо подумать подольше, либо вначале хорошо выспать­ ся и только потом перечитать заново. Я постарался составить их таким образом, чтобы они могли привести к позитивным сдвигам, но ожидаю, что и вы, читатель, со своей стороны этому поспособствуете. Если вы столкнетесь с трудностями или не будете знать, как применить знания в конкретной ситуации, свяжитесь со мной. Я всегда рад помочь чем могу! ФОРУМ LIVEBOOK Приобретая книгу << Креативный программист,>, вы получаете бесплатный доступ к веб-форуму издательства Manning (на английском языке), на котором можете оставлять комментарии ко всей книге либо к отдельным ее разделам или абзацам. Кроме того, можно писать заметки самому себе, задавать вопросы и отвечать на них, а также получать помощь от автора и других пользователей. Форум нахо­ дится по адресу https://liveЬook.manning.com/book/the-creative-programmer/discussion. Информацию о форумах Manning и правилах поведения на них см. на https:// liveЬook.manning.com/discussion. В рамках своих обязательств перед читателями издательство Manning предо­ ставляет ресурс для содержательного общения читателей и авторов. Эти обяза­ тельства не подразумевают конкретной степени участия автора, которое остается добровольным (и неоплачиваемым). Задавайте автору хорошие вопросы, чтобы он не терял интереса к происходящему! Форум и архивы предыдущих обсуж­ дений доступны на веб-сайте издательства, пока книга продолжает издаваться.
От издательства Ваши замечания, предложения, вопросы отправляйте по адресу comp@piter.com (издательство <<Питер», компьютерная редакция). Мы будем рады узнать ваше мнение! На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
Иллюстрация на обложке Рисунок на обложке книги •Креативный программист• называется •Homme Ostjak а la Chasse d'Hermine•, или •Остяк, охотящийся на горностая•. Он взят из собрания Жака Грассе де Сен-Совёр Qacques Grasset de Saint-Sauveur), опубликованного в 1788 году. Каждая иллюстрация в этом собрании детально прорисована и раскрашена от руки. В те времена по одежде человека можно было легко определить, где он жил, чем занимался и какое положение в обществе занимал. Издательство Manning отмечает изобретательность и инициативность компьютерного бизнеса об­ ложками своих книг, основанными на богатом разнообразии многовековых культур, которые возвращаются к жизни благодаря изображениям из собраний, подобных этому.
Об авторе Ваутер Грунефелд - инженер-программист, исследователь в области cornputer science и профессиональный хлебопек. Ваутер был разработчиком корпоратив­ ного ПО на протяжении 11 лет, вдохновлявшим и обучавшим других. После нескольких лет работы он занялся преподаванием, коучингом и интеграцией новых сотрудников. Наблюдая за неудачами многих программных проектов, он задался вопросом: что означает быть хорошим разработчиком? Поиски решения этого вопроса привели к тому, что в 2018 году он оставил работу в IТ-индустрии и вновь влился в научное сообщество. С тех пор Ваутер проводит исследования нетехнических навыков в мире разработки ПО. Он много пишет на эту тему. Список его научных публикаций можно найти по адресу https://brainbaking.com/ works/papers/ (все статьи находятся в открытом доступе). Он также ведет блог по адресу https://brainbaking.com.
В начале творческого пути В ЭТОЙ ГЛАВЕ ✓ Определения и происхождение термина «творческие способности» ✓ Почему стоит быть творческой личностью ✓ Обзор семи составляющих Креативного Программиста ✓ Тест: решение проблем в стиле креативного программирования Нам, людям, свойствешю созидать. Нота f aber1 - человек, созидающий для того, чтобы взять в свои руки судьбу и окружающую среду, - проявляет, по словам философа и романиста Умберто Эко 2 , врожденную человеческую сущность в природе. Приобретя эту книгу, вы сделали первый шаг к вашей врожденной сущности креативного программиста. Поздравляю вас - и добро пожаловать! Возможно, вы решили прочесть эту книгу, чтобы стать более сильным про­ граммистом . Вы обратились по адресу. Только пе стоит ожидать, что здесь вам откроются новейшие технические чудеса, такие как динамический компилятор (лат.) - челове к творящий. 1 Homo faber 2 Эко У. «Открытое произведение~>, 2004. - Примеч. ред.
1.1. Что же такое творчество? 23 некой виртуальной машины, или что вы узнаете более подробно о языке х или у. Эта книга далека от привычных книг по программированию. Мы будем работать на другом уровне. Вы узнаете, как подходят к решению про­ блем в высшей степени творческие личности (и группы), каковы их привычки и мыслительные процессы и как они находят решения, являющиеся одновремен­ но и результативными, и творческими. Когда вы станете сертифицированным Креативным Программистом, вы будете с легкостью решать любые технические загадки и быстро осваивать сразу несколько языков программирования - во всяком случае, в теории. Выбрали вы программирование как новую для себя область знаний или являетесь опытным разработчиком, я надеюсь, что вы ов­ ладеете по меньшей мере несколькими творческими приемами и примете их на вооружение. Больший опыт в такой технической отрасли, как программирование, не обя­ зательно означает больший творческий потенциал. Я работаю в индустрии разработки ПО свыше десяти лет и был свидетелем немногих взлетов и многих падений. Казалось бы, ПО ждет неминуемый провал. Прагматичный программист и соавтор <<Аgilе-манифеста разработки программного обеспечения,> ( «Manifesto for Agile Software Development>>) Энди Хант начал свою книгу <,Pragmatic Thinking & Learning» Программист вы на созвучной этому тревожной ноте: wzu расстрое1тый пользователь, возможио, вы уже начали подозревать, что разработка ПО является самым трудным предприятием, которое когда-либо замышлял и воплощал человек. Его сложиость заставляет нас работать на пределе наших способностей, а неудачи часто бывают весьма зрелищными и служат пищей для новостей. Подход Энди заключается в том, чтобы научить думать и познавать новое; мой же состоит в том, чтобы научить относиться к проблемам творчески. Будучи свидетелем множества провалов программных продуктов (и [бес]сознательно помогая их осмыслить), я пришел к убеждению, что проблема может заключать­ ся не в технических знаниях, а в навыках, не имеющих отношения к технике. Одержимость этой мыслью вновь привела меня к научно-образовательному сообществу, которому я посвятил последние четыре года, исследуя творческие способности в разработке ПО. Плод моей гибридной научно-программистской работы вы держите в руках ( если, конечно, вы предпочитаете читать старые добрые бумажные книги). Однако прежде чем мы приступим к работе, нужно найти ответы на некоторые вопросы. 1.1. ЧТО ЖЕ ТАКОЕ ТВОРЧЕСТВО? Ученые-психологи бьются над этим вопросом десятилетиями. Результатом явля­ ется около ста разных определений творчества. Если вы зададите вопрос о том,
24 Глава 1. В начале творческого пути что такое творчество, вашей десятилетней дочери, то чтобы разобраться в этом, она предложит вам вместе нарисовать что-нибудь красками и кисточкой. Ваш прижимистый сосед считает, что проявлением творческих способностей является уход от налогов. А вы сами, покопавшись в начинке компьютера, можете прийти к выводу, что и ваша дочь, и сосед ошибаются: настоящие творцы - инженеры, которые все это придумали! Так кто же прав? Возможное решение заключается в том, чтобы свести суть всех различающихся мнений к одному определению. Исследователи креативности Кауфман и Стерн­ берг1 утверждают, что идея является творческой, если соответствует следующим признакам: • Считается новаторской и оригинальной. • Обладает высоким качеством. • Имеет непосредственное отношение к текущему заданию. Переход на базу данных NoSQL может являться качественным (в смысле <,не количественным~,,) решением, как было доказано в прошлом, по я сомневаюсь, что эта идея является оригинальной. Если проблема не связана с данными, то она (идея) может даже оказаться не имеющей отношения к делу. Впрочем, если вы или ваша команда до этого никогда не работали с NoSQL, то она может считаться новаторской. Этот эссенциалистский подход к творчеству несет в себе множество недостатков: в частности, он полностью игнорирует контекст. Исследования креативности постепенно сдвигаются по направлению к более общесистемному подходу, при­ нимающему во внимание параметры контекста. Звучит сложновато, и я уже представляю, как вы готовитесь услышать очередное сухое научное определение. К счастью, все не так. УПРАЖНЕНИЕ Как вы думаете, в каком случае можно считать что-либо творческим? Поразмышляйте над этим вопросом несколько минут. Когда в последний раз вы пред­ лагали решение, которое бьшо воспринято как необычайно творческое? Готово? Хорошо. Приоткрою завесу тайны: что-либо можно считать творческим, если еще кто-то считает это таковым. Просто, не так ли? Креативность - это социальный вердикт 2 • Воплотились ли ваши усилия как программиста в твор­ ческий результат, решают ваши коллеги. По всей видимости, вы не можете сами провозгласить что-либо творческим. Это социокультурное явление. 1 2 James С. Kaufman and Robert J. Sternberg. Creativity. Change: The Magazine of Higher Learning, 2007. Vlad Petre Glaveanu, Michael Hanchett Hanson, John Baer, et а!. Advancing creativity theory and research: А socio-cultural manifesto. The J ournal of Creative Behavior, 2020.
1.1. Что же такое творчество? 25 Эксперты в области искусства, которые объявляют ту или иную картину тво­ 1.1). В ответ мы по­ рением гения, диктуют свое мнение нам, дилетантам (рис. слушно замираем в благоговении. А если бы эта картина была сочтена критиками примитивной и неинтересной, мы бы не удостоили ее и взглядом. Скорее всего, она никогда не оказалась бы в числе музейных экспонатов. Поскольку у нас нет необходимых технических знаний о живописи, нам приходится полагаться на мнения экспертов в данной сфере. Рис. 1.1. Что есть искусство? Согласно Марселю Дюшану (Marchel Duchamp), произведением искусства может являться писсуар с автографом. Нью-Йоркская и все же галерея отклонила его «Фонтан» Дюшана произвел известный фурор в искусстве ХХ века. Сейчас произведение считается в высшей степени творческим. Фото из открытых источников То же справедливо в отношении программирования, да и любой другой сферы деятелыюсти. Если члены вашей команды хлопают вас по плечу, приговаривая: <<Отличный код! Творчески обошел проблему!,>, - то, стало быть, вас вдруг по­ высили до звания «Креативный программист~, при условии, что члены вашей команды, играющие роль экспертов, не просто проходили мимо. Впрочем, в другой компании то же самое решение может быть сочтено скучным: там все это уже видели. Систематический подход к творчеству объясняет также печальный количе­ ственный перевес непризнанных гениев. Само собой разумеется, что если бы пи одна картина Винсента Вап Гога не была обнаружена, мы не считали бы его гением творчества. Мы не считали бы его таковым и в том случае, если бы ни один эксперт в области искусства не признал картины Ван Гога экспрессив­ ными и новаторскими. Собственно, именно это и происходило при его жизни. Его работы раз за разом отклоняли кураторы Парижского салона1, которые традиционно были ответственны за официальные художественные выстав­ ки Академии изящных искусств (Academie des Beaux-Arts) в период между 1 Парижский салоп (фр. P-aris Salon) - одна из самых престижных художественных вы­ ставок Франции, официальная регулярная экспозиция парижской Академии изящных искусств. - Примеч. пер .
Глава 1. В начале творческого пути 26 17 48 и 1890 годами. Но их консерватизм продлился недолго. Современные художники в конце концов сместили с пьедестала классицизм и возвели на опустевшее место импрессионизм; импрессионисты начали организовывать собственные независимые выставки. Как мы увидим далее, время и место яв­ ляются в равной степени значимыми факторами творчества. Многие работы Ван Гога ныне входят в число самых дорогих картин из когда-либо проданных. Истоки творчества Восприятие творчества много раз менялось на протяжении истории человечества. В наши дни, стоит нам услышать это слово, на ум сразу приходит искусство. В антич­ ной Греции искусство (по-гречески techne, это слово позже было преобразовано - в слово «технология») подразумевало строгое следование правилам. Художники и скульпторы лишь имитировали, они не создавали - и только поэтам дозволялась «свобода действий». Люди творческих профессий открывали, а не изобретали. Позднее в Европе, где господствовало христианство, созидание стало подразумевать исключительно сотворение богом из ничего (creatioexnihilo). Мы, скромные человеки, нам не дозволялось - создавать'. просто делали себе разные вещи. Мы не могли - Только в эпоху Возрождения философы и люди искусства начали осознавать себя изобретателями, воплощая новые объекты в соответствии с собственными пред­ ставлениями, постепенно освобождая искусство от ремесленности и двигаясь по направлению к созиданию. Понадобилось еще два века для того, чтобы этот термин был применен по назначению, что встретило серьезное сопротивление со стороны христианства. Творчество не служило предметом научных исследований до 1950-х годов. Как и программирование, это относительно новое понятие! Я мог бы разработать хитроумный вариант ext4, самой популярной файловой системы для Linux. Наверное, я назвал бы его <<WouterFS,>. В этом так и сквозит креативпость (и упадок). Если я никому об этом не скажу, то проект обнаружат разве что после моей смерти. К счастью, я реалист. Технологии развиваются стремительно, и к тому времени выйдет, вероятно, лает WouterFS ext65, что, скорее всего, сде­ ненужной. А может быть, когда-нибудь я решусь показать свою реализацию тем, кто занимается поддержкой нечто заурядное и незначительное - ext. Если они воспримут ее как а вероятнее всего, так оно и случится, - я должен буду принять свое поражение. Однако если к моему коду ошесутся как к творческому продукту, они могут даже внедрить некоторые функции в Другими словами, все, что я могу сделать, шать свою работу творческой 1 - - ext4. это усердно работать, а провозгла­ пе мой удел. Изначальное эксклюзивное право Боrа на творчество подчеркивается средствами са.\1их языков: зидать - creation - create - Creator, творчество Создатель. - Примеч. ред. сотворение - Творец, создать - со­
1.2. Зачем вообще нужно творчество 1.2. 27 ЗАЧЕМ ВООБЩЕ НУЖНО ТВОРЧЕСТВО Звучит уныло, не правда ли? Зачем утруждать себя чтением книги о том, как стать креативным программистом, если все упирается в чью-то прихоть? А за­ тем, что многие привычки и личностные качества, описанные в последующих главах, значительно повышают ваш потенциал как будущего креативного программиста. Тем не менее это не отвечает на вопрос «зачем~. Зачем мучить себя попытками стать креативным программистом, если вы и так компетентный специалист? Ответ и здесь лежит во многих плоскостях. Рассмотрим основные причины, по которым стоит вести жизнь креативного разработчика. Первой причиной, говоря по-простому, является то, что таково желание рабо­ тодателей. Уже многие годы объявления о приеме на должность разработчика ПО содержат слово «креативпый~ 1 • Всем известно, что описания вакансий пестрят ничего не значащими словами, которые напихивают в них сотрудники отдела кадров, стремясь привлечь как можно больше кандидатов. В наши дни в тренде находятся мягкие, или гибкие, навыки (soft skills). Вместо того чтобы просматривать объявления, мои коллеги и я провели собственное исследование, просто задав вопрос экспертам в области разработки ПО: «Какие нетехнические навыки, по вашему мнению, требуются, чтобы быть блестящим разработчиком?~ 2 Угадайте, какое слово мелькало в ответах. В общем, если вы хотите продать себя, нужно быть креативным. УПРАЖНЕНИЕ В каких случаях вы расцениваете свою работу программиста как творческую? В каких случаях - как какую угодно, только не творческую? В каких случаях вы расцениваете чужой код как творческий? Есть ли разница? Вам может быть неприятно отвечать на подобные приземленные вопросы, потому что ответы способны повлечь за собой (не)приятные открытия. Что же до столь высокой востребованности творческого начала, причина это­ го заключается в решении проблем. Когда обычные методы не срабатывают, к успеху может привести всплеск креативности. Знание того, как работает творческий процесс, - уже полдела. Например, если ваше веб-приложение с трудом обрабатывает тысячи запросов в секунду, нелишне будет задуматься о постановке сообщений в очередь, балансировке нагрузки, кэшировании или сопрограммах. Если никто из членов команды не предложит этого, вы, 1 2 Judy L. Wynekoop and Diane В. Walz. Investigating traits of top performing software developers. Information Technology & People, 2000. Wouter Groeneveld, HansJacobs,Joost Vennekens, and Kris Aerts. Non-cognitive abllities of exceptional software engineers: А Delphi study. Proceedings of the 51st АСМ Technical Symposium on Computer Science Education, 2020.
28 Глава 1. В начале творческого пути вероятнее всего, будете ходить кругами. Креативный программист вырывается из этого круга. Впрочем, иногда решения проблем бывает недостаточно. Порой проблема даже не выявлена, не говоря уже о ее определении. В таких случаях типичные навыки решения проблем окажутся неэффективными: для того чтобы увидеть проблему, вам потребуется творческое чутье. Когда в 1831 году Чарльз Дарвин отплыл из Плимута на корабле <<Beagle,> в путешествие, продлившееся пять лет, у него не было намерения связывать естественный отбор с происхождением видов: этой проблематики тогда просто не существовало. Задачей исследователей британского королевского флота было лишь нанести па карту очертания береговой линии Южной Америки. Экзотический растительный и животный мир, с которым столкнулся Дарвин и о котором он делал подробные заметки, заронил семена его теории, которые взошли через много лет после путешествия. Творческий продукт или процесс? Заметьте, что, восхищаясь творческой работой, мы почти всегда восхищаемся про­ дуктом - конечным результатом всех пролитых потоков крови, пота и слез. Про ­ дуктом может стать умный алгоритм или изобретенный паттерн проектирования . (Подобные вещи вызовут восхищение в основном у разработчиков ПО.) А конечным результатом может явиться и целое приложение, которое, в идеале, сочтут креатив ­ ным ваши пользователи . Однако творческим может быть не только продукт, но и процесс, предшествующий созданию этого продукта . Только вот процесс этот, как правило, невидим и оценить его невероятно сложно. Творческие процессы могут порождать творческие про­ дукты. Ударение в этом предложении делается на слове «могут»: результатом вполне может явиться и катастрофа. Справедливо также противоположное утверждение : творческий продукт может оказаться результатом самого обычного процесса. Привлечение экспертов для оценки креативности продукта называется методом согласованных оценок (coпsensual assessment technique) . Это популярный термин, предложенный Терезой Амабиле (Тегеsа М . Amablle) в 1988 году. Когда вы будете в следующий раз смотреть передачу «America's Got Talent»', помните, что она при­ держивается надежных научных методов! Дарвин не решал проблемы - он их выявлял. Что можем извлечь из образа мыш­ ления Дарвина мы, программисты? Обычно мы завалены небольшими и четко 1 «Америка ищет таланты~,, - телепроект па канале NBC. Это шоу талантов, в котором выступают различные талантливые люди всех возрастов, стремящиеся выиграть глав­ ный приз - один миллион долларов. - Примеч. пер.
1.3. Разные уровни творчества 29 определенными ( под)проблемами, задачами в пределах своей плавательной до­ рожки, которые каким-либо образом должны попасть в графу <iГотово>->. Однако, возможно, по пути мы соберем достаточно фрагментов информации, соединив которые сформулируем совершенно новый вопрос. Весьма вероятно, мы обна­ ружим проблему, о существовании которой наши клиенты даже не подозревали. Креативный программист и выявляет проблемы, и решает их. А к путешествию Дарвина мы вернемся в главе 6. Другая причина, по которой стоит уделять внимание суждениям других о творчестве, - мнение ваших коллег должно быть значимым. Если вы еще - это командная работа. Творчество в отрыве от не заметили, разработка ПО окружающих бессмысленно (подробнее об этом будет рассказано в главе 3) именно потому, что это социальный конструкт. Ощущение психологической безопасности, которое возникает благодаря взаимному уважению, позволяет каждому чувствовать себя непринужденно, повышая тем самым сплоченность команды. Это открывает возможность учиться и расти самому, а также помогать учиться и расти другим. Третья причина быть креативным состоит в том, что творчество означает удовольствие. Многие эксперты, с которыми мы беседовали, отмечали, что единственная причина, по которой люди работают программистами, - это возможность проявлять свои творческие способности. Креативные про­ граммисты получают от своей работы огромное удовольствие. Им нравится погружаться в нее, выходить из своей зоны комфорта, комбинировать не­ обычные идеи, обсуждать различные подходы с другими и быть с ними на одной волне. Если говорить кратко, то креативные программисты поддаются своему творческому порыву. Они становятся тем в виду Умберто Эко. homo faber, которого имел Многие творцы пытаются достичь бессмертия при помощи своих творческих достижений, которые могут пережить их бренное тело. Тех немногих счаст­ ливчиков, кому удается осуществить свою мечту оставить неизгладимый след в мире, почитают как истинных гениев. Нам же, программистам, работающим с технологией в высшей степени изменчивой, наверное, лучше обуздать свои устремления прославить собственное имя в веках. Уверен, что к тому времени, когда эта книга увидит свет, десятки ныне существующих книг о программиро­ вании спокойно переедут на полку для <iВИнтажа>->. А мы все прекрасно знаем, что это означает. 1.3. РАЗНЫЕ УРОВНИ ТВОРЧЕСТВА Возможно, вы заметили, что, говоря о творчестве, я время от времени употре­ бляю слово <<гений>->. Конечно, для того, чтобы творить, пе нужно быть гением.
30 Глава 1. В начале творческого пути Пытаясь классифицировать разные уровни творчества, исследователи вывели следующую таксономию 1 : • Творчество с маленькой буквы «т», wiu повседневное творчество. Это сози­ дание в масштабах одной личности: когда делаешь что-то новое, такое, чего не делал раньше, например, кросс-компиляция вашей реализации любимой игры на С++ 11 для игровой консоли • Game Воу Advance. Творчество с большой буквы «Т», WlU выдающееся творчество. Это означает делать что-то новое, такое, чего не делал никто и никогда, например порти­ рование Ruby 3 для запуска на 486-й машине под управлением DOS 6.22. Кстати, хорошая идея ... Линус Торвальдс - Творец с большой буквы. Он полностью изменил предметную область, связанную с операционными системами (а также с контролем версий). Как утверждают некоторые ученые, значимые творческие произведения, меня­ ющие целые области знаний, являются плодами труда гениев. А вот разработка творческого решения проблемы по обработке запросов в вашем веб-приложении вряд ли потрясет мир. Как и всё в нашем мире, эта таксономия не могла не подвергнуться критике. Творчество с маленькой буквы «т1> часто выставляется как ничем не приме­ чательное и банальное. Величие же Творчества с большой буквы «Т >> может заставить творцов уступить неизбывной потребности создать нечто, способное изменить мир. Исследователь творческих способностей Марк Ранка (Mark Runco) полностью отвергает различия между большим и малым, заявляя, что реальность не подлежит категоризации 2 • Другие в ответ разрабатывают соб­ ственные теории: так, существуют Н-творчество (historical - историческое: войдет ли изобретение в учебники истории), Р-творчество (personal - лич­ ное), а также не столь очевидные слои между маленькой «т1> и большой «Т1>, называемые «творчество с уменьшенной буквы "т"1> и «профессиональное творчество с маленькой буквы "т",>. Некоторые исследователи, такие как Михай Чиксентмихайи (Mihaly Csikszentmihalyi), проводят интервью с ге­ ниями творчества, чтобы вычленить из этих бесед практические методы для творцов в повседневности, в то время как другие утверждают, что это дает искаженную картину. Короче говоря, в научных исследованиях творческих способностей царит беспорядок. Тем не менее существенную пользу может принести представление о творчестве как о системе различных <<уровней>>, что показано на рис. 1 2 1.2. Peter Merrotsy. А note on Ьig-C creativity and little-C creativity. Creativity Research Journal, 2013. Mark А. Runco. «Big С, littlc с1> creativity as а false dichotomy: Reality is not catcgorical. Creativity Research Journal, 2014.
1.4. Дорожная карта пути к креативности Рис. 1.2. Пример ближних кругов, 31 в которых работает программист. Код, который признали креативным близкие коллеги, передается на рассмотрение дальше и получает хвалебные отзывы от команды. Однако в другой команде могут достичь того же, и тогда на уровне компании вашей славе придет конец. Поскольку творчество имеет социокультурную зависимость, смена команд меняет и интерпретацию творчества. Помнить об этих кругах может оказаться весьма полезным. Всемерно распространяя информацию, вы, безусловно, поможете своей команде и компании, но начинать нужно с себя 1.4. ДОРОЖНАЯ КАРТА ПУТИ К КРЕАТИВНОСТИ Эта книга не о том, как стать гением, и тем более пе о <~генах творчества»: скоро вы узнаете, что их просто не существует, скорее она посвящена процессу решения проблем. Надеюсь, что, применяя различные творческие методы и новый взгляд па творчество, аккуратно вписанные в семь разных, но тесно переплетенных тем, вы станете еще более сильным программистом. Если же вы не программист, не переживайте: вы увидите, что многие из этих методов можно с легкостью пере­ нести в другие предметные области. Книгу Энди Хапта <<Pragmatic Thinking & Learning» открывает нарисованная вручную ментальная карта (опа же майндмэп), которая может служить также дорожной картой нашего проекта. Поскольку в своей книге Энди тоже апел­ лирует к неочевидной стороне программирования, я позволил себе на волне
32 Глава 1. В начале творческого пути вдохновения, вызванного этим рисунком, использовать его, чтобы внести в ис­ следование1 элемент оживления, - это было признано весьма творческим шагом и сразу же принято. Майндмэп, как показано на рис. 1.3 и на внутренней стороне обложки этой книги, служит также путеводителем по ней. Каждое «щупальце» на этой карте представляет главу об определенной теме, связанной с творчеством. ПРИМЕЧАНИЕ Все иллюстрации в этой книге нарисованы мною от руки, в полном соответствии с темой творчества. 1.4.1. Семь составляющих креативноrо проrраммирования Вот приключения, которые нас ждут: Технические знания Все, кто создает творческий продукт, должны иметь четкое представление о состоянии дел в своей предметной области. Это может показаться настолько очевидным, что тратить на аргументацию целую главу было бы слишком. Од­ нако программист не может быть креативным, если не будет в первую очередь программистом. Само собой разумеется, что любому делу должно предшество­ вать обучение. Но остановиться и поразмышлять о различных способах полу­ чения информации, постоянного обучения, осознания когнитивных искажений и управления знаниями тоже бывает очень полезно. Креативный программист понимает, как преобразовать непрерывный поток знаний в новые идеи. Сотрудничество/общение Творчество не вершится в изоляции: оттачивание идей - процесс социальный. Без какой-либо обратной связи было бы невозможно возвести идею с легким на­ летом оригинальности в ранг превосходной. Подтолкнуть вас к изменениям могут и ваши коллеги. В главе 3 мы рассмотрим концепцию кластеров гениев, узнаем, как собирать команды мечты, а также познакомимся с методиками повышения креативности команд. В статье, опубликованной моими коллегами и мной 2 , эта тема названа «общением>> (communication), поэтому мы будем придерживаться этого термина, хотя, оглядываясь назад, можно сказать, что более подходящим могло бы оказаться слово «сотрудничество>> ( collaboration). 1 2 Wouter Groencveld, Laurens Luyten,Joost Vennekens, and Kris Aerts. Exploring the rolc of creativity in software engineering. 2021 IEEE/ АСМ 43rd International Conference on Software Engineering: Software Engineering in Society. Wouter Groeneveld, HansJacobs,Joost Vennekens, and Kris Aerts. Non-cognitive aЬilities of exceptional software engineers: А Delphi study. Proceedings of the 51st АСМ Technical Symposium on Computer Science Education, 2020.
1.4. Дорожная карта пути к креативности . . • , c: t OJro&oR, IIIТYPM .). - , , с l2 KPEAТll&HOC.Tb "Е. .. О i ,(. • ~t.г -.ъ~:~ ,• ~ u 33 С.МС.ТЕМА YПPA&ЛEHIIJI личными е'\'\\ JHAHIIJIMII 2 HJ ) ' , ·•ci . Q \ ~.....----1-с_Л~д □) I Т60РЧЕ.С ,' нс 1 1 1 1 1 . ntQJ!'I (;>&HYТPEHHIIE 1 ( оптнмАльныя,, t ~ \ \ : ,j~ ~ \ С? БАЛАНС Q (yм.wi) JЭФФЕКТМ&НОС.ТЬ l С.ЕТИ РЕЛЕ6АНТНОСТЬ ~ ~ КОНТЕ. .. ,..., ПРОrРА .?~ ... с·, / .: . ~ ааа QDD , ОКРУ.#.ЕНИЕ Q 'j.Q.0 =- Н.3 &~Q!EK зоны • O КОМФОРП..._, I -= ОТИ&ЩИЯ • 1 -л v ~ .... 1-\'I.П.IIAJI PHiOTA Рис.1.3. Майндмэп книги «Креативный программист» 1 :' L ЖИдКИЕ -1,0 : @> \НЛОI.ЕННЫЕ : f\.@C.AMOOrPAHIIЧEHIIJI ; 1 ✓-
34 Глава 1. В начале творческого пути Креативные программисты всегда осознают тонкую взаимосвязь между идеями, личностями и командами. Ограничения Приступая к решению какой-либо задачи, нужно принимать во внимание огра­ ничения, внутренние или внешние. Вопреки расхожему мнению, ограничения на самом деле подстегивают творчество, а не подавляют его. Мы изучим различные примеры всплесков творчества, которые явились результатом преобразования раз­ дражающих, как могло бы показаться, ограничений в неожиданные преимущества. Креативные программисты знают, как извлечь выгоду из налагаемых ограниче­ ний, вместо того чтобы задним числом только жаловаться на них. Критическое мышление Сгенерировать кучу идей - это только полдела: другая половина ( пожалуй, более трудная) заключается в тщательной отбраковке до тех пор, пока не останется лучшая идея. Тогда - и только тогда - наступает время действовать. В главе 5 мы постараемся установить симбиотические отношения между критическим мышлением и вечным фонтаном безумных идей. Мы обнаружим, что творчество предполагает не только генерацию идей, но и принятие решений и их выполнение. Креативные программисты способны легко переключаться между генерацией идей, разрастающихся как снежный ком, и их критической оценкой. Любознательность Почему вы выбрали эту книгу? Было ли вам любопытно, что внутри? Любите ли вы учиться? Нацелены ли вы прочесть эту книгу от корки до корки? Если ответ «да>>, то это отличное начало! Как полагает исследователь творчества Михай Чиксентмихайи, любознательность и настойчивость являются двумя определяющими чертами творческой личности 1 • В последующих главах мы будем регулярно возвращаться к замечательному труду Чиксентмихайи по данной теме. Любознательность неизбежно мотивирует к познанию (технические знания). Любознательность побуждает задавать вопрос «почему» (критическое мышле­ ние). Мы рассмотрим, чем умение удивляться полезно не только для рассеянного профессора, но и для креативного программиста. Творческое состояние ума Все мы знаем, что частые прерывания пагубно сказываются на процессе програм­ мирования. Надлежащее состояние ума значительно повышает результативность 1 Mihaly Csikszentmihalyi. Creativity: Flow and the psychology of discovery and invention. Harper Perennial, reprint edition, 2013 (М. Чиксентмихайи. <~Креативность. Поток и психология открытий и изобретений>>).
1.4. Дорожная карта пути к креативности 3S созидательного труда. Мы изучим, как работают поток и озарение, что может дать нам проникновение в суть вещей и как увеличить количество этих неиз­ менно важных, по непредсказуемых моментов, когда мы восклицаем «Ага!~>. Работать над собственным состоянием ума - одно дело. Совсем другое - фор­ мировать состояние ума команды или компании. Для креативного программиста важно и то и другое. Креативные методики Наконец, мы обсудим несколько практических творческих методик, которые могут оказать положительное влияние на понятия, разъясняемые в предыдущих главах. В соответствии с общесистемным определением творчества, эти методи­ ки переплетены со всеми направлениями творческого решения проблем. Они не обязательно вписываются «тютелька в тютельку~,, лишь в одну конкретную тему. Мы окинем критическим взглядом классические сессии мозгового штурма и более необычные методики, такие как <<Поставить па ноги~,, ваши идеи. 1.4.2. Тест: решение проблем в стиnе креативноrо программирования Что, если по мере чтения этой книги вам захочется оценивать рост своего по­ тенциала как креативного программиста, связанный с конкретным заданием или проектом? Как мы вскоре узнаем из последующих глав, существует множество средств измерения творческих способностей. Какие-то из них оценивают на­ выки дивергентного мышления, другие касаются в основном конечного про­ дукта. К несчастью, ни один из существующих инструментов не был разработан в компьютерной среде и не использует системный подход. Чтобы исправить это положение дел, мои коллеги и я составили опросник для оценки самого себя, касающийся творческого решения проблем и основанный па семи темах, обсуждаемых в этой книге 1• Опросник был с успехом опробован па студентах первого и последнего курсов, изучающих технологии разработки ПО, и проверен несколькими экспертами в данной отрасли. Он ни в коем слу­ чае не может считаться всеобъемлющим решением для измерения творческих способностей, но на сегодняшний день является наиболее верным средством для определения того, как характеризует программиста каждая из семи тем. Вопросы приобретут смысл, когда вы закончите читать соответствующую главу. Некоторые из них пробудят в вас сомнения: вписывается ли вопрос в рамки только одной темы? Не стоит беспокоиться: да, кое-какие из них выходят за 1 Wouter Grocncvcld, Lynn Van dcn Broeck,Joost Vennekens, and Кris Aerts. Sclf-assessing crcative proЫcm solving for aspiring softwarc dcvelopcrs: А pilot study. Procccdings of thc 2022 АСМ Confcrencc on Innovations and Tcchnology in Computer Science Education, 2022.
36 Глава 1. В начале творческого пути эти рамки. Как мы вскоре убедимся, креативность нелегко «затолкать~ в одну категорию. Возможно, опросник будет полезно заполнить сейчас , перед тем как приступать к первой главе, чтобы получить общее представление о своем текущем уровне как креативного программиста. Не забывайте, это тест для самопроверки, по­ этому постарайтесь быть честными: ложь лишь создаст иллюзию того, что расти больше некуда! Заполняя опросник, попробуйте связать вопросы с вашим те­ кущим заданием (проектом). Скорее всего, от проекта к проекту ответы будут варьироваться. 1 - совершенно не 4 - согласен или 5 - Каждый вопрос подразумевает ответ, выраженный числом: согласен, 2- не согласен, 3- пи согласен, ни не согласен, совершенно согласен. Поставьте знак <<Х~ в соответствующем столбце. Таблица 1.1. 56 вопросов теста решения проблем в стиле креативного программирования 1. Технические знания 1 2 3 4 5 1 2 3 4 5 Во время работы над проектом я приобрел много знаний . Я изучил и применил множество методик программирования. Я получил представление о той предметной области, к которой относится проблема. Меня привлекал технический аспект программирования. Я думал о процессе обучения и о том, как его улучшить. Мне нравилось работать над этим проектом, потому что многие его аспекты были мне неизвестны. Я пытался соотнести новые знания с тем, что знал до этого . Благодаря этому проекту я узнал многое из того, что не относится к программированию. 2.Общение Я регулярно запрашивал обратную связь у моих коллег. Я визуализировал проблему на маркерной доске или на бумаге. Я регулярно запрашивал обратную связь у моих клиентов и/или у конечных пользователей. Я помогал коллегам по команде в решении их задач. Свои задачи я выполнял вовремя, чтобы у членов моей команды не было проблем с дедлайнами. Я поддерживал идеи и усилия коллег по команде.
1.4. Дорожная карта пути к креативности Я был так горд нашими результатами, что всем их демонстрировал. Я тщательно обдумывал предложения, сделанные другими. Я регулярно размышлял о корректности моих решений. Я не стал работать хуже из-за того, что сроки поджимали. Я старался сделать мой код как можно более элегантным. Я старался выявить ограничения, налагаемые задачей. Мою программу протестировали мои друзья и/или члены семьи (по возможности). Я был способен принимать правильные решения даже в условиях полной творческой свободы. Программирование в сжатые сроки ускорило процесс моего обучения. Я регулярно тестировал программу лично и уделял внимание легкости пользования ею. Во время обсуждения проблем я часто предлагал альтернативы. Я регулярно взвешивал различные варианты, имевшиеся в нашем распоряжении. Я брал на себя смелость полностью переписать свой код, когда дело не ладилось. Я использовал несколько источников для самостоятельного поис­ ка информации. Я считал, что важно спрашивать членов команды, как они реали­ зовывали что-либо. Я всегда проверяю надежность источника, когда ищу информа­ цию о чем-либо. Мне было важно на сто процентов понимать, почему что-либо работает именно так, как работает. Наблюдение за другими проектами побуждало меня размышлять над моим собственным. Во время работы над проектом я выходил далеко за пределы зоны комфорта. Многие составляющие проекта подстегивали мою любознатель­ ность. 37
38 Глава 1. В начале творческого пути Таблица 1.1 (окончание) Мне нравилось быть причастным к разным аспектам проекта. Мне нравилось глубоко вникать в некоторые аспекты. Сложность проекта являлась стимулом для меня. Я чувствовал стремление реализовать дополнительные функции. Разработка проекта принесла мне много удовольствия. Мне не приходилось напрягаться и подталкивать себя, чтобы завершить проект. 6. Творческое состояние ума , 2 3 4 s 1 2 3 4 5 Я долгое время оставался сосредоточенным на одной части проекта. Я использовал средства повышения производительности, чтобы еще больше сосредоточиться на сути проблемы. Я считаю этот опыт очень полезным. В работе над проектом время летело быстро. Я обнаружил, что знаю достаточно для того, чтобы соответствовать высоким требованиям проекта. Я программировал почти автоматически. Я точно знал, чего хотел достичь. Меня не беспокоило, что думают о моем коде другие. 7. Креативные методики Для решения одной проблемы я использовал множество разных методов. Для решения чего-либо я привлекал знания из других областей. Для того, чтобы справиться с проблемой, я комбинировал разные идеи. Я намеренно делал перерывы, чтобы мысли как следует улеглись. Мы вместе с коллегами предпринимали мозговой штурм, чтобы сгенерировать новые идеи. Время от времени я делал шаг назад, чтобы увидеть общую картину. Если возникали проблемы, я черпал вдохновение в других проектах. Я никогда не чувствовал, что оказался в тупике.
1.5. Структура последующих глав 39 Если вы вычислите средний балл для каждой темы, то сможете представить результаты в виде лепестковой диаграммы наподобие той, которая приведена па рис. 1.4. В отличие от других средств оценки, которые мы рассмотрим в по­ следующих главах, здесь невозможно свести результат к единственной цифре. Это полностью разрушило бы контекстные связи творческого решения проблем, которые мы так тщательно пытались сохранить. 5. КРИТИЧ ЕС.КОЕ ~Ю50.3НАТЕЛЬНОС.ТЬ 6. lt. МЫШЛЕНИЕ Т80РЧЕС.КОЕ С.ОС.ТОЯНИЕ УМА 1 3. ':f. КРЕАТИ8НЫЕ МЕТОЛ.МКМ оrРАНИЧ ЕНИЯ z.. ---- --./ ---- O5\4ЕНИЕ Рис. 1.4. Лепестковая диаграмма - ' , ✓ - - (ТЕХНИЧЕСКИЕ JНАНИЯ возможных результатов теста решения проблем в стиле креативного программирования. Если вам лень рисовать что-то наподобие этого, лопробуйте пройти онлайн-опрос по адресу https://brainbaking.com/cppst/ Заполнение опросника может принести интересные и разнообразные результаты в зависимости от проекта, над которым вы работаете: опросник намеренно тесно привязан к контексту. Возможно, какой-то проект покажется вам скучным, что выразится в низких баллах оценки любознательности. Или же вы полностью выложитесь как технический специалист на другом проекте, что выразится в вы­ соких баллах, па численных за технические знания. Опять-таки, пе беспокойтесь о том, сколько баллов наберете: этот тест в основном служит способом постичь суть вашего текущего творческого процесса. По мере прочтения данной книги время от времени возвращайтесь к этим вопросам, чтобы оценить, насколько вы стали лучше, па практике. 1.5. СТРУКТУРА ПОСЛЕДУЮЩИХ ГЛАВ Каждая глава (пе считая этой) начинается с вводного рассказа, который задает настроение и приводит примеры творческого мышления внутри и за пределами
40 Глава 1. В начале творческого пути мира технологий. Вы можете также заметить, что я имею склонность, помимо обычных примеров, для прояснения контекста обращаться к видеоиграм. Это происходит не просто потому, что я люблю игры. Десятки исследований, в том числе и наше с коллегами, доказали, что визуальные образцы вызывают боль­ ший интерес и использование игр способствует обучению в игровой форме. Поскольку эта книга о креативном программировании, было бы непростительно не обратиться к историям о разработке игр. В конце концов, игры ведь тоже считаются произведениями искусства, не так ли? Главы также щедро сдобрены упражнениями (в тексте они выделены визуально). Это не книга о технике программирования, поэтому упражнения не носят того практического характера, к которому вы, возможно, привыкли. Однако они все же имеют свою ценность как информация к размышлению и могут служить предметом ретроспективного изучения. Разумеется, я не могу принудить вас вдруг стать креативными: все, что в моих силах, - указать направление. Преоб­ разование этих указаний в действие лежит уже на вашей совести. Иногда в качестве отступления я отхожу от темы, чтобы рассказать что-нибудь забавное и познавательное. Вы узнаете такие разделы по серому фону врезок посреди обычного текста. Если вы торопитесь, их можно пропустить, хотя если вы решите так поступить, вы, скорее всего, упустите повод проявить творческие способности. Каждая глава заканчивается чек-листом, который подытоживает освещенные в ней понятия. Чек-лист можно использовать для того, чтобы освежить материал в памяти, только, пожалуйста, учитывайте контекст: простой просмотр заключе­ ний не приблизит вас к овладению креативным программированием. Не может это служить и исчерпывающим обзором лучших практик. Что ж, теперь вы готовы к творческим приключениям. Устремимся же им на­ встречу!
Технические знания В ЭТОЙ ГЛАВЕ ✓ Как собирать, усваивать и применять знания ✓ Методика управления знаниями «цеттелькастен» ✓ Рабочий процесс ведения умных заметок Одинокая ворона потревожила мирное молчание древней корсиканской ночи. Гражданин Рима испанского происхождения проводил вечер с двумя лучшими друзьями - пером и чернилами. После того как диктатор Клавдий выслал его из Рима, Сенека Младший провел восемь необычайно плодотворных лет на остро­ ве Корсика, публикуя различные «Утешения;,,, относящиеся к гневу и смерти. Сенека утверждал, что именно изложением мыслей на бумаге нужно развивать себя. Не проходило и ночи, чтобы он не оставлял записи в своем дневнике. Как 011 объяснял другу, <<Я вспоминаю весь свой день и вновь обдумываю все мои поступки и слова. Я ничего не скрываю от себя, ничего не пропускаю. Ибо за­ чем должен я бежать каких-либо своих ошибок, когда могу исповедаться в них самому себе?;,, Сон, наступавший после такого самоисследования, был особенно крепок и безмятежен. Привычку делать ежедневные заметки Сенека завел во время его продол­ жителыюrо пребывания в Александрии. Необходимость заняться лечени­ ем туберкулеза вынудила его надолго уехать из Рима. Почти десять лет,
42 Глава 2. Технические знания выздоравливая, он делал то, что сделал бы на его месте любой философ-стоик: учился и писал, развиваясь одновременно и умственно, и физически. Сенека исследовал сочетание стоицизма и пифагореизма. Он читал и обсуждал работы Эпикура, который оказался самым цитируемым писателем в его трудах. Сенека утверждает, что мы должны читать, подобно шпионам во вражеском ~агере, всегда стремясь учиться у оппонентов - в интеллектуальном и философском отношениях. Как это ни печально, все труды Сенеки александрийского пе­ риода утеряны. Согласно последним оценкам, исчезла примерно половина его трагедий и философских сочинений. Дневник Сенеки служил трем основным целям: и усвоению информации; ( 1) самоисследованию; (2) сбору (3) сохранению знаний. Философ утверждал, что для того, чтобы подавать пример другим, нужно вначале проанализировать свои действия и действия этих других. В отличие от прочих авторов дневников того времени, Сенека писал с расчетом на то, что его записи будут опубликованы. Он хотел, чтобы его произведения были обнаружены и прочтены: это позволило бы оказать влияние па окружающих и донести до них его идеи. Девятнадцать столетий спустя немецкий ученый перебирает свои бумаги, раз­ ложенные в целую систему выдвижных ящичков в тяжелом аптекарском шкафу. Он держит в руке маленький листок, быстро просматривая содержимое опреде­ ленных ящичков, и наконец бормочет: <<Ага!,>, возвещающее о том, что оп нашел нужный ящичек. Листок исчезает в шкафу, а ученый усаживается в свое кресло, возвращаясь к огромной кипе бумаг, крайне нуждающихся в разборе (рис. Рис. 2.1. Никлас Луман Этот человек 2.1 ). в своем кабинете сверяется с заметками - Никлас Луман (Niklas Luhmann), один из самых деятельных и признанных ученых ХХ века в области социальных паук. За свою академиче­ скую карьеру оп опубликовал 50 книг и свыше 600 статей. Когда его спросили, как он достиг таких впечатляющих результатов, он скромно ответил: своей про­ дуктивностью он обязан тем, что «беседует~> со своими заметками. Его знаменитая
Технические знания теория систем - и эволюции явилась результатом бесед с «цеттелькастеном~ 1 • - 43 интегрированный подход к теориям коммуникации, социума Благодаря этой оригинальной системе хранения и извлечения информации Лу­ мапу удавалось соединять, казалось бы, не связанные между собой области зна­ ний и вырабатывать новаторский взгляд на вещи. Это новое понимание, в свою очередь, занимало свое место в цеттелькастене, помогая постоянно наращивать объем внешних знаний. Нужно отметить, Луман был пе первым, кто пользовался для организации умственного труда проиндексированной картотечной системой с перекрестными ссылками. В XVI веке ученый-универсалист Конрад Гесспер уже упоминал о том, что записывал идеи на листках бумаги, объединяемых за­ тем в более крупные кластеры. Однако именно архив Лумана в цеттелькастене, ныне полностью оцифрованный, дал более полное представление о блестящей результативности такого подхода, вдохновив многих современных авторов за­ меток и цифровых приложений для их создания. Прошел еще век. В 2010 году российский инженер-программист Андрей Бреслав и команда исследований и разработки компании JetBrains обсужда­ ют проблемы программирования и производства в больших кодовых базах бэкенда. Наброски маркером па доске позже лягут в основу нового языка программирования, известного как Kotlin. Однако Бреслав и его команда вовсе пе намеревались создавать еще одну яркую игрушку для гоняющихся за модой разработчиков. Kotlin разрабатывался как «прагматичный, лаконич­ ный, безопасный и иптероперабельный,>, как написано па сайте, посвящешюм данному языку. Эти четыре основополагающих принципа побудили команду тщательно исследо­ вать существующие языки программирования и позаимствовать идеи, которые работают, по, что более важно, пе обременены излишествами. Как Бреслав сказал в своем докладе «Languages Kotlin Learned From~ 2 па конференции GeekOUT в 2018 году, относиться к использованию существующих идей с осторожностью - контрпродуктивно. Вместо этого они обратились кJava (классы, автоупаковка, гарантии безопасного выполнения и т. д.), Scala (первичные конструкторы, ключевое слово set, val и т. д.), С# (некоторые идеи о свойствах и расширениях внутренней видимости, простой интерполяции строк и т. д.) и сокращепие, передача лямбд без скобок и т. д.) 1 - get/ Groovy (it- и внедрили то, что работало. Цеттелькастен (нем. zettelkasten, букв. «ящики для заметок~) - система ведения заметок и управления личными знаниями, используемая в исследованиях и учебе. Цеттелькастен состоит из множества отдельных заметок с идеями и прочими фраг­ ментами информации, записываемыми по мере их воз1шююве11ия или приобретения. Заметки обычно нумеруются иерархически, чтобы новые заметки можно было встав­ лять в соответствующее место, и содержат метаданные, например заголовок темы или теги, которые описывают ключевые аспекты заметки, а также ссылки на другие заметки. 2 - Примеч. пер. См. https://youtu.be/LjrьбВg-- lM.
44 Глава 2. Технические знания <<Большое спасибо авторам удовольствие>>, - Groovy. Заимствовать у вас свойства языка - одно заключил Бреслав. Такая философия проектирования принесла очевидные плоды. Наряду с J ava Kotlin является сейчас самым популярным языком наJ ava Virtual Machine ( его доля составляет 18% согласно отчету Snyk's 2020 JVM Ecosystem 1), а ежегодный отчет Stack Overflow Insights2 показывает постоянный рост общей популярности, обгоняющей Ruby и вплотную подбирающейся к Go. 2.1. БЕЗ ВКЛАДА НЕ БУДЕТ ТВОРЧЕСКОГО РЕЗУЛЬТАТА В чем же заключается то главное, что объединяет известные и до сих пор по­ пулярные труды Сенеки, аптекарский шкаф-цеттелькастен Никласа Лумана, ломящийся от карточек с индексами, и рождение языка программирования Kotlin? Все три примера говорят нам о том, что творчество порождает творчество. Каждая следующая мысль основывается на предыдущей. Сенека внимательно следил за соперничавшими школами и усваивал полученные знания, чтобы создать нечто новое. Луман беседовал со своими заметками, которые и подска­ зали ему связать между собой информацию, которую иначе он просто забудет. Бреслав вначале обратился к другим языкам программирования и изучил, как они работают, стремясь избежать создания чего-нибудь оригиналыюго, но в ко­ нечном счете непригодного. Любая творческая работа начинается с некоего вклада. Нет вклада - нет резу ль­ тата. Пытаясь лучше понять роль творчества в разработке ПО, мы с коллегами попросили многочисленных разработчиков обозначить требования к креатив­ ности3. Так вот, первыми неизменно упоминались технические знания! Уверен, в этом нет ничего удивительного, и именно поэтому так называется первая главная составляющая креативного программирования. К творчеству можно подходить с разных точек зрения, например инспирационной ( свободные ассоциации, игровая форма, латеральное мышление и т. д. ), ситу­ ационной (зависимость от социального контекста, встроенность в сообщество) и структуралъной ( изучение и анализ техник и методов). Прежде чем переходить к ситуационному подходу к творчеству в главе 5 и 6, давайте разберемся со 3и инспирационному в главах 4, структуральным подходом. От музыканта, не умеющего толком играть на музыкальных инструментах, не знающего музыкальных стилей и не владеющего вокальной техникой, вряд ли 1 См. https://snyk.io/Ьlog/jvm-ecosystem-report-2020/. 2 См. 3 Wouter Groeneveld, Laurens Luyten,Joost Vennekens, and Kris Aerts. Exploring the role of creativity in software engineering. 2021 IEEE/ АСМ 43rd International Conference on Software Engineering: Software Engineering in Society (ICSE-SEIS). https://insights.stackoverflow.com/survey/ for the years 2020 and 2021.
2.1. Без вклада не будет творческого результата 45 можно ожидать по-настоящему творческой записи. Художник не создаст творче­ ское произведение без глубоких знаний по технике рисования. Пусть пас может обмануть кажущаяся простота современных произведений искусства, обычно она требует технических знаний и многолетнего опыта, чтобы разложить цвета и композицию на составные части. (Впрочем, из этого правила тоже встречаются исключения.) Данное утверждение справедливо и для нас, программистов: мы пе сможем создать ничего нajava, если не будем обладать обширными знаниями ojava Virtual Machine UVM) и ее экосистеме. На конференции GeekOUT Бреслав признался, что пе придал Swift значения как потенциальному источнику вли­ яния. В то время язык только появился, и никто из команды не знал о нем. Без влияния Groovy ключевые слова wi th и i t пе существовали бы в мире Kotlin 1• Однако что имеется в виду под обширными знаниями? Каков наилучший способ приобретать, сохранять и создавать новые знания? Когда речь идет о творчестве, говорим ли мы па самом деле только о технических знаниях? Добро пожаловать в удивительный мир когнитивной психологии! Многие компании, занимающиеся технологиями, серьезно относятся к по­ стоянному обучению. Они предлагают учебные дни, хакатоны, бесчисленное количество книг и курсов и даже проект «20% времени», вдохновленный при­ мером Google, когда один день в педелю вы можете посвятить дорогому вашему сердцу проекту, который в идеале может вырасти до масштабов Grnail. (Google постепенно сократил объем свободного времени для творчества. Мы вернемся к этому в главе 8.) Независимо от того, как мы будем это называть: непрерывным обучением, обучением длиною в жизнь или самосовершенствованием, - суть не изменится: мы живем, чтобы учиться. Одному из наших собеседников удалось метко выразить суть этой главы сле­ дующими словами: По существу, творчество - это продукт смешения различных ингредиентов, и я обычно активно ищу эти ингредиенты< ... > Либо что-то может сформи­ роваться в моем сознании, когда я структурирую эти ингредиенты и когда запрашиваю столь важную для меня обратную связь; в общем, это одно из моих привычных действий. Откуда же берутся эти ингредиенты? Некоторые разработчики могут ответить, что они черпают их на сайтах новостей из мира техники и технологий ( к примеру, dzone.com, slashdot.org, lobste.rs) или в благе своего кумира из мира программиро­ вания. Это, конечно, важные, но слишком узкоспециализированные источники информации. Давайте лучше начнем с рассмотрения общей картины. 1 Ключевые слова «it>.> и «me>.> вообще-то гораздо старше вероятно, обратила на них внимание благодаря опирается пaJVM. Groovy, Groovy. Команда Бреслава, поскольку этот язык тоже
46 Глава 2. Технические знания 2.2. СБОР ЗНАНИЙ Любознательность всегда приводит к накоплению знаний (подробно мы по­ говорим об этом в главе 6). Перед тем как продолжить, я хотел бы, чтобы вы задумались о том, каким образом обычно собираете информацию. УПРАЖНЕНИЕ Каковы ваши источники новых данных? Когда вы в последний раз активно раздумывали над содержимым этих источников, а не просто бегло просма­ тривали их? Когда вы в последний раз делали заметки? Наконец, когда в последний раз вы эффективно использовали что-либо извлеченное из этих источников? Если вам не удалось вспомнить, когда вы в последний раз обращались к какому­ то из этих источников, то стоит пересмотреть, что туда попадает. Как говорится, «мусор на входе, мусор на выходе». Не хотел бы показаться грубым, но если вы только и делаете, что листаете Facebook (который иногда может быть ценным источником информации), то вряд ли вы достигнете большого прогресса в ре­ шении той проблемы в программировании, над которой бьется ваша команда. Проблема сбора знаний сегодня стоит значительно более остро, чем в девяностых. Дни простых закладок в тернет - Netscape Navigator - единственной тогда двери в ин­ давно прошли. Как же нам оставаться в курсе того, что нас интересует? 2.2.1. Разнообразьте поступающую информацию Придание разнообразия означает две вещи. Во-первых, не стоит класть все яйца в одну корзину. Если вы Jаvа-разработчик, прочтите о потоковых моделях на JVM, а также о горутинах в языке Go и о модели акторов, реализованной в Ruby. Представление о том, как многопоточность реализована в других языках, даст вам возможность лучше понять, что работает в языке, с которым вы имеете дело, а что нет. Если вам нравится легкость использования горутин, но вы остаетесь - приверженцемJVМ, вы можете разработать несколько хитроумно написанных функций-оберток, которые позволят сгладить острые углы. Если вы разработчик, читайте книги о компиляторах и языках программиро­ вания, а также по философии и психологии. Постигать техническую сторону вещей - естественно: скорее всего, это одна из причин, по которым вы являетесь прежде всего программистом. Однако не пренебрегайте другими областями знаний! Я почувствовал необходимость добавить восклицательный знак, пото­ му что польза от вложения времени и сил в технические темы представляется общепризнанной, в то время как нетехнические темы остаются во мраке неиз­ вестности. Креативные программисты успешно устанавливают связи между предметными областями, а не просто в пределах привычной им сферы програм­ мирования. Например, изучение психологии поможет вам понять моральный подтекст технологий. Изучение истории - прекрасный способ понять место стремительно развивающихся технологий в окружающем мире и дать им оцен­ ку. Многие работодатели все чаще ожидают, что программист будет экспертом
2.2. Сбор знаний 47 в одной или двух областях. Такой взгляд очень узок и совсем не креативен. Мы подробно разберем различия между специалистом и универсалистом в главе 6. Во-вторых, разнообразьте носители информации. Прочитайте книжку-другую . (Согласен, призывать <<Читайте больше книг!,> со страниц книги - не лучший способ донести подобное послание. Если все это звучит слишком очевидно, то скорее всего потому, что так оно и есть.) Посетите конференцию или курсы. Подпишитесь па рассылку. Станьте постоянным читателем блога, а еще луч­ ше - автором. Говорите с другими о том, что вас озадачивает. Просите дать вам обратную связь. Вступите в дискуссионную группу читателей. И так далее. Все или некоторые? Является ли творчество предметно-ориентированным (domaiп-specific) или предмет­ но- независимым (domaiп- geпeral)? Вот еще один вопрос, на который ученые любят отвечать с копьями наперевес 1 • С одной стороны, вам придется потратить массу времени и сил для того, чтобы изучить Ruby, прежде чем вы сможете свободно вы­ ражать свои мысли на этом языке, - быть может, те самые магические 1О ООО часов, о которых говорит знаменитый канадский журналист Малкольм Гладвелл (Malcolm Gladwell) в своей книге «Outliers». Дрейфусовская модель приобретения навыков также предполагает, что для овладения чем-либо вам понадобится лет десять вдумчи­ вой практики . В соответствии с этой моделью, чтобы сменить область знаний, нужно вначале полностью овладеть ею. Вопрос заключается в том, касается это области знаний о Ruby или о программировании в целом . С другой стороны, множество творческих методик, о которых идет речь в этой книге, могут рассматриваться как относящиеся ко всем предметным областям. Здоровая любознательность, управление знаниями с умом, инкубация идей - все это может быть перенесено из мира программирования хоть в мир ландшафтного дизайна . Более того, некоторые знания, специфичные для одной области, в другой окажутся даже полезны, учитывая, что творчеством движет перекрестное опыление. Кажется, дрейфусовская модель этого не учитывает. Какой же вывод? Неважно. Творчество является и предметно-ориентированным, и предметно-независимым одновременно! 2.2.2. Отсеивайте информацию на входе Моя жена любит читать книги, но, накупив их целую кучу, регулярно впадает в панику. Она восклицает что-то вроде: <,Как много нужно прочитать и как мало Goodreads подсказывает, что в лучшие 24 книги за год. На момент написания этой книги мпе 36 лет. Допустим, я сохраню такие темпы чтения до 80 лет, когда мои глаза лопнут от натуги. Впереди еще 44 года и, соответственно, 1056 книг. Средний времени!,> И она права. Мой аккаувт па времена мне удавалось одолеть книжный магазин каждый год продает в пять раз больше. Как писатель могу 1 Jonathan А. Plucker and Ronald А. Beghetto. Why creativity is dornain general, why it looks dornain specific, and why the distinction does not rnatter. Arncrican Psychological Association, 2004.
48 Глава 2. Технические знания сказать, что представляется практически бесполезным публиковать очередную книгу, которая займет одно из этих ценнейших мест. Единственным решением является регулирование «калорийности,; ваших знаний на этапе потребления, как ведет подсчет калорий тот, кто сидит па диете. Вам придется решить для себя ( или позволить другим направить вас), что достойно прочтения, а что можно спокойно проигпорировать. Эта аналогия распространя­ ется на интернет, где мы проводим, пожалуй, слишком много времени. Вместо того чтобы тратить временной и зрительный ресурс па рекламу, избыточные новости и предсказания возможной беременности членов королевской семьи, лучше воспользоваться таким простым средством, как RSS-pидep, который дает полный контроль пад информационным потоком. Хотя новостные агрегаторы наподобие RSS-ридеров можно объединить с систе­ мами закладок <<на потом>>, угроза информационной перегрузки вновь встает во весь рост, стоит только начать бездумно подписываться на все, что встречается на пути, и сохранять это. Избежать этого можно, относясь к таким системам как к еще одному ящику <,Входящие,; в системе Get Things Done 1, как учил нас гуру тайм-менеджмента Дэвид Аллен (David Allen). Помните лишь, что сортировка элементов по актуальности дается ценой лишней когнитивной нагрузки - или, говоря на языке программирования, повышенного использования оперативной памяти и ресурсов процессора. Мешает ли слишком большой объем знаний творчеству? Всеведущий программист - не обязательно креативный программист. Иногда то, что мы знаем, ослепляет нас и существенно снижает нашу открытость потенциально творческим идеям. Мы не колеблясь отвергаем глупые предложения, потому что «просто знаем», что это невозможно: «Поверьте, я на этом собаку съел. Это не будет работать». Возможно, если бы мы по своей наивности таки попробовали, все пре­ красно заработало бы. Исследователи называют это праймингом 2 знаний. Эксперимент по мозговому штур­ му показал, что участники, «заряженные» знанием, генерировали больше идей, но по сравнению с идеями неподготовленной контрольной группы они были менее оригинальными3. В главе 4 мы исследуем влияние наивности на ограничения, а в главе 5 будет пред­ ставлено критическое мышление как средство оценки того, что мы (не) знаем. 1 2 Аллен Д. «Как привести дела в порядок. Искусство продуктивности без стресса<>. От ант. prime - инструктировать заранее, давать предшествующую установку. В ког­ нитивной психологии в широком смысле слова прайм - это любое событие, пред­ шествующее по времени другому событию и закономерно на него влияющее либо так 3 или иначе его подготавливающее. - Примеч. пер. Eric F. Rietzschel, Bernard А. Nijstad, and Wolfgang Stroebe. Relative accessibllity of domain knowledge and creativity: The effects of knowlcdge activation on the quantity and originality of gencrated ideas. Journal of Experimental Social Psychology, 2007.
2.3. Усвоение знаний 49 2.3. УСВОЕНИЕ ЗНАНИЙ Итак, вы впитали много нового и занимательного. Что же дальше? Следующим шагом является усвоение этих знаний посредством переноса их в ваш личный контекст. Помните мучительное конспектирование от руки лекций по физике и матема­ тике в школе? Его можно было от всей души ненавидеть, но это один из самых эффективных способов усвоить знания. Во-первых, записывание информации собственной рукой увеличивает вероятность того, что она попадет в долговре­ менную память. Пэм Мюллер (Parn Mueller) и Дэниел Оппенхаймер (Daniel Oppenheirner) опубликовали исследование под броским лозунгом <~Ручка мо­ гущественнее клавиатуры~, в котором они предположили, что вести записи на компьютере менее эффективно для обучения, чем писать на бумаге 1 • Во-вторых, в том же исследовании высказывается предположение, что ключевую роль может играть переосмысление информации: Да, веде11,ие большого количества записей может быть полез1tо. Од1tако те, кто пользуется для этого компьютером, часто записывают лекции дослов1tо, вместо того чтобы обрабатывать и11,формацию и пересказывать ее своими словами. Мы показываем, что это отрицатель11,о сказывается 11,а обуче11,ии. Средневековые монахи копировали рукописи с помощью перьев и чернил. Лучше ли они обучались благодаря этому? Возможно. Некоторые исследования указывают на то, что копирование заметок и текстов от руки может ускорить обучение, поскольку более медленный темп письма по сравнению с набором на клавиатуре повышает концентрацию внимания. Кроме того, тактильные ощущения при любом виде письма от руки активируют несколько зон мозга одновременно, причем тех же, что и оперативная память 2 • И все же наиболее важной частью усвоения информации является ее перефор­ му лирование, которое позволяет перенести ее из контекста источника в ваш контекст, чего, конечно, можно достичь и печатая на ноутбуке. Испытуемыми Мюллер и Оппенхаймера были студенты образовательных учреждений: во время лекции быстрее просто дословно записать то, что говорит преподаватель. Усвоение же (как все надеются) происходит позже, при прочтении записанного. В числе моих коллег были те, кто пользовался для этого системой <~вики~ -на­ бором взаимосвязанных веб-страниц, работающим в качестве базы знаний. Не­ которые опубликовали вики в интернете для того, чтобы другие члены команды могли получить доступ к информации и даже редактировать ее. Там было все: 1 2 Pam А. Mueller and Daniel М. Oppenheimer. The pen is mightier than the keyboard: Advantages of longhand over laptop note taking. Psychological Science, 2014. Richard Tindle and Mitchell G. Longstaff. Working memory and handwriting and share а common resource: An investigation of shared attention. Current Psychology, 2021.
Глава 2, Технические знания SO сниппеты с замысловатыми регулярными выражениями, скрипты bash, поис­ ковые запросы командной строки для поиска в логах, шаблоны кода, исполь­ зованные в предыдущих проектах, и многое другое. И вот в какой-то момент мы с коллегами собрались вместе и создали командную базу знаний с общим доступом на основе вики. Базы знаний с общим доступом стали довольно обычным явлением в сфере раз­ работки ПО . Однако я с грустью наблюдаю упадок того, что может считаться базой знаний. Slack и Discord прекрасно подходят для организации мимолетного общения, но не для построения постоянной базы знаний с общим доступом. Эти инструменты не заменяют форумов или вики, где информация находится постоянно и доступна для поиска! У вашей команды тоже есть способ обмена знаниями, верно? Нет-нет, электрон­ ной почты маловато будет. Если такой способ отсутствует, прекратите читать , уберите все клейкие бумажки со скрам-доски и крупными буквами напишите на ней <<Обмен знаниями» как призыв к действию! Технические материалы, такие как сниппеты или учебные руководства по созданию нового сервиса внутри существующей системы, вряд ли нуждаются в особом переосмыслении. Некоторые сторонники вики не останавливаются на достигнутом и начинают добавлять личные заметки о прочитанных книгах, тонкостях хобби, не связанных с программированием, рецептах и способах при­ готовления пищи и т. д. Вики - далеко не единственный способ собирать и усваивать информацию. Вот другие возможности, которые дарит нам цифровой мир: • какая-нибудь простая файловая структура для отслеживания заметок; • множество приложений для создания и ведения заметок, например Microsoft OneNote, DEVONthink или Evernote, включающих в себя такие функции, как поиск с распознаванием символов, сканирование документов и сохранение в облаке; • приложения для заметок, например Obsidian или Zettlr, дающие возможность использовать гиперссылки для связи между заметками; • ПО для майндмэпов и системы для создания скетчей; • генераторы статических сайтов на основе файлов с разметкой Markdown. Во избежание привязки к вендору При выборе про,раммного инструмента для заметок учитывайте формат, в котором он хранит данные. Внешняя база знаний всегда переживет ПО, используемое для ее создания, поэтому большое значение имеют возможности экспорта в человекочи­ таемые форматы .
2.3. Усвоение знаний S1 Будьте готовы написать скрипт для конвертации вашей базы данных - именно Evernote на DEVONthink, поскольку Evernote, к несчастью, использует проприетарный формат наподобие XML, а не это пришлось сделать мне при переходе с простой текст. Подумайте также о том, какое хранилище вы предпочли бы для своих данных . На ­ пример, Evernote использует облачное решение на основе Google Cloud Platform. Это означает, что можно легко синхронизировать данные между ноутбуком и смарт­ фоном, однако также и то, что ваши заметки на самом деле вам не принадлежат. Я знаю несколько пользователей Evernote, которые потеряли важные заметки из-за « неполадок на сервере». Такие дела . 2.3.1. Управление знаниями Прав был эксперт по лидерству и оратор Джон Максвелл когда написал в своей книге Uohn С. Maxwell), «Developing the Leader Within You,> 1, разошедшейся миллио1111ым тиражом: «У вас должна быть система,>. Эта система призвана пе только воспитать в вас лидера, но также осуществлять учет знаний и генериро­ вать идеи, - целостная система для сбора и обработки информации, называемая также системой управления з11а11иями. Идея управления знаниями далеко пе нова, как и инструменты для ее вопло­ щения. Цицерон писал письма друзьям на политические и философские темы, чтобы одновременно упорядочить свои мысли и позабавить других. Леонардо да Винчи обстоятельно категоризировал свои мысли и идеи в многочисленных томах записных книжек, сопровождая их столь же подробными графическими набросками. Оп использовал зеркальное письмо для защиты от посторонних глаз, а может быть, просто для того, чтобы пе размазывать чернила, потому что был левшой. Марк Аврелий делал заметки. Чарльз Дарвин делал заметки. Мишель де Монтень делал заметки. Артур Копан Дойл делал заметки. Пионер компьютерного дела Алан Тыоринг делал заметки. У Эрика Эванса, эксперта в области ПО, который ввел термин «предметпо-ориентировашюе проектиро­ вание>-> (Domain-Driven Design), каракулями исписаны целые блокпоты 2 • Под­ мечаете закономерность? По каким-то причинам за последние несколько тысячелетий ведение дневников потеряло свою привлекательность. Попятное дело, до изобретения печатных машинок и компьютеров единственным способом сохранять информацию было ведение записей с помощью ручки и бумаги. Тем пе менее среди тех, кого я знаю, крайне мало людей ведут учет своих мыслей - па бумаге или в цифровом виде. Впрочем, когда исследователь творческих способностей Михай Чиксентмихайи 1 2 Максвелл Дж. «Воспитай в себе лидера~>. На конференции «Domain-Driven Designi, в 2017 году Эванс дал возмож11ОL'ТЬ заглянуть в его методологию; см. https://youtu.be/Zm95cYAtAa8.
52 Глава 2. Технические знания проводил интервью с гениями творчества, все отмечали, что ведение аналоговых записей действовало как катализатор для их творческого процесса 1• В 1685 году английский философ Джон Локк описал, как сделать то, что он называл <шовседневником~,, 2 : некий сборник, содержащий цитаты, идеи, фраг­ менты выступлений, над которыми можно поразмыслить. Основная мысль состояла в том, чтобы хранить в одном месте изречения, идиомы, максимы, стихотворения, письма и рецепты, к которым можно было обратиться вновь, перечитать и увидеть их в новом свете. После записи цитаты другого автора к ней добавлялись собственные примечания - так и усваивались знания. На протяжении XVI и XVII веков «повседпевники>> были самым популярным способом записывать информацию (рис. 2.2). ;,_,.,.., . -·· f~I f~: Рис. 1760 2.2. «Повседневник» английского путешественника Генри Тиффина (HenryTiffin) года. Эти страницы использовались для изучения методов мореплавания. Если вам, как и мне, нравится рассматривать старинные и современные книги для записей, то украшением вашей книжной полки может стать книга «Great Diaries: The World's Most RemarkaЫe Diaries, Journals, Notebooks, and Letters», выпущенная издательством «DK». Фото: Phillips Library, Peabody Essex Museum Идея Локка отнюдь не нова. На уроках риторики Аристотеля в его Ликее «по­ вседневники~,, использовались для записи мудрых высказываний известных историков, поэтов, философов и политиков. Позже Сенека указывал, что нужно собирать цитаты, чтобы учиться на них и <<обращать их слова в собственные~,,. 1 2 Mihaly Csikszentmihalyi. Creativity: Flow and the psychology of discovery and invention. HarperPerennial, reprint edition, 2013. Commonplace book - выражение, которое использовал Джон Локк, можно перевести как <<книга на каждый дены,, <1цитатникi>, <1блоюют с цитатами>,>, <1тетрадь для заметок>,>, <1ежедневник,> или, с известной долей фантазии, <1повседпевпию>. - Примеч. пер.
2.3. Усвоение знаний 53 В наши дни ведение дневника (или даже простое пользование ручкой) считается до крайности старомодным, особенно среди нас, энтузиастов от технологии. Как бы то ни было, пишете вы в аналоговом блокноте или ведете вики в электронном виде, у вас доЛЖШl быть систе.мп. По мне, так аналоговое письмо обходит цифровые клавиатуры по всем статьям. Я могу с легкостью добавлять рисунки, пользоваться разными ручками и писать разными цветами, прикреплять к заметкам газетные вырезки или фотографии, рисовать стрелки, писать вверх ногами, вкладывать в блокнот засушенные растения или чайные листья (они чудесно смотрятся!) и т. д. Большинство идей приходит ко мне в неожиданные моменты - как правило, когда я нахожусь пе у компьютера. Я не являюсь виртуозом использования клавиатуры под Android, да и аккумулятор моего смартфона может сесть как - держать записную книжку (рис. 2.3) раз в это время. Простейшее решение или пачку клейких бумажек в машине и па тумбочке у кровати. Рис. 2.3. Восхитительно беспорядочные записи в одной из моих записных книжек. В ней содержатся цитаты, которые я выписывал, читая или слушая подкасты (слева), а также мое осмысление книги Зонке Аренса «HowTo Take Smart Notes» 1 вперемешку со ссылками на другие страницы и концепциями, над которыми я работаю в данный момент 1 Арене 3. <<Как делать Zettclkasten>>. методу полезпыс заметки. Эффективная система организации идей по
Глава 2. Технические знания 54 Огромным недостатком цифровых заметок является сам по себе тот факт, что они цифровые: вам приходится быть привязанными к ASCII или использовать не­ уклюжее ПО для рисования, у которого нет необходимых возможностей экспорта. (Мне, впрочем, приходилось видеть и тех, кто с большим успехом пользуется iPad.) Поступайте так, как удобнее вам, но помните: у вас должна быть система. Поста­ райтесь при этом не зацикливаться на настройке системы как таковой. Применяйте решение из книги УПРАЖНЕНИЕ <<The Pragmatic Programmer»: KISS - Кеер It Simple, Stupid 1! Когда вы в следующий раз войдете в офис, оглянитесь вокруг. На ка­ ком столе лежит блокнот, исписанный заметками? (Каляки-маляки на полях не считаются, извините.) Когда будете на встрече, посмотрите, кто выхватит записную книжку. Постарайтесь выяснить, записывают ли эти люди услышанное дословно или прежде пытаются осмыслить обсуждаемый материал. Как по-вашему, они пользуются блокнотами только в рабочее время? Эти вопросы могут стать неплохим началом разговора. Дневники, журналы иnи блокноты? Какова разница между журналом и блокнотом? И где нужно писать «Дорогой дневник, сегодня я прочитал " Креативного программиста ': Вот так отстой » ? Интеллектуалы древности не делали подобных различий, так зачем же их делать вам? Я всегда ношу с собой один блокнот, чтобы просто записывать все, что приходит в голову, включая тайные истории о внушающих ужас семейных обедах . До сих пор он служил мне верой и правдой, а вот четкое разделение задач не позволило бы установить новаторские связи между областями знаний . Главное, отойти от мысли о том, что всякая идея по поводу программирования должна быть записана в программистском блокноте, а эксперименты на кухне должны фик­ сироваться непременно в тетради для кухонных приключений . Дневники, использу­ емые только для записей о прозаической повседневной деятельности, не послужат стимулом для генерации идей. Справедливо и обратное утверждение . Блокноты , служащие только для краткого описания работы лексического разбора при компи­ ляции, могут вовсе не затронуть тему лексического разбора естественных языков . 2.4. ДЕЙСТВИЯ НА ОСНОВЕ ЗНАНИЙ Решив, как усваивать новую информацию, и купив блокнот либо 11аэкспери­ ме11тировавшись с цифровой системой создания заметок в своем стремлении встроить эту информацию в контекст, вы будете готовы к третьей и самой главной стадии - сделать что-нибудь с растущим ворохом знаний. Единственной целью сбора и усвоения информации является обретение новаторского понимания, 1 Принцип, востребованный во многих областях деятельности, который можно перевести как «Делай проще, дурашка!~ - Примеч. пер.
2.4. Действия на основе знаний 55 являющегося к тому же стимулом к действию. Инновация - продукт необычной комбинации знаний, в то время как действие преобразует их в осязаемый резуль­ тат, например программный код или публикацию. Не впадайте в то, что заядлые создатели заметок называют <~заблуждением коллекционера 1 ~> - собирательство множества, казалось бы, интересной информации, на которую впоследствии вы даже не взглянете. Для нас, программистов, это особенно актуально, поскольку тех­ нические знания устаревают довольно быстро. Так давайте же ими пользоваться! Для того чтобы решить текущую проблему, Креативные Программисты комби­ нируют имеющиеся знания и опыт неким новым образом. Следовательно, им нужно как-то отслеживать, что сработало, а что - нет. Не стоит думать, что для этого достаточно вашей памяти. Ее недостаточно. Помните ли вы содержание большинства книг, прочитанных за последний год? Помните ли, почему те или иные разделы тогда привлекали вас? Возможно, контекст того времени ушел безвозвратно, если только вы не сделали записи. Впрочем, и их бывает недо­ статочно: я, например, иногда забываю, где что записал. Это сигнал о том, что система работает неправильно! Решением для меня стало сделать заметки до­ ступными для поиска, оцифровав их. Все бесчисленные исследования, посвященные сохранению знаний, закан­ чиваются на одной ноте (каламбур получается 2 ): если не хотите что-либо за­ быть, запишите это. Обнаружение связей между, казалось бы, несвязанными фрагментами информации оправдывает затраты на сбор и усвоение знаний. Эдвард О. Уилсон (Edward О. Wilson) изобрел понятие социобиологии. Когда его спросили о его творческом процессе, ответ бьш прост: его идеи явились ре­ зультатом синтеза многочисленных заметок, относящихся как к социальным, так и к биологическим наукам. Никлас Луман приписывал свою продуктивность беседам со своими заметками. А эта книга, не будь большого количества заметок и действий на их основе, при­ няла бы форму расплывчатой, а главное, мимолетной - идеи. Вы можете задаться вопросом: какое отношение это имеет к программированию? Ведь не каждый стремится открыть новую область науки или опубликовать сотни статей. Впрочем, собеседования с разработчиками, как и мой личный опыт, показывают, что разницы между публикацией текста и публикацией кода практически нет. И в том и в другом случае требуются знания, легкость воспри­ ятия и сильная идея. В обоих случаях нужно будет размышлять, рассматривать предмет с разных точек зрения - и снова и снова мысленно возвращаться к нему. И то и другое будет читать кто-то еще. 1 Заблуждение коллекционера (the collector's fallacy) - подсознательная убежденность в том, что сбор информации означает ее усвоение. Вид когнитивного искажения. (Ци­ тируется по https://zettelkasten.de/posts/knowledge-cycle-efficiently-organize-writing-projects/). - Примеч. пер. 2 В английском языке слово note обозначает и заметку, и поту. - Примеч. пер.
56 Глава 2. Технические знания 2.4.1. От записной книжки - к memex и genex Сохранение знаний осуществлялось с древних времен при помощи <,повседнев­ ников~,, и различных рукописей, включая кодексы 1 • Мысленный эксперимент Ванневара Буша (Vannevar Bush) под названием <<memory expanderi> ( <<расши­ 1945 году в статье ритель памяти~,,) вывел понятие кодекса на новый уровень. В <<As We Мау Thinki,, ( <<Можно подумать~,,) он объясняет, как видит будущее2 : Мемекс (тетех) -это устройство, в котором каждый может хранить свои книги, записи и переписку, организованное таким образом, чтобы к нему можно было обращаться с необычайной скоростью и гибкостью. Это расширенное личное дополнение к памяти. Такой блок расширения памяти (интересно, пе DDR ли это, а то, не ровен час, придется апгрейдить уже успевшую устареть материнскую плату) можно было бы использовать пе только для хранения информации, но и для облегчения ге­ нерации идей, группируя в полуавтоматическом режиме связанные мысли, что будет способствовать появлению озарений и, следовательно, творчеству. Данные могли бы храниться в виде ассоциативных ссылок наподобие гиперссылок во Всемирной паутине, мысль о которой в значительной мере была навеяна экс­ периментом Буша. Вполне возможно, идеи статьи «As We Мау Think» еще не воплощены в жизнь, но мы уже близки к их реализации. Базы данных взаимосвязанных личных мыслей в начале 2000-х обрели форму блогов, в точности сымитировав то, для чего предназначалась машина мемекс. Самосовершенствователь Джон Нотоп Qohn Naughton) даже назвал свой благ «Memex 1.1,> 3 , а блогер и писатель Кори Доктороу (Cory Doctorow) назвал свой - <<Outboard Braini.> 4 ( «Внешний мозг~,,). Статьи, опубликованные в этих благах, пестрят ссылками на связанные с ними посты других блогов, как внутренних, так и внешних. Связывание публикаций в благах гиперссылками - та еще задачка для авторов. Помочь выявить эти связи нам помогут технологии. Такие программные сред­ ства, как Obsidian и Zettlr, облегчают создание личного мемекса. Репозиторий заметок в этих программах, называемый хранилищем (vault), содержит файлы с разметкой Markdown, которые можно связывать с другими файлами, используя специальный синтаксис вида [ [ link]]. Obsidian, кроме того, выявляет замет­ ки, связанные не ссылками, но по смыслу, сканируя контент на предмет слов, 1 Происходящее от лат. codex - «книга;,, слово «кодекс;, в разные исторические эпохи имело разные значения: от комплекта деревянных навощенных дощечек для письма (впоследствии - рукописных книг из скрепленных вместе листов) до сборника за­ конодательных актов. 2 - Примеч. ред. Vannevar Bush et а!. As we тау think. The Atlantic Monthly, 1945. 3 См. https://memex.naughtons.org/. 4 См. https://pluralistic.net/.
2.4. Действия на основе знаний 57 которые могут появиться где-либо еще в качестве ссылок. Эти ссылки наиболее интересны, потому что, скорее всего, о них вы пе думали. Другой новаторской функцией Obsidian является использование обратных ссы­ лок: вместо того чтобы прочитать заметку и посмотреть, на что она ссылается, Obsidian собирает те ссылки из других заметок, которые ведут к данной. Напри­ мер, я мог бы обратиться к заметке под названием «Creativiteit>.> (<<Творчество,>), как показано на рис. 2.4. Панель «Linked mentions>.> ( <<Связанные упоминания>.>) показывает, что я также написал о творчестве в заметках <<Diffuse thinking,> ( <<Рас­ сеянное мышление>.>) и <<Вig Five personalities,> ( <<Личности Большой пятерки,>) 1• Изучение обратных ссылок может дать мне новые идеи . • Sci.k~kм41 et.atм • . • ..• . • . • • .. S.tter Th,nu,g W'I plмl Pn:iblem SоМо '\ S.H-lrnpciмd Crutмt)' The C..1trN Progrwм ...,.,,...., Aglklsoftw.,-develop • . ~·· ........ 8igA\18Pw,onal/t.ia • lllog ~·,_....,,. • •. Susineu c.m.,,,. • • OнnCode ео..,;,,. . Codell'I-.II CognlW.Ы. Con,nanplкo Ьооk Compuq Educatюn 1 х 1 1,.....___ _ _ _ __ __ с-м... """"""'"'- Рис. 2.4. Графовое представление данных в Obsidian, с виду напоминающее карту большого созвездия. Это представление призвано облегчить визуальное обнаружение связанных тем и заметок, хотя большие хранилища могут вызвать большой беспорядок на экране. Выделенная заметка «Creativiteit» («Творчество») связана с другими моими заметками, относящимися к данной теме ПРИМЕЧАНИЕ На случай, если вы предпочитаете вики или блоги, для отображения обратных ссылок в мемексе на основе 1 HTML существуют многочисленные плагины. - диспозициональпая ( от англ. disposition - предрасположешюсть) модель личности человека, согласно которой последняя включает в себя пять общих Большая пятерка и от1юсителыю независимых черт. - Примеч. ред .
58 Глава 2. Технические знания Бен Шнейдерман ( Ben Shneiderman) расширил понятие мемекса и ввел термин «genex~ ( «генекс~ ), «generator of excellence~ ( «генератор совершенства~ 1 ): Генекс может стать целостным семейством инструментов непосредствен­ ного управления в помощь пользователям, создающим инновации в искусстве, науке, разработке и т. д. Генекс способен вселять надежду, строить планы и воплощать мечты в условиях социума. Он может облачить диалог с кол­ легами и наставниками, а затем и распространение среди потенциальных выгодоприобретателей. Шнейдерман рисовал в воображении мемексы как нечто выходящее за рамки цифровой библиотеки: они должны стать инструментами для поддержки твор­ чества. Генекс - это мемекс версии 2.4.2. От заметки - 2.0. к действию Писать заметки - это одно; делать что-либо на их основе - совсем другое. В идеале ваш рабочий процесс должен включать в себя минуты размышления, в которые вы вновь просматриваете относящиеся к делу заметки. Проста запасать заметки в системе бесполезно, если вы не перечитываете и не прорабатываете их. Даже если вы используете записи всего лишь для того, чтобы вести список дел, без регулярного просматривания не многие из них удостоятся флажка <<Завершено~. Подобным образом работает и популярная система Дэвида Аллена <<Getting Things Done~ 2• Он писал о том, как одновременно носить две шляпы: думание ( создание заметок) и делание ( простановка галочек). Программисты воспримут это как нечто родное для себя, ведь мы привыкли переключаться между шляпами рефакторинzа и написания. Мне в особенности нравится взгляд Аллена на сознание как на воду, навеян­ ный постулатами буддизма. Когда мы делаем, наше сознание не должно быть потревожено другими делами, которые нужно сделать. Вместо этого оставьте заметку и забудьте. Хотя, конечно, если заметки не удастся пересмотреть, дела так и будут накапливаться. Давайте рассмотрим, как Никласу Луману удалось опубликовать столь много книг разнообразной тематики. По его словам, важнейшей составляющей его успеха была особая система заметок, называемая <<цеттелькастен,>, или «вы­ движные ящики~. Слово <<Zettel~ означает индексированную карточку, которую Луман хранил в большом ящике, - Kasten (рис. 2.5). 1 Ben Shneiderman. Codex, memex, gencx: The pursuit of transformational technologies. Intemationa!Journal of Human-Computer Interaction, 1998. PuЬlishcd online 201 О: https:// www.tandfonline.com/doi/abs/10.1207/s15327590ijhc1002_1. 2 Аллен Д. <<Как привести дела в порядою>.
2.4. Действия на основе знаний Рис. 2.5. Часть системы заметок Никласа Лумана - 59 большая картотека, до краев наполненная карточками, написанными от руки . Фото: Bielefeld University Для быстрого поиска относящихся друг к другу заметок Луман разработал про­ стой, по эффективный метод связи их между собой. Карточки поддерживают как липейпую связь с предыдущими заметками, так и возможность ветвления при помощи номера в левом углу, иногда включающего в себя буквы (рис. Например, продолжением заметки с номером ром 33, 2.6). 32 могла служить заметка с номе­ даже если их содержимое не было связано. В то же время можно было 32, создав заметку 32а. Обычным делом были затейливые дополнить заметку номера вида 45/7а/21Ь. Рис. 2.6. Пример возможностей метода Лумана в отношении связей. Цеттель с которым можно ознакомиться по адресу 1,SA2b, https://niklas-luhmann-archiv.de/bestand/ zettelkasten/zettel/ZK_l_NB_l-SA2b_V Еще одним средством, помогавшим ориентироваться в ящичках Лумана, был набор карточек с ключевыми словами, ссылавшимися на более крупные темы. Для того чтобы воскресить в памяти определенную идею, вытащив
60 Глава 2. Технические знания определенную карточку, нужно было всего лишь следовать указателям па связанные заметки. Цифровые системы, такие как Obsidian и Zettlr, во многом обязаны методу ,щеттелькастен~ Лумана. Нам больше не нужны большие помещения для хра­ нения громоздких шкафов. Заметкам больше пе требуются номера - достаточно уникальных имен файлов . Мощная поисковая система с нечеткой логикой, выдающая подсказки при попытке вспомнить существующую заметку, делает все остальное. <1Цеттели>> Лумана были прорывом во многих отношениях. Каждая карточка содержала только одну идею или мысль. Вглядитесь: это тот же принцип раз­ деления проблем в проектировании ПО, только применительно к составлению заметок. По мере поступления информации у вас может возникнуть искушение создать заметку под названием <<Креативный программист~ и пополнять ее всем, что привлечет ваше внимание. Эти заметки могут быть связаны, но для того, чтобы ваша система работала с полной отдачей, их нужно рассматривать как отдельные сущности. Другой интересный факт - стиль заметок, который можно увидеть на рис. 2.7: они имеют вид полных предложений. Луман писал <1цеттели~ своими словами, тем самым встраивая их в свой личный контекст. Оп никогда пе копировал фра­ зы, чем грешили авторы <<Повседневников,>. Порой исписана была даже тыльная сторона заметок. Поскольку у него уходила на это целая куча бумаги, оп всегда искал, на чем еще можно написать; некоторые заметки делались на оборотной стороне рисунков его детей . Рис. 2.7. Несколько пронумерованных заметок из системы Никласа Лумана. На случай, если вам захочется попрактиковаться в немецком, все заметки оцифрованы в рамках проекта «Архив Никласа Лумана» и доступны по адресу https://niklas-luhmann-archiv.de/bestand/zettelkasten/suche/. Фото любезно предоставлено Билефельдским университетом (Bielefeld University)
2.4. Действия на основе знаний 61 Очевидно, что обустройство системы цеттелькастена и ежедневное добавле­ ние заметок требовало значительных временнь1х затрат. Известное изречение Лумана гласит, что работа по методу «цеттелькастен» съедает времени больше, чем написание книги. Тем не менее, по мере того как записи увеличиваются в объеме, а ссылки - в количестве, становится проще извлечь и опубликовать что-либо стоящее. Цеттелькастен стал для Лумана «rенексом» - его личным генератором совершенства. Писатель и исследователь в области образования Зонке Арене подробно описал, как работает система Лумана и почему она является мощным инструментом; он обоснованно назвал ее «умным составлением заметок». В своей книге «How to Take Smart Notes» Арене размышляет о том, как работает обучение письмом: Мы учимся чему-то не только тогда, когда связываем это с предыдущими зна­ ниями и пытаемся понять более широкий подтекст (проработка), но также когда мы пытаемся извлечь эти знания в разное время (расположение) в разном контексте (вариация), в идеале - по воле случая (контекстная интерферен­ ция) и с намеренным усилием (извлечение) ... Такие манипуляции, как вариация, расположение, введение понятия «контекстная интерференция» и использо­ вание тестов вместо презентаций в качестве обучающих событий, - у всех них есть общее свойство: они возникают в процессе обучения и тормозят его, но часто усиливают его эффективность, как показывают тесты сохранения и переноса информации, проводимые после обучения. В последующих главах мы вновь обратимся к этим темам обучения и расширим представление о них ( о проработке, расположении, вариации и др.). Если вас за­ интересует обустройство подобной системы, рекомендую прочитать книгу Аренса или посетить сайт https://zettelkasten.de/, чтобы попять, с чего лучше начинать. 2.4.3. Заметка о ведении заметок Некоторые составители заметок с любовью называют свои системы «цифровым (Steve Freeman) и Нэт Прайс (Nat Pryce ), одни из первых апологетов экстремального программирования ( eXtreme Programming) и приверженцы разработки через тестирование (Test Driven Development), называли программирование выращиванием ПО, составление садом>>. По аналогии с тем, как Стив Фримен заметок можно назвать выращиванием идей 1. На этом аналогия не заканчивается. Выращивая ПО, приходится то и дело об­ ращаться к садовому искусству. Только вместо того, чтобы бежать за садовыми ножницами, мы начнем с реструктуризации кода без изменения его функцио­ нальности - с рефакторипга. Для ведения записей работает то же правило, что 1 Steve Freernan and Nat Pryce. Growing object-oriented software, guided Ьу tests. Pearson Education, 2009.
62 Глава 2. Технические знания и для сада: некоторые заметки могут обрести новую жизнь, если добавить к ним новые заметки и установить связи между ними, а иные могут завять, и в этом случае их можно безбоязненно обрезать. Не бойтесь выбросить или полностью переработать свои записи. Помните, что все нужно помещать в соответствующий контекст - тот контекст, который должен меняться в зависимости от ваших технических знаний и вашего окру­ жения: это два фактора, также меняющиеся со временем. Романист Уильям Фолкнер был не первым, кто выразил эту мысль, но он был наиболее прямо­ линеен: <1 Убивайте своих любимых~. Писать - значит удалять, и это касается как кода, так и заметок. Обрезка отмерших ветвей - это одно, а вот полное истребление всех записей - совсем другое. Мне известны люди, которые ведут аналоговые заметки и пред­ почитают рвать бумагу в клочья, как только задание выполнено или материалы переведены в цифровую форму. Я понимаю, что уничтожение аналоговых запи­ сей по мере их обработки может сэкономить много места, но не могу заставить себя сделать это. Мои блокноты - это нечто большее, чем просто заметки: они являются свидетелями определенного периода моей жизни и состояния души. Физически перелистывая их, я не только припоминаю прежние идеи - меня это радует. Признаюсь, я сам пе свой поностальгировать. Возделывание цифрового сада - в данном случае ведение записей - это навык, а значит, оп подпадает под описание дрейфусовской модели, как показано па рис. 2.8. Прежде всего, требуются четкие правила структуризации и рефакторипrа заметок. По мере роста вашего мастерства от уровня новичка до уровня эксперта вы будете все меньше полагаться на правила и больше - па контекст и чутье. СПЕЦИАЛИСТ nРо.а.& и н=У=т=ы':-~-"' ..,___.НАЧИНАЮ14ИR~--'t'11,. ~06ИЧОК Рис. 2.8. Дрейфусовская модель приобретения навыка: от совершеннейшего новичка, остро нуждающегося в строгих руководящих правилах, до эксперта, выходящего за рамки этих правил Вот как можно себе это представить. Моя жена терпеть не может готовить и пе утруждает себя обучением кулинарному искусству, потому что шеф-повар
2.4. Действия на основе знаний дома - 63 я. Если спагетти готовит опа, то строго придерживается указаний, папечатаппых на упаковке: написано таймер и варить ровно 12 минут. <<12 минут» - значит, надо установить Вот только проблема заключается в том, что большинство указаний неправильные. Иногда спагетти получаются перева­ ренными. Иногда - недоваренными. Лишь готовя раз за разом, вы разовьете навык вынимать спагетти из кипящей воды в нужный момент безо всякого таймера. Сады общественные и частные За общественными садами тщательно ухаживают. Людям не нравится, когда дорожки зарастают кустарником, да еще с шипами ; им нравится аккуратно подстриженная живая изгородь, оберегающая радующие глаз клумбы с розами . В частных же садах кипит непрекращающаяся работа, которую видите только вы. Так же дело обстоит и с цифровыми садами. Ваши мысли - это не что иное, как исключительно ваши мысли. Тем не менее некоторые авторы заметок предпочитают держать свои блокноты в открытом доступе . Это вынуждает их писать свои заметки в некоем особенном ключе, предоставляя посетителям более широкий контекст, чтобы они поняли их доводы . Написание для определенной аудитории может помочь преобразовать разрозненные мысли в цепь конкретных идей. Если ваша команда поддерживает вики для хранения информации о разработке, вам необходимо убедиться в том, что члены команды не испытывают трудностей с восприятием информации, размещенной на сайте. Непонимание может легко вылиться в лишний программ­ ный баг. 2.4.4. От прерывания - к действию Иногда заметка может послужить простым, по мощным стимулом к немедлен­ ному действию. В этом случае она не обязательно должна быть взаимосвязанной с другими заметками и вписанной в контекст: опа действует только для того, чтобы вернуть вас в курс дела после краткого перерыва. В 2010 году ученые, занимающиеся вопросами поведенческой информатики, - Крис Парнин (Chris Parnin) и Роберт Делайп (Robert DeLine) - исследовали стратегии разработчи­ ков, применяемые при возобновлении прерванных задач. Они обнаружили, что подавляющее большинство интервьюируемых опирались на ведение заметок па разных носителях 1• Заметки дашюго вида пе являются постоютыми: это одноразовые записки, не выполняющие никакой функции после того, как ими воспользуются. 1 Chris Parnin and Robcrt DcLinc. Evaluating cucs for rcsuming intcrruptcd programrning tasks. In Procccdings of thc SIGCHI confcrcncc on human factors in cornputing systcrns, 2010.
64 Глава 2. Технические знания Большинство программистов, читающих этот раздел, - или, в более общем смысле, те, кто работает с информацией, кого часто прерывают, блокируя тем - скорее всего, знакомы с этими видами списка дел (TODO list). Мы рассмотрим прерывания и возобновление деятельности после них в главе 7. Как заметил один из участников вышеупомянутого исследова­ самым выполнение задач, ния, набросанные на скорую руку заметки работают только в краткосрочной перспективе: Я пишу заметки на листках бумаги, попавшихся под руку. Иногда я снова к ним обращаюсь, но чаще они оказываются в самых непредсказуемых уголках моего офиса, где я больше ни разу на них не посмотрю, разве что перед тем, как выкинуть, когда мы будем переезжать в другой офис... Если я не выброшу заметки, я совершенно точно оставлю их дома и на следующий день в офисе у меня не будет их под рукой. Цетгелькастен Лумана переполнен заметками, которые помогали ему учиться, а не возобновлять работу и топтаться на месте. Чтобы ведение заметок приносило пользу, ваши навыки должны развиваться от разбрасывания временных заметок на случайных клочках бумаги, как у участника, чьи слова процитированы выше, до ведения постоянных заметок, помогающих учиться, как это происходило уЛумапа. У обоих видов заметок есть свои преимущества, и оба в итоге ведут к действию. Только пе стоит недооценивать разницу между ними. УПРАЖНЕНИЕ ваете ли вы заметок - Что вы делаете с заметками после того, как напишете их? Просматри­ peryлярно пункты списка дел и вычеркиваете ли их? Насчет постояш1ых можете ли вы найти способ связать их с ранее созданными заметками, чтобы обрести новое понимание? 2.5. ПРИМЕР РАБОЧЕГО ПРОЦЕССА Гуру управления личными знаниями Хэролд Джарки ( Harold Jarche) описывает свой рабочий процесс как Искать> Осмыслять> Делиться (Seek > Sense > Share 1): это три основных компонента системы управления личными знаниями, акцент в которых делается на представлении знаний посредством постояшюго обмена ими. В общих чертах эта система такова: • Искать. Поиск информации и поддержание знаний в актуальном состоянии путем создания сети коллег, позволяющей не только получать информацию из классических источников, но и обеспечивать ее поступление из источни- 1 Harold Jarche. The seek-sense-share framework, 2014. http://jarche.com/pkm/.
2.5. Пример рабочего процесса ков доверенных (например, через 65 RSS). Джарки назвал хороших кураторов, фильтрующих для вас данные, ценными членами сетей знаний. • Осмыслять. Способ персонализации и усвоения информации. Включает в себя обдумывание и оценку положения вещей в перспективе наряду с ранее полученными знаниями, а также, возможно, экспериментирование. • Делиться. Обмен ресурсами, идеями и опытом с другими людьми. Внезапно вы становитесь для кого-то куратором входящего потока данных для осмыс­ ления! Обмен знаниями, на котором делает акцепт Джарки, приносит пользу не только другим: оп заставляет нас заново подумать о том, как мы поняли что-либо, - по­ добно заметкам Лумана, написанным своими словами. Как сказал физик Ричард Фейнман (Richard Feynman), лучший способ учиться - это учить (а следова­ телыю, делиться). Когда я рылся в обширной коллекции заметок Джарки, меня очень удивил следующий фрагмент: Сегодня средства извлечения и создания информации позволяют людям рас­ сказывать собственные истории и, сплетая их воедино, делиться ими в своих сетях. Это называется «разговорами о насущном». Кодеры и программисты поступают так на протяжении десятилетий, когда вслух обсуждают свои проблемы. То, что начиналось как форумы и вики, быстро развилось в более устойчивые сети и сообщества. Программисты, которые публично делятся своим рабочим процессом и решениями, создают ресурс для других программи­ стов, стремящихся выполнить аналогичную работу. Это делает более интел­ лектуальной всю программистскую среду. То же могут делать и организации. Задумаемся па мгновение. Когда речь идет о том, чтобы поделиться знаниями, пас, ботаников от технологий, признают первопроходцами! Однако пе следует почивать на лаврах. Практически все мои знакомые программисты потребляют общедоступную информацию, но лишь небольшой процент вносит в нее свой вклад. Мы пассивные наблюдатели (lurkers). Пришло время перейти на следу­ ющий уровень и стать участником событий (будем только помнить о том, что пе стоит кормить троллей). Упрощенная версия моего рабочего процесса изображена на рис. 2.9. Вам он может подойти, а может и пе подойти. Это лишь одна из сотен возможностей реализовать систему сбора, усвоения и применения знаний. Не стесняйтесь менять части местами или добавлять новые по своему усмотрению. Как, наверное, уже подсказал вам ваш программистский мозг, это постепенный процесс. Я регулярно отбрасывал то, что пе работало, пока не пришел к стабиль­ ному рабочему процессу, который подошел именно мне.
66 Глава 2. Технические знания ф ОТОБРАННЫЕ. И НТЕ.Р Е.С.Ы (1) .О.ОС.ТУП НА.Я ИНФОРМЩИ.Я . ' 1=1..'l ~~ t:;,1~ ш.;~. ' ~- \,~-- -:;)} <{'® ОЦИФРО6АННЬIЕ. И С.6.ЯJАННЫЕ. С.С.ЫЛКАМИ JАМЕ.ТКИ Рис. 2.9. Упрощенная версия моего рабочего процесса обработки информации с фильтрами между стадиями, от доступной информации до опубликованной работы 2.5. 1. Пятиступенчатый рабочий процесс 1. Доступная информация Доступная информация включает в себя коллективный труд всех и вся: это большой ворох знаний, которые невозможно усвоить без системы. 2. Отобранные интересы это выборка того, что меня интересует, пополняющаяся Отобранные интересы - материалами из электронной почты, Википедии, разговоров, журналов, RSS, а также в ходе посещения музеев или библиотек и т. д. Некоторые знания при­ ходится добывать, намеренно ища конкретную информацию для исследований, а некоторые (как, например, пункт ~искать>>, вышедший из-под пера Джарки) приходят от коллег, которым я доверяю и на которых подписываюсь. з. Синтезированные мысли Синтезированные мысли - это отобранные интересы, включенные в контекст и увековеченные в записной книжке ручкой и чернилами (вспоминаем пункт
2.5. Пример рабочего процесса 67 «Осмыслять•). На практике этот шаг выполняет роль фильтра: не всякие знания и потребленная информация оказываются ценными для того, над чем я работаю. Не забывайте о том, что здесь нужен свободный подход. Устройте беспорядок. Ри­ суйте диаграммы, символы, стрелки. Вычеркивайте лишнее. Пространственные подсказки и акцент на взаимоотношениях углубляют понимание. Программы для построения майндмэпов и ведения заметок могут быть элегантными и работать с гиперссылками, но на данной стадии они редко способствуют обучению. Энди Хант подробно объяснил, как это работает, в своей книге «Pragmatic Thinking and Learning•. 4. Оцифрованные и связанные ссыпками заметки Раз в месяц или около того я оцифровываю свои записи, сканируя их и по­ мечая тегами. В итоге они попадают в Obsidian в виде связанных между собой заметок. Это звучит занудно (и так оно и есть), но я убедился в том, что это неизбежное зло, позволяющее делать удобные перекрестные ссылки на записные книжки прошлых лет. Кроме того, значительно облегчается быстрый поиск чего угодно, когда-либо записанного мной, - если, конечно, я не ошибся с тегами. К сожалению, технология распознавания символов еще очень ненадежна. Я сканирую все, поскольку с помощью таких приложений, как Genius Scan, сделать это очень просто, но я не помечаю тегами каждую страницу. Истории наподобие тех, которые записывают в дневник, не требуют перекрестных ссылок. Некоторые цифровые системы объединяют шаги 3 и 4 в один. Призываю вас не делать этого, потому что вы потеряете те преимущества обучения, которые дает собственноручная запись мыслей. Это также размоет границы между различными фильтрами и осложнит принятие решений о том, что хранить, а что - выбросить. Одним словом, вы нарушите принцип разделения ответственности. 5. Оnубnикованная работа После того как я помещаю связанные заметки в цифровое хранилище, все, что мне нужно, - расположить их в определенном порядке и начать подводить итоги. На пятом шаге большая часть работы по написанию и обдумыванию уже должна быть совершена. Как выразился Луман, это делает публикацию триви­ альной. Однако остерегайтесь ложного ощущения продуктивности: большая часть работы перенесена на предыдущие шаги, но ее все еще нужно выполнить. Большинство заметок не будут опубликованы, и это нормально. Некоторым потребуются годы, чтобы выплыть на поверхность, и это тоже нормально. Творческий писатель, фотограф и заядлый любитель дневников Сюзанна Конвей (Susannah Conway) называет это компостированием (composting) 1• 1 См. https://www.susannahconway.com/.
68 Глава 2. Технические знания Мне доводилось слышать, как менеджеры разработки ПО называли это <<не­ маваси» (nemawashi), имея в виду бережливую производственную систему Toyota, в рамках которой закладывается фундамент для будущих серьезных изменений посредством сбора информации и обмена ею. Подобно выдержан­ ному вину или сыру, идеи должны созреть. Поскольку я профессиональный пекарь, при объяснении того, как идеи до­ ходят до производства, я люблю приводить в пример процесс брожения. При­ личный хлеб можно вынуть из печи уже через 4 часа после начала процесса. А чтобы приготовить отличный хлеб, требуется 36 часов и предварительное планирование, хотя в большинстве случаев тесто само делает свое дело - раскрывает вкус. Иногда закваска реагирует слишком бурно, заставая пекаря врасплох, как это случилось с банкой, изображенной на рис. 2.10. Слишком быстро воплощая идеи, не тратя времени на их обдумывание, можно прийти к тому же результа­ ту - безвкусности. Рис. 2.1 О. Закваска, которая,похоже,бродит слишком бурно. Наряду с мукой, водой и солью время является важнейшим ингредиентом отличного хлеба Иногда кислотность из-за ( слишком) долгого брожения портит хлеб. Несвежие идеи обычно не доходят до пятого шага. Разумеется, для того чтобы дать идее забродить, вначале нужно <<Поймать» ее, что, по сути, делается на шаге 3. Американский журналист и писатель Элизабет Гилберт (Elizabeth Gilbert) в своей креативной книге самопомощи «Big Magic>> 1 сетует на то, что идею можно потерять па благо кому-то другому. По ее словам, если вовремя не ухватить мысль, опа улетит в открытое сознание кого-то, кто способен ее уловить. Значимые идеи «скачут» от предпринимателя к предпри­ нимателю, пока кто-то не окажется готов совершить значимые действия. Хотя в эту сказку трудно с ходу поверить, мораль вполне ясна: расставляйте сети и будьте готовы ловить мимолетные идеи. 1 Гилберт Э. «Большое волшебство>->, 2017.
2.5. Пример рабочего процесса 69 2.5.2. Рабочий процесс на практике: кодинr Пару лет назад благодаря моему фильтру отобранных интересов я прочел о том, как другие программисты пишут сквозные тесты для своих веб-приложений, и о связанных с этим трудностях. На работе мы с коллегами были разочарованы собственным подходом, поскольку эти автоматизированные тесты оказывались в лучшем случае нестабильными и требовали поддержки в таком объеме, что мы подумывали отказаться от них. Пост в благе, который я прочитал, вызвал дискуссию о нашем текущем подходе, во время которой мы в общих чертах выработали первую пересмотренную его версию. Она должна была лучше справляться с мириадами асинхронных клиент­ ских запросов. Моя личная система управления знаниями содержала множество связанных между собой заметок о сквозном тестировании из предыдущих про­ ектов, которые тоже нужно было учесть, включая обоснование сделанного выбора. Без (повторного) прочтения ранее накопленных знаний о том, как писать сквозные тесты, наша стратегия тестирования изменилась бы в худшую сторону. Мне и не сосчитать, сколько раз моя система уберегала меня от изобретения колеса или от того, чтобы внедрить решение ненадлежащего качества. Среди примеров можно назвать обращение к сложной функции поиска, которую вы некогда создали, выбор алгоритма сортировки из некоего набора, сохраненные URL больших статей о внутреннем устройстве ядра Linux, которые могут когда­ нибудь пригодиться, перечитывание того, что пошло не так, когда вы пытались интегрировать OAuth в устаревший код, и т. д. Сказанное выше не ограничивается программированием или архитектурой ПО. Я также люблю ~прикарманивать~ чужие строки поиска, руководства по стилю и доступности веб-приложений, различные приемы построения пользователь­ ского интерфейса, как то: расположение кнопок и надписей и многое другое. Подробнее о заимствовании идей я расскажу в главе 2.5.3. Рабочий 8. процесс на практике: изучение новых языков проrраммирования В этом году я научился программировать на Go. Мне страстно хотелось пере­ вести проект на основе Node cJavaScript на Go. Попутно мне удалось решить несколько больших и малых проблем благодаря моим заметкам. Не зная точно, как структурировать RЕSТ-запросы, не прибегая к рефлексии или копированию и вставке, я сверился со своей базой данных. Она сообщила мне, что с месяц назад я просмотрел пару видеороликов с конференции GopherCon, в которых были представлены лучшие практики по работе с веб-сервисами на Go, - ви­ деороликов, о которых я совершенно забыл. Если бы я обратился к старым добрым Google или Stack Overflow, то упустил бы контекст моих заметок об этих роликах, которые ссылались на связанные
70 Глава 2. Технические знания с ними практики, накопленные мною за долгие годы. Иногда этого вполне до­ статочно. Впихивать в систему заметок всю документацию по API смысла нет. 2.5.4. Рабочий процесс на практике: написание текстов Само собой разумеется, что этот рабочий процесс применим и к написанию текстов - по правде говоря, без него пе было бы этой книги. Однако вы пе писатель, а программист, так каким же боком это относится к вам? А таким, что программистам нужно излагать свои мысли не только в чистом коде, но и в технических заданиях, проектных предложениях, документации API, перформанс ревью, сообщениях в чатах, технических демонстрациях, постах в блогах и т. п. Многие руководители программных проектов являются также завзятыми тех­ ническими писателями. Умение высказываться письменно становится столь важным, что такие компании, как Amazon, начинают процесс отбора менеджеров по разработке ( engineering manager) с упражнения по написанию текста. Как от­ метил Зонке Арене, обучение проходит посредством написания текстов - даже если это делается для себя. Писать намного легче, если есть на что опереться: на вашу систему, содержащую заметки и идеи. Теперь вы можете начать собирать пазл. Создайте новую заметку, присвойте ей соответствующее имя и начните связывать понятия из ранее со­ бранных идей. Это и будут строительные блоки для вашего текста. Система указывает нам на то, что нужно перечитывать заметки, созданные годы назад и накрепко забытые. Она предлагает связи между рефакторингом, пред­ метно-ориентированным проектированием и творческим решением проблем. Од­ ним словом, она помогает нам стать лучше как программистам и как писателям. УПРАЖНЕНИЕ Ведение заметок может отпугнугь новичков. Лучший способ на­ чать - это просто начать. В течение следующих двух недель постарайтесь каждый день записывать на (цифровой) бумаге то, чему вы научились. Делайте это с той скоростью и с той тщательностью, какие вам удобны: пусть этот процесс пе обременяет вас. Эксперт по визуальному мышлению и креативный директор Дэн Роум в своей книге (Dan Roam) «The Back of the Napkini,, 1 показал, что свою ценность может иметь даже корявый набросок на обратной стороне салфетки. По прошествии двух недель перечитайте свои заметки. Выделяются ли какие­ нибудь из них? Есть ли связь между разрозненными на первый взгляд записями? Сделайте перекрестные ссылки, если хотите. Как можно поступить с новыми знаниями в ближайшем будущем? 1 Dan Roam. The back of the napkin: Solving proЫems and selling ideas with pictures. Portfolio, 2008.
Итоги 71 Если это упражнение не пришлось вам по душе, повторите его, слегка видоиз­ менив. В конце концов вы получите то, что изображено на рис. 2.9, - рабочий процесс, который фильтрует доступную информацию, отобранные интересы, синтезированные и оцифрованные мысли в нечто, достойное публикации. итоги • Без знания Python нет творчества на Python. Без какого-либо вклада и ба­ зовых технических знаний креативное решение проблем практически не­ возможно. • Творчество порождает творчество. Каждое намерение создать что-либо осно­ вывается на предыдущем подобном намерении. Поэтому важно поддерживать актуальность базы знаний. • • Приобретайте новые знания и подвергайте рефакторингу существующие. По­ думайте о своих постоянных источниках информации. Может быть, настало время разнообразить или пересмотреть поступающие данные? Получение знаний - это одно, а усвоение - совсем другое. Не просто кон­ спектируйте то, о чем прочитали, а пересказывайте своими словами и до­ бавляйте свой контекст. • К чему усваивать всю эту информацию, если вы ничего не собираетесь с ней делать? Помните: смысл заключается в том, чтобы получить не просто нова­ торские, но и являющиеся стимулом к действию идеи. • Отлаженная система управления личными знаниями во многом упроща­ - усвоение - действие~. Попробуйте разработать систему, которая будет работать на вас, на основе примеров, приведенных в данной ет цикл <,сбор главе. При правильном использовании эта система может служить вашей «внешней памятью~. • Самые интересные инновационные озарения происходят при связывании или комбинировании информации, которая на первый взгляд кажется раз­ розненной. Это еще одна причина, по которой система управления личными знаниями, где все централизованно, имеет такое важное значение. • Заметки не должны быть статичными: их можно пересматривать, перераба­ тывать, отбраковывать и делать много чего еще. Ведение заметок столь же важно, сколь их создание. Благодаря регулярному перечитыванию преды­ дущих записей у вас непременно возникнут новые идеи.
Общение В ЭТОЙ ГЛАВЕ ✓ Камерата, симматезия и то, что делает их действенными ✓ Жидкие сети и кластеры гениев ✓ Кривая принятия технологий ✓ Социальный долг и запахи сообщества Таинственные голоса эхом отзывались в колоннаде снаружи городской стены Афин. Перипатетики - ученики и приверженцы учения Аристотеля - со­ брались у комплекса открытых зданий, называемых Ликеем. Ведущий голос, отражающийся от peripatoi - дорожек для прогулок, - принадлежит самому Аристотелю, который читает лекцию о размножении кальмаров. Среди его по­ стоянных слушателей - Деметрий Фалерский, один из первых перипатетиков; Александр Великий, который позже построит одну из крупнейших империй в истории; Теофраст, который до этого учился в Академии Платона, а позже сменит Аристотеля на посту главы Ликея. Аристотеля прежде всего интересовал вопрос <<почему>,). Его научный подход к философии, отталкивающийся от фактов, в конечном счете сформировал осно­ ву индуктивного и дедуктивного мышления. Умозаключения не были од1юсто­ ронними: насыщенные дискуссии между перипатетиками проводились на темы политики, метафизики, этики и логики - в основном во время прогулок. Ликей не
Общение 73 был частным предприятием, как Академия Платона: многие лекции и дискуссии проводились бесплатно. Этот открытый подход значительно улучшил работы Аристотеля, которые сегодня рассматриваются как основы современной науки. Столетия спустя, в конце XVI века, подобное течение возникло во Флоренции. Компания гуманистов, музыкантов, поэтов, политиков и философов собралась в особняке графа Джованни Барди - богатого итальянца, у которого, видимо, была уйма свободного времени, - чтобы обсуждать и успешно изменять направ­ ления в изобразительном искусстве, музыке и драматургии (рис. 3.1 ). Собрание славилось знаменитыми флорентийскими гостями и позже обрело известность под названием <<Флорентийская камерата>,> 1• Рис. 3.1. Антонио Доменико Габбиани, «Музыканты князя Фердинандо де Медичи». Утверждалось, что на картине изображена камерата Барди в действии, но недавно это стало оспариваться. Вклад камераты сыграл большую роль в формировании появившихся позднее симфоний и опер, доказывая тем самым, что коллективное творчество превосходит идеи отдельных личностей. Изображение взято из открытых источников Идея, лежавшая в основе камераты, была проста. По мнению ее членов, музыка стала скучной и продажной. Они намеревались возродить искусство в том виде, в каком 0110 существовало в Древней Греции. Величайшим наследием каме­ раты является открытый взгляд на композицию и течение музыки. Пусть ей 1 Ruth Katz. Collcctivc proЬ!cm-solving Journal of thc History of Idcas, 1984. in thc history of music: Thc casc of the Camcrata.
74 Глава 3. Общение приписывается лишь косвенное влияние, но без Флорентийской камераты Бах и Моцарт, вероятно, не создали бы выдающихся музыкальных произведений. И вновь мы переносимся сквозь столетия - на этот раз в Париж конца XIX века с его оживленными кафе. Устав от навязчивого влияния классицизма, небольшая группа скульпторов, галеристов и художников решила бросить вызов курато­ рам Парижского салона и запустила бесконечный круговорот новых <шзмов,> в искусстве - импрессионизма, пуантилизма, кубизма, модернизма, дадаизма. В многочисленных кафе то и дело звучали жаркие дискуссии об искусстве и его будущем, неизменно подогретые вином и окутанные сигарным дымом. Течение парижского авангарда в искусстве привлекло молодые таланты как из самой Франции (Поль Сезанн, Жорж Брак, Клод Моне, Эдгар Дега), так и из дальних краев (Пабло Пикассо, Винсент Ван Гог, Пит Мондриан, Василий Кан­ динский). Иностранцы, подобно голландцу Мондриану и русскому Кандинскому, в итоге привезли новые идеи на свою родину и совершили там художественную революцию, утвердив стили «Де стейл~,, (De Stijl) и «Баухаус~,, (Bauhaus). Перемотаем еще столетие и окажемся в начале 2000-х. Теперь мы в Лондоне, в самой гуще его бизнес-хабов. В этих центрах поочередно проводились засе­ дания клуба «The Extrerne Tuesday Clubi,, ( «Экстремальный вторник~,,). Данный клуб служил платформой для общения разработчиков ПО на заре становления agile и экстремального программирования: на этой платформе еженедельно высказывались и подвергались критике различные идеи. Гостями клуба в свое время были несколько уважаемых разработчиков: Джез Хамбл Qez HurnЬle), Дэн Норт (Dan North), Крис Рид (Chris Read) и Крис Мэттс (Chris Matts). Это оказалось эффективным способом привлечения компетентных программистов в ThoughtWorks - еще одну известную консалтинговую компанию. «The Extrerne Tuesday Clubi,, стал уникальным и плодоносным полем, взрастив­ (Continuous Integration), непрерывная доставка (Continuous Delivery), DevOps, канбан (Kanban), тех­ нический долг (Technical Debt), микросервисы, технологии мокинга, - список шим такие концепции, как непрерывная интеграция опять-таки бесконечен. Благодаря людям, разделявшим идеи клуба, он обзавелся зеркальными копиями - The Silicon Valley Patterns Group, The Portland Patterns Group, The Salt Lake City Round ТаЫе и т. д. Дух клуба живет в неисчислимых высококлассных разработках и митапах тестировщиков по всему миру. 3.1. КОМАНДНОЕ СОТРУДНИЧЕСТВО В чем же заключается то главное, что объединяет перипатетиков, камераты, клуб «Экстремальный вторник~,, и многие другие начинания, о которых по­ вествуют книги по истории? Всем этим собраниям так или иначе удалось полностью изменить сферу деятельности, в которой они работали, что, согласно Чиксентмихайи, расценивается как подлинное творчество. Я хотел бы сделать еще один шаг в том же направлении и назвать это коллективным творчеством:
75 3.1. Командное сотрудничество вне коллектива творчество каждого гения, участвующего в этих встречах, не достигло бы таких высот. Словосочетание <<Командная работа» в нашем XXI веке используется слишком уж охотно. Командная работа требуется там, где нужно довести большой и ри­ скованный программный проект до хеппи-энда. Командная работа требуется для того, чтобы мотивировать друг друга продолжать работать изо дня в день. Командная работа требуется для того, чтобы учиться - самому, всей командой, несколькими командами. Командную работу можно увидеть в объявлениях с ва­ кансиями, в книгах о том, как добиться успеха, в книгах о том, как не добиться успеха, в ПО для видеосвязи, в корпоративных объявлениях, в руководствах по удаленной работе, в результатах учебных программ, в слайдах конференций, на обороте меню в ресторанах, в популярных хеш-тегах в социальных сетях, в теле­ визионной рекламе, в любом виде спорта, в наполненных радостью мероприятиях по тимбилдингу - командная работа, командная работа, командная работа! Исследование показывает, что командная работа является тем нетехническим навыком, которому обучают чаще всего. Она фигурирует в результатах обучения 34 % курсов компьютерных дисциплин в европейских университетах. Письмен­ ное и устное общение и навыки представления чего-либо другим - тоже звезды академической сцены. А вот термин <<Креативность>> встречается менее чем в 5% описаний университетских курсов! 1 Было ли собрание в древнем Ликее одним из первых командных проектов по разработке философии как науки? Существует ли разница между камератой де Барди и современными нам кома~щами разработчиков? Давайте более присталь­ но взглянем, что именно, помимо очевидного использования навыков общения, делает эти коллективы успешными. 3.1.1. Мотивы камераты Благодаря благу Джессики Керр (Jessica Kerr), а точнее, ее посту 2018 года, в котором прослеживается связь между музыкальным коллективом эпохи Возрождения и идеями Грегори Бейтсона (Gregory Bateson) в отношении ки­ бернетики и программировапия 2 , термин «камерата» стал популярным среди программистов. По словам Керр, нам нужно перенять методы камераты, чтобы обеспечить разработке ПО безоблачное будущее. Во-первых, что пытались сделать члены камераты? Они были пресыщены классической музыкой Возрождения и отчасти хотели вернуться к величию 1 Wouter Groeneveld, Бrett А Бecker, andjoost Vennekens. Soft skills: what do computing program syllabi reveal about non-technical expectations of undergraduate students? Proceedings of the 2020 АСМ Conference on Innovation and Technology in Computer Science Education. 2 См.: https://jessitron .com/2018/04/15/the-origins-of-opera-and-the-future-of-programming/.
76 Глава 3. Общение Древней Греции. Таким образом, налицо была проблема - общая проблема. Она затрагивала в равной степени каждого члена камераты. Никого не принуждали вступать в ее ряды. По правде говоря, в этом кругу не очень-то привечали тех, кто не был внутренне мотивирован присоединиться к общему делу. Во-вторых, общей бьша не только проблема, но и знания каждого участника. Они (участники) обучали друг друга. Камерата напоминает своего рода невидимый колледж, который имеет ключевое значение для творчества в науке, согласно Керр: этот ~невидимый колледж» представляет собой группу людей с общими идеями, которые вместе строят новую реальность, а затем распространяют ее для развития культуры в целом. Это звучит прозаически, но определяет успешность группы. Поток знаний, работающий как улица с односторонним движением, не принесет особой поль­ зы. Кроме того, камерата состояла из людей с совершенно разным жизненным опытом, что способствовало взаимному обмену идеями. В-третьих, система камераты была живой системой. Помните паш тезис о том, что творчество имеет общесистемную природу, как было сказано в главе 1? То же справедливо и для творческого коллектива наподобие камераты: участ­ ники взаимосвязаны как друг с другом, так и с окружением. Поскольку живая - это система обучающаяся, она постоянно развивается. Окружающая среда меняется, и мы меняемся, приспосабливаясь к ней. Мы учимся у наших система товарищей, они - у нас. Система потихоньку перестраивается, новые связи появляются, старые исчезают. Можно представить ее как бесконечный цикл: func changeSelf() { changeEnvironment() } func changeEnvironment() { changeSelf() } Пионер кибернетики Грегори Бейтсон мыслил системно. Вместо того чтобы изучать отдельные части или особенности их взаимодействия, он предпочитал оперировать категориями целого. Однажды он сказал, что эволюция заключается в контексте, а не в предмете или, как нравится думать нашему современному <<Я~>, в отдельном человеке. Его дочь Нора Бейтсон придала идеям отца дальнейшее развитие. Она подумала: как странно, что у нас нет слова для взаимного обуче­ ния в живых контекстах. Для решения этой проблемы она предложила слово symmathesy (симматезия ). Нора скомбинировала греческий префикс sym (вместе) и слово mathesi (учиться). Рабочее определение понятия, данное ею, таково: Symmathesy (сущ.) - сущность, сформированная контекстным взаимным обу­ чением в процессе взаимодействия. Этот процесс взаимодействия и взаимного обучения протекает в живых сущностях в больших или меньших масштабах симматезии.
3.1. Командное сотрудничество Symmathesy (гл.) - 77 взаимодействовать в рамках нескольких переменных для создания контекста взаимного обучения. Камерата была симматезией Рис. 3.2. Симматезия - - живой обучающейся системой (рис. 3.2). живая взаимосвязанная система, все части которой обучают друг друга, включая окружение, в котором она находится. (Статический рисунок такой системы подрывает саму ее идею, поскольку она представляется в застывшем виде.) Изображенное здесь окружение охватывает все, что взаимодействует с группой: клиентов, другие команды, компанию и т. д. В-четвертых, коллектив не просто давал обратную связь - он давал критическую обратную связь. Это не позволяло собранию стать эхо-камерой, в которой ни одной идее было бы не вырваться наружу. О критическом мышлении и его роли в креативном программировании я рассуждаю в главе 5. Ограничение возможности ознакомления с различными точками зрения и фор­ мирование групп единомышленников, задающих и навязывающих общий тон по­ вествования, в социологии называется эффектом эхо-камеры 1 • Такая сегрегация распространена не только в социальных сетях, но и во многих дискуссионных группах, жизнь в которых поддерживается скорее искусственными методами. 1 Mattco Cinclli, Gianmarco Dc Francisci Moralcs, Alcssandro Galcazzi, Waltcr Quattrociocchi, and Michclc Starnini. Thc ccho chambcr cffect on social mcdia. Procccdings of thc National Acadcmy of Scicnccs, 2021.
Глава 3. Общение 78 УПРАЖНЕНИЕ Когда вы в последний раз посещали встречу, имеющую отно­ шение к программированию, па которой идеи открыто обсуждались, а не просто были представлены и приняты? Можете ли вы вспомнить, насколько ощутим был эффект эхо-камеры? Возможно, в следующий раз с этого стоит начать об­ суждение. Во время исследования креативности, проводимого моими коллегами и мной, разработчики, с которыми мы беседовали, также подчеркивали важность контекста, что напоминает сосредоточенность Бейтсона на контекстном обу­ чении: Исходя из того, что в конечном счете мы работаем в команде, если поместить кою-то - скажем, натуру менее творческую - в надлежащий контекст и окружить ею нужными людьми, то вы придете к творческому решению в рамках существующих ограничений. Великие команды порождают великих людей Серьезная разработка ПО представляет собой симматезию на практике. По мнению Джессики Керр, великие команды порождают великих людей, а не наоборот. Конечно, нельзя просто нанять группу превосходных разработчиков, затащить их в комнату и уйти - да, и не забыть вбросить туда гроздь бананов. Вот только означает ли это, что создать отличную команду невозможно? Мое видение проблемы немного более детальное. Мне посчастливилось попасть в отличную команду (спасибо тебе, работа консультанта), что, без сомнения, сделало меня более сильным программистом. На протяжении двух лет я тоже тянул лямку симматезии и был частью системы. Однако я также участвовал в создании команд вместе с другими грамотными раз­ работчиками, когда сформировать команду еще только предстояло: симбиотические отношения были очень нестабильны . По мере того как мы узнавали проблемную область (и друг друга), некоторые команды расцветали. Другие быстро увядали. Курица или яйцо? Понемногу того и другого, спасибо. Камераты, живые или соразвивающиеся системы, симматезии, общесистемные - как ни назови, их методы всегда опираются па четыре принципа: наличие общей проблемы, обучение друг у друга, взаимосвязанность команды, симбиозы и предоставление критической обратной связи. Система «генекс~ Бена Шпейдермана, с которой мы познакомились в главе 2, способна помочь лишь в какой-то мере. Он заключил, что совершенствование системы «генекс~ - это социальный процесс. Только конструктивная обрат­ ная связь от коллег способна вывести вашу творческую работу па следующий уровень.
3.1. Командное сотрудничество 3.1.2. Команды 79 мечты У гетерогенной группы индивидов с развитыми навыками общения шансов творчески решить проблему больше, чем у одиночки. Уверен, в какой-то момент вы убедились в этом на собственном опыте, работая в слаженной команде и имея возможность сравнить это с попытками решить проблему самостоятельно. Коллективы, подобные камерате, не только быстрее выявляют и решают более крупные проблемы, но и повышают эмоциональную вовлечешюсть. Этот эффект четко прослеживается в интервью с творцами, которые с теплотой вспоминают <<Те времена», часто называя свой прежний коллектив «командой мечты». Коман­ да - это мечта в том случае, если не только коллеги хорошо ладят между собой, но и она раз за разом выдает в высшей степени креативные продукты. LucasArts. В начале 90-х игровое подразделение (Games Division) компании Lucasfilm было переименовано в LucasArts благодаря успехам в игровой индустрии, в первую очередь Maniac Mansion и движку SCUMM (Script Creation Utility for Maniac Mansion), написанному для нее. С тех пор LucasArts Возьмем, к примеру, стабильно выпускал один хит за другим: Monkey Island 1 и 2, Loom, Indianajones and the Fate о/ Atlantis, Day о/ the Tentacle, 5am & Мах: Hit the Road, Full Тhrottle, Тhе Dig. Некоторые источники утверждают, что Джордж Лукас потерял интерес к играм; что после ребрендинга компания постепенно деградировала; и все же, судя по результатам, подразделение разработки ПО оставалось успешным по крайней мере в течение пяти лет подряд. Издание Retro Gamer провело интервью с некоторыми членами первоначального состава, чтобы заново открыть наследие, оставленное после себя LucasArts 1• Быв­ шие члены команды рассуждали о том, что «так сошлись звезды», и признавали, что они никогда больше не достигали таких высот. В ответ на вопрос, почему так получилось, они назвали две причины. Во-первых, идеальный состав тог­ дашней команды, которая после выхода Monkey Island 2, как это ни прискорбно, по разным причинам распалась и рассеялась. Во-вторых, для приключенческих игр такого рода время было неподходящее. Когда читаешь это интервью, сквозь строки отчетливо проступает эффективная комбинация различных навыков, при которой все оказывают влияние друг на друга. Дэйв Гроссмен (Dave Grossman), дизайнер и писатель, с удовольствием принимал участие в мозговых штурмах под руководством директора Рона Гил­ берта (Ron Gilbert), на которых художник Стив Перселл (Steve рисовал забавные иллюстрации. Дэйв Гроссмеп вспоминает: Purcell) часто Как-то я написал стихотворение о том, что идеи подобны ворсинкам и пыли они рассеяны повсюду, и весь фокус в том, чтобы сотворить из них что-то интересное. 1 The legacy of Monkcy Island. Retro Gamer, no. 212, р. 18.
Глава 3. Общение 80 В беседу вступает Тим Шефер (Tim Schafer), отмечая усилия Рона на посту главы команды и тепло отзываясь о своей работе в LucasArts: Это были особенные времена, тем более - работа на ранчо Лукаса 1 в неверо­ ятной обстановке, созданной специально для того, чтобы творческие люди чувствовали себя комфортно и непринужденно. Обстановка была веселая, и работать со всеми этими людьми было одно удовольствие. Мне повезло устроиться туда сразу после окончания колледжа, и я рад, что был готов именно к такой работе. На последнюю игру Thimhleweed Park, вышедшую из-под пера Рона Гилберта и его команды, их во многом вдохновила успешная Monkey Island: не только потому, что они хотели воссоздать двумерную приключенческую игру в пик­ сель-арте, но и потому, что они старались эмулировать то, что делало игры 90-х в этом жанре такими особенными. Когда Ров начинает работу над новой игрой, он запускает Monkey Island 1 или 2, чтобы проникнуться атмосферой. Он при­ знавал, что так и не смог попять, в чем заключался ее секрет. С тех пор каждый из членов изначальной команды пустился в самостоятельное плавание. Retro Gamer приходит к выводу, что секрет The Secret о/ Monkey Island вполне может заключаться в динамизме группы. Рис. 3.3. Члены Гилберта» - команды LucasArts позируют для фотографии в «День Рона один из их многочисленных приколов, не дававших им скучать. Все одеты в стиле Рона (полосатый верх). Фото любезно предоставлено The lnternational House of Mojo Множество ветеранов индустрии разработки ПО подтверждают значимость группового динамизма. Адам Барр (Adam Barr, Microsoft), Дэвид Хайнемайер Ханссон (David Heinemeier Hansson, Ruby on Rails, Basecamp), Гергели Орош 1 Киноранчо и рабочее место кинорежиссера, сценариста и продюсера Джорджа Лукаса, расположенное в уединенном районе в штате Калифорния. - Примеч. ред.
3.2. Коллективная география ( Gergely Orosz, Uber, Skype) - 81 в любом интервью, посвященном истории успеха, бывшие члены ядра команды в скрытой форме или открытым текстом называют свою команду командой мечты. Если снять ностальгические очки, думаю, можно смело предположить, что в этом есть доля правды, да еще и подкрепленная кипой научных публикаций о сплочении команды, методах, составе, влиянии и т. д. Работа мечты движет командой. Или наоборот? УПРАЖНЕНИЕ Напоминает ли симматезию ваша нынешняя команда разработки? Если нет, что, по вашему мнению, нужно сделать, чтобы она ею стала? Например, как обрабатывается членами команды критическая обратная связь, какова атмосфера в коллективе, открыт ли каждый взаимному обучению, не иссякает ли поток общих идей, двигающий команду вперед, поддерживает ли компания действия команды? Что может послужить первым (небольшим и достижимым) шагом к такой команде мечты? 3.2. КОЛЛЕКТИВНАЯ ГЕОГРАФИЯ Михай Чиксентмихайи начинает свою книгу о психологии потока и креативности с отрезвляющего заявления: созидательная сила одного человека пренебрежимо мала. Тем не менее в умах каким-то образом продолжает жить идеальный образ одинокого творческого гения, которому в одиночку удается изменить целую область знаний. Эйнштейн написал труд о теории относительности, который перевернул наше представление о физике, но даже у Эйнштейна была группа друзей, называемая «Академия Олимпия~ ( <<Akademie Olympia~ ), в которой обсуждались вопросы, связанные с философией и физикой. Первые немногочисленные, но важные семена его теории, весьма вероятно, были взращены во время таких дискуссий. Как утверждает Чиксентмихайи, творчество общесистемно. Что же можем сделать мы, отдельные личности, чтобы повысить шансы на успех наших творческих устремлений? Обсуждение в предыдущем разделе показы­ вает, что ответ кроется в том, чтобы стать частью команды мечты или создать ее. Окружим себя теми, кто добивается высоких результатов, чтобы улучшить собственные показатели. Будем искать экспертов. Да только где же найти еди­ номышленников? Iде - это и есть один из ключевых параметров. Физическое расположение камераты сыграло существенную роль в истории. 3.2.1. Жидкие сети Случалось ли так, что ваши попытки преподнести некую идею семье или друзьям встречали от силы прохладный прием? Возможно, вы выбрали не ту целевую аудиторию. А может быть, ваша идея потонула в море вечно развивающихся (и, возможно, более ценных) идей окружающих? Видимо, эта среда была в бук­ вальном смысле слишком летучей.
82 Глава 3. Общение Эксперт в области инноваций и научный консультант Стивен Джонсон (Steven Johnson) подмечает это явление в своем рассказе «Where Good Ideas Come From>.> 1• Он объясняет, что рождение, успех и смерть идей можно представить в виде жидкой сети. С точки зрения химии вещество может существовать в одном из трех агрегатных состояний: в твердом, жидком или газообразном, как показано на рис. 3.4. Во льду молекулы менее подвижны, чем в воде. Нагревание воды приводит к из­ менению состояния во время испарения. В этом состоянии молекулы в высшей степени подвижны. (Для краткости мы опустим плазму, которая еще более не­ стабильна, чем газ.) t1/ Рис. 3.4. Слева: твердое вещество, идеи, высеченные в камне благодаря определенной форме и объему. В середине: жидкое вещество, позволяющее устанавливать новые связи. Справа: газообразное вещество, слишком летучее, чтобы идеи могли «схватиться» Джонсон сравнивает древних охотников и собирателей с веществом в газо­ образном состоянии: кочевники перемещались с места на место, не обмениваясь идеями с другими группами людей, пока не начали вести оседлый образ жизни и не основали города. Происходит конденсация, и возникают человеческие сети, состояние которых более напоминает жидкое. Именно тогда появились изобретения, подстегнувшие развитие первых цивилизаций. Оседлый образ жизни сделал возможным «перетекание>> идей от человека к человеку, как это называет Джонсон. Для распространения идей сеть должна оставаться жидкой и не застывать. Иначе инновации застаиваются и, в худшем случае, эволюция становится деволюцией. 1 Steven Johnson. Where good ideas соте from: The natural history of innovation. Penguin PuЬlishing Group, 2011 (Джон сон С. «Откуда берутся хорошие идеи. Рождение и судьба инноваций,,,).
3.2. Коллективная география 83 Джопсоп также утверждает, что именно по этой причине инновации порой гео­ графически группируются в больших и оживленных городах. Принятие чужих идей - только в меру - повышает вероятность творческих достижений. Исследователь психологии и истории Дин Саймонтон (Dean Simonton) пришел к этому же выводу', изучая воздействие культурного вливания па одно из самых закрытых обществ - средневековую Японию. Достижения во многих областях, таких как медицина, философия, проза, поэзия и особенно живопись, были явно связаны с открытостью к влиянию со стороны на нацио­ палыюм уровне. Мы можем использовать понятие жидких сетей для описания того, как в созна­ нии одного человека и в человеческом кластере усиливается процесс создания новаторских связей. Специалист по предпринимательству Сет Годин Godin) (Seth подчеркивает счастливую случайность идей: <<Идеи возникают, когда сталкиваются непохожие миры~ 2 • Вспомним систему управления личными знаниями, о которой мы говорили в главе 2. Если большинство заметок снова и снова выражают одни и те же идеи, то ваш поток знаний может застыть. С другой стороны, если в заметках будут фигурировать немногочисленные, по в высшей степени оригинальные идеи, у них не будет возможности перекликаться с другими, чтобы развиться в вы­ дающуюся идею. В идеале ваша система знаний плещется между этими двумя крайностями: вот вам и жидкая сеть. Это же утверждение справедливо для групповой динамики. Многие безумные идеи, высказанные в тот момент, когда пи у кого вокруг не было времени спо­ койно проанализировать или скомбинировать их, скорее всего, просто сгинут в безвестности. С другой стороны, недостаточное количество идей или слишком большое их число тоже могут не найти творческого применения. Группа работа­ ющих совместно созидателей, блуждающих между этими двумя крайностями, образует жидкую сеть. Согласно Стивену Джонсону, места, которые люди посещают, в которых они работают и живут, представляют собой твердые или жидкие сети; таким образом, география становится определяющим фактором творческого успеха. Если бы вы выросли в сельской местности, ваши шансы на успех в творчестве были бы невелики, если только вы не переехали бы в такое место, где «всё и происходит~. Конечно, в наш век глобализации оптоволоконные сети и Zoom радикально изменили такое положение дел, хотя и пе полностью. Именитые компании 1 2 Dcan Keith Simonton. Forcign influence and national achievement: the impact of opcn milieus on Japanese civilization. J ournal of Personality and Social Psychology, 1997. Seth Godin. Linchpin: аге you indispensaЬle? How to drive your career and creatc а remarkaЬle future. Piatkus Books, Hachette UK, 2010 (Годин С. <<Незаменимый. Мож­ но ли без вас обойтись?~).
84 Глава 3. Общение и исследовательские университеты привлекают множество молодых и много­ обещающих специалистов по всему миру, убеждая их преодолевать тысячи километров и обещая работу с лучшими из лучших в надежде, что это высечет искру столь необходимой креативности. Возможно, так оно и будет. Отличным способом получить представление об идеях других культур являются такие инициативы, как Meetup, Skillshare, Eventbrite и Airbnb Experiences. Для того чтобы выполнить это упражнение, вступите в одно из уникаль­ ных виртуальных сообществ. Постарайтесь расширить свои горизонты за пределы УПРАЖНЕНИЕ программирования. Например, вступите в философскую дискуссию, рисуйте вместе с сотнями единомышленников или изучите основы переплетного дела. Окиньте взглядом различные возможности, выберите одну и щелкните на ссылке 43ареrистри­ роваться~,,, Многочисленные эксперты в различных уголках света готовы поделиться своими знаниями. Они ждут вас! 3.2.2. Творчество заразитеяьно Глубокомысленная аналогия Джонсона, позаимствованная из мира химии, учит нас также тому, что, взаимодействуя друг с другом, химические вещества вли­ яют на состояние друг друга. Иными словами, как сказал Альберт Эйнштейн, творчество заразительно. Исследования подтверждают, что мы становимся более креативными, если окружены креативными коллегами 1 • Одно только их при­ сутствие усиливает нашу тягу к творчеству. Подобный эффект мы наблюдали, когда организовывали междисциплинарные хакатоны в разных университетах. Пары студентов, работавших в одном большом зале, отметили, что они ощуща­ ли прилив вдохновения именно из-за того, что работали в окружении других групп, даже если интерпретировали задание по-разному. Ходя по залу и общаясь с другими группами, студенты собирали чужие идеи, чтобы адаптировать их и применить к своему решению. Это неудивительно. Мы социальные животные, и наш мозг заранее настроен на копирование поведения, причем любого поведения. Если мы окружим себя творческими программистами, вероятность стать «одним из них~,, возрастет. Это очень напоминает теорию «разбитого окна~,,, привнесенную в мир програм­ мирования прагматичными программистами Энди Хантом и Дэйвом Томасом Оставьте после себя кучу мусора, и люди набросают туда еще больше. Будьте последовательны в наведении порядка в коде, и ваши коллеги автоматически станут вести себя как сознательные граждане-кодеры. (Dave Thomas) 2• 1 2 Randall G Holcombe. Cultivating creativity: market crcation of agglomeration economies. Handbook of creative cities. Edward Elgar PuЬlishing, 2011. Andy Hunt and Dave Thomas. The Pragmatic Programmer: fromJourneyman to Master. Addison-Wesley Professional, 1999.
3.2. Коллективная география 85 3.2.3. Переезд в стимуnирующую среду В 1952 году, в возрасте 27 лет, швейцарский скульптор Жан Тэнгли Qean Tinguely) переехал во Францию вместе с женой, чтобы продолжить карьеру в области искусства. Он вырос в Базеле, в котором проживали 180 тысяч человек и который трудно было назвать маленьким городком. Начиная с эпохи Воз­ рождения Базель являлся значимым торговым и культурным центром. Тем не менее Тенгли там не нравилось. Он чувствовал, что задыхается, можно сказать, творчески выгорает. Когда он прибыл в Париж, он словно помолодел: •Швей­ цария - не стимулирующая среда. Париж - другое дело. В нем я чувствую себя как рыба в воде•. В Париже, влившись в авангардное течение нового реализма, он нашел свою жидкую сеть, которая в Базеле была, на его вкус, слишком твердой. Плоды его переезда выставлены в музеях по всему миру (по крайней мере, их часть). Самые известные работы Тэнгли - это саморазрушающиеся машины, которые он любил взрывать на глазах у изумленной публики. Не беспокойтесь, пустыня Лас- Вегаса ничего не почувствовала 1• Когда я учился на хлебопека, я искал пекарню, в которой мог бы поработать стажером. Поскольку меня интересовал в основном хлеб на закваске, а учиться хотелось у лучших, я выбрал •De Superette•, что в Генте. Почему? Потому что тогда главным хлебопеком была Сара Лемке, эксперт из Америки, которая обучалась пекарскому ремеслу вместе с Чедом Робертсопом (Chad Robertson) у Ришара Бурдона (Richard Bourdon). Для непосвященных в таинство производства хлеба на закваске отмечу, что пекарня Чеда •Tartine Bakery• в Сан-Франциско является одной из самых из­ вестных и уважаемых пекарен в мире. Чед - один из моих пекарских кумиров. И конечно, будучи известным пекарем, Чед опубликовал ряд книг о своем ре­ месле, одна из которых, •Tartine Bread• (издательство Chronicle Books, 2010 г.), стала нетленной классикой. Без колебаний переключайтесь на нее, если выпечка хлеба увлекает вас больше, чем печатание на клавиатуре всяких скобок и точек с запятой. Поскольку я живу в Бельгии, работа в •De Superette• стала очередным прорывом: безумные идеи вроде этой требуют, чтобы моя вторая половинка поставила на них штамп •Одобрено•. Оглядываясь назад, понимаешь, что бросить все и уехать в Сан-Франциско, чтобы каждое утро в 5:30 тебя обдавало жаром печи, - это было, наверное, слишком. Если вы из Бельгии и искренне преданы делу хлебопечения, рано или поздно вы окажетесь в •De Superette•. Во время стажировки я встретил нескольких единомышленников, которые заходили в пекарню поболтать с Сарой, обменяться 1 Вероятно, автор намекает на Невадский испытательный полигон, расположенный всего в ста километрах от Лас- Вегаса. - Примеч. ред.
86 Глава 3. Общение идеями и вдохновиться ее методологией и использованием очень сырого теста. «De Superette~ - это еще и ресторан, в котором выдающиеся шеф-повара со всей Европы работают сообща, готовя оригинальные и вкусные блюда. Разумеется, пекарен рядом с домом тоже полным-полно. Уверен, я мог бы про­ ходить стажировку в моем квартале. Однако я хотел работать в самом центре развязки на магистрали обмена пекарскими идеями. Мне нужна была жидкая сеть. Не скажу, что она стала камератой, поскольку мое пребывание там было весьма кратким и мои обязанности как стажера сводились к тому, чтобы помал­ кивать и делать как скажут, - по правде говоря, это было прекрасно. Привлекательность стимулирующей среды - это то, что заставляет разработ­ чиков стекаться в высокотехнологичные кампусы, такие как Yahoo! или Google, где они «раздвигают границы рабочего места~, по словам представителя Google в интервью «New York Times~ 1• Тщательно продуманное случайное взаимодей­ ствие между сотрудниками стимулирует и творчество, и результат. 3.2.4. Кластеры гениев Почему западная философия ведет свое происхождение из Греции и ее окрест­ ностей, откуда происходит множество других концепций, важных с точки зрения культуры? Почему центром инноваций во времена Возрождения была Флоренция, оказывавшая влияние на будущее не только музыки, но также жи­ вописи, архитектуры, экономики и политики? Почему множество талантливых художников собрались в Париже в XIX веке? Веком позже эпицентр искусства каким-то образом переместился из Европы в Нью-Йорк. И почему многие се­ годня мечтают о работе в Кремниевой долине? Иностранный корреспондент Эрик Вейнер (Eric Weiner) объездил весь мир, чтобы дать освещение этим вопросам в своей книге «The Geography of Genius,> 2• Вейнер, увлеченный креативностью, пытался найти ответы, которые могли бы помочь ему в воспитании дочери. «Для меня, наверное, поздновато, поэтому буду довольствоваться тем, что пишу о творчестве~, - заключает оп. Это может звучать обескураживающе, но в большинстве случаев единого ответа на глобальный вопрос о географии творчества пе существует. Кластеры изо­ бретателыюсти, которые Вейнер называет <<кластерами гениев~, появляются и исчезают, когда в определенных географических областях концентрируется и теряется энергия. 1 2 James В. Stewart. Looking for а lcsson in Google's pcrks. New York Times, March 15, 2013. https://www.nytimes.com/2013/03/16/business/at-google-a-place-to-work-and-play.html. Eric Weiner. The geography of genius: а search for thc world's most creativc places from ancient Athens to Silicon Valley. Simon & Schuster, 2016 (Вейнер Э. «География гениаль­ ности~).
3.2. Коллективная география 87 Например, неутолимая жажда завоеваний Александра Великого в итоге способ­ ствовала распространению греческой литературы в Древней Персии. Во время его краткого пребывания в Египте была основана Александрия, которая при помощи Птолемея и его последователей развилась в один из самых влиятельных городов мира. Александр, который все время носил при себе томик «Илиады» Гомера, был очарован греческой литературой. Птолемей, в то время преданный соратник Александра, понял это и стал конфисковывать и копировать каждый лист папируса, прибывавший в Александрию. Через непродолжительное время Ве­ ли1<ая библиотека Александрии была переполнена книгами. Большая их часть, к сожалению, погибла в огне из-за беспечности римлян и последовавшего затем нашествия мусульман. Великая библиотека привлекала множество интеллектуалов. Александрия стала одним из первых образовательных исследовательских центров. Утверждается, что именно изучая книги в библиотеке, Архимед изобрел Архимедов винт. Ирен Вальехо (Irene Vallejo ), исследователь истории образования, увлекающаяся всем, что связано с классической античностью, делится воодушевлением по поводу античной библиотеки в своей экспозиции, посвященной истории книг 1 : Наэлектризованная атмосфера вокруг этих полностью исписанных свитков и их заряд должны были походить на нынешний всплеск творчества, порож­ денный интернетом и Кремниевой долиной. Знания были не единственной причиной бояться Александрии или уважать ее. В дельте Нила пышным цветом цвело растение папирус, что делало его идеаль­ ным товаром на экспорт наряду с зерном. Древний Египет служил житницей стран Средиземноморья: когда поток зерна иссяк, на весь этот регион обрушились голод и войны. Зерно в то время было тем, чем в наше время является нефть: прекрасным способом оказывать давление. Другие кластеры гениев тоже возникали органически - и постепенно. Вейнер отмечает, что во Флоренции изобретение церковью чистилища и последую­ щая продажа индульгенций для очищения грешного духа привели в движение огромные потоки денег, направленные на возведение впечатляющих памятников, которыми мы восхищаемся и поныне. Золотая лихорадка естественным образом привлекла гениев той эпохи. Вейнер приходит к выводу о том, что настоящим гением является не отдельный человек, а организация и город, которые зака­ зывают (творческую) работу. Большинство творцов, которых изучал Вейнер, не стали гениями там, где ро­ дились: они раскрьvшсь только тогда, когда стали иммигрантами. Гениями не рождаются, ими становятся. При надлежащих условиях гениев привлекают определенные места, как Жана Тэнгли привлек Париж. 1 Irene Vallcjo. Papyrus: ecn gcschiedenis van dc wereld in bocken. Meulenhoff, 2021.
88 Глава 3. Общение Какие именно это условия, остается неясным, что, впрочем, пе помешало нам попытаться воспроизвести кластеры гениев в высококлассных бизнес-парках или кампусах, как велят выражаться тренды ( таких, как показано па рис. 3.5), - которые должны высекать искру творчества. Эти усилия, достойные всяческих похвал, несомненно, способствуют расширению общения представителей разных видов бизнеса, по искусственное создание настоящих кластеров гениев может не увенчаться успехом. Рис. 3.5. Кампус Корда неподалеку от моего дома в Хасселте (Бельгия) является примером современного технологичного образования, ориентированного на то, что бизнес-конгломераты и владельцы бизнеса называют «бизнес-сообществами»: там люди и компании, как большие, так и малые, собираются для взращивания идей. Короче говоря, это один из многочисленных бизнес-парков, спроектированных как «скелет» кластера гениев. Фото: Karel Hemerijckx Дизайнер игр Тим Шефер упомянул ранчо Лукаса, которое предположительно проектировалось для ускорения потока творческой мысли, как особенное место для работы. Мы рассмотрим физическое окружение как стимул к творчеству в главе 7. Планировщики городского развития и архитекторы любят приводить следую­ щую цитату из книги« The Rise of the Creative Class~ 1 теоретика городов Ричарда Флориды (Richard Florida), которой вторит приведенный выше вывод Вейнера: 1 Флорида Р. «Креативный класс,>, 2007.
3.2. Коллективная география 89 «Не компании, а места порождают таланты~>. И тем не менее мы продолжаем возводить па пьедестал компании, а пе места. Если эта цитата утвердилась по соседству с такими терминами, как «предпринимательская деятельность>>, «обзор политики~> и <<стратегический~>, значит, возможно, припша пора сыграть в бинго с IIOBOMOДIIЫMИ словами. Размеры кластеров и креативность Какими должны быть команды/камераты/кластеры гениев для того, чтобы выдать творческий продукт, - большими или маленькими? Это непростой вопрос, ответ на который зависит от многих переменных. Исследователь творчества Ю-На Ли (You-Na Lee) с коллегами обнаружили, что, с од­ ной стороны, соотношение размера команды и новаторства характеризуется пере­ вернутой U-образной кривой, но с другой стороны, размер прямо пропорционален эффекту 1 • Таким образом, в целом и слишком маленькие, и слишком большие команды работают не очень творчески, но у больших команд больше достижений. Впрочем, из этого правила, как всегда, возможны исключения. Заметим, что исследование Ли и коллег проводилось среди научных команд в ака­ демической среде, а не среди разработчиков ПО в «полевых» условиях. Другие до­ кументы указывают на возросшее число конфликтов в слишком больших группах, что приводит к препирательствам и низкой продуктивности. Каков же идеальный размер команды? Правила скрама 2 предписывают численность в районе семи человек, но скрам не упоминает о креативности - это просто способ довести дело до конца. В основном меньший размер означает большую гибкость, а больший - больше накладных расходов, связанных с коммуникацией. Возьмем, к примеру, тревожную тенденцию ниаршоринга 3 или офшоринга 4 • Думаю, каждый, кто имел (не)удовольствие работать в нескольких (удаленных) командах и синхро­ низироваться с ними, кивает головой, читая эти строки. УПРАЖНЕНИЕ Напоминает ли ваше рабочее окружение жидкую сеть, в которой вы, по выражению Тэнгли, чувствуете себя как рыба в воде? Или это скорее твердая сеть, в которой нет стимулов, а идей слишком мало? Если это так, какие действия можно предпринять, чтобы способствовать счастливому столкновению непохожих друг на друга миров? 1 2 You-Na Lee,John Р. Walsh, andjian Wang. Creativity in scientific teams: Unpacking novelty and impact. Research Policy, 44(3), 2015. Scrum ( от англ. scrum, s1схватка~>) - методика гибкого управления проектами, помога­ ющая командам структурировать работу и управлять ею на основе набора цешюстей, принципов и практик. 3 4 - Примеч. пер. nearshoring) - перенос производства/части производства в со­ седние/близлежащие страны. - Примеч. пер. Офшоринг ( англ. offshoring) - перенос производства/части производства в отдаленные страны. - Примеч. пер. Ниаршоринг (англ.
90 Глава 3. Общение 3.3. ТВОРЧЕСКАЯ РАБОТА СКВОЗЬ ВРЕМЯ Как и география, время является еще одним важным фактором, способствую­ щим творчеству или препятствующим ему. Помните, что ваше творение будет воспринято как творческий прорыв, только если таковым его сочтут эксперты. Иногда мир попросту не готов к вашему изобретению. Муниципальные работ­ ники недоверчиво покачают головой, если вы предложите вымостить улицы мармеладом, но сам проект определенно был бы одобрен роальддалевским Вилли Вовкой. Порой такая заманчивая идея, как эта, считается слишком прогрессивной. Социолог и исследователь творчества Питер ван Стрин признает важность со­ зидания в нужный момент. В своей книге «Het Creatieve Genie» 1 ( <<Творческий гений») он сетует на то, что многие заблудшие гении так и не попали в учебники истории. Если бы только они подождали еще несколько лет, чтобы представить свои труды! Мир полнится техническими изобретениями, опередившими свое время. Возь­ мем, к примеру, игру Outcast 1999 года. Несмотря на теплый прием критиков, продажи были весьма скромными, что в итоге вынудило разработчика - ком­ панию «Appeal>> - отменить продолжение игры и заявить о своем банкротстве. В 2006 году, через семь лет после ее выпуска ( а это очень большой срок в измен­ чивой среде индустрии игр), несколько журналистов стали восхвалять Outcast как революционный продукт за ее открытый трехмерный мир, который можно было свободно исследовать и о котором в то время никто не слыхивал. В 2001 году эту концепцию переняла Grand Theft Auto III - и понесла ее в будущее. Почему так получилось? Потому что в 1999 году мир еще Вы думаете, облачные сер висы вроде инновационные изобретения? Еще в не был готов. Microsoft 365 или ХЬох Cloud Gaming 1994 году сервис Sega Channel предпри­ няла первую попытку вывести на рынок онлайн-систему доставки коптента посредством интерфейса кабельного телевидения па коаксиале. Ее хвалили за новаторство, по время для ее запуска было выбрано неудачно, вследствие чего продукт сгинул в безвестности почти так же быстро, как и появился. А системы WebTV середины 1990-х, ознаменовавшие собой первое использование интер­ нета на основе телевидения? А ПО Apple HyperCard 1987 года, использующее гипермедиа для связи виртуальных «карточек»? Эти концепции позже взял на вооружение веб (а также вики иJavaScript) - и тоже понес их в будущее. Многие из бывших членов LucasArts размышляли о <<Правильном временИ>> создания The Secret о/ Monkey Island. Они конкурировали с серией Кing Quest производства Sierra On-Line, обошедшей по продажам Maniac Mansion, воз­ можно, благодаря средневековому антуражу. С движком 1 SCUMM появилась Pieter J. van Strien. Hct crcatieve gcnie: het gchcim van dc genialc mcns. Amstcrdam University Prcss, 2016.
3.3. Творческая работа сквозь время 91 возможность уделить больше времени сюжету, головоломкам и графике. История доказала, что время для «пиратской• игры было самое что ни на есть подходящее. годом позже или около того, Sierra Если бы эта идея возникла в голове Рона Гилберта несколькими годами ранее, из-за ограниченных возможностей аппаратного обеспечения Monkey Island могла бы стать Monkey Если бы первая Monkey Island появилась On- Line могла бы выдать на-гора нечто, что превзошло бы ее. Village. Оюю возможностей всегда небольшое. В первой главе этой книги мы узнали о том, как не везло Ван Гогу, когда он пытался заработать на жизнь как художник. Для искусства это обычное дело: поначалу новые методики и идеи кажутся смехотворными и незамедлительно отвергаются. Жорж Брак и Пабло Пикассо обращались к кубизму в течение многих лет, прежде чем он стал самостоятельным направлением в искусстве. Обычно на то, чтобы убедить критиков, требуется по меньшей мере десятилетие упорного труда - к несчастью, у Ван Гога не было столько времени. Иногда, впрочем, на это может уйти больше века. Картине Гюстава Курбе «~Origine du monde• ( «Происхождение мира•), представляющей собой изо­ бражение женских гениталий крупным планом и написанной в 1866 году, пона­ добилось 122 года для того, чтобы куратор с прогрессивными взглядами счел ее готовой к восприятию широкой публикой. Было это в 1988 году в Нью- Йорке. Даже тогда она шокировала всех. Поговаривают, что тот, кто заказал эту карти­ ну, купил еще одну такого же размера, изображающую обычный пейзаж, чтобы заслонять ею «~Origine• во время приема гостей. Лучше уж спрятать ее, чем вызвать всеобщее возмущение. Мне не хватило духу привести здесь фотографию этого произведения; уверен, вы найдете, где на него посмотреть. Современному итальянскому художнику Лучо Фонтане удалось озадачить меня, когда я посетил Городской музей в Амстердаме. Стоя у его картины, я обнару­ жил, что смотрю не на мазки краски, аккуратно нанесенные на холст, а на дыру. Фонтана назвал это «Пространственная концепция• ( «Concetto Spaziale• ): белое полотно с изогнутым разрезом, сделанным острым ножом. Это идет вразрез с представлением о том, что картина являет собой плоскую поверхность, иллю­ зию глубины на которой можно создать при помощи рисования. Я попробовал представить себе художника, стоящего перед натянутым холстом. Он сосредоточивается и глубоко вздыхает. Он может стоять так целый час. Вдруг внезапно он взмахивает ножом и вспарывает холст, обнажая кусок темноты, скрывавшейся за ним. Сдаюсь. Я не был готов к такому произведению. 3.3.1. Кривая принятия На принятие новых идей, продуктов и практик нужно время. Эта идея была попу­ ляризована исследователями сельскохозяйственной отрасли Райаном и Гроссом (Ryan and Gross ), опубликовавшими классическую работу по распространению
Глава 3. Общение 92 гибридной кукурузы еще в 1943 году 1 • Авторы вывели кривую, которая обо­ значает готовность или неготовность фермеров принять новый сорт кукурузы (рис. • 3.6). Исследование выявило следующее: Процесс принятия начался с малого процента фермеров, готовых попробовать что-то новое. Далее инновация каскадом распространилась на остальных фермеров. • Самыми значимыми факторами были фермеры по соседству. Когда они увидели фермеров, внедривших новую гибридную кукурузу, и переговорили с ними, они тоже приняли ее. n. ЛРАtМАТИКИ r ----!t)D т. Рис. 3.6. Кривая инновации, до сих пор широко используемая в бизнесе и маркетинге для объяснения того, как постепенно внедряются новые продукты. В теории новаторы и первые внедренцы должны помочь вам завоевать раннее и позднее большинство на рынке. В теории ... Другие исследователи начали проявлять интерес и рисовать собственные кривые инновации, описывая различные стадии процесса: осведомленность, информа­ ция, оценка, тестирование, принятие (awareness, information, evaluation, trial, adoption). Программисты, следящие за хорошо известным технологическим радаром (Technology Radar) компании ThoughtWorks 2, конечно же, узнают эти термины. Конечно, попытки завоевать весь рынок от края до края требуют времени. Иногда бывает полезно попытаться повлиять на новаторов, которые будут распростра­ нять информацию от вашего имени, иногда нет, если группа слишком мала. За последние 70 лет кривая принятия Райана и Гросса подверглась суровой крити­ ке. Инновации, распространяемые устно, не бывают однородными, а фермеры никогда не умещаются в одну категорию. 1 Bryce Ryan and Neal С. Gross. The diffusion of hybrid seed corn in two Iowa communities. Rural Sociology, 8(1): 15, 1943. 2 См. https://www.thoughtworks.com/radar.
3.4. Если поток творчества замедляется 93 Несмотря на свои недостатки, кривая принятия остается популярной и по­ казательной при попытке пробиться на новый рынок. Игра 90-х Outcast так и не вышла за пределы круга технических энтузиастов. Картинам Ван Гога это удалось, но времени понадобилось слишком много. Кто знает, какое место на кривой займет эта книга. УПРАЖНЕНИЕ Учитывает ли ваша команда кривую принятия, вынося решение о том, какую технологию использовать для конкретного проекта? Сожалела ли когда­ нибудь ваша команда о своем выборе, подобно ранним внедренцам или отстающим? Как насчет позиционирования ваших клиентов на кривой - обновляют они ПО до последних версий или настроены более скептически? 3.4. ЕСЛИ ПОТОК ТВОРЧЕСТВА ЗАМЕДЛЯЕТСЯ Итак, мы знаем, что для того, чтобы подстегнуть собственное воображение, важно опереться на других - встать на плечи гигантов. Также мы знаем, что эти гиганты любят собираться в кластеры. Наконец, нам нужно встретить гигантов в нужный момент. Слишком рано Слишком поздно - - люди будут не готовы принять наши идеи. кто-то другой украдет наши планы. В ходе наших собеседований для выяснения роли творчества в разработке ПО многие программисты осознавали необходимость общения, вспоминая некоторые провальные проекты, в которых главной ошибкой бьша ... координация внутри команды (или между командами). 3.4.1. Социаnьный дonr У исследователя поведения в области разработки ПО Дамиана Тамбурри (Damian Tamburri) есть специальное слово для неудачного общения в командах разработчиков - социальный долг. Первое, что приходит в голову при чтении этих слов, - очевидно, технический долг. Во всяком случае, такой была моя первая мысль, когда я прочитал о социальном долге в образовательной статье, озаглавленной <<The Architect's Role in Community Shepherding,>1. Мы, разработчики ПО, прекрасно знаем, что такое технический долг, когда при­ ходится работать над устаревшим или леrаси-кодом и сопутствующими много­ численными проблемами. Если повезет, небольшая часть запахов 2 в конечном счете воплотится в технические истории пользователей и попадет в спринт. Если повезет меньше, запахи породят еще больше запахов, и вы не успеете оглянуться, как ситуация полностью выйдет из-под контроля. 1 2 Damian А. Tamburri, Rick Kazman, and Hamed Fahimi. The architect's role in community shepherding. IEEE Software, 2016. Имеется в виду <1запах кода~>, или -~код с запашком~>, - код с признаками проблем, которые со временем могут усугубиться. - Примеч. пер.
94 Глава 3. Общение Мы, разработчики ПО, то и дело говорим о запахах. Мы организуем рабочие группы и собираем сессии, чтобы выявить их и избавиться от пих, мы читаем книги, такие как <<Рефакторипг>-> Мартина Фаулера и << Чистый код>> Роберта Мартина', а дома можем даже нажаловаться партнеру на то, что придется сде­ лать еще один «костыль>> из-за цейтнота, добавляя запах, вместо того чтобы от него избавляться. Однако на этом проблемы разработчиков не заканчиваются. Технический долг - всего лишь самая очевидная из пих. Запах кода и технический долг Давайте проясним некоторые определения . Что такое технический долг? Это из­ держки в результате следования « по пути наименьшего сопротивления » , когда вместо этого следовало бы применить более действенный технический подход. Если вовремя его не устранить , на нем накапливаются « проценты », что означает, что со временем произвести определенные улучшения будет труднее. В качестве примера можно привести несколько паттернов проектирования, которые все ругают, но терпят их до тех пор, пока не становится слишком поздно рефакто­ рить код, не поломав при этом того или другого. Злоупотребление статическими переменными - еще один известный признак того, что у кода имеются проблемы посерьезнее, называемые также « код с запахом » . Этот термин придумал Кент Бек (Kent Beck), но по - настоящему популярным его сделала книга Мартина Фаулера «Refactoring»2• Некоторые технические долги, как и обычные, можно оправдать: это не всегда выбор ленивых . 3.4.2. От технического долга к долгу социальному Технический долг может быть обозначен в коде как @TechnicalDebt (я видел такие пометки, которые успешно игнорировались), по как быть с социальными проблемами, возникающими в командах разработчиков? Мы знаем, что опи су­ ществешю влияют на эффективность работы команды - возможно, па порядки больше, чем несколько «простых>> запахов кода, которые приходится обходить (или, в идеале, устранять). Кроме того, мы косвенно знаем пару «запахов>-> со­ общества: подобно запахам кода, они представляют собой антипаттерны, снова и снова возникающие в сообществах (разработчиков) и отрицательно влияющие на творческие усилия команды. На самом деле мпе правятся термины «социальный долг>-> и «запахи сообще­ ства>>, потому что они идеально дополняют более известные «технический долг>> и «запахи кода>->. Я столкнулся с этими терминами в работах Дамиапа Тамбурри, где оп рассуждает о роли «пастуха>>, которую играет архитектор 1 2 Мартин Р. «Чистый код>>. Санкт-Петербург, издательство «Питер;,, 2015. Martin Fowler. Rcfactoring: lmproving the design of existing code, 2nd ed. Addison-Wesley, 2019 (Фаулер М. <<Рефакторипг: улучшение проекта существующего кода;,).
3.4. Если поток творчества замедляется 95 ПО (или, в данном случае, тимлид/менеджер разработчиков), выступающий как переговорщик, который должен попытаться минимизировать воздействие обоих запахов. 3.4.3. Запахи сообщества Вот выборка запахов сообщества, выявленных командой Дамиана Тамбурри в ходе интервью со многими практиками: • Искривление времени. Организационные изменения, которые заставляют чле­ нов команды ошибочно предполагать, что общение займет меньше времени и координация не нужна, - а это, в свою очередь, приводит к нерешенным проблемам, запахам кода и, как результат, к низкому качеству ПО. • Когнитивная дистанция. Ощущаемая дистанция между коллегами на физи­ ческом, техническом и социальном уровнях, вызывающая недоверие и непо­ нимание, что приводит к потере времени. • Заброшенность новичков. Новичков предоставляют самим себе, что вызывает раздражение и становится причиной высокой нагрузки на работе. • Дистанцирование от власти. Дистанция, которую члены команды с низким уровнем ответственности воспринимают, принимают или ожидают от власть имущих, что препятствует обмену знаниями. • Отстранение. Впечатление о том, что продукт достаточно зрелый, чтобы представить его потребителю, когда это пе так, из-за непроверенных пред­ положений и недостаточной вовлеченности. • Придирчивые члены команды. До крайности требовательные и до бессмыслен1юсти аккуратные люди, вызывающие ненужные задержки и фрустрацию в команде. • Разработка по рецепту. Программисты, которые придерживаются старых привычек и отказываются адаптироваться к новым технологиям и идеям. • Институциональный изоморфизм. Навязанная одинаковость процессов и фреймворков между различными командами, снижающая гибкость, мо­ ральный настрой и уровень сотрудничества. • Гиперсообщество. Слишком непостоянное мыслительное окружение, в ко­ тором все постоянно меняется, следствием чего является переполненное багами ПО. • Стычки DevOps. Строгое разделение команд разработки и эксплуатацион­ ных команд, возможно, даже по географическому признаку, что вызывает конфликты на культурной почве и отсутствие доверия. • Избыток неформальности. Излишняя неформальность из-за полного от­ сутствия протокола, вызывающая низкую подотчетность.
96 • Глава 3. Общение Потеря знаний. Новые технологии, адаптация к которым становится не­ возможной из-за отказа давних сотрудников, что приводит к потере новых знаний и практики. • Одинокий волк. «Тот парень», который действует, пе считаясь с мнением других. • Черное облако. Перегрузка информацией без четкого способа управления ею внутри команды и между командами, что приводит к потере потенциально отличных идей. Мне нравятся эти аналогии, поскольку с ними становится легче говорить о проблеме. Важно отметить, что названия запахов появились в результате анализа и группировки того, о чем говорили программисты на интервью. Что­ то из этого может найти у вас отклик, что-то - нет. Вы можете с легкостью придумать новые запахи и их вариации, учитывающие уникальный контекст вашей команды. Вы можете спросить, при чем здесь творчество. Да при всём! Легкий доступ к информации и ресурсам имеет решающее значение для проявления творче­ ских способностей. Нависло Черное облако или застряли в проблемах Потери знаний? Вот незадача. Опасная комбинация Когнитивной дистанции и Искрив­ ления времени, да еще, для разнообразия, со Стычками DevOps может иметь разрушительные последствия для морального духа команды. Психологи-теоретики посвятили целую область исследований командной кре­ ативности наряду с индивидуалъной и организационной креативностью1, когда процессы в команде, состав, динамика и методы исследуются в отношении к творческому результату. Каковы их выводы? Избыток конфликтов - это плохо. Кто бы мог подумать? Переход от кода с запахом к сообществу с запахом не бог весть какое дело, и каждый знает, что сообщества сами себя не создают. Как уже упоминалось в подразделе 3.1, Джессика Керр заявляет, что великие команды разработки симматезировапы. Мой личный опыт говорит примерно о том же: работайте с людьми, а не с тех­ нологиями. Это означает, что в команде программистов вышеперечисленным запахам сообщества следует уделять больше внимания, чем «простым» запахам кода. Внимательный читатель заметит, что многие запахи сообщества служат причиной запахов кода. В наши дни большинство конференций, посвященных ПО, включают в себя трек по социальным проблемам. Социальным и психологическим аспектам разработки ПО, конечно, уделяется некое внимание, 110 этого недостаточно. Это основная 1 Ming-Huei Chen. Undcrstanding thc bcnefits and detrimcnts of conflict on team crcativity process. Creativity and Innovation Managcmcnt, 2006.
3.4. Если поток творчества замедляется 97 причина, по которой я решил вернуться в академическую среду и в конечном счете написать данную книгу. Дамиан убежден, что в роли пастыря, заботящегося о пастве, должен выступать архитектор: «Мы всегда утверждали, что архитектор - это больше чем "техни­ ческий руководитель", однако теперь он должен быть еще и активным пастырем сообщества~. Хотя я думаю, что в явном виде наделять этими обязанностями одного человека в команде опасно, тем не менее соглашусь с тем, что делать не­ явные проблемы явными - это уже начало решения. Однако сплочение команды не является делом одного лишь архитектора, это скорее совокупные усилия каж­ дого человека, взаимодействующего с системой, и системы, взаимодействующей с каждым человеком, что является тем более убедительной причиной для всех членов команды ( включая нетехнарей) познакомиться с понятиями социального долга и запаха сообщества. Работа коллеги Дамиана по академической части - Джеммы Каталина строится 2021 году она опубликовала отчет о понимании ее командой на труде Дамиана. В вариативности запахов сообщества 1. Этот отчет не столь силён, сколь введение самого понятия, хотя в нем содержалось одно предложение, которое меня за­ цепило: <,Общение - ключевой фактор уменьшения социального долга,>. Давайте выведем понятия социального долга и запахов сообщества за пределы академических кругов разработки ПО и введем в команды разработки в рабочих условиях, где им самое место и где они крайне необходимы. Или просто напи­ шите@SосiаlDеЬt на клейкой бумажке, прилепите ее на спину одному из ваших коллег - и закончим на этом. 3.4.4. Как избавиться от социаnьноrо дonra Существует бесчисленное множество книг, статей, лучших практик, методов, моделей, представлений, экспериментов и теорий, призванных помочь выявить и минимизировать проблемы уровня команды. Приводить здесь все эти труды нет особого смысла. Некоторые моменты, правда, выделяются из общего ряда. Программисты, с которыми проводили интервью мои коллеги и я, упоминали, например, об ответственности - не просто о том, что другие несут ответственность за не­ правильные действия, но о разделении ответственности всей группой. Эксперт в области поведения и бывший консультант по управлению Кристофер Эйве­ ри (Christopher Avery) расширил эту идею до книги «ResponsiЬility Process~ 2 , 1 2 Gemma Catalino, FaЬio J>-alomba, Damian Andrew Tamburri, and Alexander Serebrenik. Understanding community smclls variaЬility: А statistical approach. IEEE/ АСМ 43rd International Conference оп Software Engineering: Software Engineering in Society, 2021. Christophcr М. Avcry, Mcri А. Walker, and Erin О. Murphy. Teamwork is an individual skill: getting your work done when sharing responsiЬility. Berrett-Koehler, 2001.
Глава 3. Общение 98 посвященной именно командной работе. Эвери учит нас перестать упиваться состояниями отрицания, оправдания или обвинений, из которых нам никак не выбраться, и вместо этого принять (общую) ответственность, признать проблему и попытаться решить ее. Общая ответственность должна уменьшить такие запахи сообщества, как Ког­ нитивная дистанция, Стычки DevOps и Отстранение. Я читал о сомнительных практиках, которые требовали от разработчиков указывать аж номер своего мобильного телефона вместе с изменениями в коде на случай поломки. Компа­ нии, применяющие такие порочные методы, похоже, забыли о сути ответствен­ ности - о том, что она одна на всех. Другим способом облегчить социальный долг является эффективное исполь­ зование парного программирования. Парное программирование эффективно устраняет такие запахи, как Одинокий волк, Потеря знаний, Разработка по рецепту и Заброшенность новичков, - пока команда берет на себя общую от­ ветственность за регулярную смену пар. Парное программирование помогает не только в борьбе с социальным долгом. Его долговременное действие включает в себя фасилитацию озарения (момент «Ага!~.>, о котором будет рассказано в главе 7) посредством коллективного обу­ чения, более высокое качество кода благодаря двум парам зорких глаз, а также большее удовольствие и уверенность в работе - как для умудренных опытом программистов, так и для обучающихся разработке ПО1. Если парное программирование - залог программистского счастья, то каков результат этой повышенной счастливости? Повышение креативности. Тому есть масса свидетельств как в академической, так и в популярной литературе. Компании начинают осознавать тот факт, что счастливые сотрудники работают лучше. Менеджеров по персоналу вдруг повышают до должности «директор по счастью~.>, чтобы они посвятили свои усилия повышению уровня благополучия на работе. Однако не обманывайте себя: единственная причина, по которой работодатели заинтересованы в вашем благополучии, - эффективность вашей работы, в том числе ваши творческие навыки по решению их сложных проблем. Соотношение «отдача - креативность~.> действует как петля подкрепления обратной связи: повышенная креативность ведет к большему счастью. Михай Чиксентмихайи описывает это следующим образом 2 : Многих делает счастливыми создание нового и совершение открытий. По­ этому повышение творческого потенциала может способствовать ощущению благополучия. 1 2 Мах О. Srnith, Andrew Giugliano, and Andrew DeOrio. Long term effects of pair programming. IEEE Transactions on Education, 2017. Mihaly Csikszentrnihalyi. «Happiness and creativity>>. The Futurist, 1997.
Итоги УПРАЖНЕНИЕ 99 Какие из вышеприведенных запахов сообщества вызывают тревогу в контексте вашей команды? Если таковых нет - поздравляю, вы в команде мечты! Возможно, в команде присутствует скрытый социальный долг, не совпадающий ни с одним из описанных здесь. В этом случае не стесняйтесь сформулировать название запахов, которые вы обнаружили самостоятельно. итоги • Коллективная креативность существенно усиливает наши индивидуальные творческие возможности. Вступите в сообщество людей, думающих как вы, но отличающихся друг от друга, чтобы обсуждать и улучшать вашу работу и работу других. • У того же коллектива есть тенденция органично группироваться в креатив­ ные регионы, или в кластеры гениев. Искусственное образование кластеров гениев оказалось довольно трудным делом. • Время, наряду с географией, является еще одним важным фактором, способ­ ствующим или препятствующим творчеству. Кривая инноваций показывает, что для внедрения идей нужно время. • Вовлечение во взаимное обучение, как следует из этой формулировки, при­ носит пользу и ученику, и учителю. Взаимное обучение гораздо эффективнее, чем передача или получение знаний. • Стремитесь к перекрестному опылению идей из разных областей и групп. Не ограничивайте свои интересы тем, что знаете. Ищите экспертов. Рас­ ширяйте свои горизонты. • Творчество общесистемно. Это сложная (живая) система, являющаяся чем-то большим, чем сумма отдельных слагаемых. • Во избежание эффекта эхо-камеры обеспечивайте (и приветствуйте) подлин­ ную критическую обратную связь, а не зеркальное отражение мнений других. • Обращайте внимание на то, в какой сети вы оказываетесь, когда работаете или посещаете встречи. Застаиваются ли идеи (твердая сеть), следуют друг за другом, как из пулемета (газообразная сеть), или эффективно распростра­ няются (жидкая сеть)? • Творческому процессу команд разработчиков может препятствовать соци­ альный долг. Ключевым фактором уменьшения социального долга является общение. Хорошим началом может стать выявление и определение запахов сообщества.
Ограничения В ЭТОЙ ГЛАВЕ: ✓ Таксономия полезных ограничений ✓ Как справляться с внутренними и наложенными ограничениями ✓ Использование самоограничений для достижения «зоны оптимального баланса» в творчестве ✓ Влияние наивности на творчество Свист серпа вспугнул сонных птиц, пrездившихся у дельты древнего Нила. Быстро и умело собирали работники урожай папируса, торопясь, пока невы­ носимый жар египетского солнца не превратил их труд в настоящий кошмар. Из волокон стеблей этого растения мастера изготавливали ценный писчий материал, подобный бумаге. Во II веке до нашей эры царь Птолемей V приказал ремесленникам незамедли­ тельно прекратить экспорт одного из ценных национальных товаров. Причиной было не что иное, как заурядная ревность. Соперница что в Мисии (ныне это Западная Турция), - - библиотека в Пергаме, снискала достаточную популяр­ ность, чтобы вызвать раздражение царя, стремившегося любой ценой защитить славу и влияние своей Великой Александрийской библиотеки. Неожиданная нехватка папируса не помешала эллинскому царю Эвмену II рас­ ширить библиотеку в Пергаме. Его тяга к литературе была велика и намного
Ограничения 101 превосходила литературные амбиции его предшественников. За пределами дельты Нила растение папирус приживалось плохо, а на глиняных табличках если и можно было уместить книгу, то совсем небольшую. Однако вместо того чтобы смириться с поражением, мастера на службе у Эвмена усовершенствовали восточное искусство письма на коже животных - способ, который до этого при­ менялся только в отдельных местностях и не снискал большой популярности. Ловкий ход Птолемея обернулся большой ошибкой. Новый носитель получил название пергамент (на латыни - pergameno) в память о городе, где эта техно­ логия была доведена до совершенства. Именно пергамент стал причиной того, что и без того разрушавшаяся при П толем ее Александрия вконец потеряла политическую власть: оказалось, что тексты можно относительно дешево ко­ пировать безо всякого папируса. Спустя двадцать один век ритмичный шелест влажной кисти, быстрыми мазками наносившей краски на холст, приводил в упоение художника, уединившегося в большой усадьбе близ города Экс-ан-Прованс па юге Франции. Ежедневные упражнения Поля Сезанна в рисовании одной и той же корзины с яблоками по­ степенно привели к тому, что его идеи об изображении предмета с одной точки зрения сменились представлением о комбинации нескольких ракурсов. Сезанн попытался сделать невозможное - нарисовать несколько композиций на одном холсте. Результатом, в конце концов достиrnутым в 1893 году, явилась перспектива на удивление сбалансированная, но распадающаяся именно из-за несбалансированных частей, которые были нарисованы со слегка различавшихся точек зрения. Картина Сезанна << Натюрморт с корзиной яблок>.> бросает вызов представлению о линейной перспективе. До него для создания иллюзии пространства и глубины художники веками пользовались единственной точкой зрения. Считалось, что без использования еще одного холста показать объект с другого ракурса невозмож­ но. За свое достижение Сезанн получил титул <<отца современного искусства>->, поскольку его картины проложили путь фовизму и в особенности - кубизму, направлению, созданному Пабло Пикассо и Жоржем Браком. В конце следующего столетия «Черный куб>-> ( «The Black Cube>.> ), офисное здание в городе Меските, штат Техас, наполнилось деловым постукиванием клавиш. Небольшая команда дизайнеров, программистов и художников работала над очередной видеоигрой, которой суждено было с ходу завоевать мир. Джон Ромеро (John Romero), Том Холл (Tom Hall), Сэнди Петерсен (Sandy Petersen), Джон Кармак (John Carmack), Дэйв Тейлор (Dave Taylor), Эдриан Кармак (Adrian Carmack) и Кевин Клауд (Kevin Cloud) - команда разработчиков id Software в 1992 году трудились над Doom. Звуки ударов по клавишам исходили не от привычных клавиатур кремового цвета, подключенных к 80386 IВМ РС. Здесь клавиатуры были тонкими и чер­ ными, и подключены они были к компьютерам NeXTstation под управлением
102 Глава 4. Ограничения операционной системы NeXTSTEP, предшественницы macOS на основе Unix. Кармак и его команда обнаружили, что кросс-компиляция на оборудовании NeXT значительно повышает их производительность. Рабочие станции поставлялись с 17-дюймовыми мониторами, обладавшими большим разрешением и отобра­ жавшими больше цветов1, что позволило дизайнерам карты гораздо быстрее выполнить свою работу. ~ ~ Doom (рис. 4.1) Suggest New Туре DoomED, работающий на NeXT 05, который стал возможным «Doom» в 2015 году. Если бы не неукротимая мощь машин NeXT, создание ПО DoomED (насчитывающее 20 ООО строк кода) заняло Рис. 4.1. Редактор карт благодаря выпуску исходного кода бы как минимум в два раза больше времени. Снимок экрана любезно предоставлен Фабьеном Сангларом По словам Кармака, в течение всего цикла разработки Doom и Quake 2 они потра­ тили на компьютеры NeXT более 100 тысяч долларов. Для многих разработчиков 1 92 DPI по сравнению с обычным 14-дюймовым мони­ 640 х 480 пиксслей, что уже считалось хай-эндом для РС. Подробнее об этой крутой технологии и о том, как id Software использовала ее, можно прочесть в книге Фабьсна Санглара (FaЬicn Sanglard) <<Game Engine Black Book». https:// fablensanglard.net, 2018. Fabien Sanglard. Game Engine Black Book: DOOM v1.1. https://fablensanglard.net, 2018. 1,120 х 832 пикселей частотой тором, имевшим разрешение 2
4.1. Мышление в рамках ограничений 103 даже более <<дешевые» машины NeXTstation оказывались далеко за пределами id Software. Отказавшись от рабочих станций обычных IBM РС, они получили бюджета. И все же высокие цены сыграли на руку использования в качестве возможность создать кровавый шутер про морпехов всего за год, заработав миллионы уже за первый год с момента его выхода. 4.1. МЫШЛЕНИЕ В РАМКАХ ОГРАНИЧЕНИЙ В чем же заключается то главное, что объединяет реакцию Эвмена на невоз­ можность пользоваться папирусом, упорство Поля Сезанна в совмещении на одном холсте композиции в разных ракурсах и решение id Software перевести большинство процессов на компьютеры NeXT? Все три примера демонстрируют трудности, которые требуется преодолеть, и во всех трех решение выразилось в изобретениях - сколь радикальных, столь и дальновидных. Такие трудности можно рассматривать как ограничения. Пергам внезапно лишился доступа к папирусу. Как обеспечить ученых носителем информации для дальнейшего пополнения библиотеки и расширения культурного и по­ литического влияния? Сезанн упорно настаивал на том, что запечатлеть две точки зрения на одном холсте вполне реально. Как заполнить пустое место, отобразив два похожих, но разнящихся образа? Кармак и его команда от­ казались работать с медленным оборудованием на низком разрешении. Как они могли бы использовать технологию для (частичного) обхода аппаратных ограничений? В том, что касается творчества, ограничения играют важнейшую роль. Они могут быть установлены и для самого себя, как в случае с Полем Сезанном, который настойчиво продолжал рисовать на одном холсте. Художники более поздних пе­ риодов часто проделывают подобное: придерживаются приглушенной цветовой гаммы, рисуют только прямоугольниками, не используют краску вообще и т. д. Музыканты и фотографы часто применяют ту же методику самоограничения для создания поистине уникальных произведений искусства. Однако ограничения могут быть и вынужденными. В данном случае приходится либо работать с тем, что есть, либо искать обходные пути. Конечный результат процесса, испытавшего на себе влияние ограничений, может быть весьма прогрессивным. Без ограничений нет креативности. По­ добно коллективному творчеству, о котором рассказывалось в главе 3, это один из множества важных факторов, которые нужно учитывать, решая проблему творчески. Поэт, романист и ученый Иоганн Вольфганг фон Гёте, живший в XIX веке, остроумно заметил: Бывает так со всяким начинанъем: Коль необуздан ум твой - будет тщетно Стремление к высотам совершенства.
104 Глава 4. Ограничения Их достигаешь сил всех сочетанъем; Лишъ в чувстве меры мастерство приметно, И лишъ закон свободе даст главенство. 1 Помните об этом, когда в следующий раз вам придется работать с устаревшим кодом и замшелой базой данных. 4.1.1. Зеленое или коричневое поле? Ограничения резко усиливают творческий запал. Может показаться, что это противоречит интуиции, поскольку ограничения повсеместно считаются чем-то плохим. Слишком мало времени или денег. Слишком сильное дав­ ление, слишком слабое аппаратное обеспечение для реализации большого программного проекта. Слишком старая архитектура ПО, чтобы добавлять новый слой, слишком старыйJаvа Development Kit, чтобы было удобно про­ граммировать. Слишком много запросов в секунду, чтобы безболезненно их обрабатывать, слишком нестабильные сетевые соединения или слишком низкая пропускная способность. Слишком много нытья в команде по пово­ ду ограничений. Работа над тем, что называется проектом зеленого поля, или гринфилд-проектом (greenfield), определенно способна принести массу удовольствия и вполне может быть творческой: вы вольны выбирать навороченные новые технологии; практи­ чески не ограничены в средствах разработки и внедрения, и, что самое важное, нет того раздражающего, давящего, отживающего свое, но все еще важного ПО, вокруг которого приходится плясать. Замечательно! Проект коричневого поля, или браунфилд-проект (brownfield), в котором нет возможности начать с чистого листа, с большей вероятностью спровоцирует работу творческой мысли именно из-за ограничений, с которыми мы вынужде­ ны иметь дело. Не стану утверждать, что это сплошное удовольствие; я просто пытаюсь убедить вас в том, что ограничения могут сослужить хорошую службу. Дайте-ка угадаю, с программными проектами какого из этих двух видов вы чаще сталкивались в своей практике? Эта же мысль сквозит и в наших интервью с разработчиками. Несколько участ­ ников заявили, что работа над проблемой без каких-либо ограничений в итоге становится скучной. Ни тебе жестких, но бодрящих дедлайнов, в которые надо укладываться, ни менеджера, которого надо убеждать, ни раздражающих, однако ценных отзывов клиентов, которые нужно учитывать. Можно делать все, что захочется и когда захочется. Звучит здорово, правда? Первые несколько недель это в удовольствие, а потом наступает скука. 1 Перевод Матвея Роза11ова. - Примеч. пер.
4.1. Мышление в рамках ограничений 105 Обучение разработке ПО: зеленое поле или коричневое? Студентам, получающим высшее образование по специальности «инженер-про­ граммист» (software engineering), для решения обычно предлагаются тщательно подготовленные и проработанные задачи по программированию, являющие собой небольшие проекты «зеленого поля». Если цель состоит в обучении синтаксису, то все хорошо. Однако если цель заключается в том, чтобы научиться применять шаблоны проек­ тирования в реальном мире, справляться с большими программными проектами, и главное, разумно работать с существующими ограничениями на пути к креативному решению, то все уже не так хорошо. Адам Барр, ветеран вавший Microsoft, проанализиро­ 50 лет истории проектирования ПО, ратует за использование в процессе обучения реальных проектов с открытым исходным кодом именно по этой причине. Тем не менее исследователи в области компьютерного образования закрывают глаза на такое положение дел и продолжают старательно изучать и применять под ­ ход « гринфилд». Признаюсь, есть в этом и доля моей вины: лабораторные работы «зеленого поля » проще придумывать, проводить и оценивать. Подобная ситуация может послужить основой для интересного мысленного экс­ перимента. Как вы обучаете своих джуниоров или стажеров? Копаются ли они в от­ дельной, самодостаточной песочнице, где ничего не сломается, а когда дело касается ограничений, научиться невозможно почти ничему? Или у них имеется возможность программировать вместе с более опытными коллегами, чтобы научиться тому, как грамотно и творчески справляться с ограничениями? Если ограничения - это по всем статьям плохо, то почему столь мноrn:е новаторы и художники с готов1юстью принимают их? Они используют ограничения для прорыва, для того, чтобы <<мыслить пе по шаблону>>, - вы ведь догадывались, что всё идет к этому. Давайте рассмотрим несколько архетипов ограничений, чтобы лучше попять, как они соотносятся с креативпостью. 4.1.2. Таксономия ограничений Структура последующих разделов заимствована из трудов норвежского тео­ ретика в области социологии и политики Юна Эльстера Qon Elster), специ­ ализирующегося в области рациональности и ограничений. Его действенная таксономия ограничений, представленная на рис. 4.2, позволяет креативным ученым ( и нам с вами тоже) лучше попять, какие ограничения наиболее важны при принятии важных решений. Не все ограничения оказываются полезными для решения текущей задачи, но в целях творческого подхода к проблемам в разработке ПО пас интересуют только те из них, которые сулят отдачу. Эльстер называет ограничения, приносящие некую выгоду их агенту (но пе выбранные им самим), случайными. Ограничения же, которые устанавливаются самому себе ради какой-либо творческой выгоды,
106 Глава 4. Ограничения называются существенными. Третья типология предполагает различие между жесткими (материальными, техническими, финансовыми) и .мягкими (услов­ ными) ограничениями. При самоограничении раскрывается ценность личной свободы. Однако вначале давайте поближе познакомимся с двумя категориями случайных ограничений. nоЛЕJНЬ\Е оrРАНИЧ ЕНИЯ 1-\АЛОJЕННЫЕ , ЖЕСТКИЕ Рис. ' м;~rкиЕ ЖЕСТКИЕ ';,л;~rкиЕ 4.2. Таксономия • fсАмооrРАНИЧЕНИ_IО ,• ЖЕСТКИЕ м;~rкиЕ полезных ограничений, изложенная по работе Эльстера «Ulysses Unbound» 1 УПРАЖНЕНИЕ Если вы разработчик ПО, последователыю ли вы выявляете каждое ограничение текущего задания? Подходите ли вы к случайным ограничениям с дру­ гим творческим настроем, нежели к существенным? Если да, то почему, по вашему мнению, так происходит? 4.2. ВНУТРЕННИЕ ОГРАНИЧЕНИЯ Внутренние ограничения - пожалуй, самые очевидные - связаны с особешюстя­ ми того круга проблем, которых касается конкретная задача. Если вы художник и рисуете на холсте, вашими внутренними ограничениями являются физические материалы, из которых состоят холст и краска (независимо от их вида). Если вы программист, вам приходится работать с кодом: нeвaжнo,JavaScript это или диалект ассемблера, принцип остается все тем же. Вы можете размазывать по холсту целые тубы акриловых красок, но это пе поможет предоставить клиенту ПО, если только вы не создадите распознаватель мазков краски, преобразующий ваши образцы современного искусства в код. Внутренние ограничения можно рассматривать как случайные: они просто есть, и нам приходится с ними рабо­ тать (или обходить их). 1 Jоп Elster. Ulysses Uпbouпd: Studies in rationality, precommitment, and constraints. Cambridge University Press, 2000.
4.2. Внутренние ограничения 4.2.1. 107 Внутренние аппаратные ограничения Инвестировав средства в дорогостоящее аппаратное обеспечение NeXT, команда Doom отбросила внутренние ограничения, наложенные типичным «железом~ IBM РС того времени. Конечно, так или иначе внутренние ограни­ чения продолжали ее связывать - четырехъядерные процессоры пока не были изобретены, а материнские платы NeXT не успели обзавестись гигабайтами оперативной памяти DDR. Что поделать, в чудесном мире вычислительной техники эти ограничения хоть и меняются, но вряд ли они когда-нибудь ис­ чезнут полностью. Другие студии разработки игр предпочли смириться с несовершенством аппа­ ратного обеспечения того поколения. К примеру, игра Monkey Island компании LucasArts1, о которой упоминалось в главе 3, отличается ярко выраженным пиксельным стилем. Так получилось не потому, что команда решила поработать с приглушенной цветовой палитрой, а скорее из-за аппаратных ограничений. В 1984 году на смену стандартной в то время графической системе CGA, устанав­ ливаемой в IВМ РС, пришел Enhanced Graphics Adapter (EGA). Восьмибитные карты EGA с разъемом ISA обычно имели до 64 Кбайт рабочей памяти. Как вы сказали, «гигабайты~? Пусть даже оперативную память можно было расширять при помощи дочерних плат, что позволяло работать с более высокими разре­ шениями (640 х 350), но EGA могла отображать лишь 16 цветов, составлявших фиксированную палитру. Шестнадцать цветов. Шестнадцать - так, на минуточку. И тем не менее Ihe Secret of Monkey Island представляет собой в высшей степени харизматичную игру именно благодаря своим умело проработанным и темным фонам. Марк Феррари (Mark Ferrari), один из художников LucasArts, нашел способ обойти внутренние ограничения EGA. Он использовал технологию сглаживания ( dithering), рисуя пиксели чередующихся цветов в шахматном порядке для создания иллюзии более широкого и более приятного глазу цветового диапазона. А громоздкие мониторы начала 90-х усиливали эффект сглаживания за счет естественной тенденции электронно-лучевых трубок к смешению пикселей. Первой игрой, получившей полную поддержку сглаживания, стала Loom, что дало Марку возможность отточить эту технологию при работе над декорация­ ми Monkey Island. Команда нашла способ сжать изображения, полученные при помощи сглаживания. Это позволило сделать сцены и персонажей еще более выразительными. Ко времени выпуска игры в октябре 1990 года графика VGA уже вытеснила EGA, но новое аппаратное обеспечение оставалось пока очень дорогим. Многие из тех, кто играл в эту приключенческую игру на своем старом IBM 1 РС с EGA, решили, что за ночь их компьютер каким-то образом претерпел Во время разработки Gamcs. <<Monkey Island~ компания LucasArts еще называлась Lucasfilm
Глава 4. Ограничения 108 апrрейд. Благодаря творческому использованию аппаратных средств, невзирая на их слабость, изображение выглядело как на одолены. Позже вышла УСА-версия VGA - ограничения были пре­ Monkey Jsland с поддержкой 256 цветов, что позволило создать еще более убедительные фоны и изображения персонажей (рис. Рис. 4.3). 4.3. Так выглядит одна из первых сцен The Secret of Monkey /sland в режимах VGA (внизу). Если вглядеться в край тротуара у дома позади Гайбраша (Guybrush) и в небо, можно заметить легкие различия в оттенках EGA (вверху) и и чередование клеток в шахматном порядке. Изобилие ночных сцен в дальнейшем помогло уменьшить потребность в богатой цветовой палитре, поскольку с оттенками синего в затем игра EGA можно было работать наиболее гибко. Последовавшая полной поддержкой 256 цветов стала Monkey lsland 2: LeChuck's Revenge с намного ярче
4.2. Внутренние ограничения 109 Марк называет Monkey Island своей «докторской диссертацией по сглаживанию изображений в режиме EGA1,>, отмечая роль, которую сыграли ограничения в творческих достижениях команды: Все эти экстремальные ограничения создали необычайно творческую обста­ новку для работы: чтобы чего-то достичь, любую появлявшуюся у нас идею приходилось развивать до предела. Кропотливое вырисовывание впечатляющих сцен пиксель за пикселем в DJJ-aint не только говорит об увлеченности, но и доказывает, что внезапные всплески творческой активности порождаются внутренними ограничениями. Мастерское владение пым в DPaint дало жизнь еще нескольким творческим приемам, представлен­ Monkey Island, таким как <<умный~ цветовой цикл для анимации пламени костра и его отраженного света, пляшущего на фоновых скалах поблизости. Овладение цветовым циклом с Марком Феррари Если вы хотите узнать больше о EGA, DPaint или о профессиональной карьере Марка (которую он характеризует как « прыжок спиной вперед» ), посмотрите интервью на канале Retro Теа Break по адресу https://www.youtube.com/watch?v=e-aJ8YNSYGs (оно (NeilThomas) «Selected также предстает в качестве одной из глав в книге Нила Томаса lnterviews Vol. 1»). В интервью, кроме того, затрагивается тема счастливой случайности в творчестве, а также понятие кластера гениев, о котором мы говорили в главе 3. 4.2.2. Внутренние nроrраммные оrраничения Хотите вы этого или нет, в работе с определенными средствами самовыражения впутренние ограничения помогают художественному результату обрести кон­ кретное воплощение. Например, для каждого типа краски характерен не только специфический внешний вид, но и особые приемы работы с ними , долговеч­ пость, определяемая степенью влажности и светостойкости, консистенция и т. д. Акриловые краски являются быстро сохнущими и непрозрачными, а значит, ими можно писать от темных тонов к светлым, акварелью же - наоборот. Данный припцип применим и к ПО. Если вы хотите написать программу, вам придется работать в рамках внутренних ограничений, свойственных экосистеме разработки ПО: вводить символы с использованием периферийных устройств (в частности, клавиатуры), давать команды для компиляции (или интерпре­ тации) и т. д. Не стоит ожидать, что нарисованный на холсте код волшебным образом скомпилируется и запустится. Для того чтобы дать компьютеру попять, что нужно делать, вам потребуется набор команд - таково внутреннее ограничение разработки ПО. Выбор языка 1 См. Thc lcgacy of Monkey Island . Retro Gamcr, № 212, с. 24.
11 О Глава 4. Ограничения программирования может быть оставлен на ваше усмотрение (самоограничение), а может быть и нет (наложенное ограничение), но па более высоком уровне оп должен соответствовать характеру разработки ПО. Давайте посмотрим, что случается, когда кто-либо навязывает вам использование определенного языка программирования. УПРАЖНЕНИЕ С какими ограничениями, внутренне связанными с работой, вы сталкиваетесь в вашей повседневной практике программирования? Можете ли вы найти способ творчески обойти их, вместо того чтобы бороться с ними? Например, в некоторых встроенных операционных системах нет изначальной поддержки пото­ ков. Зеленые потоки (green threads) наподобие корутин (например, в Go, Lua, РНР, Perl), которые исполняются в пространстве пользователя, а пе в пространстве ядра, эмулируют потоки и .~восполняют~ этот недостаток - примерно так же, как Марк Феррари .~восполнил~ ограниченную цветовую палитру EGA. 4.3. НАЛОЖЕННЫЕ ОГРАНИЧЕНИЯ В то время как внутренние ограничения присущи материалу, выбранному вами для работы, наложенные ограничения приходят со стороны заинтересованных лиц. По сути, они одинаковы, разница лишь в том, что на сей раз вам пе придется выбирать материал - это сделает кто-то другой. Скажем, ваш клиент желает, что­ бы проблема была решена к следующему вторнику, и писать нужно непременно на РНР, поскольку после этого ею займется команда поддержки. Большинство классических проектно-ориентированных ограничений, с которыми приходится бороться, подпадают под следующие категории: бюджет, время, эффективность, актуальность и т. д. Разница между внутренними и наложенными ограничениями кажется усколь­ зающей: и те и другие так или иначе являются наложенными и неподвластными свободному выбору. Однако на команду ощутимое воздействие оказывают психо­ логические последствия. Начать с того, что па внутренние ограничения (почти) никто не жалуется. Если бы вы были разработчиком в 80-е и программировали на ПК, вы были бы скованы весьма ограниченными возможностями аппаратного обеспечения, например несколькими сотнями килобайт оперативной памяти и EGA. Больше ничего тогда не было. Если же вы опытный программист и хотите работать так, как это принято в 2022 году, вероятно, вы будете ориентироваться на современные языки программирования, CQRS 1, предметно-ориентированное проектирование и т. д. Необходимость расширять существующую горизонтально нарезанную (sliced) систему на РНР и продираться через дебри вырождающейся базы данных на SQL не добавляет креативности и мотивации. 1 The Command and Query Responsibllity Segregation (CQRS) - парадигма проекти­ рования ПО, при котором код, изменяющий состояние, отделяется от кода, просто читающего это состояние. - Примеч. ред.
4.3. Наложенные ограничения 111 Это не означает, что привнести лучшие практики в старые проекты невозможно. Например, в одном проекте мне пришлось с великим трудом разбираться в не поддающейся пониманию доменной логике, плотно упакованной в бесконечный набор хранимых процедур Oracle SQL. Слой С++, «программа,>, по существу являлся пустой коробкой, без конца преобразовывавшей данные, пока они не передавались на «слой домена>.'> - в хранимые процедуры. Совершенно обеску­ раженный и не имея возможности применить свою палочку-выручалочку - раз­ работку через тестирование, - я старался просто делать что велено, чувствуя себя все более и более подавленным, пока вдруг не обнаружил в SQL Developer возможность модульного тестирования ututil PL/SQL. Утилита командной строки позволяла даже интегрировать его в систему сборки! Радость моя продлилась недолго. Я был единственным из всей команды, кто видел преимущества использования модульного тестирования, и мои робкие попьпки убедить других не дали результата. Через полгода, в расстроенных чув­ ствах из-за полного отсутствия интереса со стороны коллег, я двинулся дальше. Что-что, а творчество требует готовности всех участников процесса. В другом проекте мы постепенно переводили клиентов с неповоротливой си­ стемы, написанной на Visual Basic (VB) 6, на современное браузерное решение на С#. Поскольку обе системы нуждались в полноценной поддержке, время от времени нам требовалось вносить изменения в устаревшую систему, чтобы приспособить ее к разного рода новым законам - программа представляла собой сложный механизм расчета заработной платы. Из тех, кто понимал, что происходит в кодовой базе VB6, осталось всего несколько сотрудников. Это было похоже на игру в <<Дженrу>.'> 1 : вытянешь не тот блок SimplyVBUnit в помощь! - и все развалится. Немного повозившись, нам удалось соорудить работаю­ щую систему, которая хоть и не стала полностью интегрированной, но настолько укрепила нашу уверенность в себе, что мы решились проверить изменения кода в Visual SourceSafe (рис. 4.4). Код модульных тестов тоже вполне читабелен, на сей раз благодаря влиянию NU nit: Sub MyTestMethod_WithSomeArg_ShouldReturn45 Dim isType As Boolean isType = MyTestMethod(argl) PuЬlic Assert.That isType, Iz.Equa1To(45) End Sub 1 Jenga) - настольная игра, придуманная британским дизайнером игр Лесли Скотт. Игроки по очереди достают блоки из основания башни и кладут их на­ верх, делая башню все более высокой и все менее устойчивой ( верхние три ряда нельзя Дженrа (анzл. перекладывать). - Примеч. пер.
112 Глава 4. Ограничения • 81) PuЬlic SuЬ D1m 1sТуре 1sТуре ..S1udentenSektle T)'p8JoЬ8tudent_fthwJ_8egin08t IsЗt.udent.enЗeJa.1eТypeJobst.udent_ Тrue _ Beg1nDat.UШC:ont.ract. _ NaControle_ ЗТU • Лs As8ert.Тhat. () Boolean IsЗtudenten3eltt1eTypeJob!ltud.ent isТ'ype, (DateValue ("10/01/Z007"), DateValue ("01/01/2007"), SuЬ End PuЫic Di.m SuЬ IsStucient.enЗekt11 isТVPe 1sТуре • Boolean IsЗt.udent.enSek:1 J.ssert. ТЬаt. End Аз tsТVpe, Ii. • . ЗuЬ PuЫic D1m SuЬ "ЗТО'") I&,' Vlew J ,- } tu UitTasts\ е ■ C:\5o.lces\V815\ в ■ мcon-rnorArctiJTasts (З Tasts) 1-i ~т - • UitTests (З Tes т~ t ..J IsStu:lentenSel<tle~tt.dant_False - • •. .1 ~1 ,- 11 I IsStudent.enЗekt.11 F....,&En011 TOll,NotA~ Л!I Boolean Is3t.udentenSek1 1зТуре 1sТуре • J.ssert. Тhat. 1sТуре, Iz.J ЗuЬ End Te,t,C<щ,loted Рис. 4.4. Фрагмент наших модульных тестов на VВб, выполняемых в SimplyVBUnit. См. http://simplyvbunit.sourceforge.net Несколько лет назад один бывший коллега сообщил мне, что сыт по горло ти­ пичными практиками DTO (Data Transfer Object) и управлением их жизненным циклом. <<Такое ощущение, что мы только и делали, что конвертировали один слой в другой», - сказал он. Последней остановкой перед сохранением на диск, скорее всего, будет еще один слой данных, который обозначается еще одной аббревиатурой - ORM (Object-Relational Mapping, объектно-реляционное отображение). Бывший коллега продолжал: Нам 1tадоели жалобы Hibemate и беско1tеч1tые ошибки при ле1tuвой загрузке a1t1tomaцuй «oдu1t ко м1tогим». Зачем мы всегда бездум1tо импортируем эти зависимости? И вот мы решили: давайте coxpa1tuм первый слой прямо в базе дa1t1tъtx. Име1t1tо это мы и сделали. Простую сериализацию. Получилось 1ta удивление хорошо! Если у вас нет возможности работать с системой на основе NoSQL, представьте себе, что экземпляр SQL - это хранилище документов. Не забудьте принять во внимание проблемы миграции данных. Вместо того чтобы занять негативную по­ зицию по отношению к наложенным ограничениям: ресурсы ограниченны, идеи без сожаления отвергаются, а значит, подавляется творческая активность, - по­ пробуйте принять более позитивную точку зрения. С ограниченными ресурсами тоже можно работать; идеи, возможно, требуют более тщательной проработки, а значит, есть простор для творческой мысли. Ограничения пе обязательно должны сковывать! УПРАЖНЕНИЕ С какими наложенными ограничениями вам приходится работать в настоящее время? Почему вы думаете, что они наложенные, а нс внутрешше? Нс хочется ли вам при мысли о некоторых ограничениях рвать на себе волосы? Как вы и ваша команда справляетесь с таковыми?
4.4. Самоограничения 4.4. 113 САМООГРАНИЧЕНИЯ Как бы ни было полезно мышление в условиях ограничений для подстегивания креативности, внутренние и наложенные ограничения все же рассматриваются исследователями в области творчества и проектирования как случайные 1 • Само­ ограничения, в отличие от них, могут рассматриваться как существенные: так считает Майкл Моуз Бискьяер (Michael Mose Biskjaer), исследователь, который специализируется на ограничениях творческих процессов и который продолжил работу с того места, где остановилась таксономия Юна Эльстера. Ограничения данных видов накладываются сознательно и добровольно ради некой ожидаемой выгоды - для повышения творческого потенциала и изобретения нового. В сво­ ей диссертации, посвященной самоограничениям, Майкл поясняет эту идею 2 : Отринув идею божественного вдохновения и гениальности, целый ряд клас­ сических и современных авангардных течений начиная с 1920-х годов и далее сформулировали, разработали и применили несколько в высшей степени инно­ вационных и эффективных методик творческого воздействия, основанных на самоограничении. Намеренно ставя себе препятствия, ловушки, императивы, случайные вводные стимулы и т. д., многие из этих художников вскоре обна­ ружили, что такие стратегии очень помогают запустить и стимулировать творческие процессы. Кому захочется по своей воле ограничить сроки или бюджет проекта? Мы обычно возмущаемся угрожающим положением, в которое нас ставят начальники, когда говорят, что всё должно было быть сделано вчера и за половину того бюджета, который уже потрачен. Существует большая разница между жесткими, но ра­ зумными ограничениями и ограничениями до невозможности смехотворными. «Ловушки,>, о которых говорит Майкл, относятся к первой категории. Согласно Бискьяеру, акты самообуздания подразделяются на две категории: 1) 2) повышение результативности; воздействие на сам творческий процесс и его трансформация как средство открыть новые возможности для творческого действия, что в итоге приводит (как можно надеяться) к оригинальному результату. Под первую категорию подпадает четкое соблюдение ежедневных процедур в целях исключения отвлекающих факторов и повышения производитель­ ности при работе с кодом. Средства повышения результативности, такие как запрет доступа в интернет или уменьшение рабочего пространства до чистого белого экрана, намеренно блокируют отвлекающие факторы, помогая достичь 1 2 Michael Mose Biskjaer and Kim Halskov. Decisive constraints as а creative resource in interaction design. Digital Creativity, 2014. Michael Mose Biskjaer. Self-imposed creativity constraints. PhD thesis, Department of Aesthetics and Communication, Faculty of Arts, Aarhus University, 2013.
114 Глава 4. Ограничения поставлешюй цели. Для блокировки отвлекающих приложений и социальных сетей предназначено, в частности, ПО наподобие Serene для MacOS, которое способствует повышению концентрации внимания. Риски постоянного пребывания на связи Рекламное видео Serene no адресу https://sereneapp.com относит приложения Slack и Skype к отвлекающим, и на то есть причины . О том, что настрой всегда быть на связи крайне пагубно влияет на творческие способности , можно прочесть во множестве публикаций. И все же мы так или иначе игнорируем то, о чем предупреждают ис­ следования, и продолжаем обмениваться сообщениями . Забавно, что на различных сайтах, посвященных технологиям, и Serene и Slack вхо­ дят в десятку «самых полезных приложений для результативности ». Будьте очень внимательны к предложениям работодателя постоянно быть на связи в разного рода корпоративных приложениях . В вашей результативности и креативности они заинтересованы ничуть не меньше. Вторая категория - преобразование творческого процесса - должна открыть возможность достигать более оригинальных результатов. Художникам известно о преимуществах самоограничений гораздо больше, чем нам, программистам. Знаменитый русский композитор Игорь Стравинский говорил о том, что нало­ жение ограничений позволяет освободить себя: «Необходимость ограничения ... берет свое начало в глубинах самой нашей природы и отпосится пе только к области искусства, но и ко всем сознательным проявлениям человеческой деятельности. < ... > Только напрасно было бы видеть в этом помеху свободе.< ... > ... индивидуальность ярче вьщеляется и приобретает большую рельефность, когда ей приходится творить в условных и резко очерченных границах,> 1• Однако как же может большее количество ограничений приравниваться к боль­ шей свободе? Это происходит по причине того, что творческая свобода и творче­ ское обуздание себя посредством самоограничения тесно взаимосвязаны. Данное ограничение является одновременпо сдерживающим и освобождающим. Как мы увидим в последующих примерах, поставив себя в такие условия, в которых вы будете писать код с возможностью визуализации в пределах 64 Кбайт памяти, хочешь не хочешь, а придется быть более изобретательным и, следовательно, креативным. Эволюция установки самообуздания становится очевидной при сравнении ран­ них и поздних работ знаменитых художников - исследователей модернизма, таких как Пабло Пикассо, Пит Мопдриан и Василий Кандинский. Некоторые 1 Bryce Ryan and Ncal С Gross. The diffusion of hybrid seed corn in two lowa communitics. Rural Sociology, 8(1): 15, 1943 (Стравинский И. «Музыкальная поэтика. В шести лек­ циях~) .. - Примеч. ред.
4.4. Самоограничения 115 зашли так далеко, что избавились от всего, что только возможно. В 1960 году Schoonhoven) стал одним из основателей голландского на­ правления Nul-beweging (движение ZERO ), запрещавшего создавать произведе­ Ян Схоонховен О an ния искусства средствами, по виду или запаху напоминающими <<художества>>. Краски и эмоции были заменены картоном и повторением геометрических фигур. Вы будете смеяться, но необычные работы Схоонховена ныне являются частью экспозиций в видных центрах искусства, таких как Музей Крёллер-Мюллер в Нидерландах и Центр Помпиду во Франции. Несколько лет назад один из его рельефов с белой текстурой был продан за 780 450 фунтов стерлингов на аукционе ~сотбис~ в Лондоне. Схоонховен был почтальоном и занимался вышеупомянутым искусством в свободное от работы время. Спасибо вам, самоограничения! В последующих разделах будет показано, как намеренная трансформация творческой разработки ПО с использованием самоограничений может помочь сбросить оковы обыденности. 4.4.1. Страстные пиксеnьные художники Многие самоограничения изначально были наложенными ограничениями. Взглянем на лебединую песню Марка Феррари 2017 года, игру ThimЬleweed Park, в создании которой участвовали ветераны ~point-and-click~ Ран Гилберт и Гэри Винник ( Gагу Winnick). ThimЬleweed Park, выпущенная через 27 лет после The Secret о/ Monkey Island, проектировалась с таким расчетом, чтобы она выглядела, как нераспечатанная классическая игра производства Lucasfilm 1987 года, терпеливо собирающая пыль на полке, пока кто-то не наткнется на большую коробку. Вот только со времен эпохи EGA, DOS и DPaint мир шагнул вперед - и это к лучшему, потому что на самом деле никто из команды не хотел возвращаться к использова­ нию топорных инструментов восьмидесятых. Марк называет дизайн ThimЬleweed Park <<а-ля 8 бит~: все фоны выполнены в Photoshop с уменьшенным разрешением, грубой интерполяцией и выключенным сглаживанием. Некоторые новые функ­ ции, такие как слои прозрачности и эффект параллакса при прокрутке, удалось встроить в игру, не нарушив ностальгической атмосферы. Рон, Гэри и Марк умышленно придали Thimhleweed Park вид 8-битной игры не только потому, что истосковались по большим пикселям. Еще одной при­ чиной стала их аудитория, которую составляли 15 623 спонсора на Kickstarter, где проект собрал 626 250 долларов - сумму, почти в два раза превысившую первоначальную цель. По словам Марка, пиксель-арт эволюционировал из низкокачественной тех­ нологии, накрепко связанной с аппаратным обеспечением, в полноценное на­ правление искусства, вышедшее за пределы игровой среды: В наши дни есть художники, работающие в стиле пикселъ-арт, которые души не чают в пикселъ-арте из-за самих пикселей. В прежние времена это выглядело ужасно и было огромным шагом назад по сравнению с рисованием цветными
116 Глава 4. Ограничения карандашами. Но сейчас это стало целым направлением в искусстве, которое, возможоо, выходит за рамки самих игр. Недавнее возрождение игр, навеянных прошлыми временами, доказывает, что Некоторые дизайнеры игр созна­ системах. Таков, например, !оп новых на телыю выбирают старые технологии и созданный на движке Build году 2019 в вышедший лица, первого от шутер Fury, Thimhleweed Park не был единичным случаем. впервые выпущенном в 1995-м. Эта игра работает на существенно оптимизированной версии EDuke32 с открытым исходным кодом, и все же ... Другие игры (DUSK, вдохновленный Quake; Project War/ock, вдохновленный Wolfenstein ЗD) стараются подражать атмосфере своих предков, в то же время предпочитая комфорт и гибкость совремешюго движка Unity. engine игры Duke Nukem ЗD, Брайан Провинчано (Brian Provinciano) из компании VЬlank Entertainment относится к небольшой когорте, по-видимому, безумных программистов, жела­ ющих даунгрейдить ПО PlayStation 4 до такого состояния, в котором оно будет чувствовать себя комфортно на 40-летпей платформе MS- DOS. Игра Retro City Rampage, впервые выпущенная в 2012 году на современных платформах, позже была портирована на среды с гораздо более ограниченными возможностями в качестве <,упражнения по программированию>>. Рис. 4.5. Начальная сцена «ThimЫeweed методика сглаживания - Park», в которой вновь была применена на сей раз по умыслу художника, а не как способ обойти аппаратные ограничения. Заметите ли вы и тут на небе в клеточку автограф Марка Феррари?
4.4. Самоограничения 117 Эта игра изначально была создана как 8-битная доморощенная дань уважения Grand Theft Auto на Nintendo Entertainment System (NES). Провинчано даже удалось каким-то образом собрать собственный комплект для разработки NES, чтобы преодолеть ограничения старой консоли. Этот парень явно знает, как работать в условиях ограничений. Провипчано умудрился втиснуть свою игру па одну дискету объемом 1,44 Мбайта, и она без проблем работает на моем стареньком РС проект - 486DX2-66. На подходе еще один сложный и увлекательный Game Воу Advance. Любознательные программисты, жела­ порт на ющие узнать больше о сдвиге битов и оптимизации вычислений с плавающей точкой, могут увидеть выступление Провинчано по адресу https://youtu.be/ kSKeWH4ТY9Y. Означает ли это, что креативность - прерогатива гейм-а рта? Конечно нет. Данная глава и вправду изобилует примерами из мира видеоигр, но для этого имеется вполне определенная причина. Разработка игр характеризуется мно­ жеством междисциплинарных факторов, каждый из которых должен преодолевать очень четкие внутренние, наложенные ограничения и самоограничения. Поэтому приведенные примеры идеально подходят для разъяснения понятий, лежащих в основе творческого подхода к разработке ПО в условиях ограничений. Мне не хотелось бы, чтобы вы думали, будто креативность - это прерогатива худож­ ников пиксель-арта, таких как Марк Феррари, только потому, что речь идет о цветах или в тексте периодически проскакивает термин « искусство ». Надеюсь, вы уже по­ няли, что креативным программистом может быть любой программист: творчество не ограничивается искусством. В главе 7 мы углубимся в изучение творческого психологического настроя и выслушаем экспертов в данной области . 4.4.2. Пусть ограничения ведут вас к творческим решениям Basecamp, предоставляющая услуги ПО как сервиса (SaaS, softwareas-a-service ), не понаслышке знакома с благотворным влиянием ограничений Компания настолько, что устанавливает, казалось бы, непосильный шестинедельный бюджет для основного объема работ над продуктом. Вместо того чтобы больше писать и превосходить конкурентов производительностью, команда Basecamp решила писать меньше ПО и добавлять меньше функций и настроек. Бюджет, устанавливаемый для самих себя, и ограничения бизнеса оправдались: хотя доля компании на рынке невелика, сегодня Basecamp является высокодоходным предприятием и известна своими необычными подходами к разработке ПО, которым, возможно, следовало бы стать обычными. Сделать продукт наполовину. Отстать от конкурентов. Отказаться от встреч. Пойти спать. Расти медленно или вообще не расти. Бизнес-философия коллек­ тива Basecamp была изложена в книге <<Getting Real: The Smarter, Faster, Easier
118 Глава 4. Ограничения Way to Build а Web Application» 1, в которой главное место занимает мышление с учетом ограничений: Ограничения также вынуждают обнародовать идеи как можно раньше, и в этом тоже есть свое преимущество. Через месяц-другой после начала работы у вас должно сложиться достаточно четкое представление о том, получается что-то или нет. Если получается, то вы вскоре выйдете на само­ окупаемость и не будете нуждаться во внешнем финансировании. Если же идея окажется провальной, значит, пора вернуться к рисованию на доске. По крайней мере, вы узнаете об этом сейчас, а не через месяцы или годы. По крайней мере, вы можете легко сдать назад. Планы выхода из проекта намного усложняются, когда в дело вступают инвесторы. Коллектив Basecamp доказал, что, отдавая себе отчет в преимуществах ограни­ чений, можно выпустить продукт гораздо раньше даже в условиях скромного бюджета и при относительно небольшой численности команды разработки. Они называют эту стратегию «выпустить ПО в бюджете», а не «в срок». <<Иногда огра­ ничения могут быть болезненными. Именно тогда вы начинаете понимать, что они работают», - говорит Дэвид Хайнемайер Ханссон, сооснователь Basecamp. 4.4.3. Game Воу и оrраничения Game Воу ( G В), увидевший свет в 1989 году, был одним из специализированных 8-битных игровых устройств и, несомненно, самым низкопроизводительным в своем поколении. Однако это вовсе не было недочетом проектирования. Реше­ ние использовать дешевую и распространенную технологию по-новому отвечало философии Nintendo. Гунпей Йокои ( Gunpei Yokoi), создатель устройств Game & Watch, Game Воу, D-pad и серии Metroid, назвал это «латеральным мышлением с отжившей свое технологией»: фан и rеймплей превыше передовых технологий. Более поздние консоли Nintendo, такие как Wii и недавняя Switch, подтверждают актуальность этого подхода. Выбор <<отжившей свое» технологии принес и другие преимущества помимо снижения стоимости производства: механическая прочность и огромная емкость аккумулятора, позволяющая устройству работать без подзарядки до 30 часов. Как выяснилось, такие козыри было нелегко побить, хотя SEGA и пыталась это сделать. «Более мощная,>, как гласила реклама, SEGA Game Gear наделе оказалась столь же слабой, но дело здесь было не в латеральном мышлении: поспешная попытка SEGA предпринять через год после Zilog Z80 1 Game Воу привела к повторному использо­ Master System. В результате на Game Gear, выпущенной контратаку на ванию оборудования Game Воу, тоже был установлен вариант 8-битноrо процессора 3,5 МГц. Как ни странно, у него тоже с чахлой тактовой частотой Эта книга доступна бесплатно по адресу https://basecamp.com/gettingreal/.
4.4. Самоограничения 119 8 Кбайт оперативной памяти и даже разрешение экрана такое же, как у Game Воу. Питание осуществлялось от шести батареек АА - па две больше, чем у Game Воу, - по пе тянуло и пяти часов. Рис. 4.6. «Живое» доказательство прочности Game Воу, называемого (в соответствии со своей аббревиатурой) также Gray Brick- «серый кирпич». Устройство, принадлежащее Стефану Скоггинсу (Stephan Scoggins), полицейскому из США, попало под бомбежку во время операции «Буря в пустыне», но на нем все еще можно играть в «Тетрис»! Фото любезно предоставлено Эваном Эймосом (Evan Amos) Самоограничения Nintendo, наложенные в ходе проектирования, могли повлечь за собой многие досадные ограничения для разработчиков игр. Работать было почти не с чем, на тусклом экране оставались шлейфы, а «кодИIIГ>> сводился к битовым сдвигам в регистрах на ассемблере. ПРИМЕЧАНИЕ Находчивые производители компьютерных аксессуаров использова­ ли низкокачественный экран в своих интересах: они создали «универсальный аксессуар~ Joyplus Handy GB Light, GB Magnifier, Воу, поставлявшийся с двумя мощными активными внешними колонками и увеличительным стеклом с подсветкой, GBA Worm Light, the Hyperboy, the BoosterBoy и др. Выпущенная в 1989 году игра Super Mario Land явно страдает от множества огра­ ничений, присущих Game Воу. Спрайты на экране почти не отображаются, потому что все имеет такой же размер, как у спрайтов, - 8 х 8, есть только четыре ма­ леньких мирка, и нет возможности сохранить игру. Эта культовая игра про Марио технически ничем не примечательна, и в паши дни вернуться к пей сложновато. Ее последователи Super Mario Land 2: Six Golden Coins ( 1992), Wario Land: Super Mario Land 3 ( 1994) и Wario Land II ( 1998) выжали из аппаратного обеспечения все, что можно, как будто их разрабатывали вовсе пе для него. Это типичный эффект для консоли: по мере ее старения разработчики становятся все более привычны к ограничениям и все более творчески к пим подходят.
Глава 4. Ограничения 120 Игры Wario Land до краев полны креативными приемами: монеты, являющиеся не спрайтами, а частью фона ( обход ограничения на произвольное максимальное количество спрайтов, с которым может работать Game Воу); огромные мульти­ спрайтовые боссы ( обход ограничения на размер спрайтов); мультиспрайтовые монеты (рисование монет четырьмя цветами вместо обычных трех благодаря системе прозрачности); умная смена палитр (создание вариаций врагов или имитации ударов в Wario, VRAM еще одним спрайтом); ( создание визуально привлекательных чтобы не нагружать изменение времени цикла рендеринrа эффектов искривления); прокрутка слоев фона с разной скоростью (иллюзия переливающейся воды) и т. д. r!) r!) r!) 6 Рис. 4.7. Девять лет развития Super Mario/Wario Land, выпущенных на одной платформе Недавние проекты дизассемблирования постояшюй памяти Game Воу, такие как Pokemon и Links Awakening DX1, дают представление о том, как были реали­ зованы эти приемы. Могу себе представить, па каком по счету небе от счастья были разработчики, когда в 2001 году 32-битный Game Воу Advance (GBA) наконец дал им пространство для маневра и, что еще важнее, возможность про­ граммировать на языке С. Я с нежностью вспоминаю системы Game Воу. Появившиеся в последнее время кросс-компиляторы с открытым исходным кодом, такие как GBDK и devkitPro, делают программирование на старом «железе>> немного более приятным (для GB предназначен компилятор С, а для GBA-C++t 1). Для GB и GВАдаже выходят новые платные игры, например Deadus, The Shapeshifterи Goodboy Galaxy. Если вам хочется отточить свои навыки владения ассемблером, загляните в исходный код игрыµСitу, клона Sim City для Game Воу Color, доступный по адресу https:// github.com/AntonioND/ucity. ПРИМЕЧАНИЕ Более подробно о программировании для Gamc Воу можно прочитать по адресам https://github.com/gЬdk-2020/gЬdk-2020 и https://devkitpro.org/wiki/Getting_Started. Если вас пугают CLI и Makcfilcs (и вы называете себя программистом?), прекрасной GB Studio (https://www.gbstudio.dev), позволяющая создавать альтернативой является игры и нс требующая при этом познаний в области программирования. 1 См. https://github.com/zladx/LADX-DisassemЬly .
4.4. Самоограничения 121 Обучение совместному аппаратному/программному проектированию На нашем местном факультете технологий и системотехники устройства GB(A) ис­ пользуются как благодатное педагогическое средство для обучения студентов низ­ коуровневому программированию (указатели на отображаемые в памяти объекты ввода/вывода в языке С), высокоуровневому программированию (объектно-ориен ­ тированное программирование в С++) и аппаратной архитектуре (реализация CPU) . Использование игровой приставки в учебном процессе со всей очевидностью под­ хлестывает мотивацию, но самое интересное в 8-битных устройствах 30-летней давности - то, что всё можно объяснить и понять . На примере современного обору­ дования это просто невозможно, поскольку в наши дни технологии требуют слишком узкой специализации . Всегда увлекательно смотреть на то, как студенты пытаются справиться с жесткими ограничениями . « Почему я не могу отобразить на экране эту фотографию? » Может быть, потому, что вы, не заметив этого, переполнили объем памяти GBA в девяносто шесть килобайт? « Какого объема ваша фотография? » - она, каких-то два мегабайта! » Мы - спрашиваю я . «Да маленькая избалованные дети, окончательно обленившиеся с развитием аппаратного обеспечения . 4.4.4. Консоли мечты Было бы наивно отрицать влияние ностальгии на выпуск игр для в последнее время. Воспоминания детства - Game Воу не единственная причина того, почему разработчиков игр до сих пор привлекают ретро-консоли Nintendo: само­ ограничения, связанные с оборудованием, способствуют созданию необычных и оригинальных игр. Для этого подойдет любая среда с ограничениями. То, какой импульс ограничения могут придать творчеству, осознали и в Games. В 2015 году эта компания создала виртуальную машину Lexaloffle Lua, которая запускается в браузере и включает в себя 8-битный редактор спрайтов и карт. Она получила название PICO-8, или <<игровая консоль мечты~> 80-х от Lexaloffle Ее спецификации сразу напомнили мне о былом консольном оборудо­ вании: разрешение 128 х 128 пикселей, 16 цветов, объем картриджа 32 Кбайта и максимум 256 спрайтов размером 8 х 8. Философия Lexaloffle Games гласит: Games. Жесткие ограничения PIC0-8 тщательно подбирались с таким расчетом, чтобы работа с ними приносила удовольствие; они должны побуждать про· ектировать сжато, но выразительно и придавать картриджам, сделанным при помощи PIC0-8, свои характерные черты пользовательского интерфейса. К <<Картриджам,> можно получать общий доступ благодаря браузеру картриджей под названием SPLORE, который доступен по адресу https://www.lexaloffle.com/ pico-8.php. Удобство встроенного набора инструментов в сочетании с творческим окружением сделало PICO-8 востребованной платформой па геймджемах, в том
Глава 4. Ограничения 122 числе в сообществе https://itch.io. Оригинальная версия 2O-игры Celeste выпуска 2018 года, довольно непростая и тепло встреченная критиками, была сделана за четыре дня на PICO-8 в ходе одного из УПРАЖНЕНИЕ геймджемов. Как вы думаете, что делает следующий код? switch(timeToSparelnDays) { case > 5: downloadDevKitProAndCrossCompileForGBAYourself() case > 2: downloadGBStudioToDesignA2DJRPGAdventure() case > 1: downloadPIC08AndCreateA2DPlatformer() default : throw "Отложите эту книгу и вернитесь к работе, ничего не заработает" } Вы удивитесь, как много можно сделать всего за несколько часов возни с PICO-8 (и сколько удовольствия это принесет). Пусть виртуальная маши­ (14,99 доллара на момент написания данного раздела), ее официальная инструкция и неофициальное руководство по разработке игр поддерживаются куда лучше, чем страница документации ее бесплатного на не бесплатна конкурента ТIС-80. Чтобы получить еще больше удовольствия от выполнения этого упражнения, пригласите друзей и коллег. Может получиться отличный хакатоп, результаты которого потом не грех и опубликовать - даже если вы вовсе не собирались ста­ новиться разработчиком игр. Это мастер-класс по работе в условиях ограничений (особенно если добавить жесткий дедлайн, как в геймджемах или хакатонах), и не обязательно по проектированию игр. Консоли мечты, такие как PICO-8, являются виртуальными машинами, но существует и новое, вполне осязаемое оборудование, вдохновленное старыми технологиями. Одним из таких устройств является, например, ZX Spectrurn 8-битный компьютер, выпущенный в 2017 году (рис . 4.8). Он совместим со всем программным и аппаратным обеспечением оригинального ZX Spectrurn 1983 года, самого продаваемого в Великобритании домашнего микрокомпьютера Next, восьмидесятых, разработанного компанией Sinclair Research. Рис. 4.8. Так выглядит ZX Spectrum Next, унаследовавший изысканный дизайн оригинального компьютера производства Sinclair, но оснащенный современными «прибамбасами», в частности портом и картой памяти SD HDMI
4.4. Самоограничения 123 Speccy сродни Game Воу. Z80 CPU, работающий на частоте 3,5 МГц. По сравнению с предшественником ZX Spectrum Next - средоточие мощи: он использует технологию FPGA 1 для достоверной реализации вариаций 8-битного В отношении производительности оригинальный У него на борту имеется процессор процессора. Это означает, что он может динамически менять тактовую частоту до 28 МГц, сохраняя, таким образом, совместимость с более поздними версиями Spectrum. Цель нового старого «железа,> Speccy не только привлечь фанатов ретро-ком­ пыотеров вроде меня, но и, как выразился ветеран программирования игр и один из проектировщиков ZX Next Джим Бэгли Uim Bagley)2, «пробудить новое поколение творческих диванных кодеров>>. В комплект поставки машины под управлением NextZXOS входит обширное руководство по программированию на языке NextBASIC, которое так и побуждает начинающих программистов схва­ тить ее в охапку и начать играть или кодить. Сколько накладывать ограничений, решаете вы сами: придерживаться ли характерного для Spectrum голубоватого 4-битного вида RGBI и использовать ли возможности Next Wi-Fi для создания небольших многопользовательских игр в типичном ретро-британском стиле. На ZX Spectrum Next создано множество креативных <<новых старых игр,>, ко­ торые вовсю используют современные аппаратные <<примочки,,, в то же время верными идеям и ограничениям оригинального некоторые игры, разработанные на Next, Next, оставаясь Spectrum. И да, были выпущены на кассетах, которые можно воспроизводить даже на сорокалетнем Speccyl - Commodore 64, ВВС Micro и Amstrad - тоже не забыты: творческое сообщество любителей ретро-компьютеров Фанаты его тогдашних конкурентов СРС постоянно воссоздает классическое аппаратное обеспечение с использованием FPGA, открывая это превосходное оборудование для новой аудитории. Однако следует иметь в виду, что к 8-битным ограничениям нужно привыкнуть. 4.4.5. Ограничения в языках программирования Технологические самоограничения не должны сводиться к требованиям кап­ паратному обеспечению: они столь же легко могут быть применены и к языкам программирования. Первейший пример - Go, компилируемый язык со статиче­ ской типизацией, похожий на С, с такими дополнительными преимуществами, как безопасность памяти, сборка мусора и структурная типизация. По словам Роба Пайка (Rob Pike), одного из проектировщиков Go, этот язык был задуман так, чтобы его спецификации могли <<уместиться в голове программиста,,,. Роб и команда разработчиков Go делятся своими взглядами с точки зрения разра­ ботчиков языка на сайте https://go.dev/Ьlog. 1 2 ПЛИС, программируемая логическая интегральная схема. См. интервью в журнале MagPi по адресу https://magpi.raspberrypi.com/articles/ zx-spectrum-next-raspberrypi-project-showcase.
Глава 4. Ограничения 124 Что означает «уместиться в голове~,? Прежде всего это означает отсутствие по­ нятий, к которым вы могли привыкнуть в других языках. Например, здесь нет функциональных утилит map(), filter() или reduce(); придется обходиться простым for {}, который является единственным средством создания цикла {} и do {}. Это восхитительно скучно и одновременно дает ощуще­ никаких while ние свободы. В язык не встроены даже исключения, и на то есть веская причина: принудительная обработка ошибок на уровне функций, а не на уровне системы. Мне нравится программировать на кации Go именно из-за его простоты. Да, специфи­ ANS I С тоже умещаются на двух листах А4, по возраст С и, следовательно, отсутствие функций первого класса и какого-либо композиционного шаблона в сочетании с бесконечными операторами malloc ( sizeof(x)) и free() делают программирование на нем немного утомительным. Убедитесь сами. Go стал появляться во многих рейтипгах «десяти самых попу­ лярных языков программирования~,. Согласно данным Stack Overflow, он даже является пятым по счету любимым языком 2020 года, уступая Kotlin, Python, TypeScript и Rust 1• С занимает пятое место в списке «ужасов,> ( «Most Dreaded1> ). Сомневаюсь, что в этом списке он когда-нибудь отнимет пальму первенства у VBA. Go медленно, но верно набирает вес в мире разработки ПО корпоративного уровня. В язык встроены средства форматирования кода и разработки через тестирование, параллелизм доступен и прост в реализации; а еще энтузиасты (известные как Go Gophers, или <<суслики~,) доказали, что «простые~, языки, такие как Go, отличаются превосходной читабельностью; это способствует радикальному снижению недопонимания при общении, разногласий при обзоре кода и, в итоге, стоимости проекта. Из-за своих ограничений Go может показаться скучным, но скука по-своему увлекательна. Кроме того, (само)ограпичения взглянуть па недавние проекты на Go Go стимулируют творчество. Достаточно (и их исходный код), высоко оцененные за высокую эффективность и оригинальный набор качеств: PhotoPrism - ос­ нованное на искусственном интеллекте приложение для просмотра, обмена и организации коллекции фотографий; Navidrome - личный сервер потокового воспроизведения музыки; Gitea - «безболезненный,> локальный сервис git; Drone - платформа непрерывной интеграции, Hugo - поразительно быстрый и гибкий генератор статических веб-сайтов; Listmonk - простое локальное решение для организации рассылки; Commento - виджет для комментариев с защитой конфиденциальности; и т. д. 4.4.6. Роnики про взломщиков и демосцена Когда-то давно я баловался с кейгенами. Не волнуйтесь: теперь я чист, хотя мне так и пе удалось выкинуть из головы прилипчивую 8-битную музыку в стиле ' См. https://insights.stackoverflow.com/survey/2020.
4.4. Самоограничения 125 «чиптюн» (chiptune). Генераторы ключей, или кейгены (взломанные исполня­ емые файлы, лишающие авторские права защиты), обычно сопровождались вступительными роликами (intro), знакомящими нарушителя с командой взломщиков. Поскольку взлом предполагает затейливый хакинг с копанием в ассемблере (наложенные ограничения), то и во вступлениях стали исполняться сложные и часто недокументированные фокусы с центральным и графическим процес­ сорами (самоограничения). Порой вступление ко взлому было сложнее, чем взламываемая программа. Очевидно, взломщики нашли изощренный способ продемонстрировать свое хакерское мастерство! Со временем взлом превратился в то, что издание <<Eurogamer» называет «ин­ терактивным художественным опытом»1, к счастью, оставляя за кадром неза­ конную подоплеку. Субкультура демосцен (demoscene) содержит множество неписаных правил, например обязательную оригинальность (которую называют творчеством), а не копирование чужих работ или ресурсов. На типичных состязаниях по программированию требуется представить испол­ няемые файлы объемом всего 64 Кбайта, а иногда даже 4 Кбайта. Для создания такого произведения нужна масса творческих усилий. Демосцена - это мастер­ класс по программированию в условиях ограничений. Поищите на YouTube <<64k intro» и судите сами. Если это настроит вас на хакерский лад, имейте в виду, что на сайте инди-игр Itch.io часто проводятся конкурсы игр объемом 4 Кбайта. В 2020 году Финляндия включила демосцену в свой национальный список нематериального культурного наследия ЮНЕСКО. Годом позже ее примеру последовала Германия. Это первая цифровая субкультура, попавшая в список культурного наследия. Однако без строгого соблюдения очерченных для самих себя рамок эти маленькие ролики не считались бы цифровыми произведениями искусства. В демосцене жесткие самоограничения открывают путь оригиналь­ ной визуализации и музыке «чиптюн», которые никогда не увидели бы свет без возведения индивидуальных барьеров и приверженности им. УПРАЖНЕНИЕ В следующий раз, когда вы окажетесь в творческом тупике, попро­ буйте наложить на себя больше ограничений, вместо того чтобы обходить существу­ ющие. Например, что, если нужно было бы написать некий фрагмент без использо­ вания циклов? Или без кругового маршрута клиент-сервер? Или без запросов к базе данных? Воображаемое применение придуманных ограничений точно натолкнет на идею-другую по поводу текущей проблемы - для этого его даже не нужно воплощать в реальности. 1 Dan Whitehead. Linger in shadows: Scene but not heard. Eurogamer, 2008. htt.ps://www. eurogamer.net/articles/linger-in-shadows-hands-on.
126 4.5. Глава 4. Ограничения ДОСТИЖЕНИЕ ОПТИМАЛЬНОГО БАЛАНСА Ограничения - благодатная почва для творчества. Однако что произойдет, если вы переборщите с удобрениями в своем парнике? Корпи помидоров будут сожжены. Если удобрений окажется слишком мало, то ваше драгоценное «Бы­ чье сердце», скорее всего, будет напоминать раскисшие помидоры черри. Это же справедливо и в отношении ограничений: Майкл Моуз Бискьяер говорит о <,зоне оmималыюго баланса,> 1• Самое время нарисовать еще одну перевернутую U-образпую кривую (рис. ~u.. ~,.. ~+ ::::i:::: uJ сО о ::::i:::: 4.9). r::,~ "'t:-~ ~ ><. ~ Рис. 4.9. Зона оптимального .r"fll\'" 1 баланса .. + оrРАНИЧЕНИЯ ограничений, представляющая видимый потенциал для творчества Зона оптимального баланса удобно расположилась между недоограничешюстью и переограничешюстью, в соответствии с концепцией потока Михая Чиксент­ михайи. Слишком маленький поток означает повторение скучных задач снова и снова. Слишком большой - и текущая задача будет восприниматься как не­ подъемная, что затруднит процесс обучения. По оси У откладывается уровень вдохновения, варьирующийся между слишком маленьким (когда идеи, с которыми можно работать, отсутствуют) и слишком большим (хаос и пи па что нет времени, хотя вы обязаны все успевать). Заме­ тим, что Бискьяер пишет об источниках вдохновения, намекая на нашу систему управления личными знаниями - или движущую силу вдохновения, - пред­ ставленную в главе 2. Для того чтобы целенаправленно достичь зоны оптималыюго баланса и повы­ сить значение по оси Х, наложите самоограничения. Чтобы смягчить давление ограничений и снизить значение х, уменьшите ограничения, например, временно сняв или игнорируя их. Все дело здесь в балансе. 1 Michacl Mose Biskjacr, Во Т. Christcnscn, Mortcn Friis-Olivarius, Sillc JJ AЬildgaard, Caroline Lundqvist, and Кim Halskov. How task constraints affcct inspiration scarch stratcgics. Intcrnational Journal of Technology and Design Education, 2020.
4.5. Достижение оптимального баланса 127 На практике понятие зоны оптимального баланса никогда полностью не совпа­ дает с его определением па бумаге. Более чем вероятно, что новички и эксперты в области творчества будут по-разному относиться к ограничениям. Помните: во всем, что касается творчества, пределы ограничений являются личным делом каждого и подвержены постоянным изменениям. Значение зоны оптимального баланса для команды может даже отдаленно не приближаться к вашей «золотой середине,>, а может и превысить ваш личный предел. Внимательное отношение к ограничениям проекта и определение общей зоны оптимального баланса вновь подчеркивает важность концепций общения, представленных в главе 3. 4.5.1. Правильный объем оrраничений как средство абстраrирования Что, если нужный объем ограничений улучшит вашу способность абстрагиро­ ваться при решении проблем? Абстрагирование играет важную роль как в эф­ фективности, так и в креативности этого процесса. Ученый из Австралии Крус Ису ( Cruz Izu), специализирующаяся в области компьютерных наук, разработала классификацию абстрагирования, изучив, как студенты подходят к решению проблем, связанных с программированием 1 • Опа представила студе1пам простой пример - задачу об «упаковке для яиц~,, которую можно решить несколькими способами (см. врезку). Задача об упаковке дnя яиц Есть два возможных формата упаковки для яиц: на N яиц, 6 и на 8 штук. Вы хотите купить ни больше и ни меньше. Каково минимальное количество упаковок, которые N яиц.должно быть возвращено -1. Другими словами, требуется реализовать minCartons ( N iпt) int. нужно купить? Если невозможно купить в точности значение Например, minCartons(20) возвращает 3: мы покупаем две упаковки на 6 яиц -1, поскольку мы не можем купить нечетное и одну на 8. minCartoпs (7) возвращает количество яиц . Сможете решить эту задачку перед тем, как читать дальше? Допустим на минуту, что ограничения нас не волнуют. Каков простейший способ решить эту задачу? Правильно: методом полного перебора, при котором все потенциальные решения проверяются па пригодность. Ису называет это «нулевым уровнем~,: вы пока не раскрыли интересные свойства задачи, которые могут упростить подход к пей. 1 Cruz Izu. Modelling thc usc of abstraction in algorithmic proЬlem solving. Proceedings of the 27th АСМ Confcrcncc on lnnovation and Technology in Computcr Science Education, 2022. Пример с упаковкой для яиц взят из данного документа.
Глава 4. Ограничения 128 А что, если я предложу вам вначале рассматривать частные случаи и обрабаты­ вать их по-другому? Введем ограничение номер 1 и уровень абстрагирования номер 1: при помощи частных случаев пространство задачи определенным обра­ зом подстраивается под конкретные условия. Есть ли у нашей задачи какие-либо верхние или нижние границы, которые нужно учитывать? Да! Поскольку мы хотим купить в точности N яиц, любое значение меньше 6 не приведет к при­ емлемому решению. Есть еще один частный случай, но прежде чем раскрывать его, я дам вам немного подумать 1. Итак, вы провели первый этап перебора и рассмотрели несколько частных случаев, но можно сделать больше. Вот ограничение номер 2: решите не­ сколько примеров вручную на бумаге. Видите закономерность? Отлично, мы достигли второго уровня абстрагирования! Взгляните на следующие по­ следовательности: 12 {6, 6} -> 14 {8, 6} -> 16 {8, 8} -> 18 {6, 6, 6} 20 {8, 6, 6} -> 22 {8, 8, 6} -> 24 {8, 8, 8} -> 26 {8, 6, 6, 6} Не замечаете ли вы чего-нибудь необычного? Закономерность можно сформу­ лировать в два шага: 6 яиц, заменить ее упаковкой 1. Если есть упаковка на 2. Если нет, заменить две упаковки на па 8 яиц. 8 яиц тремя упаковками на 6 яиц. Эти два шага затем можно легко перевести в код. Остается только проверить, работает ли выявленная нами закономерность для всех чисел, например, про­ тестировав логику на большом числе, кратном 8. Однако это еще не все. Задачу об упаковках для яиц можно решить без единого цикла - ограничение номер 3. Можете ли придумать, как это сделать? Возможно, наложение третьего ограничения выведет вас за границы вашей личной зоны оптимального баланса, и это совершенно нормально! Уровень абстрагирования 3 называется математической абстракцией: если выявленная закономерность регулярна, ее, как правило, можно описать математически в модели, а не гене­ рировать значения шаг за шагом. Приведет ли это к созданию легко поддержи­ ваемого кода - другой вопрос. В задаче с упаковками для определения нужного количества упаковок на 6 яиц можно использовать остаток от деления minCartons{22) и minCartons{24) n/8. Это возможно, поскольку возвращают з: в конце концов, нас интересует только общее число упаковок. Возможное решение с частичным использованием уровней 1и 3 может быть следующим: 1 Мы знаем, что нечетные числа нам не подходят, но существуют ли четные числа, тоже не приводящие к решению? (Намек: 10.)
4.5. Достижение оптимального баланса 129 func minCartons(n int) int { switch { case n < 6 11 n == 10: return -1 case n % 8 == 0: return n / 8 default: return n / 8 + 1 } } Я никогда не нашел бы это решение, если бы у меня не было четкого требования разработать реализацию без циклов (ограничение 3). Другой метод, который, возможно, нравится вам больше, - написание модульных тестов, охватывающих все возможные сценарии. Это может также считаться ( само )ограничением, подталкивающим вас к зоне оптимального баланса. Рас­ смотрев тестовые примеры, вы почти автоматически выявите закономерности, которые можно успешно применять в коде в реальных условиях. 4.5.2. Сладость или rоречь? Какой бы сладкой пи была победа над ограничениями, эта сладость может оставить горькое послевкусие. Творчество может быть очень болезненным и чрезвычайно трудным. Биографические труды пестрят рассказами о несчастных художниках и писате­ лях, в жизни которых процесс творческого созидания был сопряжен с тяжкими невзгодами. Шизофрения и биполярное расстройство Винсента Ван Гога, из-за которых он отрезал себе ухо; ухудшавшееся психическое состояние Вирджинии Вулф, в итоге приведшее к самоубийству; психическое заболевание, преследо­ вавшее Августа Стриндберга, - лишь некоторые из них. Зона оптимального баланса ограничений весьма полезна: она вознаграждает пас нужным количеством свободы творчества. Однако это вовсе не означает, что такая сделка очень уж выгодна. Некоторые художники доходят до того, что для оптимизации творческого процесса культивируют и любознательность, и страдания. Эрве Гибер (Herve Guibert), французский писатель и фотограф, близкий друг философа Мишеля Фуко (Michel Foucault), точно подметил: <1Не должен ли художник остаться стоять одной ногой в детстве, а другую за­ нести над могилой?» 1 Гибер умер от СПИДа накануне своего 36-летия. Является ли романтизация смерти способом наложить ограничение, способствующее творчеству? Рискуя показаться мрачным, скажу: возможно. Художники доказали, что мысли о неиз­ бежном конце благотворно влияли на их работу. Символическое высказывание <>Memento mori» ( <>Помни о смерти»), обычно изображаемое па картинах в виде цветка, черепа и песочных часов - жизнь, смерть и время, - служит своего рода напоминанием. 1 Hcrve Guibert. The mausolcum oflovers:Journals 1976~1991. Nightboat Books, 2014.
130 Глава 4. Ограничения Художники Средневековья, возможно, зашли слишком далеко, создавая картины в жанре ванuтас 1 , показывающие никчемность жизни и тщетность удовольствий. Это также давало моральное оправдание для изображения черепов, книг и увяд­ ших цветов, а не привычных христианских сюжетов. Патологическая связь между творчеством и смертью побудила исследователей раскопать теорию с пугающим названием «теория управления ужасом~.> (terror management theory), подтверждающую мысль о том, что творческие способ­ ности играют важную роль в управлении экзистенциальными переживаниями. Стояние одной ногой в могиле повышает креативность, а креативность повы­ шает нашу устойчивость к экзистенциальной тревоге 2 • Созидание чего-то, что переживет паши бренные тела, можно рассматривать как попытки обрести бессмертие. Творческие люди порой одержимы работой, что может пагубно сказаться па психическом здоровье, в том числе на психическом здоровье их близких. По­ жалуйста, помните, что работа - это всего лишь работа: в жизни есть нечто большее, чем постоянные всплески дофамина в потоке творчества. УПРАЖНЕНИЕ Некоторые проблемы решаются гораздо проще, сели откровен­ но игнорировать определенные ограничения, рассмотрев задачу вне контекста аппаратного и программного обеспечения. Возьмем, к примеру, программиро­ вание игры в домино. Ее правила (совпадение пар) действуют как ограничения, но обдумывание того, как пройти игру без компьютера, пе будет обременять вас рекурсией, обратными ссылками и проблемами переполнения памяти стека. Когда концепция решения обретет форму, тогда и толы,о тогда переводите его в код и принимайтесь за дополнительные задачи. Мои поздравления! Вы попали в зону оптимального баланса. 4.6. РАБОТА С ОГРАНИЧЕНИЯМИ НА ПРАКТИКЕ Как преодолеть множество внутренних, наложенных ограничений и самоогра­ ничений, связанных с проектом по разработке ПО? Зона оптимального баланса ограничений предполагает, что если вас покидает вдохновение, их нужно накла­ дывать или снимать. Для этого есть несколько практических способов, из которых в последующих разделах мы рассмотрим дивергентное мышление и наивность. Главы, которые ждут вас впереди, содержат дополнительные примеры. 1 Ван:итас (лат. vanitas, букв. - «суета, тщеславие~.>) - жанр живописи эпохи барокко, ранняя стадия развития натюрморта, аллегорический натюрморт, композиционным центром которого традиционно является человеческий череп. 2 - Примеч. пер.· Rotem Perach and Arnaud Wisman. Сап crcativity beat dcath? А revicw and evidence оп thc cxistential anxiety buffering functions of creative achievement. Thc Journal of Crcative Behavior, 2019.
4.6. Работа с ограничениями на практике 131 4.6.1. Диверrентное мыwnение В семидесятые годы, когда академические исследования творчества были совер­ шенно новой областью знаний, исследователи считали единственным способом преодоления ограничений нестандартное мышление. В то время Пол Торранс ( Paul Torrance) разработал собственный тест на творческое мышление (Torrance Test of Creative Thinking, или ТТСТ) 1 • Ученые всегда пытались измерить разные вещи и выразить это в количественном отношении, и творчество не стало ис­ ключением. Предполагалось, что высокий балл в тесте ТТСТ должен указывать на высокий творческий потенциал, хотя в действительности он измеряет только умение нестандартно мыслить, то есть лишь незначительную часть того, что пси­ хологи сегодня считают определяющими факторами творческих способностей. К несчастью, подавляющее большинство исследователей в области компьютер­ ного образования все еще придерживаются устаревших концепций наподобие ТТСТ, поскольку он является одним из наиболее часто упоминающихся и до­ ступных средств измерения творческих способностей 2 • Помните, что творче­ ство - это нечто большее, чем наскучившие сессии мозгового штурма. На самом же деле нестандартное мышление - это мышление в условиях (нало­ женных) ограничений. Это импровизация и генерация множества оригинальных решений в жестких рамках. Например, в ТТСТ вам дается начальная базовая форма ( скажем, круг) и предлагается нарисовать некий рисунок на основе этой формы. Если при виде круга вы нарисуете смайлик или земной шар, как до вас это делали тысячи людей, это решение будет сочтено не очень творческим. А вот если вы станете рисовать кокосовое дерево, состоящее из кружков, как это сделал я на рис. 4.1 О, такой подход будет считаться более креативным. 1-НЧАЛЬНАЯ МЕНЕЕ БОЛЕЕ ФОРМА ТВОРЧЕСКИ ТВОРЧЕСКИ о Рис. 4.1 О. Тест ТТСТ в действии. Надеюсь, у меня получилось! Таким образом можно оценить несколько факторов: сколько уникальных изображений вы можете придумать И СКОЛЬКО ИЗ НИХ отличаются от среднего рисунка? 1 2 Е. I¾шl Torrance. Predictive validity of the Torrance Tests of Creative Thinking. The Journal of Creative Behavior, 1972. Wouter Groeneveld, Brett А. Becker, andjoost Vennekens. How creatively are we teaching and assessing creativity in computing education ?: А systematic literature review. Proceedings of the 2022 АСМ Conference оп Innovation and Technology in Computer Science Education, 2022.
132 Глава 4. Ограничения Вопрос заключается в следующем: оцениваем ли мы здесь именно творческие способности как общесистемное и социокультурное понятие? Очень в этом со­ мневаюсь. Тем не менее, когда мы спрашивали разработчиков, как они оцени­ вают творчество - например, на собеседованиях при приеме на работу, - они единодушно отвечали: при помощи методик дивергентного мышления. Конечно, то, как кто-либо выполняет задания по импровизации, может сказать больше, чем качество связей в его жидкой сети (сетях). Многие собеседования в технической отрасли для оценки творческого потен­ циала включают в себя вопросы о поведении, при помощи которых выясняется, как вы справляетесь с наложенными ограничениями. GitHub полнится списками специально отобранных вопросов для собеседования, на которые стоит взглянуть, если вы достаточно любознательны. В ходе наших собеседований один разработчик упомянул настольную игру Вlack Stori,es Хольгера Бёша (Holger Bosch), в которой приходится думать пе по шаблону, стремясь разгадать мрачные и жутковатые загадки. Каждая карточка в этой игре рассказывает историю об убийстве, которое нужно раскрыть, ис­ пользуя лишь название и одно предложение для воссоздания сюжета. Затем группе предстоит придумать оригинальную и правдоподобную причину смерти. На обороте карточки находится описание решения, которое подчас может по­ казаться несколько натянутым. Игра Black Stones была издана восемнадцатью компаниями и, как я в последний раз насчитал на https://Ьoardgamegeek.com, имеет 21 различную версию. Наверное, в этом нет ничего удивительного: тайны влекут людей, а играть в эту игру очень просто, здесь практически нет правил, и никто не прочь разразиться очередным убийственным сценарием. Эту игру можно даже с легкостью адаптировать к миру программирования! Как вам такой вариант: Название: ~Блоr•. Ваутер запушил последний пост своего блога в репозиторий Git, ожидая, что система сборки выберет его для публикации. Через пять минут блог Ваутера ушел в офлайн. УПРАЖНЕНИЕ Можете ли вы придумать друrие возможные, менее исключительные и, возможно, более правдоподобные причины внезапного отключения? Придумайте по меньшей мере пять разных событий, которые технически могли бы быть винов­ никами произошедшего. А еще пять слабо? Я мог бы сгенерировать еще штук пятьдесят таких загадок, назвав их Stories». Даже не пытайтесь меня перещеголять!1 1 <<Crash Решение: в дата-центре, в котором Ваутер арендует виртуальный сервер, начался по­ жар.Да-да, это случилось на самом деле. И нет, резервных копий у меня не было. Урок усвоен!
4.6. Работа с ограничениями на практике 4.6.2. 133 Наивность и оrраничения Опасный переизбыток ограничений может привести к тому, что творческие люди начнут отказываться от идей, которые в противном случае стоили бы дальнейшего изучения. Приходилось ли вам участвовать в сессии мозгового штурма, на которой идеи вычеркивались сразу после появления просто по­ тому, что «Это невозможно, и всё>> или <<Сервер не справится~>? В этом случае помогает определенная доля наивности. Вместо того чтобы занимать мысли существующей системой и ее ограничениями, вообразите, что ничего не знаете, и просто генерируйте идеи. Какие из них воплощать, решайте после того, как они будут записаны. The Heidi was lying on the beach reading detective story when she fell asleep. Мооп Because the moon was at full strength, Heidi did not find out who the murderer was. Рис. 4.11. Карточка игры 8/ack Stories. а She was still sleeping when the tide came in and swept the Ьооk away forever. На изображении слева - полнолуние, поэтому Хейди не узнала, кто убийца». Справа - рассказ: «Было решение: «Хейди лежала на пляже, читая детектив, и заснула. Она все еще спала, когда начался прилив, навсегда унесший книгу». Карточка «Black Stories», © Holger Bбsch, puЬlished Ьу Moses and others Исследователи редко признают наивность важным компонентом творчества. Психологи Джон Джеро Qohn Gero) и Мэри Лу Махер (Mary Lou Maher) за­ являют, что креативность редко является результатом наивности, а происходит скорее от способности высокоинтеллектуальных личностей сопоставлять разные
134 Глава 4. Ограничения идеи и распознавать их ценность 1• К счастью, устаревшее определение творческих способностей начала девяностых в настоящее время начинает опровергаться учеными, которые таки видят потенциал наивности. Философ в области образования и критик в области творчества Катерина Моруцци ( Caterina Moruzzi) ставит наивность в один ряд с решением проблем и оценкой как важное творческое качество 2 • Она связывает наивность с различ­ ными аспектами, которые в литературе относят к основным творческим чертам: спонтанность, бессознательная обработка мыслей, оспаривание общепринятых норм и независимость от жестких структур мышления. Наивность может быть детской, несерьезной чертой творчества. Также она мо­ жет означать отсутствие предшествующего знакомства с текущей ситуацией, гранича с невежеством. Порой блажен тот, кто не ведает! Мы кратко рассмотрим два примера наивности, в которых ограничения были преодолены благодаря таким интерпретациям. 4.6.3. Наивная, Хильда Домин но nеrендарная поэтесса (Hilde Domin), известная немецкая поэтесса, в интервью, данном Михаю Чиксентмихайи, говорит о том, как трудно быть принятой в мужском мире поэзии. Она считает, что проявляла настойчивость потому, что не имела ясного представления о скрытой борьбе за власть в мире литературы, развер­ нувшейся рядом с ней 3 : Я была очень наивной. Не знаю почему, но так уж получилось. Я не верила в литературные интриги и всякое такое, в литературную мафию. По мне, работа есть работа - как тогда, так и теперь. До первой публикации одного из ее стихотворений прошло шесть долгих лет. Женщине трудно было прижиться в литературном мире пятидесятых, особенно когда Домин опекал ревнивый муж, который поначалу никак не хотел прими­ риться с возможностью того, что она станет чересчур успешной. Овеянные романтикой рассказы о том, что гений всегда <<пробьется>>, невзи­ рая на преграды, с которыми может столкнуться настоящий художник, были и остаются скорее вымыслом, чем реальностью. Однако вместо того чтобы сдаваться перед лицом препятствий (или ограничений), Домин наивно продол­ жала делать свое дело и в конечном счете стала одним из самых влиятельных немецкоязычных поэтов своего времени. Она продолжает: «Малларме говорит, 1 2 3 John S. Gero and Магу Lou Maher. Modeling creativity and knowledge-based creative design. Psychology Press, 2013. Caterina Moruzzi. Measuring crcativity: an account of natural and artificial creativity. EuropeanJournal for Philosophy of Science, 2021. Чиксентмихайи М. <1Креативность. Поток и психология открытий и изобретений>>.
4.6. Работа с ограничениями на практике что стихотворение - 135 как ракета: оно просто взмывает ввысь. Возможно, он прав. Но все можно испортить. Ревностью. Думаю, это подходящее слово» 1 • 4.6.4. Наивный Джеймс 6онд Порой наивность может приводить к потрясающим результатам. Еще один наглядный пример из мира программного обеспечения Nintendo 64. Выпущенный компанией Rare в 1997 - игра GoldenEye для году, шутер от первого лица впервые показал снайперские винтовки и двуствольные ружья, специфические реакции тела на попадание пуль путем захвата движений, отражение от поверх­ ностей, встречающихся в игровом окружении, и смертельный бой на разделенном экране - все эти особенности позже станут стандартом в жанре шутеров. Игра разошлась головокружительным тиражом в восемь миллионов экземпляров, войдя в тройку лучших игр для Nintendo 64 наряду с такими гигантами, как Mario 64 и Mario Kart 64, опередив даже культовую игру ( той же Nintendo) Legend о/ Zelda: Ocarina о/ Time! Поскольку большинство членов команды 007 не имели опыта разработки, им было совершенно неведомо, что возможно в проектировании игр и на оборудо­ вании Nintendo 64, а что - пет. Если им приходила хорошая идея, они просто пытались воплотить ее. В интервью изданию <.Retro Gamer» продюсер и директор Мартин Холлис признает, что некоторая доля наивности и неопытности, возможно, помогла сформировать будущее GoldenEye. Пошло ли на пользу первой игре его команды незнание того, что она могла сделать и чего не могла? Отвечая на этот вопрос, Холлис ответил 2 : О, конечно. Я тоже не знал, чего мы сделать не можем. Предполагалось, что это будет проект на троих и на него потребуется около девяти месяцев. Не­ кому было предупредить нас, что на него уйдет три года и работать будут десять сотрудников, потому что никто этого не знал. GoldenEye развила жанр шутеров от первого лица, который популяризовал Doom - от собирания цветных ключей на карте, напоминающей головоломку, и пальбы в монстров до применения гаджетов, как у Бонда, и целей, определяе­ мых сюжетом. Без наивного подхода к воплощению идей, которые иначе были бы отброшены, не было бы Half-Life и других нашумевших шутеров от первого лица. Наивность может завести вас дальше, чем вы думаете. Даже если вы знаете об ограничивающих факторах данного проекта, может оказаться полезным настро­ иться на наивный лад, чтобы узнать, что еще возможно в неизведанных областях вселенной проектирования с ограничениями. 1 Чикссптмихайи М. «Креативпость. Поток и психология открытий и изобретенийi>. 2 См. Rctro Garner's 100 Garnes То Play Before You Die: Nintendo Consoles Edition, с. 144.
Глава 4. Ограничения 136 Рис. 4.12. Лихорадочный смертельный бой в игре GoldenEye с разделенным экраном на четверых игроков. Представьте себе поток ругани и прыжки с дивана, а возможно, даже броски контроллера и уворачивание от него. Вот оно, непреднамеренное, но реальное наследие Go/denEye! Мультиnлеерное безумие Мысль о мулыиплеерном дополнении к GoldenEye, о котором с ностальгией вспо­ минают многие игроки, была запоздалой. Еще чуть-чуть - и оно не вписалось бы в игру: работа над ним велась в течение всего лишь шести месяцев до релиза. Обе­ денные перерывы в Mario 64, Rare проходили за игрой в Bomberman и первые прототипы что и привело к идее о бешеном шутере с разделенным экраном. Команда не знала, что из этого получится, пока не приступила к разработке. Практически сразу они столкнулись с ограничениями частоты кадров. Отчасти эта проблема была решена сведением мулыиплеерных карт к небольшим низкополигональным областям. Более опытные разработчики, скорее всего, даже не попытались бы это сделать. Если бы так не поступили в Rare, сомневаюсь, что GoldenEye вспоминалась бы теперь с такой теплотой. 4.6.5. Наивная реаnизация аnrоритмов Вновь и вновь многие реализованные алгоритмы пробивают себе дорогу с ве­ ликими сложностями, поскольку мы, эксперты в программировании, сразу на­ чинаем думать о возможных последствиях, которые в действительности (почти) никогда не наступают. Наши прежние неудачи преследуют нас, так что на этот раз лучше быть гибкими! Если пе придерживаться наивного мышления, то
4.6. Работа с ограничениями на практике 137 решения быстро оказываются перемудренными: «на всякий случай~ вводятся два уровня кэширования, часть кода становится еще одной зависимостью вместо копии, потому что <<этот код может быть использован повторно~, балансиров­ ка нагрузки серверов производится без ее тестирования, потому что «никогда нельзя знать>>. Звучит знакомо? Алгоритмы бывают разных форм и размеров. Наивный подход обычно является самым простым и наиболее читабельным. Хотя, конечно, иногда реализация не проходит испытание на прочность. В качестве простого примера рассмотрим ряд Фибоначчи. Каждое число в нем вычисляется как результат сложения двух пре­ дьщущих. Начинается последовательность с О и 1. О+ 1 = 1, 1 + 1 = 2 и т. д. Наив­ ная, но от этого не менее полезная рекурсивная реализация могла бы быть такой: func Fibonacci(n int) int { if n <= 1 return n return Fibonacci(n - 1) + Fibonacci(n - 2) } Просто и читабельно - в точности то, что мы хотели бы видеть в наших функ­ циях. За исключением того, что если мы введем большое число, например то вычисление результата ( 1 258 626 9025) 50, займет с минуту, поскольку стек мгновенно разбухнет из-за постоянного пересчета уже известных чисел Фибо­ наччи. Возможным решением могла бы стать оптимизация функции с помощью технологии, известной как мемоизация, или хвостовая рекурсия: func fibonacciTail(n, а, Ь int) int { if n <= 1 return Ь return fibonacciTail(n - 1, Ь, а+ Ь) } func Fibonacci(n int) int { return fibonacciTail(n, 0, 1) } Это, пожалуй, все еще читабельно, но гораздо менее просто, даже несмотря на то что мы значительно улучшили производительность нашей функции Fibonacci: теперь она увеличивает стек только в n раз. Риск начинать подобную оптими­ зацию (тут подпирают различные ограничения, там - кошмары из прошлого) выливается в ненужное усложнение решения или, того хуже, в отсутствие решения как такового, потому что мы застреваем в определенном образе мыш­ ления. В «сухом остатке~ мы имеем следующее: для стимуляции творческой мысли всегда начинайте с наивного подхода. Только затем сделайте шаг назад и подумайте, как можно что-то улучшить. УПРАЖНЕНИЕ Что, если привнести немного здоровой наивности в повседневную практику программирования, не стремясь послушно следовать своему экспертному мнению? Когда вы в следующий раз столкнетесь с некой проблемой, представьте, что не знаете об ограничениях, и дайте волю воображению. Возможно, это поможет найти более интересные подходы к решению проблемы.
138 Глава 4. Ограничения итоги • Таксономия полезных ограничений, оттачивающая наши навыки решения проблем, состоит из внутренних и наложенных ограничений (случайных) и самоограничений (существенных). • Строгие внутренние аппаратные ограничения, которые, казалось бы, работа­ ют против вас, могут быть использованы на благо творчества, если работать с ними, а не против них. • Даже если вы пробуксовываете в старых браунфилд-проектах на Visual Basic, вполне возможно придерживаться современной практики и идеалов разра­ ботки ПО. Нужно просто найти способ смягчить наложенные ограничения. • Ни в коем случае не стоит <<спускать на тормозах~ выявленные ограничения. Это может отразиться на вашей команде, на вашем ПО и в конечном счете на ваших клиентах. • По тем же соображениям не спешите отбрасывать идею только потому, что <<это невозможно сделать~, пока не убедитесь в том, что это действительно невозможно. • У ограничений есть зона оптимального баланса. Избыток ограничений не даст вам реализовать ваш творческий потенциал. Будьте внимательны, накла­ дывая на себя ограничения, которые могут отбросить вас далеко за пределы зоны оптимального баланса. • Самоограничения не только приближают вас к творческому решению; они также являются средством борьбы со скукой и посредственностью. • Не нужно всякий раз подавлять наивную восторженность ребенка внутри вас. Его голос может помочь вам справиться с особенно сложным ограничением. • Дивергентное мышление тоже может помочь в работе в условиях ограниче­ ний. Только убедитесь, что не уделяете слишком много внимания разного рода тестам на дивергентное мышление. Творчество большее, чем просто нестандартное мышление. - это нечто гораздо
Критическое мышление В ЭТОЙ ГЛАВЕ ✓ Пять шагов типичного творческого процесса ✓ Режимы сосредоточенного и рассеянного мышления ✓ Творчество как цель или как средство в зависимости от намерений ✓ Распрост раненные заблуждения о критическом мышлении Беспорядочная мешанина из громких голосов и благоухания специй ознамено­ вала собой еще один оживленный день на агоре, являвшейся центром древней Афинской империи. Продавцы ожесточенно торговались, чтобы сбыть сушеную рыбу, оливки, сандалии, компромат на местных политиков, амфоры, козье моло­ ко, судебные иски, свидетелей, фиги и хлеб. У них было все, что только можно было пожелать. Посреди всеобщих криков и ругани крепко сбитый пожилой мужчина с плоским носом - босой и не очень опрятный - чувствовал себя как рыба в воде. Во время своих ежедневных прогулок по окрестностям агоры Со­ крат засыпал каждого встреченного им человека надоедливыми вопросами. Его девизом было: «Узнай то, чего пе знаешь>>. В другой части Афин преподаватели-софисты, специализировавшиеся в таких областях, как математика, музыка, философия или - да упасут боги - ремёсла, были заняты прививанием добродетели тем немногим состоятельным грекам, которые могли себе это позволить. Софистов, этаких странствующих мудрецов
140 Глава S. Критическое мышление и искушенных ораторов, объединяла одна общая черта: если они чего-то не знали, то все равно делали вид, что знали. Это помогало им произвести впечатление или убедить в чем-либо свою аудиторию. А некоторые софисты и вовсе утверждали, что им известны ответы на все вопросы. К кому обратиться, если возникает острая нужда в знаниях: к чудаковатому старику, притворяющемуся, что ничего пе знает, и задающему вопрос за вопро­ сом, или к лицемерному острослову, уверяющему, что ему известны ответы па все вопросы? Сократовское « Узнай то, чего не знаешь~,, па протяжении всей его жизни вызывало у окружающих лишь пренебрежение. Афинян было легко прельстить многословными риторическими речами софистов. Даже Сократ в какой-то момент признал, что пе столь искусен, как некоторые подлинные софисты, и отправил одного из своих последователей учиться у них. Позже Платон описывал софистов как ограниченных наставников, которые пе учат ничему, кроме надувательства. Двадцать веков спустя тишину одной лаборатории в Париже нарушило звяканье пустых бутылок, небрежно сдвинутых в кучу. Луи Пастеру, озабоченно склонив­ шемуся над маленькой чашкой с прокисшим вином, потребуется еще несколько недель, чтобы подытожить мысли о спиртовом брожении или отсутствии тако­ вого в стерилизованных и герметичных колбах. Вместо того чтобы согласиться с коллегой-химиком Юстусом фоп Либигом (Justus von LieЬig), полагавшим, что брожение было просто результатом «органического разложения,>, Пастер доказал, что спирт образуется из сахара благодаря естественным дрожжам. В 1850-х годах существование микроорганизмов, таких как дрожжи и мо­ лочнокислые бактерии, служило темой ожесточенных споров. Как может то, чего мы не в состоянии увидеть или учуять, быть частью процесса броже­ ния - древнего и непостижимого явления, некогда приписываемого богам? Стерилизацией бутылок Луи Пастер встряхнул на удивление софистический и узкий образ мышления, продемонстрировав этот процесс. В итоге он по­ лучил бесчисленные награды и финансовую поддержку, позволившую ему превратить лабораторию в тот Институт Пастера, который мы знаем сегодня. Демонстрациям Пастера удалось убедить людей там, где другие за много лет до него не смогли это сделать. Люди, не готовые поверить в существование микроорганизмов, были не един­ ственными участниками ( само )обмана. У легендарного ныне Луи Пастера тоже имелись грязные тайны, которые он доверял только своей лабораторной тетра­ ди. Тетрадь эта оставалась скрытой от посторонних глаз в течение еще одного столетия, пока Джеральд Л. Гейсон << The (Gerald L. Geison) пе опубликовал книгу Private Science of Louis Pasteuri,, 1• Этот труд обнародовал некоторые обман­ ные маневры, которыми Пастер пользовался, чтобы опередить соперников, вклю­ чая кражу идей и открытий. Это вылилось в тяжбу о плагиате длиною в жизнь 1 Gcrald L. Geison, Thc private sciencc of Louis Pasteur. Princcton Univcrsity Prcss, 2014.
Критическое мышление с Антуаном Бешапом (Antoine Bechamp), 141 профессором химии из Монпелье, который, конечно же, считал себя первооткрывателем роли микроорганизмов в процессе брожения. Перемотаем время вперед еще па один век. Усыпляющее гудение мощных вен­ тиляторов в системных блоках медленно, по верно наполняло теплом ничем не примечательный с виду офис. Компьютеры и сотрудники компании Grove Street Games, расположенной в городе Гейнсвилле, штат Флорида, работали сверхуроч­ но, чтобы уложиться в очень жесткие сроки выпуска игры Grand Theft Auto: The Tri1ogy- The Definitive Edition, созданной совместно с компанией Rockstar Games. Текстуры увеличены, сетки очищены, освещение улучшено, а также добавлены превосходные погодные эффекты. Однако усилия, в осп овном автоматизированные ИИ-масштабировщиками 1 , при­ вели к появлению уродливых текстур, слишком большому количеству сеток для плавной работы, резкому контрасту, нарушающему атмосферу игры, а эффекты дождя выглядели так, будто кто-то наверху пролил пару кувшинов молока. От ремастерипга классических игр Grand Theft Auto ( GTA III, GTA Vice City и GTA San Andreas; см. рис. 5: 1) путем переноса объектов с движка RenderWare на U nreal Engine 4 вначале ожидали многого. Ностальгические мотивы могут привести к разрушительным последствиям, как и пренебрежение критическим анализом 100 ООО объектов, масштабированных с помощью искусствеш-юго интеллекта. Рис. 5.1. Видите гайку справа от пончика на снимке экрана оригинальной «GTA San Andreas»? Так вот, она каким-то образом превратилась в шину, испортив тем самым шутку «Tuff Nut>>2. Является это результатом работы ИИ-масштабировщика или рассеянности дизайнера, который просто увидел неровные края и счел, что их нужно срочно закруглить, остается неизвестным. Снимки любезно предоставлены RockmanBN, ResetEra 1 См. интервью адресу 2 «The Gamer» с продюсером Rockstar Ричем Росадо (Rich Rosado) по https://www.thegamer.com/gta-remasteredtrilogy-rockstar-interview/. Игра слов: «крепкая гайка», «крепкий орешек,>, а в переносном смысле «крутой парень». - Примеч. пер.
142 Глава 5. Критическое мышление Согласно имеющейся информации, игра находилась в разработке более двух лет, прежде чем на нее обрушился поток отрицательных отзывов как со стороны игровых критиков, так и со стороны самих геймеров. Версия «Definitive Edition», вопреки названию, оказалась далеко не окончатель­ ной. Хуже того, Rockstaг Games решила изъять оригинальные игры GTА из интернет-магазинов, оставив геймерам лишь воспоминания о том, как они разъезжали на машинах по пляжу, слушая Flash FM в стиле восьмидесятых. Выбора не осталось, кроме как покопаться на блошином рынке. Вот уж дей­ ствительно «крепкий орешек». 5.1. ТВОРЧЕСКОЕ КРИТИЧЕСКОЕ МЫШЛЕНИЕ В чем же заключается то главное, что объединяет бурный поток сократовских вопросов и их отсутствие у софистов; критическое, но ошибочное восприятие микроорганизмов после их открытия; неспособность Gгove Street Games кри­ тически подойти к оценке сгенерирова.1111ых объектов в новой игре, что привело к ее полному провалу? Все три примера демонстрируют разную степень выра­ женности критического мышления либо полное его отсутствие. Новые изобретения или способы деятельности вначале принимают скептически. Сократовский метод «допроса» казался афинянам странным. Прошло немало времени, прежде чем высокомерное отношение к людям и накопленные богат­ ства софистов вызвали всеобщее возмущение их практикой. Луи Пастер был не первым, кто открыл микроорганизмы, и тем не менее отрицание вновь оказалось более легким вариантом. Когда гениальность Пастера наконец была признана, выяснилось, что он являлся не кем иным, как мошенником, воровавшим чужие творческие идеи. Расчет Grove Street Games на оказавшуюся небезупречной технологию ИИ, скорее всего, в сочетании с ощутимым давлением со стороны Rockstar, выну­ дила их выпустить незавершенную игру, в пух и прах разнесенную критиками. Творческий подход команды разработки говорил о потенциале, который так и не был реализован из-за некритического упорствования в дате релиза. Еще месяц игрового тестирования мог бы отшлифовать GTA Trilogy настолько, насколько было необходимо. Уже через день после ее выхода геймеры выкладывали видео­ ролики с глупыми ошибками, испорченными шутками, такими как на рис. 5.1, и внезапными «вылетами» программы, доказывая тем самым, что эти проблемы было не так уж трудно найти. Одного творческого мышления недостаточно: для того чтобы пожать плоды со­ зидателыюго труда, необходимы как творческое, так и критическое мышление. Критическое мышление требуется, чтобы генерировать оригинальные идеи, подтверждать или отклонять их, своевременно подстраивать творческий про­ цесс, запрашивать и корректно интерпретировать обратную связь и преодолевать
5.2. Творческий процесс 143 многие когнитивные искажения, сформировавшиеся у нас в голове. Чтобы глубже понять связь между креативностью и критическим мышлением, давайте более подробно рассмотрим типичный творческий процесс. УПРАЖНЕНИЕ Есть ли в вашей команде разработки свой Сократ, который часто задает вопросы о предпринимаемых действиях и путях развития? Если нет, не пора ли ему появиться? Если есть, не воспринимают ли его с раздражением из-за того, что ваша команда боится ответов, либо из-за того, что современная инкарнация Сократа перегибает палку в своей роли критика программирования? 5.2. ТВОРЧЕСКИЙ ПРОЦЕСС И Питер ван Стрин, и Михай Чиксентмихайи, уважаемые исследователи твор­ чества, представленные в предьщущих главах, сходятся во мнении относительно пяти стадий творческого процесса, выявленных Грэмом Уоллесом Wallas) в 1921 гаду 1 (рис. 5.2): 1. Подготовка. Ни один творческий продукт не является результатом внезап­ ного озарения: это на 90% готовительную работу и на 2. (Graham результат прохождения через длительную под­ 10% - озарения. Инкубация. Произвольный период, в течение которого творец дистанцируется (от участия) и прерывает процесс, неосознанно ускоряя озарение. 3. Озарение. Его не произойдет без пропитанного потом и слезами шага 4. Проверка. Убедиться в правилыюсти идеи. Работает ли это? Стоит ли оно того? Если нет - 1. выбросьте это вон и начните сначала. 5. Представление/принятие. Творение может считаться подлинно креативным только после того, как представлено и принято коллегами ( см. социокуль­ турное определение творчества в первой главе). Хотя пронумерованный список обычно подразумевает последовательный про­ цесс, творческий процесс таковым не является: он рекурсивен. В любой момент времени творец может перепрыгивать взад и вперед между этапами родилась отличная идея (этап 3)? Вернитесь к ней (этап 1 и 4. У вас 1), чтобы опробовать ее. Застряли в колее? Сделайте перерыв (этап 2), переключитесь на что-нибудь еще, выгуляйте собаку, пробегитесь. Только возьмите с собой блокнот на случай, если в голове загорится лампочка (этап модульные тесты (этап 3). Пора компилировать и выполнять 4)! Не работает? Переходим к этапу 1. Последний этап, очевидно, применим только после проверки. 1 Graharn Wallas. Creative process. New Arnerican Library, 1921.
144 Рис. Глава 5. Критическое мышление 5.2. Пять этапов творческого процесса. Обилие стрелок указывает на взаимосвязь между этапами. Подготовка обычно является первым из них, но привести процесс в движение может и внезапная идея. Непринятие- не обязательно конец, если осталось достаточно энергии для переработки концепции Многие думают, что креативность - это одно огромное озарение. На самом деле это скорее скрытое, но постоянное взаимодействие между всеми описанными этапами, на что указывают стрелки на рис. 5.2. Один лишь возглас «Эврика!~,, или, как выразился немецкий психолог Карл Бюлер (Karl Biihler), «Aha-Erlebnis,>, здесь не поможет. Думаю, с его помощью мне не удалось бы написать даже вступление к этой книге. Нелинейный творческий процесс Уоллеса в некотором смысле напоминает цикл 1-3), зеленый (этап 4), рефакто­ 1-3). Никто не выполняет команду git push (шаг 5) с провальными разработки через тестирование: красный (этапы ринг (этапы тестами - или, того хуже, без тестов вообще. Представляю, как все читатели добросовестно кивают в знак согласия. Вы уж, пожалуйста, не подведите меня. Первая часть процесса - подготовка - включает в себя подготовку посредством сбора данных (глава 2). Без необходимых любознателыюсти и интереса ( глава 6) к природе вещей здесь процесс преждевременно завершится. Осведомленность об ограничениях (глава 4) помогает выстроить решения, актуальные для теку­ щей задачи. Правильный творческий настрой может способствовать процессу инкубации и озарения (глава 7). Другие люди также играют в этом важную роль, делясь своими мыслями, открывая вам мир, повышая шансы на перекрестное опыление идей (глава 5.2.1. 3). Критическая проверка Какое место занимает критическое мышление в творческом процессе? Михай Чиксентмихайи полагает, что проверка озарения приравнивается к шагу назад, чтобы окинуть творение критическим взглядом: Ко~да случается озарение, необходимо проверить, корректны ли в действи­ тельности установленные связи. Художник отходит на несколько шаюв назад,
5.2. Творческий процесс 145 чтобы взглянуть с расстояния, хороша ли композиция. Поэт перечитывает свои стихи с критическим настроем. Ученый делает расчеты или проводит эксперименты. Самые прекрасные озарения становятся кошмарными, как только в холодном свете разума вскрываются их недостатки. Михай не проводил интервью с программистами, но если бы он это сделал, то, возможно, приписал бы что-нибудь вроде: <<Программист нажимает F10, чтобы выполнить модульные тесты, изрыгая проклятья, если тест провалится>>. Наши интервью с разработчиками ПО подтвердили, что этап проверки играет важную роль в жизни креативвых программистов. Как сейчас помню сессию парного программирования с бывшим коллегой, чи­ тавшим мне лекции о процессе принятия мною решений, который казался ему слишком быстрым. «Почему ты не продолжаешь с этим набором?>> вал он. «Все просто, - отвечал я. - - спраши­ Это совокупный корень, так ведь, поэтому сохранение объекта автоматически изменяет вот этот второй параметр;,. Тогда оп начинал качать головой. «Не надо предполагать! Ты проверял код? Где ин­ теграционные тесты? Оп работает так, как ты думаешь?;, Мое молчание обычно означало отрицание. «Не надо предполагать! Мы с тобой ПОПАдём в идиотское положение;, 1• Часть про «попу;, запомнилась мне надолго: веселые способы обучения тому, что нужно проверять свои предположения, всегда запоминаются, потому что они более живые. Впоследствии мы стали хорошими друзьями, и я многим обязан этому человеку. Однако если серьезно, то предполагать и вправду пе нужно. Задайте несколько точек останова и проверяйте содержимое областей памяти. Пройдитесь по непоняпюму коду, чтобы разогнать туман. Пишите модульные тесты, чтобы закрепить эти проверки для ваших коллег и для самого себя в буду­ щем. Возьмите осциллограф и исследуйте волны напряжения, если чувствуете, что так надо. Проверяйте, проверяйте и еще раз проверяйте. Если не получит­ ся - не стоит беспокоиться: творческий процесс рекурсивен. Возможно, для дальнейшей инкубации понадобится больше кофеина или хорошая пробежка. Камерата способствует проверке Как упоминалось в главе З, взаимное обучение происходит в социальной группе единомышленников, пытающихся достичь общей цели. Различные когнитивные искажения (см. раздел 5.4) иногда усложняют проверку собственных идей. В таких случаях неизмеримую ценность приобретает критика со стороны коллег, если вы готовы принять и обработать ее. При проверке ваших безумных идей от­ носитесь к критике со стороны других - тщательно рассмотрев ее - как к важной составляющей пазла. 1 В оригинальном тексте автор использует каламбур со словом гать,>) - << You'll rnake an ASS out of U and МЕ;,. - Примеч. пер. «assurne;, ( «предпола­
146 Глава S. Критическое мышление 5.2.2. Сосредоточенное мыwnение Программирование требует концентрации внимания па строках кода, методах, элементах, аргументах, скобках, боковой панели (гаттере) в IDE, конструкторах, типах, исключениях и т. д. Так сказать, по колено в коде, перефразируя название первого условно-бесплатного эпизода Doom. Эта фаза мышления носит говорящее название аналитическое решение проблем, или сосредоточенное мышление: взгляд направлен па вознаграждение, разум нацелен па решение. Это постепенный и в значительной степени осознанный процесс, который, по мнению исследователей в области психологии, является неотъемлемой частью творчества 1• Без целенаправленных действий не была бы нарисована ни одна картина, не было бы написано ни одно четверостишие и не была бы запрограммирована пи одна строка кода. Сосредоточешюе мышление прекрасно подходит для решения низкоуровне­ вых задач, по иногда оно может приводить к поиску легких путей (к примеру, давайте-ка используем здесь тип static; на систему в целом это повлияет не так уж сильно), потере из виду общей картины (напомни, какое отношение этот метод имеет к проблеме нашего клиента?) и принятию ошибочных ре­ шений, даже при достаточной доле критического мышления. Следовательно, нам периодически требуется переключаться на другие режимы, например па рассеянное мышление. 5.2.3. Рассеянное мыwnение Критическое мышление не всегда ждет радушный прием - обычно оно встречает серьезное сопротивление. Впрочем, иногда оно и должно встречать серьезное сопротивление. Например, при набрасывании идей - когда их придумывается много, безумных и необычных - нет смысла сразу отвергать предложения. Барбара Оакли (ВагЬаrа Oakley), профессор системотехники в Оклендском и Макмастерском университетах, называет фазу набрасывания идей рассеянным мышлением. Она создала учебный курс па платформе Coursera под названием <<Learning How to Learn),'>, в котором режимы сосредоточенного и рассеянного мышления представлены как мощные средства, помогающие овладеть сложным материалом 2 (рис. 5.3). При сосредоточенном мышлении мы вдумываемся в текущую задачу и ана­ лизируем ее, при рассеянном же рассматриваем ее с некоторого расстояния и видим общую картину, временно абстрагируясь от проблемы и воспринимая различные ее аспекты на более высоком уровне. Рассеянное мышление, которое 1 Claire М. Zcdelius and Jonathan W. Schoolcr. Thc richncss of inner cxpcricncc: Rclating styles of daydreaming to creativc processes. Fronticrs in Psychology, 2016. 2 См. https://www.coursera.org/learn/learning-how-to-leam.
5.2. Творческий процесс 147 с.ль С.ОС.РЕ..П.ОТОЧ ЕННОЕ • "5° ~',, ;'Cn)~ РАС.СЕЯННОЕ МЫШЛЕНИЕ~ Рис. 5.3. Сосредоточенное и рассеянное мышление, представленное Барбарой Оакли в виде игры в пинбол по нейронам. В пинбол-автомате сосредоточенного мышления шарик с большей вероятностью попадает в отсортированные и взаимосвязанные бамперы, а на поле рассеянного мышления он скачет во всех направлениях, ударяясь в несвязанные на первый взгляд идеи в большей степени ассоциируется со спонташюстью, когда идеи <<внезапно~ возникают в сознании, может привести к большему числу моментов озарения, а они, в свою очередь, могут быть интегрированы в решение с использованием более сосредоточешюго мышления. На практике мы постоянно переключаемся между этими режимами, что согласуется с моделью быстрого и медлешюго мышления Дэниела Канемана (Daniel Kahneman) 1• Канеман, исследователь, интересующийся психологией суждений и принятия решений, выявил дуа­ лизм между двумя разными режимами мышления: «Системой инстинктивной и эмоциональной, и <<Системой 2~, 1~. быстрой, медленной, взвешенной и логичной. Канеман предполагает, что мы слишком полагаемся на собствен­ ные суждения и делаем это, как правило, бессознателыю, используя непра­ вильный режим мышления. Исследователь в области обучения Джонатан Скулер Qonathan Schooler) и его коллеги называют рассеянное мышление блужданием ума 2 • Для блуждания ума пе требуется чего-то особенного. На самом деле для него вообще ничего не 1 2 Danicl Kahncman. Thinking, fast and slow. Macmillan, 2011. Jonathan W. Schoolcr, Michacl D. Mrazck, Michacl S. Franklin, ct а!. The middle way: Finding thc balancc bctwccn mindfulncss and mind-wandcring. Psychology of Lcarning and Motivation, 2014.
148 Глава S. Критическое мышление требуется: это тот повседневный опыт, когда внимание пе концентрируется па непосредственном внешнем окружении. Может показаться, что коллега, который отвлекся от работы и уставился в окно, разглядывает стройку на другой стороне улицы. На самом деле его сознание, скорее всего, просто блуждает. И это, скорее всего, вызовет раздражение его коллег. Хотя команда Скулера признает, что блуждание ума влечет за собой социальные и когнитивные издержки (на этапе возвращения концентрации, о чем будет подробно рассказано в главе улучшение творческих показателей - 7), они отмечают также существенное при условии, что вы все еще находитесь на стадии инкубации. Избыток блуждания ума может нанести вред психическому здоровью: в по­ следнее время стали появляться сообщения о том, что выявлена зависимость между блужданием ума и плохим настроением, а это негативно влияет на общее ощущение благополучия. Слишком частое любование строительными работами издалека может быть признаком неудовлетворенности собствешюй работой, а пе способом предаться рассеяшюму мышлению. 5.2.4. Сочетание рассеянного и сосредоточенного мыwпения Команда исследователей под руководством Скулера выступает за аристотелев средний путь между осознашюстью (повышающей концентрацию внимания) и блужданием ума ( способствующим рассеяшюму мышлению), подразумевая сочетание двух режимов мышления. Однажды некий студент спросил американ­ ского биохимика и плодовитого 1 публицистаЛайнуса Полинга (Linus Pauling), как ему удается генерировать столько хороших идей. Полинг ответил: «Ну, это просто. Вы генерируете много идей и отбрасываете плохие». Для этого требуется как рассеянное мышление (генерация множества идей), так и сосредоточенное/ критическое мышление (отбрасывание плохих идей). Современник Полинга Джонас Солк Qonas Salk) разработал первую эффек­ тивную вакцину от полиомиелита (рис. 5.4), разумно сочетая рассеянное и сосредоточенное мышление. Идеи Солка принесли ему пе одну номинацию на Нобелевскую премию, хотя, в отличие от Полинга, оп так и не был ее удостоен. Оп предпочел не патентовать свою вакцину против полиомиелита, сделав ее доступной для лечения каждого, - и упустил свыше 7 миллиардов долларов. В терминологии программирования, он выпустил вакцину как про­ дукт с открытым кодом. <<Наша величайшая обязанность предками», - - быть хорошими сказал Солк. Однако, как это пи печально, тайные заметки из лаборатории Пастера свидетельствуют, что у творческих гениев нет иммуни­ тета против жадности. 1 Он опубликовал в общей сложности 1200 статей и книг - больше, чем Никлас Луман!
5.2. Творческий процесс Рис. 5.4. Джонас 149 Солк с гордостью демонстрирует первую вакцину против полиомиелита в Питтсбургском университете в 1952 году. Источник: общественное достояние, Wikimedia Commoпs Концепция генерации идей ( стадии инкубации/озарения в творческом процес­ се) и отбора лучших из них ( стадии проверки/принятия) отражена во многих теориях когнитивной психологии. Дуализм присутствует и в определении креа­ тивности, данном исследователем в области когнитивной психологии Робертом Стернбергом (Robert Sternberg): <<Креативпость - это решение покупать в мире идей по низкой цепе, а продавать по высокой~.> 1 • Это говорит о наличии критического мышления в том или ином виде: что по­ купать и что продавать, а самое главное - когда. Согласно Стернбергу, креатив­ ность - по большей части рискованное предприятие. Креативное мышление без критического подхода ведет к оторванности от жизни (покупать по высокой цене, а пе по низкой), непрактичности (покупать не то, что нужно) и нелепости ( продавать не то, что нужно). Коммерциализация креативности по Стернбергу предполагает наличие фактора азарта. Эрик Вейнер называет риск и дух творчества неразделимыми, приводя в пример Марию Кюри, которая была прекрасно осведомлена об опасном для жизни уровне радиации, но тем не менее продолжала упорно работать с токсич­ ными материалами, что и привело к ее смерти. 1 Robert Sternberg. Investment thcory of crcativity. http://www.robert jsternberg.com/ investment-theory-ofcreativity/, 2001.
Глава S. Критическое мышление 150 Код с переоцененными достоинствами Покупка по низкой цене и продажа по высокой напоминает мне специфический за ­ пах кода - теоретическую общность (speculative generality)1, то есть избыточное проектирование с целью произвести впечатление на себя и коллег только для того, чтобы иметь возможность назвать свое программирование творческим. Как пить дать, эти два метода из утилиты для работы с датой будут использованы повторно ­ такдавайте же выпустим их как отдельный пакет утилит, чтобы еще больше усложнить деревья зависимостей нашего проекта! Почему вы не используете взаимоблокировку в этом статическом siпglеtоп-экземпляре? Давайте рефакторим это в параллельную систему с потоковой безопасностью, потому что никогда нельзя знать заранее! Про ­ даем, много продаем по высокой цене - вот только рынку не настолько интересен наш гордиев узел . В зависимости от ситуации требуется определенная доля и рассеянного, и кри­ тического мышления. Перебор с рассеянным мышлением ведет к большому количеству необычных, но не совсем адекватных идей, которые так и не реа­ лизуются. Избыток сосредоточешюго мышления выливается в <<туннелыюе видение~ и <<теоретическую общность~. Помните, что пространство проблемы общесистемпо: все взаимосвязано. Таким образом, наиболее целесообразным подходом может оказаться частое переключение между режимами мышления. Результаты исследований Скулера, вкратце изложенных в блоге (рис. Farnam Street2 5.5), таковы: Колебания умственной активности очень важны. Если мы слишком долго находимся в режиме сосредоточенности, отдача падает и наше мышление застаивается. Мы перестаем получать новые идеи и можем столкнуться с котитивным туннелированием. Рис. 5.5. Колебания умственной активности: переключение между сосредоточенным и рассеянным мышлением и, конечно, отдых УПРАЖНЕНИЕ тике - Какому мышлению вы отдаете предпочтение в повседневной прак­ сосредоточенному или рассеяшюму? Зависит ли это от задачи, и если да, то почему? Можете ли вы выявить возможности для того, чтобы опираться в основном па тот мыслительный процесс, который вам менее знаком, или сочетать оба процесса? 1 <1Теоретическая общность,> (speculative generality) - запах кода, который возникает тогда, когда хотят обеспечить набор механизмов для работы с вещами, которые, воз­ можно (но совсем не обязательно), будут нужны в будущем. 2 См. https://fs.Ыog/focused-diffuse-thinking/. - Примеч. ред.
5.3. Креативность - S.3. КРЕАТИВНОСТЬ это средство, а не цель 1S 1 ЭТО СРЕДСТВО, А НЕ ЦЕЛЬ - Важно отметить, что слово креативность не всегда имеет положительную коннотацию. Можно придумать чрезвычайно «креативные>,), но совершенно непригодные решения. Что, если использовать Java Native Interface для вызова пользовательского интерпретатора Ruby, написанного на С, вместо простой оценки скрипта при помощи JRuby или, что еще лучше, переноса скрипта на старую добрую J ava? Сомневаюсь, что это будет воспринято как жизнеспособное решение - хотя всем нам приходилось видеть, как стран­ ные на первый взгляд вещи, прилаженные друг к другу, чудесным образом начинали работать. Когда мы с коллегами обсуждали с нашими собеседниками применение креативности в разработке ПО, в разговоре проскочила интересная мысль. Кто-то сказал: «Креативность - это средство, а не цель>>. Собеседники под­ черкивали, что необходимо должным образом сочетать генерацию идей и критическое мышление, принимая во внимание контекст и ограничения, связанные с конкретной задачей. Креативность - нечто большее, чем на­ брасывание идей: она требует также критического осмысления. Для решения проблем, кажущихся неразрешимыми с помощью обычных лучших практик (или для того, чтобы в принципе выявить и изолировать проблему), нужны оба этих подхода. Занимаясь творчеством только ради того, чтобы проявить творческие способ­ ности, мы ступаем на опасный путь. Ослепленные эстетизмом, мы внезапно чувствуем потребность сделать все «красиво>>, бессознательно подливая масла в огонь «теоретической общности>,). Является ли программист искусным масте­ ром? Многие из нас любят выпячивать свои прекрасные навыки программирова­ ния. Одной из ценностей, упоминаемых в Manifesto for Software Craftsmanship 1 ( <<Манифесте мастерства программирования>,)), подписанном на данный момент 32 ООО самопровозглашенных мастеров, является не работающее, более чем а хорошо сделанное ПО. Проблемой манифеста является акцент на эстетике вместо функциональности. Мне доводилось работать в паре с программистами, которые были влюблены в свои методы написания кода и фанатично перерабатывали каждую строку, чтобы добавить «красивости>,), полностью игнорируя своих напарников, сроки и принятые в команде решения относительно стиля программирования. Эти мастера забывают, что конечным пользователям не важна эстетика кода - для них главное, чтобы он работал как полагается и был сдан вовремя. Если вам интересны горячие споры о мастерстве программирования, можно начать со статьи Дэна Норта (Dan North) «Programming 1s Not а Craft>,) dannorth.net/2011/01/11/pгogгamming-is-not-a-craft/. 1 См. http://manifesto.softwarecraftsmanship.org/. по адресу https://
152 Глава 5. Критическое мышление Привести мастеров в чувство может здоровый всплеск критического мышления. Конечно, чистота кода имеет первостепенную важность, не смею этоm отрицать. Код читается в десять раз чаще, чем пишется или переписывается. Поддерживать простой, читабельный и чистый код - одно удовольствие. Плохо структури­ рованный спагетти-код - наоборот. Однако отделить себя от посредственных программистов-копипастеров, вооружившись креативностью в качестве палки для битья, будет не менее разрушительно для кода, вашей самооценки и ваших коллег. Креативность - средство, а не цель, хотя она может служить целью. Пример - креативный кодинг, когда креативность в программировании ис­ пользуется исключительно для самовыражения. Нет проблемы с ПО, которую нужно решать на благо клиента, - есть лишь чистый холст, который вы пытаетесь заполнить во имя творчества. Креативный кодинг часто используется в высшем образовании, чтобы способствовать творческому самовыражению и вызвать интерес к компьютерному делу. Студенты знакомятся с креативным кодингом при помощи Processing (рис. 5.6), гибкой графической библиотеки и языка для обучения программированию в контексте изобразительного искусства 1• Processing традиционно выполняется нaJVM, хотя в последнее время появились версии нaJavaScript (pS.js) и Python (Processing. ру ). Как бы ни было интересно заполнять холст тешащими взор сценами, творческое самовыражение не поможет охватить взглядом всю картину общесистемного креативного решения задач. Такие среды, как pS.js, наряду с системой PIC0-8, о которой рассказывалось в главе 4, являются отличными средствами обучения творческому мышлению в условиях ограничений. К несчастью, большая часть соответствующих академических работ, с которыми я столкнулся в ходе обзора литературы, ограничивают их использование введением в компьютинг и стиму­ ляцией дальнейшего интереса к программированию. Термин «креативный кодинг,> представляется неудачным, поскольку в об­ разовательной среде он связан в основном с самовыражением. Креативный программист - это не креативный кодер, но вот креативный кодер может быть креативным программистом. Погодите, как? От перечитывания этого предло­ жения у меня самого голова пошла круmм. УПРАЖНЕНИЕ Как вы думаете, в каких случаях имеет смысл использовать твор­ ческий подход помимо решения проблем в контексте программирования? Может быть, ваша нынешняя команда разработки делает это слишком часто или слишком редко? Мы продолжим обсуждение творческого исследования в главе 6, где говорится о любознательности как главной движущей силе креативности. 1 Ira Greenberg. Processing: Creative coding and computational art. Apress, 2007.
5.4. Распространенные заблуждения о критическом мышлении • Fllto " > Edit • Skatc:h • Н"р Eng11sh • • Log in О! Slgn up •..••• ••.•• •.• . . l!Мin-МYif8tlon О 153 ■ О Auto-refreh о Acut• dlagram ; .,.,.,,. skatct\,)s. 1 function setup() { 2 createCanvas(71e, 408, WEBGL); 3 } 4 5 funct1on draw() { backa:round(250); б 7 rotateY(frameCount • 8.01); 8 for(let j = е; j < 5; j++) ( push(); for(let i = 8; i < 80; i++) ( 9 18 11 t гanslate( 12 13 14 15 16 s1n(frameCount * 0.881 + j) • 108, sin(frameCount • 0.081 + j) * 108 , i * 0. 1 19 28 21 22 23 24 Рис. ••• ••,. ): rotateZ(frameCount • 6.082); push(); sphere(8, 6, ◄): 17 18 рор(); } рор(); ) ) 5.6. Онлайн-редактор pS.js, в котором открыт простой пример столкновения сфер по синусоидальной траектории. После входа в систему можно легко предоставлять общий доступ к проектам, просто скопировав их не требует знания URL. pS практически JavaScript, поскольку вы будете иметь дело с хорошо документированными функциями Processiпg, такими как sphere 5.4. РАСПРОСТРАНЕННЫЕ ЗАБЛУЖДЕНИЯ О КРИТИЧЕСКОМ МЫШЛЕНИИ <i]e pense, donc je suis,> ( <<Я мыслю, следовательно, я существуюi> ). Эти знаменитые слова, написанные Рене Декартом, заложили основу для рационализма и эпи­ стемологии XVII века, позднее развитых Спинозой и Лейбницем. Философские цитаты - это популярные изречения, которые, казалось бы, должны способ­ ствовать развитию рационалыюго мьшшения. Sapere aude ( «Дерзайте знатьi> )! Если Декартова теория о прирожденных идеях доказывала его существование (я существую), то отношение к другим безумным идеям французского философа сейчас складывается скептическое. Пытаясь решить проблему дуализма разума и тела, он приписал связь между рациональным мышлением и бессмертием души шишковидной железе в головном мозге. Крайний рационализм благочестивого католика Декарта должен был как-то ужиться с божественным началом, оставив лазейку для существования бога. Странно читать о таких очевидных заблуждениях в трудах одного из наиболее критически настроенных мыслителей пашей цивилизации. Надо отдать ему должное: животный дух, который проходит через шишковидную железу по воле бога и велит нам хотеть и любить что-либо, - это, безусловно, творческое обо­ снование. Декарт не единственный уважаемый философ со странными идеями:
154 Глава 5. Критическое мышление в качестве других примеров можно привести доктрины <<Республики~ Платона и противоречивые взгляды Аристотеля па сексизм. К опровергаемым ныне взглядам па мир нужно подходить с учетом их уникаль­ ного Zeitgeist 1• Все же я нахожу размышления о заблуждениях великих фило­ софов обнадеживающими: это доказывает, что они были всего лишь людьми, и, возможно, это дает нам, скромным существам, оправдание тех ошибок, которые мы время от времени простодушно совершаем. Критическое мышление, или рацuоналыюсть 2 , как любит называть его когни­ тивный психолог Стивен Пинкер (Steven Pinker), не лишено своих недостатков. Когнитивные искажения, на которые влияет наше социальное окружение, по­ стоя1шо искривляют наши паттерны мышления. Рассмотрим, например, следующий простой тест, предлагаемый студентам в Йельском университете. Игровая консоль Nintendo ЗDS и корпус ЗDS стоят вместе 110 евро. ЗDS стоит на 100 евро больше, чем корпус. Сколько стоит кор­ <,10 евро,>, а не «5 евро,>, который является правильным. Если бы ответ был «10 евро~, то ЗDS стоила бы 11 О евро. Да, это на 100 евро больше, чем корпус. Только сумма этих цен со­ ставила бы 120 евро, а не 110! пус? Подавляющее большинство студентов дали ответ Избежать неловкого момента помогла бы проверка результата, который пришел на ум слишком уж быстро. Пинкер относит такое поведение на счет дуализма режимов мышления Дэпиела Канемапа: вместо того чтобы тщательно проана­ лизировать и подумать над заданием (Система 2), мы поспешно выпаливаем число, уверенные в том, что упражнение слишком тривиально, чтобы тратить на него энергоемкие мысли (Система 1). Система 1 незаменима для принятия быстрых решений в опасных для жизни ситуациях, но ее не назовешь подходя­ щим инструментом критического мышления. Согласно Пинкеру, большинство 1>> Канемапа не ошибок мыIШiения возникают, когда мы используем «Систему по назначению. В следующем разделе мне хотелось бы выделить ряд когнитивных искажений, жертвами которых часто становимся мы, программисты. Это далеко пе полный список: в Википедии насчитываются сотни искажений, и все они подкреплены научными исследованиями 3 • На случай, если вам понадобится больше примеров из мира программирования, сообщу, что соавтор аgilе-манифеста Энди Хант посвятил целую главу когни­ тивным искажениям (в программировании) в своей книге <<Pragrnatic Thinking And Learning,>, а кроме того, совсем недавно исследователь в области обуче­ ния инженеров-программистов Фелиеп Хэрманс опубликовала книгу о мозге 2 Zcitgeist (нем.) - «дух времени~. - Примеч. пер. Stcven Pinker. Rationality: What it is, why it seems scare, why i t matters. Allcn Lanc, 2021. 3 См. https://en.wikipcdia.org/wiki/List_of_cognitive_Ьiascs. 1
5.4. Распространенные заблуждения о критическом мышлении 155 программиста, в которой приводятся распространенные ошибки, возникающие при кодинге и отладке. 5.4.1. Межъязыковые противоречия Почему разработчикам бывает трудно изучить еще один язык программирова­ ния? Этот вопрос был поднят исследователем в области разработки ПО Нишалом Шрестха (Nischal Shrestha) и его коллегами. Они отметили, что большинство исследований сосредоточиваются на изучении языков новичками ( если точнее - студентами), хотя опытные программисты тоже могут испытывать трудности в изучении другого языка. Команда Шрестха обнаружила, что случается как межъязыковая интерференция, так и фасилитация 1• Простой пример фасилитации, взятый из их работы, - по­ просить разработчика пajava, который изучает Kotlin, упростить следующее выражение: val boundsBuilder: LatLngBounds.Builder = LatlngBounds.Builder() Разработчик почти наверняка заподозрит, что это объявление более многословно, чем следовало бы, выяснит тип и, зная о выводе типа локальных переменных в J ava, придет к следующему: val boundsBuilder = LatlngBounds.Builder() Это неудивительно: J ava Kotlin построен па JVM, поэтому уже имеющееся знание что-то да значит. Данное явление в основном известно как перенос в про­ цессе обучения. К несчастью, этот фокус работает не всегда. Мне известны многие разработчики нajava, которые испытывают серьезные трудности с JavaScript, будучи пе в си­ лах разобраться с наследованием прототипов и асинхронным функциональным программированием даже несмотря на то, что современный код нajava наконец избавлен от реализации интерфейсов через анонимные внутренние классы при помощи ссылок па функции. Межъязыковая интерференция может являться препятствием при изучении языка в привычном понимании. Слова в одном языке, напоминающие слова в другом, пе обязательно будут иметь то же значение. Например, испанское слово embarazada похоже на английское слово embarrassed ( смущенный), по означает <<беременная>>. Самоуверенное использование слова embarazada на­ верняка приведет к смущению! 1 Nischal Shrestha, Co\ton Botta, Titus Barik, and Chris Parnin. Here wc go again: Why is it difficult for dcvclopers to learn another programming language? In 2020 IEEE/ АСМ 42nd Intcrnational Confcrcncc on Softwarc Enginccring, 2020.
156 Глава 5. Критическое мышление УПРАЖНЕНИЕ Данное упражнение позаимствовано из книги Фели с н Хэрманс «The Programmcr's Brain;,. Вспомните язык, который вы недавно изучали. Какие по­ нятия, уже известные ва.~ , помогли его изучить? Теперь подумайте о ситуации, когда вы делали некорректные допущения в отношении нового для вас языка программи­ рования. Нс было ли это проявлением межъязыковой интерференции? До межъязыковой интерференции дело может и не дойти. Синтаксических различий уже достаточно для того, чтобы «поплыл;, кто угодно, 110 опыт­ ные программисты обычно быстро приходят в себя. Гораздо труднее преодолеть различия в базовых понятиях, таких как неизменяемость в Scala или Elixir. В ходе бесед с опытными программистами о том, как они изучают новые языки, всплыли и другие проблемы: <<Старую собаку новым фокусам не научишь;, и <<при смене парадигмы требуется перестройка мышления;, . Что перевешивает - хо­ рошее или плохое? Имея опыт работы с фасилитацией и будучи сторонником полиглотства в программировании, я осмелюсь сказать «хорошее ,>, хотя не ­ большие исследования конкретных случаев дают основания предполагать, что регулярное переключение на практике может повлиять па результативность работы 1 • Подробнее о преимуществах полиглотства читайте в главе 6. Как же преодолеть межъязыковую интерференцию? Проверять, проверять и проверять. Переключение контекста на занятиях Постоянное переключение с языка на язык сопровождается переключением контек­ - по крайней мере, в моей. Java, Kotliп и Pythoп, а в свободное время пишу на JavaScript и Go, ста, что иногда вызывает короткое замыкание в голове Я преподаю С++, попутно делая все возможное, чтобы забыть свое прошлое на VВб и РНР. Коллизии здесь неизбежны. На занятиях я то и дело оказываюсь в тупике, причем в самый неподходящий момент: на половине простой демонстрации цикла for я вдруг на­ прочь забываю синтаксис. Итератор? Foreach? Нет, постойте, это же С. Разыменовать указатель и затем ... Затем что? Или, пытаясь показать корректное использование коллекций, набираю • add () вме­ сто . push_back( ), в упор не видя ошибок компиляции. Путаю индексацию с нуля и массивы с индексом от единицы в R, ошибочно рассчитываю на сборщик мусора при работе с указателями (С++ ведь не Go) ... Мои студенты, должно быть, думают, что программист из меня так себе. Здоровая доза посткритического анализа подсказывает, что нужно отбросить само­ уверенность и как следует подготовить примеры. Ну, в следующий раз уж точно! 5.4.2. Осnепитеnьная вспышка озарения Стадия озарения в творческом процессе может принести ипсайты, вполне до­ стойные развития, только не забывайте после <<внезапной,> вспышки делать 1 Phillip Merlin U csbeck and Andrcas Stefik. А randomizcd controllcd trial оп the impact of polyglot programming in а database context. Opcn Acccss Serics in Informati cs, 2019.
5.4. Распространенные заблуждения о критическом мышлении 157 проверку. Озарение сопровождается ложным убеждением: идеи, возникшие благодаря неожиданно загоревшейся лампочке, более плодотворны, чем те, которые явились результатом пошагового логического взвешивания. Вот она, волшебная сила «Aha-Erlebnis! ~ Относитесь к этим идеям как к любым другим - проверяйте, проверяйте и проверяйте. 5.4.3. Неведение и цеnенаправnенное открытие В 2010 году известный разработчик корпоративного ПО Дэн Норт ввел понятие «целенаправленное открытие~ (Deliberate Discovery), призванное опровергнуть допущения, связанные с планированием и оценкой ПO 1 • При разработке про­ граммисты постоянно делают допущения. «Эта статическая переменная почти ни па что пе повлияен; « Уверен, что эта точка останова пе сработает при отладке,>; << Продублировать этот сервис будет быстрее, чем создавать новый с нуля,>; «Эта кнопка пе нужна, паши клиенты ею не пользуются~ и т. д. Звучит знакомо? Проблема с допущениями заключается в том, что они, как правило, полностью ошибочны. Большинство допущений тем или иным образом искажены предвзятым отношением, обусловленным нашими прежними убеждениями и ценностями. Это явление, при котором мы игнорируем контраргумеюы и интерпретируем ситуации в пользу наших доводов (вместо того, чтобы критически изучить факты), назы­ вается предвзятостью подтверждения (confirmation Ьias ). Опа буйным цветом расцвела среди программистов, даже несмотря на то что логическое мышление является неотъемлемой частью их работы 2 • Ух, как это отрезвляет! Мы начинаем учиться по-настоящему, только когда случается что-то неожидан­ ное. Если все идет по плану, мы просто выдаем код, который выдавали и раньше. Можно поддаться заблуждению о том, что, поступая так, мы тоже чему-то учимся, но на самом деле мы всего лишь повышаем производительность выполнения уже знакомых последовательностей действий. Неожидашюе поведение заставляет нас остановиться и подумать - и, как можно надеяться, приступить к отладке. Норт называет это случайным открытием. Мы пе планируем такие моменты обучения: ну не должно было выскакивать это досадное исключение NullPointerException. Тем пе менее мы достаточно редко пытаемся обратить эти моменты случайного обучения в моменты целенаправленного обучения. Действителыю ли эта кнопка не нужна? Мы не знаем. Так почему бы просто пе спросить наших клиентов? Что говорят нам логи доступа? На протяжении жизненного цикла проекта ваше неведение, скорее всего, уменьшится благодаря неожиданным исключениям и другим случайным моментам обучения. 1 См. https://dannorth.net/2010/08/30/introducing-deliЬerate-discovery/. 2 Gul Calikli and Ayse Bener. Empirical analysis of factors affccting confirmation Ьias lcvcls of softwarc cngineers. Softwarc Quality Journal, 2015.
158 Глава S. Критическое мышление Однако невежество многомерно: вы можете не быть знакомы с используемой технологией; с другими возможными технологиями, которые могли бы по­ дойти больше; с техническими познаниями коллег, которые могли бы помочь; с пожеланиями клиента; с тем, как ваша компания общается с клиентами, и т. д. Мы уже говорили о намеренном неведении, или наивности, как о временной мере смягчения чрезмерных ограничений в главе 4. Но в основ1юм мы пребываем в не­ ведении относительно собственного неведения, что, в свою очередь, действует как еще одно невидимое ограничение. Согласно Норту, неведение не является ограни­ чением, побуждающим к действию. Это ограничение, побуждающее к действию в правильном направлении. Вместо того чтобы полагаться на (не )счастливые слу­ чайности для уменьшения неведения и продолжения обучения, возможно, лучше целенаправленно выяснить, как неведение мешает вам, вашим коллегам и проекту. Сократовское <~сознание своего невежества>>, как его называл шотландский физик Джеймс Клерк Максвелл (James Clerk Maxwell), является прелюдией к любому достижению в науке - прелюдией к творческому прорыву. Мы при­ выкли веселиться, высказывая свои ложные допущения во время парного про­ граммирования, в шутку бросаясь крылатыми выражениями типа <<ПОПАдём,>. Однако целепаправлешюе открытие выходит за рамки случайной критической инспекции, когда что-то идет пе так. Крылатое выражение использовалось по большей части как результат случайного открытия. Креативные программисты осведомлены о своем неведении. В истинно сокра­ товской манере они знают, чего именно пе знают, и активно восполняют пробелы в знаниях, если это помогает им двигаться вперед. Упражнение Вот пример (в несколько измененном виде) типичного теста на критическое мыш­ ление, выдаваемого на собеседованиях . Пять лет назад компания Brain Baking, lnc. выпустила игру Мой маленький пекарь, ставшую самой продаваемой игрой данной компании. Ее сиквел, игра Мой маленький шоколатье, вошла в пятерку самых продаваемых игр. Компания спустя несколько лет поглотила lndustrial Bakes, lnc. Brain Baking, 1пс., так как полагала, что второй си квел, Моя бойкая пекарня, принесет большие прибыли . Является ли игра Мой маленький пекарь самой продаваемой игрой Brain Baking, lnc.? Ответ: мы просто-напросто не знаем. Мой маленький шоколатье могла превзойти по продажам Моего маленького пекаря через несколько лет, даже если была на пятом месте в списке бестселлеров. Информация о поглощении является лишней, чтобы сбить вас с толку. Сократ ответил бы правильно. Знайте, чего именно вы не знаете! 5.4.4. Я самый веnикий Приписывание успеха проекта себе называется эгоистическим предубеждени­ ем. Ура! Я это сделал! Погодите-ка, а разве не <<МЫ это сделали>>? Вспомните:
5.4. Распространенные заблуждения о критическом мышлении поскольку (в главе 159 3) творчество рассматривается как общесистемное явление, ваш творческий дух - это часть большей экосистемы. Система повлияла на вас настолько же, насколько вы повлияли на систему. Конечно, если проект потерпит крупную неудачу, мы первые закричим: <<Я этого не делал!~> Психологи определили такое поведение как в основном бессозна­ тельный механизм самозащиты. Возможный способ избежать этого отклоне­ ния - осознать его, находясь в разных фазах модели принятия ответственности Кристофера Эйвери, представленной в главе 5.4.5. Я самый 3. модный Мы любим упоминать в резюме и объявлениях о найме на работу как можно больше современных фреймворков, библиотек и языков программирования. Наше горячее желание работать с новейшими и крутейшими инструментами выливается в попытки рефакторинга и возникновение технического долга, что в конечном счете не приносит конечному пользователю ничего хорошего. Од­ нако по крайней мере нам удалось втиснуть в список React, Redux и GraphQL! Я неохотно приводил здесь названия фреймворков: к тому времени, когда эта книга увидит свет, скорее всего, им на смену придет «что-нибудь получше~>. Мои ежегодные попытки идти в ногу с https://stateofjs.com всегда заканчиваются депрессией. Почему нас так манит блеск новизны? Почему мы без конца создаем всё то же ПО, только с другими технологическими стеками 1 ? Мне доводилось уча­ ствовать в разработке многих корпоративных программных продуктов на базе веб-технологий, которые лучше было бы использовать в качестве приложений для толстых клиентов (какое кощунство!), но большинство моих знакомых разработчиков продолжают - возможно, без всякой критики - поклоняться сложным облачным решениям. На Западе креативность ассоциируется с радикалыюй изобретательностью На Востоке же креативность чаще рассматривается (radical inventiveness). как циклическая, уходящая корнями в десятилетия традиций. Исследователи проектирования Копров Ван (ConRong Wang) и Цидуань Чень (Qiduan Chen) описывают западное творчество как расширение возможностей человеческого воображения, способного создавать вечно оригинальные артефакты, в то время как восточное творчество соединено с природой в человеке или духовной силой Ци, присущей природе 2 • Возможно, наша западная культура внушила нам пред- 1 По крайней мере, эти исследовательские вопросы не новы! Принятие технологий и влияние привлекательности технологий широко изучается, но мне не удалось найти удовлетворительный ответ, связанный с разработкой ПО. 2 ConRong Wang and Qiduan Chen. Eastern and Western creativity of tradition. Asian Philosophy, 2021.
Глава 5. Критическое мышление 160 взятостъ убеждений (belief Ьias) о том, что все ишювационное должно быть новеньким и блестящим. 5.4.6. Гуrn-кодинr Время от времени мы все отмечаемся в занятиях гугл-кодингом быстро найти, как работать с незнакомым API, - пытаемся полагаясь во всем на первый же результат в выдаче и принимая найденное содержимое без дальнейших во­ просов. Проблема заключается в том, что поспешно заданные условия поиска приводят к некорректным его результатам. Stack Overflow, возможно, слегка сгладил проблему благодаря возможности проголосовать за технические от­ веты или против них, хотя мне приходилось видеть множество <<принятых,> (accepted) ответов, повествующих о чем-то, совершенно не имеющем опю­ шения к делу. Что, если вы получите только два поисковых результата? Будете ли вы более или менее склонны проверять их содержание? Однозначный выбор единственного варианта вместо перекрестной проверки при принятии решения называется эффектом привязки или якорным искажением (anchoring Ьias). Программист Брайан Провинчапо, создатель видеоигры (рис. 5.7), с которым мы познакомились в главе 4, Retro City Rampage тоже столкнулся с этой проблемой. Когда он разбирался с переносом своей игры в устаревшую ныне среду DOS, то заметил, что большая часть технической информации была утеряна. Начать с того, что в девяностых интернета в том виде, в котором мы знаем его сейчас, еще пе было. Специальные руководства по работе с VGA под DOS безвозвратно исчезли. Многие программисты нынешнего поколения даже не знают, как выглядит дискета. Лишь па некоторых безвестных форумах, по­ священных ретро-программированию, то тут, то там можно увидеть подсказки, которые, когда Провинчано попытался ими воспользоваться, оказались на­ прочь ошибочными. Вот пример того, как пе нужно определять наличие сопроцессора, опубликован­ ный в качестве правильного решения: Finit mov сх,З .wait: loop .wait mov word [test_word],0000h fnstcw word [test_word] cmp word [test_word],03FFh jne .no_fpu Автор уверяет, что сопроцессор 8087 FPU инициализирует test_word значением 03FFh. Легко понять, почему многие программисты просто копируют и встав­ ляют этот сниппет: загадочный и старый код на ассемблере делает правильную интерпретацию этих команд практически невозможной. Как пишет Провинчапо,
5.4. Распространенные заблуждения о критическом мышлении выяснилось, что в некоторых случаях оператор 161 cmp не может успешно определить наличие сопроцессора. Рис. 5.7. Игра Retro City Rampage, портированная на DOS. Это стало возможным благодаря разумному обходу ограничений и перекрестной проверке информации на программистских форумах и в мануалах. Обратите внимание на отсутствие логотипа на серых кирпичах магазина слева: он был удален для того, чтобы игра уместилась на одной 3,5-дюймовой дискете. Полностью документированный комплект Ореп Watcom С/С++ с открытым исходным кодом был также использован в Ooom, Duke Nukem 30 и Full Thrott/e Технологический разрыв между поколениями Несколько лет назад я решил восстановить былую славу компьютера 80486 IBM РС своего отчима . Я проапгрейдил 30-летнюю машину, добавив оригинальную карту SoundBlaster под ISA (сейчас такие стоят не меньше 80 евро!) и установив процессор AMD 486DХ2-бб. Гордый своим творением, я притащил его на кафедру, чтобы про­ демонстрировать близкому коллеге по «железному» делу, который на несколько лет старше меня. Стук механических клавиш, «бипы» и рёв чипа ОРLЗ привлекли внимание нескольких аспирантов. Я открыл корпус, чтобы дать им возможность взглянуть на системную плату. «Что это? » - спросили они, указывая на разъем 8-битного ISA. « А это что? » BIOS ото­ спросили они, указывая на плату контроллера VLB. Когда на синем экране 7474 К, у них отвисли челюсти: 1ООО SX. бразился тест области расширенной памяти объемом «Ого! » Им еще повезло, что я не взял с собой Tandy
162 Глава 5. Критическое мышление Цифровая библиотека архива интернета (lnternet Archive Digital Library) - настоящее спасение для таких людей, как Провинчано, которые разыскивают цифровые версии классических книг Borland International. В книге <,С++ Programmer's Guide: Borland С++: Version 5.01> 1 на странице 291 даже есть «Part 11: Borland С++ DOS Programmer's Guide1>! Прерывание BIOS 13h, а вот и я! Как преодолеть эффект привязки? Делать перекрестную проверку с использованием множества источников информации, а затем проверять, проверять и проверять. Я уже утомился набирать эти слова. 5.4.7. Дnинный список ложных представлений о проrраммировании дпя новичков Разумеется, тип string преобразуется в int при конкатенации этих переменных! Упаковка в этом цикле с большими числами вызывает проблемы с производи­ тельностью; измерять нет нужды, я просто знаю. Нам нужно изменить имя этого параметра: оно совпадает с именем поля, и это не компилируется. Этот цикл while будет остановлен, как только условие перестанет выполняться, поэтому мне нужно повторить свою логику после него. Все эти ложные представления являются частью исследования, проведенного Теэму Сиркиэ (Teemu Sirkia) и Юхой Сорва Quha Sorva). Они выявили свыше ста распространенных недоразумений, касающихся программирования, среди студентов, изучающих свои первые языки программирования 2 • Некоторые ложные представления глубоко коренятся в убеждениях студентов и с трудом поддаются коррекции. Иные студенты продолжают сомневаться, даже если доказать, что они пе правы. В этом случае необходимо переключить сознание, чтобы обрести новое понимание концепции. Иногда переобучение занимает пе меньше времени, чем обучение. Уберечь студентов от неправильного обучения очень трудно, если они приходят на занятия, заранее запрограммированные убеждениями и заблуждениями, основанными на предыдущем опыте работы с математикой, статистикой или на базовых (но неправильных) навыках кодинга. Вместо того чтобы учить студентов бесконечным методам работы с API JDK и тем самым обманчиво убеждать себя в том, что после сдачи экзамена они станут компетентными разработчиками нajava, лучше было бы научить их подвергать свои предпо­ ложения сомнению. О да, мы, преподаватели, тоже обременены целой кучей заблуждений! 1 См. https://archive.org/details/cprogrammersguid00Ьorl/page/n9/mode/2up. 2 Teemu Sirюa andJuha Sorva. Exploring programming misconceptions: an analysis of student mistakes in visual program simulation exercises. In Proceedings of thc 12th Koli Calling International Conference on Computing Education Rcsearch, 2012.
5.5. Слишком много самокритики 163 5.4.8. Преобразование предрассудка в озарение Что вы делаете, когда кто-то прямо заявляет: «С нашей технологией сделать это невозможно,>? Принять их опыт или демонстративно отвергнуть его и показать, как надо делать? Возможно, более разумная альтернатива - вначале попытаться понять, почему этот человек так говорит. Было ли это испытано ранее в том же контексте или заявление носит академический характер? Проистекает ли этот вывод из неприязни к технологическому стеку или был сделан потому, что так сказали другие? Это затруднение не из тех, к которым можно применить критическое мышление: прежде всего это тонкая проблема общения. Доказав, что человек не прав, вы пе превратите его предрассудок в озарение, но покажетесь ему высокомерным, что усугубит конфликты в будущем. Возможно, лучше прояснить все недораз­ умения, прежде чем давать волю творческому порыву. Система «бей или беги>>, бесперебойно работающая в нашем мозге, вьщает бы­ стрые, но зачастую ошибочные суждения. Вы лучше всего сможете помочь кол­ легам преобразовать их предрассудки в озарения, побывав в их шкуре, а в случае с разработкой ПО УПРАЖНЕНИЕ - занявшись парным программированием. Составьте список заблуждений, связанных с критическим мыш­ лением, которые вы заметили в вашей команде при написании кода. Какие недо­ статки наблюдаются постоянно, какие - реже? Какие действия вы предпримете для предотвращения ошибок в будущем? Обновляйте этот список, чтобы отслеживать изменения. Помните, главное - не показывать пальцем, а использовать это как способ двигаться вперед! 5.5. СЛИШКОМ МНОГО САМОКРИТИКИ Когда дело касается нашей работы, иногда результатом переизбытка критиче­ ского мышления становится творческая рутина. Художник и преподаватель Джу лия Кэмерон О ulia Cameron) описывает в своей книге «The Artist' s Way» 1, ставшей международным бестселлером, как выбраться из западни и победить критика творчества в самом себе. По ее словам, освобождение художника внутри себя - это вопрос сделки с собственным критицизмом: У многих художников есть внутренний критик, и у меня тоже. Своего я на­ - это такой суровый анl!lийский дизайнер интерьеров. Когда звала Найджел я создаю некое произведение, Найджел немедленно кричит: «Это слишком скучно, с.лишком по-детски, слишком мерзко!» Я отвечаю: «Спасибо, Найджел, что просветил», - и продолжаю работать. 1 Кэмсрон Дж. <<Путь художника».
164 Глава S. Критическое мышление Найджел питается отрицательными замечаниями, которые нам постоянно при­ ходится выслушивать либо от себя, либо от плохого учителя. «Сдавайся уже, у тебя ничего не получится!,,, или «Попробуй другое хобби, программирование явно не для тебя>-> - звучит знакомо? Кэмерон призывает нас учиться быть само­ достаточными: <<Мы должны стать достаточно бдительными, чтобы сознательно пополнять свои творческие ресурсы по мере их расходования>->, - пишет она. Постоянные придирки Найджела могут истощать психику, постепенно высасывая нашу творческую энергию до тех пор, пока мы не подчинимся и не выбросим результаты своего труда. Согласно Кэмерон, самые важные инструменты творческого восстановления - это ежедневное написание утренних страниц (нефильтрованное мысленное содержимое, излагаемое сразу по пробуждении) и художественные свидания с самим собой (приглашение себя на прогулку длительностью в несколько часов для вдохновения). Эти методики спасли творческую жизнь Кэмерон и продол­ жают спасать жизни миллионов читателей «Пути художника>.>. Не стесняйтесь заменить классические предложения Кэмерон (выставки, гале­ реи, концерты, созерцание заката и т. д.) тем, что пробудит ваше программист­ ское воображение (разговоры, перелистывание крутых репозиториев GitHub, реверсивное проектирование звуковых чипов Yamaha OPL, игры, разрывание книг по С++, разборка картриджей Game Воу и т. д.). Книга <<Путь художника>->, щедро наполненная расплывчатой духовностью, не особенно привлекает логически мыслящих программистов, таких как вы и я. Тем не менее у нее довольно мощный посыл: иногда мы слишком строги к самим себе. Исследователи творчества Дарья Забелина (Darya Zabelina) и Майкл Робин­ сон (Michael RoЬinson) получили схожие результаты: склонные к самокритике личности демонстрируют более низкий уровень творческой оригинальности 1 • Хотя их исследование было ограничено оценкой креативности 86 студентов с помощью теста Торранса на творческое мышление (см. главу 4), растущее число академических публикаций, похоже, находится в согласии с ними: меньше слушайте своего внутреннего Найджела и больше творите. Сколько раз вы вслепую использовали фрагмент кода со Stack Overflow, потому что «скорее всего, он был слишком сложным для моего понимания>->? Как часто вы принимали предложения о реализации от ваших коллег без обдумывания, потому что «они умнее>->? Готов поспорить, многие из вас пропустили упражнение на ограничение PIC0-8 в главе 4, потому что «не слишком хороши в пиксель­ арте>.> или «не умеете программировать на Lua>->. Не позволяйте внутреннему Найджелу одолеть вас. Другими словами, окиньте свою работу и замечания Найджела критическим взглядом. 1 Darya L. Zabelina and Michael D. RoЬinson. Don't Ье so hard on yourself: Self-compassion facilitates creative originality among self-judgmental individuals. Creativity Research Journal, 2010.
5.6. Почему критическое мышление других тоже важно УПРАЖНЕНИЕ 165 Упражнение «утренние страницы» является мощным и неподвласт­ ным цензуре способом дать выход идеям, блуждающим в подсознании. Попробуйте выполнять его на протяжении недели. Каждое утро перед завтраком записывайте все, что приходит на ум, включая «я не хочу этого делать», «мне нечего сказать» или «мне пе хочется вставать». После нескольких минут записывания вам удастся преодолеть началыюе тяжелое сопротивление. Пишите по меньшей мере 15 минут без остановки. Только после выполнения упражнения Найджелу позволяется критически оценить слова, чтобы отделить зерна от плевел. 5.6. ПОЧЕМУ КРИТИЧЕСКОЕ МЫШЛЕНИЕ ДРУГИХ ТОЖЕ ВАЖНО Мысли в этой главе вращались в основном вокруг (само)критики, позволяю­ щей отточить ваши личные или коллективные мысли и творческие идеи. Также я вкратце упомянул о преимуществах обмена идеями с другими, выявив важную связь между критическим мышлением и общением. Обратная связь от других для итеративной работы с вашей творческой идеей - не единственная причина значимости их критического мышления. Философ и критик творчества Катерина Моруцци (Caterina Moruzzi) пишет о важности понимания креативности помимо развития творческих способностей 1• Она го­ ворит не только о человеке, развивающем идею, но и об окружающих его людях. Помните, что творчество - это социокультурный вердикт: пока кто-либо не признает вашу работу творческой, она не будет восприниматься как таковая. Это также означает, что критическая оценка и проверка со стороны других людей важны для принятия нашей работы спустя много времени по прошествии этапа развития идеи. Это не призыв к давлению на людей и вымогательству. Лучше посмотрите на ситуацию так: если никто не понимает ваш код, возможно, вам стоит подумать, не упростить ли его. Не стесняйтесь вставлять сюда мемы типа «ты делаешь это не таю> ( <<You're doing it wrong» ). Когда дело касается творчества, грань между условностями и нонконформизмом очень тонка. Насколько далеко вы готовы зайти в любом направлении, решать вам. Только будьте готовы к критическим отзывам: творчество не существует в пустоте. УПРАЖНЕНИЕ Перечитайте первое упражнение в этой главе. Не изменилось ли ваше мнение о том, что неплохо бы иметь собственного Сократа (а не Найджела) в вашей команде, который в самые неожиданные моменты будет задавать критиче­ ские вопросы? 1 Caterina Moruzzi. Оп the relevance of understanding for creativity. Philosophy after AI, 2021.
166 Глава S. Критическое мышление итоги • Типичный творческий процесс состоит из следующих взаимосвязанных эта­ пов: подготовка, инкубация, озарение, проверка и представление/принятие. Таким образом, критическое мышление посредством проверки идей и их реализации является важнейшей составляющей поведения Креативного Программиста. • На разных этапах творческого процесса требуются различные режимы мыш­ ления: рассеяшюе и сосредоточешюе, а в идеале, возможно, сбалансирован­ ная смесь того и другого. Если вдруг вы обнаружите, что у вас закончились идеи, попробуйте переключиться па другой режим. • В контексте решения проблем ПО креативность обычно служит средством, а не целью. Однако она может быть целью - для самовыражения, для «кра­ сивости,>, для исследования и забав с новыми технологиями. Хорошенько осознайте границу между креативпостью как средством и креативностыо как целью. Не мастерите красивый код только для того, чтобы получить код, а не продукт. • Знание о существовании множества заблуждений, связанных с критическим мышлением, определенно поможет вам преодолеть даже самые устойчивые из них. Как сказал бы Сократ, знайте, чего вы не знаете. • Критическое мышление может привести к излишней требовательности к другим или к себе, что в итоге ослабит течение творческой мысли. Не за­ бывайте, что творчество общесистемно и что вы являетесь частью экосистемы взаимного обучения. • Не ограничивайте критическое мышление только своей работой: творческой работе других тоже необходима обратная связь. Нелишне было бы вначале подумать о том, как будет воспринята эта обратная связь. В соответствии с этим, получая критические отзывы от других, придерживайтесь открытого образа мыслей.
Любознательность В ЭТОЙ ГЛАВЕ ✓ Фиксированное мышление и мышление роста и их влияние на креативность ✓ Различные виды мотивации оставаться любознательным ✓ Концепция мультипотенциальности ✓ Обсуждение: универсальность против специализации Нескончаемое шуршание перемещающегося песка, устилавшего древнюю египетскую пустыню, пе трогало путника. Имея при себе лишь посох и легкую котомку за спиной, странник преодолевал бушующие моря, песчаные пустыни и пыльные дороги, добираясь до еще одной полузаброшешюй деревни. Оп при­ слонил свой посох к стволу пальмы, вытряс из одежды песок и без промедления начал разговор с местным жителем. После долгой беседы и совместной скудной трапезы оп развернул пе до конца завершенную рукопись и принялся писать со слов, ставших классическими: <<Рассказывают, что ... >> Этим человеком был Геродот. Оп следовал своей миссии - записать историю мира. Сейчас его труд <1ИсторИЯ\> считается одним из первых до дотошности подробных исследований культурных, географических и исторических событий, в частности греко-персидских войн. Геродот - первый в мире поистине бес­ страшный историк, готовый предпринимать длительные и далекие путешествия,
168 Глава 6. Любознательность невзирая на опасности. В •Истории• запечатлена картина мира с точки зрения не только его любимой Греции, но также Персидской империи, в которой он родился. Любознательность Геродота в отношении того, что происходило с простыми жителями его эпохи, в сочетании с его остроумием и обостренными чувствами, дала жизнь литературе, которая считалась (и должна считаться до сих пор) важнейшим материалом для чтения. Три столетия спустя систематическое изу­ чение раскопок произвело сильное впечатление на Цицерона, который назвал Геродота •отцом истории•. Через две тысячи лет беспорядочный, но каждодневный шум, состоящий из скрипа мачт, криков матросов и плеска волн о борта, возвещал о том, что корабль готов к плаванию. Перед •Биглем>> под командованием офицера королевского флота и ученого Роберта Фитцроя стояла задача нанести на карту побережье Южной Америки. Одному 22-летнему британцу удалось убедить Фитцроя взять его в команду в качестве натуралиста. Этого молодого человека звали Чарльз Дарвин. Капитан отправил Дарвина на берег для изучения местной геологии, а сам •Бигль• продолжал осматривать и наносить на карту береговую линию. Лю­ бознательность Дарвина простиралась далеко за пределы геологии; для него это был превосходный повод исследовать и собрать образцы местной флоры и фауны. По возвращении на корабль он делал обширные записи, отражавшие не только то, что видел, но и свои теоретические построения. Дарвин не был экспертом в области биологии - он обладал лишь немногими знаниями геологии и имел дома коллекцию необычных жуков. В других областях он был дилетантом, но его любознательность от этого не стала меньше - про­ изошло прямо противоположное. Несмотря на продолжительные приступы морской болезни, он умудрялся записывать то, что вызывало его интерес, то есть практически всё - во всяком случае, до того момента, когда у него закан­ чивалась бумага. В 1836 году, после пятилетнего плавания, •Бигль• наконец возвратился в Пли­ мут. Через полгода после этого большого приключения Дарвин стал медленно, но верно устанавливать связи между фрагментами накопленной информации. Результат его бесконечной любознательности - огромное количество свиде­ тельств, собранных в записях и переработанных в статьи и дневники, постепенно дал понять, что •один вид действительно сменяется другим•. До его фунда­ ментального труда •Происхождение видов•, опубликованного в конце концов в 1859 году, было тогда еще далеко (23 года!). Потребовалось несколько статей, бесед с дружественными учеными, новые правки и долгие прогулки, когда он был погружен в мысли. Спустя сто шестьдесят лет небольшой офис в Колиндейле, что в Лондоне, на­ полняли шипение расплавленного олова и дым, расходившийся кольцами. Пол
Любознательность 169 был усеян платами из конструкторов для самостоятельной сборки и разобран11ыми картриджами Tetri.s для Game Воу. Несколько ипженеров-программистов и электропщиков собирали комплект средств разработки для Game Воу, проводя реверсивпое проектирование ~тетриса,>. Qez San), основателя британской компапии-разработчика Argonaut Games, и игровой консоли Nintendo Game Воу пересеклись па выставке электроники в 1989 году. Джез немедленно решил переключиться со Spectrum и Amiga на новое необычное устройство, умещавшееся в руке. Однако Nintendo оказалась весьма скупа па раздачу официальных комплектов Пути Джеза Сапа видеоигр разработчика, особенно за пределами Японии. Кажущаяся невозможность раз­ работки для Game Воу могла бы заставить Сапа отказаться от его идеи. И все же любозпателыюсть, подпитывавшая его стремление двигаться вперед и пре­ одолевать строгие ограничения, подвигла его собрать комплект для разработки с нуля, подсоединив провода из картриджа к микросхемам па самодельной печатной плате. Программисту-новобранцу Дилану Катберту (Dylan Cuthbert) было поручено разработать первую игру для Game Воу производства компании Argonaut. Ею стала Х, или Ekkusu (рис. 6.1 ). Джез Сан считал, что было бы неплохо разработать трехмерный космический симулятор для Game Воу - нечто такое, что уже было реализовано на других платформах в серии игр Starglider. Однако Game Воу с его технологическими ограничениями имел на борту лишь вариант чахлого процессора Z80, работавшего на частоте 3,5 МГц. Хуже того, он мог отображать только четыре оттенка серого. К счастью, Катберт успешно справился с задани­ ем. Полностью трехмерные сетки в этой игре произвели впечатление даже на Nintendo, которая пригласила команду в Японию. 00:00 Рис. 1992 6.1. Игра Х выпуска года на экране Game Воу. Обратите внимание на эффектные бордюры пользовательского интерфейса, которые таким хитроумным способом снижают разрешение, чтобы уложиться в приемлемую частоту кадров
170 Глава б. Любознательность Х положила начало совместной истории Argonaut Games и Nintendo. Благодаря Argonaut и лично Катберт RISC-coпpoцeccopa Super FX, на основе интересу последней к дерзости британцев компания с головой окунулись в разработку которого были созданы порт Doom для Yoshi's Island (масштабирование двумерных спрайтов), Super Nintendo (двоичное разбиение пространства) и, конеч­ но, Star Fox (настоящие трехмерные многоугольники), также разработанные Argonaut. Опыт работы с ЗD-оборудовапием позволил Катберту устроиться в корпорацию Sony, где оп помогал разработчикам раскрыть возможности первых двух поколений PlayStation. В конце концов оп основал собственную компанию Q-Games, базирующуюся в Японии, - студию разработки, извест­ ную по серии игр Pixeljunk. 6.1. ЛЮБОЗНАТЕЛЬНОСТЬ КАК ИМПУЛЬС ДЛЯ КРЕАТИВНОСТИ В чем же заключается то главное, что объединяет геркулесовы усилия Геродо­ та встречаться с людьми и записывать их истории, обширные записи Чарльза Дарвина по геологии и биологии и сотрудников компании Argonaut Games с паяльниками в руках, заглядывающих внутрь картриджа Tetris? мера свидетельствуют о недюжинной любознательности к рассказам других - Все три при­ и истории империй, к эволюции природы и происхождению видов, а также к тому, как устроено аппаратное обеспечение. Если бы не любознательность и упорство всех этих людей, мы лишились бы существешюй части знаний о Древней Греции и Древней Персии, пе имели бы понятия, как эволюционировала природа после того, как морские существа вы­ ползли па сушу, а микросхема продлить жизнь Super FX не бьша бы выпущена вовремя, чтобы Super Nintendo (рис. 6.2). Возможно, SEGA выиграла бы войну 16-битных консолей! В многочисленных интервью Михая Чиксентмихайи с творческими гениями двумя наиболее важными чертами личности для достижения творческого успе­ ха называются любознателыюстъ и настойчивостъ. Без любознательности нет мотивации к обучению или созиданию. Без настойчивости нет возможности эффективно завершить работу. Творчество - не творчество, если изначально отсутствует любознательность, которая является началом всего. Пусть мы никогда не узнаем, обязаны ли мы любознательностью генам или переживаниям юности. Важно признать ее существование и ценить ее, дав ей возможность вырасти до составляющей творческой жизни. Акцент, который делает Чиксентмихайи на творчестве и настойчивости, заставляет меня думать, что любознательность граммиста. - это точка отсчета креативности про­
6.2. Растущая тяга к знаниям и странствиям Рис. 6.2. Печатная плата РАL-версии игры Yoshi's lsland. 171 В центре находится увеличенная микросхема SuperFX (GSU-2), а рядом с ней ROM объемом 2 Мбайта (слева) и видеобуфер на 256 Кбайт для сохранения игры (справа вверху) 6.2. РАСТУЩАЯ ТЯГА К ЗНАНИЯМ И СТРАНСТВИЯМ Как доказал Чарльз Дарвин, лучшая разновидность любознательности - всеохва­ тывающая любознательность. Потребность разобраться, как работает то или это, перерастает в подлинную любознательность, которая, в свою очередь, является главной движущей силой мотивации. Как начать проявлять себя Креативным Программистом? Прежде всего, нужно воспитывать в себе интерес. Иначе этап творческого процесса под названием «Подготовка~, описанный в главе 5, при­ несет слишком мало интригующих впечатлений и информации. Чтобы генери­ ровать новаторские идеи, связывая между собой фрагменты данных, сначала пужпо собрать их и внести в свою систему, о которой рассказано в главе 2. Порой мы застреваем в колее, и наше настроение не позволяет открывать что­ либо новое и захватывающее. Иногда опасения сдерживают пашу тягу к стран­ ствиям. Иногда туннельное видение сковывает наши интересы. К счастью, выход есть - он называется воспитанием мышления роста.
Глава б. Любознательность 172 6.2.1. Фиксированное мыwnение и мыwnение роста После десятилетий исследований в области достижений и успеха известный пси­ холог и социолог Кэрол Дуэк (Carol Dweck) пришла к выводу о том, что залогом разблокирования нашего пол~юго потенциала является разум. Ее исследования склада ума самых успешных людей показали, что образ мышления можно при­ мерно разделить на два лагеря - фиксированное мышление и мышление роста 1 • Рис. б.3. Фиксированное мышление и мышление роста. Что вы предпочтете купить: навесной замок для защиты (ограничение) или удобрения для роста (свобода)? Фиксироваююе мышление - это убежденность в том, что ваш талант и способ­ ности незыблемы. Либо вы наделены творческими способностями, либо нет. Люди с фиксированным мышлением обычно или завидуют другим, потому что видят в них качества, которых нет у них самих и которыми они никогда не овладеют, или ведут себя высокомерно и пренебрежительно по отношению к тем, у кого, как им кажется, нет каких-либо качеств и никогда не будет. Фик­ сированное мышление означает фиксированные черты личности. Девиз таких людей - «Преуспевают умные~. Мышление роста - это убеждешюсть в том, что ваш талант и способности можно взращивать, вкладывая в это усилия. Люди с таким типом мышления осознают, что они пока не являются креативными, что им нужно еще немного попрактиковаться. Мышление роста означает гибкость черт личности. Их девиз: <<Человек может стать умнее,>. 1 Carol S. Dweck. «Mindsct: Changing thc way you think to fulfill your potcntial~. Rcviscd cdition. RoЬinson, 2017.
6.2. Растущая тяга к знаниям и странствиям 173 На практике эти два крайних участка спектра являются чисто условными. Между - нет, подождите, пятьдесят - оттенков черным и белым существуют сотни серого. Вам может казаться, что вы способны развить свои кулинарные навыки и стать отменным шеф-поваром, но никогда не станете хорошим программистом. Согласно исследованиям Дуэк, какого бы образа мышления вы ни придержива­ лись в той или иной области, именно он будет определять вашу деятельность. Вы пребываете в убеждении, что так и не научитесь хорошо программировать? Значит, не научитесь. Принятие критики как ценной обратной связи является одним из основных качеств мышления роста. Путешествуя по всему свету для поиска необычных географических кластеров мертвых гениев, Эрик Вейнер обнаружил, что люди с таким типом мышления преуспевают благодаря отрицательной обратной связи: она лишь подливает масла в огонь их творчества. Получать критику, конечно, непросто, 110 то, как с ней справляться, зависит только от вас. Вы и вправду готовы вывесить пресловутый белый флаг только из-за того, что кто-то с фик­ сированным мышлением сказал вам, что у вас ничего не получается? Стимулирующее иnи разруwитеnьное вnияние учителей Просто потрясающе, сколько творческих гениев либо вообще не помнят о своей связи с учителем в школе, либо помнят, что она была очень близкой . Я читал о па­ губном влиянии учителей, бездумно критикующих детей за плохую успеваемость, но читал и о других, о ком вспоминают с любовью как о тех, кто искренне поощрял любознательность . Своих школьных учителей отрицательно оценивают даже не­ которые нобелевские лауреаты . Если честно, я не могу их винить. Из средней школы я перешел в профессиональ­ но-техническое училище, после которого в местный колледж поступали только самые прилежные ученики . Я был единственным, кто поступил в университет на специальность «computer science» - вопреки советам всех моих учителей. - предупреждали они . Через четыре года я полу­ «У тебя там ничего не выйдет», чил диплом . В данный момент, когда я пишу эти строки, я уже заканчиваю свою РhD-диссертацию. Возможно, стоит отправить им мой экземпляр книжки Кэрол Дуэк «Mindset» ( « Гибкое 6.2.2. Верить - сознание »). значит делать Дуэк называет мышление роста <,паспортом для новых приключений>>. Мпе хотелось бы изменить это выражение на <,бесплатный пропуск в креативносты, - пропуск, который выдаем себе мы сами, чтобы напомнить себе, что нужно вести творческую жизнь (при условии, что мы в нее верим). По словам Дуэк, то, как мы видим собственную жизнь, коренным образом влияет на то, как мы ее про­ живаем: <i За двадцать лет мои исследования показали, что то, какими вы видите себя, оказывает глубокое влияние на то, как вы живете».
174 Глава б. Любознательность Вести жизнь Креативного Программиста может каждый. Здесь нет высоких требований к I Q и нет необходимости иметь высокопоставленных друзей. Безу­ словно, не помешает способность быстро обрабатывать информацию, а также окружить себя теми, кто способен вдохновить, в чем мы убедились в главе 3. Однако Дуэк убеждает нас, что самое важное - верить в себя. Требуется большая внутренняя сила, чтобы осознать это простое, по невероятно мощное послание. Это убеждение влияет на то, как мы справляемся с неудачами, и нередко обо­ значает разницу между талантом и посредственностью. Даже Леонардо да Винчи инстинктивно понимал это, когда писал: <<Препятствиям пе сокрушить меня. Каждое препятствие уступает суровой решимости. Тот, кто устремлен к звездам, не меняет своих решений>> ( <<The Notebooks of Leonardo da Vinci~, Richter, 1888). 6.2.3. Вырастание из зоны комфорта Иногда мы просто боимся узнавать новое - прыгать в неизвестность. Я мог бы остаться в миреjаvа, где чувствую себя как рыба в воде. Кто-то может подумать, что я мошенник. Лучше бы я не совался в эти новые штучки cJavaScript. Я пе философ; лучше почитаю художественную литературу. Мои коллеги уважают меня за мои знания в данной области; ни за что пе переключусь на новый про­ ект. Я изучал информатику, поэтому нет смысла изучать психологию (а чем, по-вашему, вы сейчас занимаетесь?). Все эти утверждения попахивают весьма фиксированным мышлением. Куль­ тивирование мышления роста предполагает признание и преодоление страха неведомого. Наши с коллегами исследования говорят о том, что креативные студенты, обучающиеся па инженера-программиста, выходят из зоны комфорта чаще, чем некреативные 1 • В открытом задании по программированию креатив­ пость конечного продукта оценивалась группой экспертов с использованием методики Consensual Assessment Technique (САТ) Терезы Амабиле, описанной в главе 1. Опрос, в ходе которого собиралась контекстная информация, показал, что значительно более успешные студенты пе ограничивали свою реализацию тем, чему мы их учили. Любознательность выталкивала их из зоны комфорта. Поначалу они терялись и совершали ошибки, но продолжали поиски и в итоге представляли более оригипалыюе и творческое решение. Что интересно, чем более креативным проектом жюри считало проект, тем больше проблем с чисто­ той кода выявлял инструмент статического анализа кода. Возможно, удивляться тут нечему: изучение неизвестной территории кода в сжатые сроки, похоже, заставляет студентов снижать его качество. В другом продолжающемся исследовании паши студенты-программисты должны были работать совместно со студентами факультета дизайна другого 1 Wouter Groeneveld, Dries Martin, Tibo Poncclct, and Kris Aerts. Are undergraduatc creative coders clean coders? А correlation study. Proceedings of the 53rd АСМ Technical Symposium on Computer Science Education, 2022.
6.2. Растущая тяга к знаниям и странствиям 17S университета, чтобы запрограммировать визуально привлекательное произве­ дение искусства. Многие студенты упоминали в постпроектных интервью о том, что их напарники побуждали их изучать больше, чем они обычно привыкли, и выходить из зоны комфорта. Один студент выразился так: У меня было такое чувство, будто мой напарник заставлял меня исследовать больше [вариантов реализации}. Обычно мне было комфортно в пределах {31lаний] моей группы. Взаимодействие с моим напарником заставило меня выйти далеко за пределы зоны комфорта. Этот цикл положительной обратной связи хорошо согласуется с результатами, описанными в главе 3, в которой изучалось влияние общения па творчество. Другие студенты отмечали, что преодоление первоначального дискомфорта от <<притирки,> к другому человеку происходило за счет драгоцешюго времени на выполнение проекта. Им не удавалось завершить то, что они начали, но главная концепция, па которую они нацелились, была более значимой по сравнению с обычным программным проектом на инженерном факультете. В данном иссле­ довании самооценка креативности студента-программиста, работавшего в паре со студентом-дизайнером, была выше по сравнению с контрольной группой, в которой студенты-программисты работали в паре с другими студентами-про­ граммистами. Можно сделать вывод о том, что выход из зоны комфорта может оказать освежа­ ющее воздействие на креативпость программиста. Иногда так и хочется крикнуть кому-нибудь: «Ну-ка, выходи из зоны комфорта!• - но проблема заключается в пеопределешюсти этой зоны (рис. 6.4). Что, собственно, опа включает в себя? Для одного человека это может означать осторожное изучение возможности перехода в другую команду разработки, чтобы больше узнать о фронтенде, а пе о бэкенде системы. Для другого - выступление с презентацией и обмен знаниями. Рис. 6.4. У вас отлично получилось выйти из зоны комфорта! Постойте, а может, мы просто поменялись аквариумами? Многие программисты охотно рассказывают о том, как они побороли свои внутренние страхи, перейдя cjava на С#. Интернет полнится посредственными статьями, завлекающими читателей кричащими заголовками вроде «Програм­ мист, не засиживайся в зоне комфорта!•, <<Сила выхода из зоны комфорта при
176 Глава 6. Любознательность программировании» или очень уж смелыми: зоны комфорта « Уроки, усвоенные при выходе из WordPress». Скажу прямо: смена языков, команд, технологий, обмен знаниями - это что угодно, только не выход из зоны комфорта при программировании. И исследо­ вания, и практика говорят о том, что эти атрибуты становятся минимальными требованиями для того, чтобы можно было назвать себя компетентным програм­ мистом. Ограничивая интерпретацию зоны комфорта техническими знаниями в области программирования, мы рискуем просмотреть гораздо более плодород­ ное поле - поле перекрестного опыления идей. Креативные Программисты не допускают таких ошибок. 6.2.4. Мыwnение роста и креативность Почему развитие мышления роста связано с креативностью? Потому что мыш­ ление роста встречает препятствия лицом к лицу, а не избегает их, проявляет настойчивость в случае неудач, вместо того чтобы сдаться, рассматривает уси­ лия как средство достижения результата, а не растрату сил попусту, учится на критике, а не ишорирует ее и находит вдохновение в успехе других, а не видит в них угрозу. Все эти циклы обратной связи являются неотъемлемой частью творческого процесса. Роберт Стернберг (Robert Sternberg) опросил 143 исследователя творчества и пришел к выводу, что большинство из них сходятся во мнении о главной составляющей творческих достижений 1• Хотя Стернберг использует термин «настойчивость», это, как отмечает в своей работе Кэрол Дуэк, «именно тот вид настойчивости и стойкости, который порождается мышлением роста». Публикации Дуэк - одни из самых цитируемых в психологических исследова­ ниях. В последнее время многочисленные исследования творчества органично вобрали в себя концепцию мышления роста. Психологи-бихевиористы Джин Претц (Jean Pretz) и Даниэль Нельсон (Danielle Nelson) определяют образ мышления как один из ключевых факторов, которые могут положительно или отрицательно влиять на творчество 2 • В другом примере мотивация к творчеству была связана с наличием мышления роста у студентов, выбравших специализа­ цию «Образование>>. Их восприятие творческого другого имело положительную связь с их мышлением роста 3 • Самым обнадеживающим в этом исследовании является следующий вывод: 1 2 3 RobcrtJ. Sternberg. Handbook of crcativity. Cambridgc University Press, 1999. Jean Е. Pretz and Danicllc Nelson. Crcativity is influenccd Ьу domain, creativc sclf-efficacy, mindset, self-cfficacy, and self-estccm. The Crcativc Sclf. Elscvier, 2017. Pin Li, Zhitian Skylor Zhang, Yanna Zhang,Jia Zhang, Miguclina Nuncz, andJiannong Shi. From implicit thcories to crcative achievements: The mediating role of creativity motivation in thc relationship between stereotypes, growth mindsct, and crcative achievement. The J ournal of Creative Bchavior, 2021.
6.2. Растущая тяга к знаниям и странствиям 177 Данные результаты указывают на многообещающие стратегии мотивации к творчеству, вl(Лючая культивацию гибкого взгляда на творчество и твор­ ческие ролевые модели, которые, в свою очередь, могут ускорить творческие достижения, побуждая студентов делать, узнавать и завершать что-то новое. Если показать студентам (в нашем случае программистам), что творчество - это навык, которому можно научиться и который, следовательно, не является на­ мертво зафиксированным, их творчество расцветет пышным цветом. Я был бы более чем счастлив, если бы этой книге каким-либо образом удалось воспитать упомянутый гибкий взгляд в умах ее читателей. Если этого не произойдет, не стесняйтесь обрушить на меня свою критику! Ответственность и мышление роста Люди с фиксированным мышлением постоянно чувствуют потребность доказывать свою значимость. Когда что-то идет не так, признание своих ошибок ими даже не рассматривается . Ответы вроде «Я этого не делал!» или « Это они виноваты!» - ти ­ пичный признак поведения человека с фиксированным мышлением . Отрицание или возложение вины на других также мешает принятию ответственности, как было показано в главе 3. Интеллектуальные способности можно развивать так же, как и творческие, но мы должны быть открыты для идеи развития творческих способностей так же, как и любого другого навыка. В недавнем исследовании отношений между образом мышления и успеваемостью студентов высших учебных заведений, получающих компьютерное образование1, исследователи Ми­ ка-Вилле Апиола (Mikko-Ville Apiola) и Эркки Сутинен (Erkki Sutinen) обнаружили, что компьютерное мышление было ориентировано на рост, но мышление творческое было самым фиксированным из всех показателей. Это означает, что независимо от того, считают студенты-компьютерщики себя творческими или нет, они не открыты для идеи воспитания творчества. Авторы заключают: Это интересно и в то же время тревожно. Поскольку computer science в своей основе является творческой областью знаний, а создание технологий требует креативности, можно было бы предположить, что фиксированное мышление в отношении творчества будет иметь негативные последствия для создания технологий будущего. 1 Mikko-Villc Apiola and Erkki Sutincn. Mindset and study performance: New scales and research directions. Proceedings of the 20th Koli Calling International Conference оп Computing Education Rescarch, 2020.
178 Глава б. Любознательность Остается открытым вопрос, можем ли мы экстраполировать эти результаты на более опытных программистов. Исследования образа мышления в компьютер­ ной отрасли пока находятся в зачаточном состоянии. Несколько пилотных ис­ следований сообщали об успехах, достигнутых при применении определенных воздействий для развития мышления роста в целях повышения эффективности программирования у студентов первого курса, изучающих информатику 1 • Одно из воздействий состояло из трех частей: лекций об основах развития мышления роста, примеров из практики, взятых из работ Дуэк, и частых циклов обратной связи. Однако в среднем образ мышления существенно пе изменился. Воздействие в течение семестра может слегка поднять успеваемость, по мышление изменить не так просто. Это еще раз доказывает важность постояшюrо изменения русла мышления с фиксированного па открытое не только в контексте интеллекту­ алыюrо развития, но и УПРАЖНЕНИЕ - особенно - когда дело касается творчества. Когда вы в последний раз были вынуждены покинуть зону комфорта, связанную с работой программиста? Что именно заставило вас погрузиться в неиз­ веданное? Каков был творческий результат - для вас, для проекта и для возможных будущих экспедиций в неизвестность? 6.3. ДЕРЖИТЕ КУРС НА ЛЮБОЗНАТЕЛЬНОСТЬ Настойчивость, наряду с любознательностью, является одной из главных характеристик творческой натуры. Без любознательности Чарльз Дарвин не собрал бы так много интересных данных в своих записных книжках. Однако без настойчивости, проявлешюй при установлении связей, обдумывании, пере­ работке и пересмотре собранных записей, он не написал бы «Происхождение видов>> через 23 года после путешествия па борту «Бигля>>. 6.3.1. Настойчивость и твердость характера Образы мышления по Кэрол Дуэк - это точки зрения, меняющие восприятие своих способностей к обучению (и способностей других людей тоже). Мыш­ ление роста сосредоточивается как на воспитании любознательности, так и на настойчивости перед лицом неудач. Исследование психолога Анджелы Дакворт (Angela Duckworth) продолжили начинание Дуэк. ( «grit~) - это особая смесь страсти и характера>> 1 Она ввела термин «твердость настойчивости, которую опа Keith Quille, Susan Bergin. Promoting а growth mindsct in CS1: Does one size fit all? Proceedings of thc 2020 АСМ Conference on Innovations and Technology in Computer Science Education, 2020. А pilot study.
6.3. Держите курс на любознательность 179 называет секретом успеха 1 · 2 • Подобно мышлению роста, твердость характера подкреплена научными доказательствами, говорящими о том, что ее можно взрастить. Забудьте о таланте - просто продолжайте биться головой о стену: в конце концов вы ее пробьете. Связь между твердостью характера и академическим успехом установлена многими исследованиями. Это же справедливо для курсов программирования, овеянных дурной славой из-за высокого процента неуспеваемости: исследователи Джеймс Вулф Uarnes Wolf) и Ронни Джиа (RonnieJia) обнаружили, что более «твердые» (gritty) студенты получают более высокие оценки по сравнению с менее «твердыми» 3 • Конечно, на одной твердости далеко не уедешь. Врожденные факторы, такие как IQ или талант, по-прежнему являются мерилом потенциала. Мне не хотелось бы долго мусолить эту тему, поскольку она служит поводом для неразрешенных и жарких дискуссий в области психологии. И твердость характера, и мышление роста демонстрируют явные признаки любознательности и упорства. Страсть может проистекать от любознатель­ ности. Никто не будет биться головой о стену проблем с кодом без малейшего намека на страстность. К 23 954-му удару страсть может испариться и перейти в сильную головную боль. В интервью, данном изданию «Farnarn Street», Анджела Дакворт также подчерк­ нула важность запрашивания и корректной обработки обратной связи4: «Обрат­ ная связь - это подарок, но большинство из нас не знают, как распаковать его. И не хотят его получать». «Grit>> можно рассматривать как часть более широкого мышления роста в виде черты характера, определяемой набором характеристик: мужество, добросовестность, стойкость и выносливость. Примечательно, что и Дуэк, и Дакворт призывают пе искать всякий раз новые испытания, когда нам и без того трудно. Как сказал Альберт Эйнштейн: «Дело пе в том, что я такой умный, я просто дольше думаю над проблемами>>. Большинство из нас испытывают трудности с выбором направления и целе­ устремленностью. Как только что-то идет не так, мы выбираем другое направ­ ление, поспешно стараясь прикрыть свои ошибки. Твердость характера учит нас ' Angela L. Duckworth, Christopher Peterson, Michael D. Matthews, and Dennis R. Kelly. Grit: Perseverance and passion for long-term goals. J ournal of Personality and Social Psychology, 2007. 2 Перевод термина «griti,, приведен по изданной книге А. Дакворт «Твердость характера. Как развить в себе главное качество успешных людей~,,.~ Примеч. ред. 3 4 James R. Wolf and Ronnie Jia. The role of grit in predicting student performance in introductory programming courses: An exploratory study. Proceedings of the Southern Association for Information Systems Conference, 2015. Прослушать это интервью можно по адресу https://fs.Ьlog/knowledge-podcast/angela­ duckworth/.
180 Глава б. Любознательность вместо этого извлекать из них уроки и продолжать двигаться вперед. Дарвин страдал от приступов морской болезни. Зачем любому здравомыслящему че­ ловеку сознательно бороться с морской болезнью в течение пяти лет? Я точно пе стал бы - от одной мысли об этом у меня в желудке все переворачивается. Дарвин, наверное, получил бы очень высокий балл по шкале твердости Дакворт. Билл Гейтс о твердости характера В мире программирования существует множество историй об успехе, связанном с настойчивостью, самой известной из которых является , наверное, история Билла Гейтса. Интерес к программированию он начал проявлять еще в юности . Тогда про­ граммирование осуществлялось на терминалах, взаимодействующих с главной ЭВМ: машинное время стоило дорого, вследствие чего было ограниченным и делилось между всеми желающими . Если время Билла подходило к концу, но любознательность еще не была удовлетворена, он пользовался некой уязвимостью в системе, чтобы получить больше машинного времени. Когда его в итоге лишили права пользования компьютером, он стал взламывать школьную программу составления расписания , чтобы узнать, как она устроена . В 1970-е годы, еще до основания Microsoft, Гейтс и его партнер Пол Аллен создали ПО под названием «Traf-O-Data» для подсчета транспортных потоков. Этот проект провалился, но вместо того чтобы завязать с подобным бизнесом и пойти учиться чему-то посерьезнее, он бросил Гарвард и в конечном счете стал миллиардером . В интервью, данном Анджеле Дакворт, Билл Гейтс признался, что когда он просматри­ вал претендентов на работу в Microsoft, он останавливался на самых упорных канди ­ датах. В жестких заданиях по программированию он выбирал тех, кто был склонен продолжать попытки выполнить эти задания, а не сдавался, обуреваемый досадой . 6.3.2. Сипа вопи - истощимый ресурс В теории развитие мышления роста и воспитание твердости характера представ­ ляются довольно простыми. На практике это требует немалой силы воли, чтобы наступить па свою гордость, столкнувшись с отрицательной обратной связью, особенно если в тот самый день ваше настроение покатилось под уклон из-за лопнувшей велосипедной шины и проливного дождя. «Ну и денею>, - думаете вы вечером после нескольких плиток шоколада. - дело в СШlе воли. Социальный психолог Рой Ф. Баумай­ (Roy F. Baumeister) обнаружил, что это конечный ресурс 1 • Большинство Дело пе в деньке стер принимаемых нами решений тайно съедают пашу волю кусочек за кусочком. Большие и страшные решения или события, например проливной дождь или 1 Roy F. Baumcistcr and John Marion Ticrncy. Willpowcr: Rcdiscovcring thc greatest human strcngth. Pcnguin, 2012.
6.4. От любознательности к мотивации 181 отрицательная обратная связь, отхватывают сразу большие куски. К концу дня может не остаться ничего, что удержало бы вас от незапланированного перекуса. Творческие гении знали это на уровне инстинкта. Зигмунд Фрейд и Иммануил Кант придерживались строгого распорядка дня. Эйнштейн и да Винчи изо дня в день носили одну и ту же одежду. Выбрать, какую одежду надеть, не может даже президент Соединенных Штатов На одно решение меньше - - это за него делают его подчиненные. значит, останется больше силы воли для принятия важных творческих решений или таких решений, от которых может зависеть чья­ то жизнь. Пусть на первый взгляд это выглядит нелепо, но целое складывается из мелочей. То, что Баумайстер называет истощением эю, может заставить вас потерять контроль (контроль исполнения) и поддаться желаниям (контроль импульсов). Самоконтроль ценой силы воли незаменим, когда речь идет о настойчивости и о переключении с фиксированного мышления на мышление роста. Для из­ менения образа мышления требуются не случайные стимулы; нужно постоянно вкладывать силы в способность взглянуть на мир по-другому. Никто не говорил, что будет легко! Баумайстер доказывает, что сила воли, к счастью, сродни мышце: при достаточной тренировке она постепенно будет выдерживать все большие нагрузки. В завершение своей книги « Willpower,,, ( <<Сила воли,,,), написанной совместно с Джоном Мэрионом Тирни Uohn Marion Tierney ), он дает несколько советов о том, как нарастить силу воли и как избежать ее растрачивания, напри­ мер, вырабатывать привычки, создавать ориентиры, за которые можно держаться, и преодолевать трудности, ставя перед собой цели. УПРАЖНЕНИЕ Пройдите тест Grit Scale, ответив на десять вопросов. Он находится по адресу https://angeladuckworth.com/grit-sc.ale/. В результате вы получите оценку вашей твердости характера по шкале от О.О до 5.0. Что вы думаете об этом балле? Отражает ли он вашу нынешнюю суть? Какие вопросы вызвали у вас сопротивление? Возможно, в ближайшем будущем над этим было бы интересно поработать. Обратите внимание, результат не является неизменным! 6.4. ОТ ЛЮБОЗНАТЕЛЬНОСТИ К МОТИВАЦИИ Тяга к знаниям - источник знаний. Тяга к знаниям может перерасти в мотивацию продолжать учиться. Однако как же быть со спорами о внутренней или внешней мотивации и где здесь место для креативности? Давайте взглянем поближе. 6.4.1. Внутренняя мотивация Когда мы замотивированы сделать что-либо (например, стать креативными) сами по себе, это называется внутренней мотивацией. Как было сказано в главе 1, удовлетворение потребности в творчестве Умберто Эко, живущей внутри нас, скорее всего, является внутренним решением. Мы становимся креативными,
182 Глава б. Любознательность потому что сами этого хотим. Винсент Ван Гог рисовал, потому что хотел этого, а не потому, что им двигала жажда наживы. Если бы дело было в ней, он пошел бы по стопам отца, который служил министром Голландской реформатской церкви. По правде говоря, вначале Вап Гог хотел стать пастором. Исследования, проведенные когпитивпым психологом Терезой Амабиле, показа­ ли, что внутренне мотивированные студенты выказывают большую креативпость. Одной группе студентов сказали, что их работу будут оценивать художники, а другой группе было разрешено просто развлекаться: получать удовольствие от задания. Результаты были поразительны: <<развлекавшаяся~ группа показала значительно более высокие результаты в тесте САТ по сравнению с контрольной группой. Амабиле называет это внутренней теорией мотивации: «Люди более креативпы, если их мотивирует в основном интерес, удовольствие, удовлетво­ рение и сложность самой работы, а не внешнее давлепие~ 1 • Вот и славненько. Не думаю, что кого-то удивят результаты этого исследования. Однако теория внутренней мотивации пе всегда работает в реальном мире. 6.4.2. Внешняя мотивация Внешние стимулы, побуждающие вас сделать что-либо, называются внешней мотивацией. Это может быть задание, порученное вам работодателем, либо обещание денег или власти. Звонок из банка, после которого вы начнете инве­ стировать средства, мог быть сделан из-за того, что звонящий получал за это комиссионные. Эксперименты Амабиле ограничивались студентами. Другими словами, опа отбирала начинающих созидателей с небольшим опытом. Повлияло бы на ход эксперимента включение в него опытных творцов? Другие исследования гово­ рят, что повлияло бы. Для того чтобы это доказать, достаточно заглянуть в мир прославленных ученых, в котором царит высокая конкуренция. Помните, как ревновал Луи Пастер в главе 5? Он делал все возможное, чтобы не дать своим соперникам заработать больше славы и денег в виде грантов. Лауреаты Нобе­ левской премии Джеймс Уотсон Games Watson) и Фрэпсис Крик (Francis Crick) говорили, что их мотивирует сама Нобелевская премия. Внешнее соперничество явно мотивирует опытных ученых. Даже без влияния си­ стемы <<опубликуй или умри,> привлекательность вознаграждения, по-видимому, оказывает положительное влияние на творческую работу. К этому моменту вы уже должны быть знакомы с системным мышлением. Мы пе можем говорить о мотивации без учета окружения. Более того, внешние стимулы бывают разными: постоянный внешний контроль выполнения работы, 1 Teresa М. AmaЬile. Motivational synergy: Toward new conccptualizations of intrinsic and extrinsic motivation in the workplace. Human Resourcc Management Review, 1993.
6.4. От любознательности к мотивации 183 очевидно, мешает творчеству. Подробнее об окружении мы поговорим в после­ дующих главах. 6.4.3. Сочетание внутренней и внеwней мотивации Погодите-ка, но ведь огромное количество программных систем и художествен­ ных произведений тоже создаются за вознаграждение. Так что же является решающим фактором - внутренняя или внешняя мотивация? Правильный ответ: понемногу и того и другого. Например, у Моцарта была и внутренняя, и внешняя мотивация. Он творил чудеса только тогда, когда кто-то этого требовал. Гениальные музыкальные про­ изведения рождались только после того, как наниматель давал ему пинок под зад и тем самым запускал творческий процесс. Моцарт был хорошо известен своей жадностью и любил заниматься политикой за деньги. Есть также примеры времен эпохи Возрождения. Многочисленные замечательные произведения ис­ кусства, в том числе архитектуры, были заказаны церковью и семьей Медичи. Притягивающий взор купол собора во Флоренции, творение Филиппо Брунел­ лески, был построен благодаря золоту, а не внутренней мотивации. Иногда проект начинается как нудная работа по кодингу, которая постепешю подпитывает мотивацию, а заканчивается всеобщей увлеченностью. Я знаю консультанта по программированию, несколько дней в неделю оказывающего свои услуги компании, которая, по его словам, «делает реально скучную фигню па .NET~. Когда я спросил его, почему он все еще этим занимается, он ответил: <<За это хорошо платят, и в компании дают творческую свободу, так что я могу оторваться по полной, хотя программа сама по себе неинтересна. Это как если бы мне платили за эксперименты!~ Другой мой бывший коллега прямо попросил перевести его в команду поддержки С++, которой сторонились все остальные, только для того, чтобы освоить работу в С++ и использование умных указателей. Вот что я называю самоотвержешюстью. Иногда все происходит наоборот. Двоим моим бывшим коллегам надоело раз­ рабатывать корпоративные программы нaJava, и они начали баловаться с Play Framework, чтобы изучить Scala и Akka. Желая оставить после этих занятий что-либо осязаемое, они создали систему резервирования билетов для концер­ тов местного хора. Примерно через год они ушли с работы, с помощью специ­ алиста по продажам запустили эту систему как стартап и с тех пор развивают собственный облачный продукт. Предприниматели в мире ПО Джейсон Фрид (Jason Fried) и Дэвид Хайнемайер Хапссон называют это явление <<чесать там, где чешется~ 1• Примером такого по­ чесывания является 1 Basecamp. Вначале сделайте что-либо для себя (внутреннее), См. The Rework Podcast from 37 signals. Scratch your own itch. https://www.rework.fm/ scratch-your-own-itch/.
184 Глава б. Любознательность а затем распространите на других (внешнее). Мантра <<чеши там, где чешется>-> может здорово подстегнуть творческую любознательность, поскольку изначально вы создаете что-то классное для себя. Интересно отметить, что хотя некоторые программные системы и начинаются как проекты, подпитываемые внутренней страстью, со временем эта мотивация может пойти на убыль - и, следовательно, дополнительный толчок в виде внешней мотивации будет нелишним. В конце концов, многие ли продолжат решать проблемы с софтом, если им перестанут платить? Многие ли будут увлеченно заниматься кодингом, если зарплата окажется существенно ниже их ожиданий? Престиж, соперничество и деньги, по-видимому, мотивируют опытных творцов, но затормаживают неопытных. Вот вам и повод попросить прибавки. УПРАЖНЕНИЕ Когда· дело касается программирования, испытываете ли вы по­ требность в творчестве? Например, пестуете ли вы некое количество домашних проектов? Какие из них могут развиться в продукты, которые можно развернуть и эффективно использовать? Или вас легче увлечь внешними стимулами? Если так, можете ли вы назвать внутренние стимулы на текущей работе, которые помогают вам справляться с рутиной? 6.5. МУЛЬТИПОТЕНЦИАЛЬНОСТЬ Истинно творческие люди редко ограничивают свою любознателыюсть только одной дисциплиной. Не идет ли это вразрез с интуицией? Вы можете возразить, что люди наподобие основателя психоанализа Зигмунда Фрейда посвящали всю жизнь одному занятию. Разве их специализация не была достаточно узкой - в данном случае в области психоанализа? Да, к Фрейду определенно можно применить дрейфусовскую модель и волшебное правило 10 ООО часов, но мы не должны забывать, что он также был археологом-любителем. Фрейд любил собирать уникальные и древние предметы для украшения своего кабинета. Именно любовь к археологии привела его к идее <<Копания в сознании>-> - идее, скрещенной с психологией. ФрейдразнообразWl опыт, а это, как выяснилось, улучшает когнитивную гиб­ кость1. Системный мыслитель Нора Бейтсон (см. главу 3) сравнивает любо­ знателыюсть, ограниченную только одной областью, с сельскохозяйственными монокультурами: бесконечные поля пшеницы, сои или арахисовых деревьев имеют разрушительные последствия для биоразнообразия. Психическая моно­ культура (рис. 6.5) оказывает такое же токсическое воздействие на когнитивное здоровье. 1 Simoпe М. Ritter, Rodica Ioana Damian, Dean Keith Simonton, Rick В. van Baaren, Madelijn Strick, Jeroen Derks, and Ар Dijksterhuis. Diversifying experiences enhance cognitive flexiЬility. J ournal of Experimental Social Psychology, 2012.
6.5. Мультипотенциальность Рис. 6.5. Представьте, 185 что это фотография вашего мозга, а не пшеничного поля. Что посеешь, то и пожнешь: пшеница, пшеница и еще раз пшеница. Это здорово для выпечки и ужасно для взращивания идей. Фото любезно предоставлено Вепсе BallaSchottner, Unsplash 6.5.1. Истинные призвания во множестве своем Хрестоматийным примером творческой личности является Леонардо да Вин­ чи. Его Мопа Лиза привлекает в Лувр миллионы туристов. Оп был не просто опытным художником: он изучал анатомию, физиологию, инженерное дело и биологию; оп конструировал приборы; он теоретизировал об НЛО и строго поверял наукой каждую идею, приходившую ему в голову. Да Винчи был ар­ хетипом энциклопедиста или человека эпохи Возрождения - того, чьи знания охватывают несколько областей и которые могут быть объединены для решения сложных проблем или установления новаторских связей. Соответствовать идеалам истинного Иото Universale, 1 наверное, слишком слож­ но. Вот почему творческий эрудит Эмили Вапник (Emilie Wapnick) придумала собственное слово для обозначения человека со множеством интересов - муль­ типотенциал2. После изучения юриспруденции, создания веб-сайтов и попыток заняться искусством ей стало скучно, и она нашла еще одну сферу интересов. Озадаченная тем, что пе может ответить на вопрос «Чем вы занимаетесь?>>, звучащий па каждой коктейльной вечеринке, она обнаружила, что является мультипотепциалом. 1 Uomo universale (итал.), произносится как у6мо универсале - разносторонний человек Нового времени. Это понятие возникло в эпоху Возрождения как противопоставление 2 Средним векам. - Примеч. ред. Emilie Wapnick. How to Ье everything: А guide for thosc who (still) don't know what they want to Ьс when they grow up. HarperOne, 2017 (Вапник Э. «Мультипотенциалы. Руководство для тех, кто уже вырос, но так и нс решил, кем хочет стать,,,).
186 Глава б. Любознательность Вапник сделала также и тревожное открытие: нашему современному обществу не так-то легко принять мультипотенциализм. Оно возводит па пьедестал спе­ циализацию и оставляет за бортом людей со множеством интересов. Хуже того: такие люди, как Вапник, на вопрос <<Кем ты хочешь стать, когда вырастешь?,> залпом выпаливают: «Пекарем, а еще программистом, а еще философом~ - а потом долго думают, что же с ними не так. Наша культура предполагает одну серебряную пулю, а вовсе не дробь. Мультипотепциалы имеют ряд преимуществ перед специалистами. Вот сводная информация из работы Вапник: • Синтез идей. Творчество рождается на стыке областей знаний, а не внутри этих областей. • Быстрое обучение. Универсалы привыкли быть начинающими и превосходно обучаются новому. • Адаптируемость. К разным ситуациям нужны разные подходы, и один из лучших способов найти эти подходы • - адаптироваться к этим ситуациям. Видение общей картины. У специалистов часто развивается туннелыюе ви­ дение, универсалы же смотрят более широко. • Соотнесение и преобразование. Поскольку универсалам знакомы многие области знаний, им легче соотнести их друг с другом. Эмили Вапник не преподает, по ее идеи нашли отклик во многих работах, на которые я натолкнулся, проводя свое исследование. Вапник - пе единственный писатель вне образователыюй среды, приверженный идее универсальности. Об этом журналист Дэвид Эпстайп пишет в своей недавней книге «Range: Why Generalists Triumph in а Specialized World,>. Начинать все сначала всегда страшно. Зачем кому-то уходить с привычной должности эксперта в фотографии, чтобы стать полнейшим дилетантом па профессиональной кухне? Ответить на этот вопрос поможет следующая ци­ тата, принадлежащая Сюнрю Судзуки (Shunryu Suzuki), буддийскому монаху, который основал первый в Америке дзен-буддийский монастырь: «В сознании начинающего много возможностей. В сознании знатока их мало~. Помните GoldenEye, наивно запрограммированную игру о Джеймсе Бонде, о которой рассказывалось в главе 4? Разработчики-новички из компании Rare увидели те возможности, которые знатоки считали нереализуемыми. Это на­ водит на мысль о том, что мультипотенциалы должны лучше справляться с ограничениями. Натан Мирвольд (Nathan Myhrvold), бывший технический директор (СТО) получивший степень PhD по математике, применил свой ин­ женерный опыт, научную строгость и любовь к фотографированию еды, Microsoft,
6.5. Мультипотенциальность 187 создавая настольную книгу хлебопека «Modernist Bread,> 1• В этом огромном энциклопедическом труде он педантично разбирает все, что известно о вы­ печке хлеба: микробиологические процессы, протекающие в тесте, химиче­ ские процессы в печи и психологические процессы в нашем мозге, когда мы уплетаем вкуснейший ломоть хлеба. Мирвольд получил бы высокий балл в тесте Вапник. Мне известны и другие технические специалисты, которые открыли в себе пека­ рей и применили свой опыт, чтобы усовершенствовать процесс выпекания. Это, например, Джастин Лиам Qustin Liam), который создал систему мониторинга брожения для своей хлебной закваски с использованием компьютерного зрения Raspberry Pi2. Или аппаратно-программный дуэт Фреда Бененсона (Fred Benenson) и Сары Пэвис (Sarah Pavis), которые изобрели Breadwinner3, смарт­ на базе трекер закваски с мобильным приложением и сложной панелью управления с веб-доступом. Без таких черт мультипотенциала, как способность к адаптации, синтез идей, а также соотнесение и преобразование знаний, этот продукт не увидел бы свет. Если вы не планируете в ближайшее время бросать работу программиста, чтобы стать пекарем, то более универсалистский взгляд на вещи просто может открыть больше творческих и коммерческих возможностей в области программирования. Именно такой путь выбрал Адам Торнхилл (Adam Tornhill). Адам - програм­ мист, которому удалось выжать все из своих дипломов в области разработки ПО и психологии. Он создал CodeScene, инструмент для анализа кода, который, PMD, не просто в отличие от других статических анализаторов кода, таких как возвращает возможные запахи кода. Он идет дальше: основываясь на опыте Адама в психологии и его сотрудничестве с криминалистами, он выявляет в коде скрытые социальные паттерпы. CodeScene - код как место преступления ( crime scene) - инструмент пове­ денческого анализа кода, который обязан своим существованием комбинации интересов Адама. 6.5.2. Как быть со множеством интересов Не все мультипотенциалы проявляют любознательность одинаково. Некоторым необходимо последовательное погружение. Вапник называет это подходом Фе­ никса - «серийные~ специалисты, проявляющие интерес к чему-либо дольше других, по спустя какое-то время двигающиеся дальше, чтобы расширить свои горизонты. 1 Justin Liam <,Modernist Bread~ (The Cooking Lab, 2017). 2 См. 3 https://www.justinmklam.com/posts/2018/06/sourdough-starter-monitor/. См. https://breadwinner.life/.
188 Глава б. Любознательность Другие возможности таковы: • «Слеш-подход». Параллельная обработка интересов. Я, к примеру, пекарь/ программист/преподаватель/исследователь/писатель; Адам Торнхилл психолог /программист. • Подход «групповых обьятий». Одна многогранная работа, охватывающая разные дисциплины. Разработчик ПО в образовательной среде может быть востребован в различных научных областях, в преподавании, создании про­ грамм для анализа данных, написании отчетов для публикации и т. д. • Подход Эйнштейна. Сочетание стабильной, по скучной работы днем с творче­ скими открытиями ночью. Это дает финансовую стабильность и в то же время свободу унять свой зуд без компромиссов, навязываемых дневной работой. Как всегда, наилучшими для вас могут оказаться гибридные решения, пред­ ставляющие собой комбинацию нескольких подходов. Темная сторона креативности Оригинальные мыслители могут быть более нечестными - к такому выводу пришли исследователи в области социальной психологии Франческа Джино (Francesca Gino) и Дэн Ариэли (Dan Ariely)1. Они обнаружили, что творческий склад ума может дать ход способности человека к оправданию своего поведения, что, в свою очередь, может привести к неэтичному поведению. Студенты , получившие более высокие оценки по шкале творческих качеств личности, были более склонны к жульничеству во время эксперимента. Более того, студенты, которых побуждали к творческому мышлению, поступали нечестно чаще, чем те, кто мыслил стандартно . Ваши творческие способности к программированию ни в коем случае не должны перевешивать ответственность перед коллегами, клиентами и другими заинтересо ­ ванными сторонами . Опасайся пути на темную сторону, мой юный падаван! 6.5.3. Специаnизация Эрик Вейнер в своей книге враr креативности? <1The Geography of Genius~ сетует па растущее давление специализации, которое, как он считает, скорее подавляет креатив­ ность, нежели возносит ее к новым высотам. Каждая область деятельности стала настолько сложна, что разуму одного человека сейчас практически не под силу охватить все ее аспекты. Я без труда разъясню назначение каждого пуля и каждой единицы внутри Game Воу выпуска 1989 года, по даже пе просите меня объяснить, как работает чип М 1 2020 года в моем MacBook (рис. 6.6). Я мог бы потратить уйму времени, пытаясь разобраться в этом, и все равно мне не удалось 1 Franccsca Gino, Dan Aricly. Thc dark side of crcativity: Original thinkcrs dishoncst. Journal of Pcrsonality and Social Psychology, 2012. сап Ьс morc
6.5. Мультипотенциальность 189 бы постичь все мельчайшие детали. Так же и с программированием: па Game Воу каждая строка на ассемблере представляет собой инструкцию, которую буквально интерпретирует центральный процессор. Однако что происходит па Collections. sort(myClientList, Collections. reverseOrder()) внутри виртуальной машиныjаvа? Удобство абстрагировалось самом деле, когда мы выполняем от сложности, по когда что-то идет не так, отладка и выявление проблемы могут обернуться немалыми трудностями. Рис. 6.6. Система на чипе (System оп а Chip, SoC) Apple М1: 16 миллионов транзисторов, до 8 ядер в графическом процессоре и центральный процессор, оснащенный быстрым кэшем и памятью DRAM посредством унифицированной архитектуры памяти (UMA). Читая это, я чувствую себя, как Мануэль из комедии Сравните это с процессором Z80 в 8-битной консоли «FawltyTowers»: «lQue?» Game Воу, насчитывавшей около 1О ООО транзисторов. Вот это да. Нельзя отрицать здесь творческий гений, но для создания этой штуки требуются сотни инженеров, специализирующихся в области аппаратного и программного обеспечения (и очень много денег) Всплеск интереса к специализации ощущается не только в компьютерной от­ расли. Взять хотя бы, к примеру, работу в мире выпечноrо дела. Обычно бывает достаточно объявления о работе, озаглавлешrого «Требуется пекарь~. Предпо­ лагается, что этот человек будет печь хлеб, делать закваску для кондитерских изделий и пирогов, готовить пудинги, изобретать новые вкусы пралине и т. д. Однако на деле это пе так. Даже небольшие пекарни берут па работу отдельно хлебопеков и кондитеров, специализирующихся в своем деле: четкое разделе­ ние ответственности (separation of concerns) позволяет создавать изделия для гурманов, 110 не оставляет возможности для совмещения функций. Нет ничего плохого в том, чтобы гордиться своими умениями: допустим, вы пекарь, специализирующийся на заварном хлебе, или производитель шоколада.
190 Глава б. Любознательность Закавыка в том, что специализация этим не исчерпывается. В большинстве объ­ явлений о работе па крупных хлебопекарных предприятиях упоминаются либо инженеры для управления производством, либо тестомесы. Не путайте тестомеса с оборудованием для замеса: тестомес - это человек, занимающийся замесом теста. Вот и все. Это узкоспециализированная и совершенно неинтересная работа на сборочной линии. Вот к чему ведет нас путь к специализации. Британский политический активист Кен Робинсон (Ken RoЬinson) высказался в своих книгах и в выступлении на конференции TED 1 под названием «Education Kills Creativity~ 2 со всей откровенностью. Робинсон утверждал, что, отучая людей от применения творческих способностей, мы также лишаем их возмож­ ности справляться с неопределенностью будущего. В средней школе нам выдают тщательно упакованные комплекты математики, истории, биологии, латыни и информатики. Учителя делают все возможное, чтобы не выйти за рамки из­ учаемого предмета, а собственно обучение (и проявление интереса) происходит где-то между этими упаковками. Насаждение специализации в высшем образовании лишь усугубляет ситуацию. Университетские программы вовсю прославляют «междисциплинарное обуче­ ние\'>, каковое, к несчастью, оказывается редким явлением. Намного сложнее из­ учать биологию, ашропологию и историю, как это делал Грегори Бейтсон в своей работе по кибернетике и системному мышлению, о которой рассказывалось в главе 3, чем специализироваться в одной области, где путь к научному совер­ шенству гораздо прямее. Если же этот путь скрыт в тумане, то любознательные и настойчивые, а также люди с многогранными интересами будут преуспевать там, где другие могут потерпеть неудачу. В 2008 году бельгийские университеты добавили пятый год к программе ма­ гистратуры по computer science, чтобы включить в программу обучения курсы для получения знаний, востребованных в промышленности. В настоящее время обсуждается возможность сделать то же самое для всех инженерно-технических специальностей. Тем временем пенсионный возраст продолжает повышаться, а годы, потраченные на учебу, не засчитываются как трудовой стаж. Количество аспирантов - прототипов специалистов - за последнее столетие увеличилось в четыре раза. Когда дело касается творчества, наличие PhD мало что значит: очевидно, это даже снижает вероятность творческого прорыва! Это упоминается в работе Вейнера, но мне не удалось найти источник. Некоторые диссертации, безусловно, могут быть творческим продуктом, но к сожалению, они редко объединяют знания из разных областей. 1 TED (аббревиатура от англ. ния, дизайн) - tcchnology, entertainment, design - - Примеч. ред. Ken RoЬinson and Lou Aronica. Creative schools: Revolutionizing education from the ground up. Penguin Books Limited, 2015. своими ежегодными конференциями. 2 технологии, развлече­ американский частный некоммерческий фонд, известный прежде всего
6.5. Мультипотенциальность 191 6.5.4. Универсальность иnи специализация в техноnоrических областях Каждый программист знает, что мир технологий в высшей степени специали­ зирован. Почти 90% книг серии издательств Pragmatic Bookshelf или Manning помогают программистам стать специалистами узкого, а не широкого профиля. Специализация в мире технологий дело рискованное, потому что этот мир тоже - очень изменчив, что вынуждает программистов постоянно открывать себя в новом качестве. Специализация в сочетании с изменчивостью - прямой путь к растрате нажитых непосильным трудом навыков и знаний, если только пе найти способы перенести их в другие области. Однако межъязыковые коллизии, о которых рас­ сказывалось в главе 5, учат пас тому, что знания перенести - не поле перейти. Лучшие творческие программисты являются мультипотенциалами, и тем пе менее компании из мира технологий продолжают наводнять рынок демора­ лизующими объявлениями вроде «Специалист по Java>->, «Эксперт по BI,> или «Администратор БД Oracle>->. Специализация в области синтаксиса баз данных Oracle, безусловно, является законным способом обеспечить себе безбедную старость, если только лет через пять компания не перейдет па По результатам опроса MS SQL. Stack Overflow Annual Developer Survey1, специалисты в области технологий оплачиваются даже лучше, чем разработчики полного цикла. В лучшем случае это азартная игра. Графики на рис. 6. 7 показывают, 1-\ ЕОПЛА Ч И В АЕМЬ\Е ~ .ЗНАНИЯ СПЕЦИАЛИСТ - ><. uJ t:: и 7' ......__....--._. • _____ УНК8ЕРСАЛЬНЫ~ ~УЧ ШИК СОТРУдНКК КА Н.П.И.П.А Т ЬОJМО#.НОСТЬ РАБОТА СПЕЦИАЛИСТА ШИРокоrо ПРОФИЛЯ Рис. 6.7. Специалист может оказаться избыточно квалифицирован (overqualified). Вам не заплатят за ценность, которую вы не сможете добавить. Эта цифра основана на статье Ивана Пепельняка (lvan Pepelnjak) о навыках в области IT по адресу https:// Ьlog.ipspace.net/2015/05/on-i-shaped-and-t-shaped-skills.html 1 См. https://insights.stackoverflow.com/survey/.
Глава 6. Любознательность 192 что хотя эсперт может обойти специалиста широкого профиля при весьма кон­ кретных условиях, па других работах 011 бесполезен, что делает его не самым привлекательным кандидатом. Компании могли бы искать узких специалистов , по на деле для работы лучше всего подходит комбинация специализации и упиверсалыюсти. Для того чтобы специалист по Java стал специалистом по С#, нужно всего лишь переключить сознание - разница между ними на удивление мала. И все же у меня были коллеги, которые преклоняются перед одной технологией и насмехаются над другой. Совершать открытия мешают не только паша гордость и страхи ; вина нередко лежит и на культуре (компании) . Спасет ли найм разработчика полного цикла от ада специализации? Не со­ всем. Что первым приходит в голову при виде термина «полный цикл,,, (full stack)? Фроптенд на другое - Angular JS и бэкепд на Spring Boot? Или нечто совершенно Phoenix с конечными точками RESTful Elixir? Конечно, фреймворк существуют разные уровни универсальности и специализации. Овладение - в данном случае НТТР, JS, HTML и REST - позволит быстрее освоить специализированные фреймворки, в данном случае Angular и Phoenix. Проблема заключается в невозможности отступить назад, чтобы обобщить свои основами знания Angular/ Phoenix, что усложняет переход между стеками. - внимательно следить за трендами в данной отрасли с помощью Technology Radar, описанного в главе 3. Будьте открыты для нового опыта и постарайтесь не застрять на крайне специализированной работе. Лучший способ остаться в игре Если ничего пе получится, никогда пе поздно переключиться па другие ин­ - или сочетать их, чтобы создавать новаторские продукты, такие как Breadwinner. Когда карьера Марка Феррари как мастера двумерного пиксель-арта (см. главу 4) со скрежетом застопорилась из-за появления 30-моделирования, тересы он стал писать романы в жанре фэптези . Теперь его работы, выполненные цвет­ ными карандашами, украшают его же книги . Риски сертификации Пытаясь обучить своих сотрудников, компании организуют воркшопы и отправляют людей на дорогие курсы повышения квалификации . Хуже того, многие консалтин­ говые компании обязывают своих программистов получать сертификаты . Я серти ­ фицированный Zend РНР-архитектор, сертифицированный Sun разработчик Java, сертифицированный магистр Scrum. Отлично! Теперь мой работодатель может брать за мои услуги больше, а я застряну на узкой дорожке PHP/Java. Специализация посредством сертификации не подстегнет вашу карьеру, разве только набьет карманы других и наполнит резюме кучей терминов. Сертификат по РНР я получил, чтобы доказать моему начальнику, что мои интересы шире, чем разработка корпоративного ПО на Java. Толку, однако, не было : мне так и не дали ни
6.6. Нежданные открытия 193 одного проекта на РНР. В Бельгии в Брюсселе и его окрестностях у Jаvа-консультантов зарплата гораздо выше (я ее, разумеется, в глаза не видел). Сертификаты, как и дипломы, могут иметь свою ценность. Просто стремитесь к раз­ нообразию и помните о том, какова конечная цель получения сертификата - личная выгода или выгода компании . УПРАЖНЕНИЕ Что поддерживает культура вашей компании - универсалыюсть или специализацию? Подумайте о матрице компетенций, о вашей должности, о составе команды. Способствуют ли они специализации (старший инженер Java в команде бэкенда) или универсальности (старший программист в команде продакт-чего-то)? Каковы предпочтения ваших коллег и ваши? 6.6. НЕЖДАННЫЕ ОТКРЫТИЯ Случалось ли вам находить что-нибудь неожидашюе в книжном магазине или магазине пластинок, когда вы вовсе не искали что-то определенное? Тогда вы понимаете, каково это: найти то, чего пе ищешь в данный момент. Мне правятся такие счастливые случайности. Нам с вами повезло: (частично) они возможны и в разработке. Настраивая нашу систему (см. главу 2) так, чтобы она активно при­ слушивалась к этим моме1пам, можно увеличить количество радостных открытий. Возникновение внезапных инноваций в результате случайных встреч людей, оказавшихся в нужном месте и в нужное время, окутано мистикой. Случайное яблоко Ньютона пе привело его к открытию законов гравитации. Случайный возглас Архимеда ~эврика!~,, раздался не только благодаря его ванне. Тем пе менее исследования показали, что этот миф правдив хотя бы в какой-то мере. Случайные разговоры у кулера с водой наводят на размышления чаще, чем вы­ пуждешюе пребывание в переговорке. Именно это имел в виду Стивен Джонсон, рассуждая о ~жидких сетях~,,, с которыми мы познакомились в главе 3. 6.6.1. Как на что-нибудь натоnкнуться По мнению профессора юриспруденции Касса Санстейпа жданные открытия - (Cass Sunstein), не­ это то, что должны делать газеты 1 • Заголовок статьи при­ зван привлечь вас, захватить ваше внимание и увлечь историей, об интересе к которой вы и пе помышляли, 110 которая дает вам информацию, способную изменить ваш взгляд па мир. К сожалению, современная новостная индустрия больше заинтересована в кликах и в ваших данных, чем в предоставлении дей­ ствителыю интересной информации. Вот где пригодится RSS-фильтр из главы 1 Listen to а dialogue about the architecture of sercndipity at videos/1615. 2! https://Ьloggingheads.tv /
194 Глава 6. Любознательность В Википедии есть ссылка Случайная статья. В Obsidian есть кнопка Открыть случайную заметку (Open Random Note). Не могу поверить в то, что дляJetBrains 1D Е нет плагина, который открывает случайный файл с исходным кодом. Пред­ DEVONThink предлагает соот­ носящиеся по смыслу, но не связанные документы па панели See Also ( смотрите также). Discuvver, альтернатива некогда популярному StumЬleUpon, еженедельно ставьте такое в начале сеанса программирования! присылает в вашу папку «Входящие>> случайные ссылки па полезные сайты. На странице IndieWeb Discovery (https://indieweb.org/discovery) упоминаются <<методы неожиданных открытий• для нахождения коптепта, веб-сайтов, со­ обществ или людей. Помните «кольца• (webrings) девяностых, до того как поглотила GeoCities, когда алгоритмы поиска и социальных медиа еще не завладели миром? Без невидимых алгоритмов, правящих бал в вашей ленте, Yahoo! у некоторых из малоизвестных, но не менее интересных от этого материалов по­ явился бы шанс быть обнаруженными, тогда как сейчас вам скармливают одно и то же - или, что еще хуже, только наиболее популярный и платный коптент. Гетерогенность способствует неожиданности. Замена традиционных новостных сайтов агрегаторами новостей, создаваемых пользователями, такими как Reddit, может привести к интересным историям, но вряд ли они окажутся удивитель­ ными, нежданными открытиями. Подавляющее число пользователей Reddit по-прежнему составляют мужчины, работающие в сфере технологий и прожи­ вающие в США1. Это означает, что определенные истории, скорее всего, полу­ чат больше голосов, чем другие. Мы пе будем углубляться здесь в подробности гомофильности, но мораль очевидна: не стоит класть все яйца неожидашюсти в похожие корзины. Читайте эту книгу, а также <,Art as Therapy•, <<The Go Programming Language• и «Sophie's World,>. Посещайте блоги <<The Pragmatic Engineer>>, «The Marginalian•, «Programming Digressions• и «Farnam Street•. 6.6.2. Открытость впечатnениям Для подачи заявления на работу в крупной компании может понадобиться пройти тест личностных качеств, вероятно, тест «Большая пятерка• (Big Five), популяризованный в качестве оценки производительности труда психологом Себастианом Ротманом (Sebastiaan Rothmann) и его коллегами 2 • В <<Большую пятерку• личностных качеств входят добросовестность, экстравертность, по­ Юlадистость, невротизм и открытость впечатлениям. Несмотря на то что модель <<Большой пятерки>> подвергается критике за огра­ ниченный охват и сомнительную теоретическую и методологическую базу, опа неизменно широко используется в отрасли и в исследованиях креативпости. 1 Распределение пользователей Reddit в мире по состоянию на январь 2022 г. Statista. https://www.statista.com/ statistics/1255182/distribution-of-users-on-reddit-worldwide-gender/. 2 Sebastiaan Rothmann and Elize Р Coetzer. The Big Five personality dimensions and job performance. SAJournal of Industrial Psychology, 2003.
6.7. О веселье 195 Многочисленные исследования, изучающие возможную корреляцию между креативностью и одним из пяти качеств, указывают на <<Среднюю или небольшую положительную связь между открытостью впечатлениям и оценками креатив­ ности, связанной с [работой] участников~ 1 • В данном случае креативность вновь оценивалась по системе САТ разработки Амабиле. В контексте нашего поиска по определению Креативного Программиста исследо­ вания, подобные вышеприведенным, носят в лучшем случае рекомендательный характер. Они либо придерживаются устаревшего определения креативности, данного Кауфманом и Стернбергом в главе 1; либо, как тест Торранса на твор­ ческое мышление, используют для измерений такие показатели, которые опре­ деляют лишь дивергентное мышление; либо ограничивают круг испытуемых студентами, которых легко найти. Помните разницу во внутренней и внешней мотивации в зависимости от опыта? Студенты - это новички. Результаты по­ добных исследований могут быть показательны в каком-то отношении, но не могут быть легко обобщены на всю программистскую братию. Поэтому мы обратились к этой индустрии для изучения роли креативности в разработке ПО, проводя опросы, фокус-группы и интервью. В результате появилась целая стопка научных работ и практическое руководство - эта книга. Все же представляется логичным, что сочетание определенных качеств способ­ ствует творческой работе. Какого-нибудь безбашенного придурка вряд ли возь­ мут в камерату. То же можно сказать об открытости впечатлениям: отсутствие умения ценить опыт других отнюдь не говорит о любознательности. УПРАЖНЕНИЕ В следующий раз, когда кто-то будет рассказывать о своем хобби, проявите искренний интерес, особенно если это не входит в круг ваших увлечений. Даже если вы не являетесь завзятым читателем, при первой же возможности зайдите в книжный магазин. Проведите пальцами по корешкам. Воспримите цвет, шрифт, название. Возможно, вы пойдете домой обогащенным впечатлениями и обедневшим на 40 долларов. Счастливая случайность требует определенной открытости впечатлениям. Старайтесь ценить случайность встреч. Листание страниц интернет-магазина не считается: умные алгоритмы, рекомендующие связанные материалы, удобны, по имеют мало общего с волшебством случая. 6.7. О ВЕСЕЛЬЕ Когда мы спрашивали программистов, как оценить, являются ли их коллеги творческими людьми, некоторые ответы удивляли: <<Я смотрел бы на язык тела~, 1 Jason Hornberg and Roni Reiter-Palmon. Creativity and the Big Five personality traits: Is the relationship dependent on the creativity measure? In The Cambridge Handbook of Creativity and Personality Research. Cambridge U niversity Press, 2017.
196 Глава б. Любознательность «Если они счастливы и много шутят~.>, <<Если они в потоке~.>. Последнее утверж­ дение бьшо опровергнуто другими участниками, поскольку они утверждали, что можно быть в потоке, просто наклеивая марки. Видимо, мне попался любитель филателии. После некоторого обсуждения последовал вывод: делают ли про­ граммисты время от времени паузы, возможно, для размышления? Если пауза слишком длинная, значит, они в тупике. Если пауз нет, значит, работа смахивает скорее па конвейер, чем на творчество. Измерение производительности (чего-то в явном виде) - нечто иное, нежели измерение креативности. Второе утверждение интригует куда больше. Почему искрометные шутки свидетельствуют о креативности? Участники точно пе знали, по они что-то чувствовали. Веселье уравновешивает рутину и скуку, поднимает настроение и повышает мотивацию. В 1976 году психолог-бихевиорист Авнер Зив (Avner Ziv) попросил группу под­ ростков прослушать записи самых популярных израильских юмористов. После этого они должны были выполнить тест Торранса на творческое мышление. Группа, не прослушавшая запись, показала значительно худшие результаты 1 • Под­ ростки, которые смеялись громче всех, показали лучшие творческие результаты. В главе 4 мы видели, что тест Торрапса не является всеохватывающим, однако более поздние исследования успешно воспроизвели этот эффект: реакция смеха на юмористический стимул повышает креативность мышления. Даже если его действие ограниченно, заразительный эффект юмора - отличный способ повы­ сить сплоченность группы, что, в свою очередь, играет важную роль в творчестве. Исследователь в области кошитивной психологии и творчества Бет Нам (Beth обнаружила, что шутки могут служить бессознательным триггером для Nam) озарения 2 • Было показано, что понимание юмора вызывает усиленную активацию областей мозга, ответственных за язык и семантику, а также височных и пре­ фроптальных областей обоих полушарий - тех же зон, которые используются в развитии способности к озарению. Заходят, значит, два байта в бар. Байт 11111111 спрашивает у байта 11101111: «Что-то ты неважно выглядишь. Ты не заболел?~.> А второй байт отвечает: «Да нет, чувак, я просто немного не в духе,> 3 • Улавливаете? Нет? Авнер Зив, помнится, писал также о качестве шуток, которое тоже много значит: возможно, проблема в этом. По-настоящему смешные шутки (оставлю их профессиональным коми­ кам) смешны, потому что они передают неожиданный, но логичный элемент, имеющий отношение к счастливой случайности и творческому озарению. 1 2 3 Avncr Ziv. Facilitating cffccts of humor оп crcativity. Journal of Educational Psychology, 1976. Beth Nam. Hacking the creative rnind: An insight priming tool to facilitatc crcativc proЬlcm­ solving. Creativity and Cognition, 2021. В оригинале игра слов. I'm just fecling а Ьit off означает «я немного нс в духе~, но также «у меня нс хватает одного бита~. - Примеч. пер.
6.7. О веселье 197 6.7 .1. Ваnяние дурака Творчество ради творчества (как мы убедились в главе S) - прекрасный способ чему-то научиться, просто получая удовольствие, дурачась. Озарение очень желательно, но оно пе является целью. Мне поправилось, как один пользова­ тель Mastodon 1 па сервере weirder.earth выразил энтузиазм по поводу <1просто делать, и все>->: Думаю, одна из лучших идей, которые нужно держать в голове, - <mрова­ литься в кроличью нору». Когда вас что-то увлекает - падайте в кроличью нору. Так вы создадите свои фантастические эмуляторы, языки для забавы, крутую графику и получите удовольствие от работы с компьютером, а не будете беспомощно пытаться «оставаться продуктивным». Пойти за Белым Кроликом просто ради того, чтобы пойти за кроликом, без всякой цели, только для удовольствия, может стать отличным способом натолк­ нуться на что-то новое, что повлечет за собой другие интригующие открытия. Именно таким образом я занялся выпечкой хлеба, разработкой для Game Воу, философией, исследованиями в области творчества, коллекционированием перьевых ручек и блоrинrом. Если подумать, именно тогда я чувствовал себя наиболее цельным и живым . Творческая работа - прекрасное средство для выявления интересов, которые, в свою очередь, питают творческий порыв. Есть только одна проблема: для того, чтобы совершить прыжок, требуется мужество, что вновь возвращает нас к концепции роста Кэрол Дуэк. Пойти за кроnиком - не яка побрить 2 Погоня за кроликом во многом напоминает бритье яка: рефакторинг, казалось бы, случайного кода, считающийся необходимым для решения проблемы, которая решает проблему, которая (после нескольких уровней рекурсии) решает реальную проблему, над которой вы работаете. Погнавшись за кроликом, вы неизбежно погонитесь за другими идеями и отвлечетесь; только на этот раз в этом и заключается цель- и нет никакой другой реальной цели, кроме как научиться чему-то и получить удовольствие. Брить яка плохо только в том случае, если вы пытаетесь решить какую-либо проблему. 1 Mastodon - децентрализованная альтернатива всего конфиденциальности . См. 2 Twitter, уделяющая внимание прежде https://joinmastodon.org/. Термин yak shaving (дословно переводится с английского как «бритье яка>->) относится к трудоемким задачам, которые должны быть выполнены перед началом какой-либо серьезной работы , а также может относиться к бесполезной деятельности, которой человек занимается , чтобы избежать реальной работы . Этот термин обязан своим происхождением анимационному мультфильму <<Yak Shaving Day,>, который был по­ пулярен в начале 1990-х годов. - Прuжч . пер.
198 Глава б. Любознательность 6.7 .2. Только для развлечения: задачка с плохим парнем Готовы спуститься в кроличью пору? Вот интересная головоломка. На рис. 6.8 в качестве двух примеров изображены девять человек, среди которых есть <<Хо­ рошие парнИ>>, а есть <<плохие парнИ>>. Нам нужно выявить плохих. Рис. 6.8. Где здесь два плохих парня? Это две разные головоломки. Идея основывается на головоломках LEVEL 5 lnteractive Если рядом с хорошим парнем находится один или более плохих, хороший па­ рень указывает на одного из плохих; в ином случае он скрещивает руки. Плохой парень всегда указывает на кого-либо, певажпо, на хорошего или на плохого. Задача: найти двух плохих парней. Весело, правда? А теперь займемся делом: переведем все это в код и запрограм­ мируем решение. Можно перевести картинку в матрицу 3 х обозначается стрелкой. Две ситуации, изображенные па рис. 3, где указывание 6.8, можно описать следующим образом: 1->5,2->3,3->5 4->2,5->3,б->2 7->5,8->5,9->5 1->2,2->3,3->5 4->2,5->2,6->2 7,8,9 Ожидаемым результатом должны стать два числа, обозначающие плохих парней в каждой ситуации. Не забывайте об удовольствии ради удовольствия - мы ведь просто дурачимся. Работает ли ваш алгоритм со входными данными, по­ казанными па рис. 6.8? Вот и хорошо, по вряд ли это можно назвать сложной задачей, поскольку вы могли жестко прописать результаты. Как насчет того, чтобы написать генератор входных данных? Если ограничить размер матрицы (3 х 3), то это пе составит большого труда.
Итоги 199 Знаете, с чем еще можно повеселиться? Реализовать тот же алгоритм на другом языке программирования. Анализ производительности (замеры времени па ре­ шение 100 головоломок) может открыть возможности для оптимизации. Если после этого вам будет все еще интересно, не помешает создать веб-интерфейс или мобильное приложение, чтобы показать друзьям. Хотите задачку потруднее? Попробуйте поиграть в игры серии Professor Layton на консолях Nintendo (З)DS и Switch, на которых основана эта головоломка. Всегда весело реализовать решение в коде - ну, вы понимаете, просто потому что! Если головоломки вас пе увлекают, всегда можно запрограммировать крутой непредсказуемый лабиринт. Программист Джеймис Бак Qamis Buck) посвятил генерации лабиринтов целую книгу, поскольку «это весело - ну-ка вспомните, когда вам было весело программировать?~. 1 Работая в Basecamp, Бак боролся с выгоранием, а после отпуска длиною в год был уверен, что никогда больше не притронется к коду... пока пе обрел мотивацию вновь, начав программировать всякие дурацкие штуки вроде лабиринтов. Как пишет Бак, «это лучшее лекар­ ство от ступора, выгорания и серых будней программиста~. Программирование для удовольствия - отличный способ снять напряжение, открыть интересные подходы к решению алгоритмических задач и в итоге привнести эти идеи в свою профессиональную деятельность. итоги • Цепляние, в стремлении к безопасности, за то, что хорошо знаешь, не помо­ жет в поиске творческого решения сложной задачи по программированию. • Это же можно сказать о решении сдаться, вывернув мозги наизнанку в безу­ спешных попытках решить какую-нибудь задачу. Помните, что сочетание любозпателыюсти и настойчивости даст гораздо более ощутимый результат. • Дайте себе время поблуждать и поудивляться, вместо того чтобы продираться вперед и браться за следующую задачу. Знаете ли вы, почему данное решение работает так, как работает? • Понятия, введенные в этой книге, без сомнения, могут быть применены вне области программирования. Следуйте за своей любознательностью. Заводите новые интересы. Останавливайтесь время от времени и думайте о том, как новые интересы и возможное решение задачи по программированию могут перекрестно опылить друг друга. • Креативность как навык можно развивать подобно любому знанию. Помни­ те, что когда вы в следующий раз скажете «Я не настолько креативеп~, вы просто-напросто можете еще пе быть креативным. В тот момент, когда вы 1 Jamis Бuck. Бookshclf, Mazcs for programmcrs: Codc your own twisty little passagcs. Pragmatic 2015.
200 Глава б. Любознательность осознаете, что креативность можно развить, вы перейдете от фиксированного мышления к мышлению роста. • Воспринимайте критику как один из способов повышения квалификации. Веселого в этом мало, но только от вас зависит, сможете ли вы извлечь из этого пользу и вырасти ли как креативпый программист. • Не ждите, пока вас вынудят выйти из зоны комфорта. Признайте, что, делая это, вы можете столкнуться с новыми людьми и методиками, которые могут оказаться в вашем инструментарии. В этом может помочь простая смена языка программирования или новое хобби. • Некоторые люди преуспевают в качестве универсалов или, по выражению Эмили Вапник, мулътипотенцишюв. Они, как правило, быстрее обучаются, лучше синтезируют идеи и адаптируются. Возможно, вы примените подход <<Феникс», <<слеш», <<групповые объятия» или Эйнштейна для охвата мно­ жества интересов. • Вы можете отлично показать себя во многих областях. Старайтесь пе огра­ ничивать свой опыт программиста одним языком: чем больше их будет, тем лучше. Узкая специализация может сузить ваш взгляд па вещи. • Лучшим способом поддержания мотивации является комбинированный метод, задействующий как внутренние, так и внешние средства. Осознание того, что мотивирует вас в данный момент (и что пе мотивирует), может по­ мочь сконцентрировать ваши творческие усилия. • Не стоит относиться ко всему слишком серьезно. Программировать должно быть весело! Кадить для удовольствия - прекрасный способ обнаружить интересные подходы, которые могут помочь в решении сложных задач в по­ вседневной работе программиста.
Творческое состояние ума В ЭТОЙ ГЛАВЕ ✓ Поток, или Как прийти в творческое настроение ✓ Глубокая работа или мелкая работа? ✓ Как справляться с прерываниями ✓ Как спровоцировать творческое озарение «Эврика! Эврика! Я нашел!,> - кричал Архимед, бегая обнаженным по улицам Сиракуз. Жители древней Сицилии не возражали: они привыкли закрывать глаза на выходки голых безумцев. Архимед примчался домой, схватил что-то, па чем можно было писать, и принялся за работу - точнее, продолжил работать. Как рассказывает римский писатель Витрувий, царь Гиерон II поручил Архимеду выяснить, действительно ли новая царская корона сделана из чистого золота, не повредив при этом саму корону. Всякий раз, когда Архимед размышлял над сложной задачей, он принимал ванну. На этот раз он заметил, что уровень воды в ваппе поднимался по мере того, как оп погружался в нее. Вытеснит ли и корона, погруженная в воду, количество воды, равное ее объему? Эврика! История возгласа «Эврика!~> в современном пересказе обрела статус легенды. Как пи странно, в трактате Архимеда «О плавающих телах~> нет упоминания о зо­ лотой короне. Мы никогда пе узнаем, правдив ли этот рассказ. Зато достоверно известно, что тот же царь, Гиерон 11, дал Архимеду (рис. 7 .1) задание построить
202 Глава 7. Творческое состояние ума гигантский корабль, способный вместить 600 человек, гимпасию и несколько храмов. Это был настоящий древнегреческий «Титаник1> . Рис. 7.1. Доменико Фепи (Domenico Fetti). «Архимед, или Портрет ученого» «Mon Dieu, c'est (1620). Взято 9а!1> ( <<Боже, из открытых источников вот оно!,>) - воскликнул Анри Пуанкаре двад­ цать столетий спустя, садясь в автобус в пригороде Кутанс, что в Нормандии. В течение нескольких недель Пуанкаре безуспешно пытался решить сложную математическую задачу. Удрученный отсутствием результата, он решил сделать перерыв и отправился на геологическую экскурсию, проводившуюся в окрест­ ностях города Кана, где он тогда проживал. Экскурсионный автобус неожиданно натолкнул его на решение уравнения, но Пуанкаре был человеком логики: в по­ исках объяснения внезапного просветления оп не обращался к божественному
Творческое состояние ума 203 началу. Как истинный ученый, он стремился обнаружить закономерность, по­ этому сформулировал собственную теорию творческого состояния ума и пришел к выводу о том, что акт творчества включает в себя период сознательной работы и следующий за ним период работы бессознательной. После этого требуется еще более сознательная работа, поскольку то, что разум производит бессознательно, является не конечным решением, а скорее намеком на верное направление. Не­ которые из таких намеков могут показаться элегантными и заманчивыми, по при тщательном анализе оборачиваются пустышками. Во время работы над своей теорией творчества Пуанкаре не раз был замечен прогуливающимся по крутым нормандским берегам или по кампусу в Сорбонне, где он позже преподавал. Он был погружен в себя, как и любой другой профес­ сор, - разве что отвлечение Пуанкаре было сознательной попыткой подстегнуть бессознательную обработку сознательного труда. Именно в таком состоянии чередующихся раздумий и бездумья он приходил к сложным доказательствам, идеям и тезисам об арифметических преобразованиях геометрии. «Надо же, как летит время!» - заметил Филип, услышав урчание в желудке своего брата-близнеца Эндрю. Братья Оливер сами не заметили, как снова за­ работались допоздна, поглощенные программированием своей очередной видео­ игры Fantasy World Dizzy. Третья игра из серии Dizzy (рис. 7.2) была выпущена компанией Codemasters в октябре 1989 года, через шесть недель после того, как близнецы написали первую строку кода. Культовый британский яйцеголовый персонаж был вначале нарисован в пере­ рыве между созданием различных вариантов анимации для другой игры, Ghost Hunters. Филип пытался выжать максимальное количество выражений лица из ограниченного набора спрайтов 24 х 32 пикселей. Для рук и ног не было места, поэтому пришлось использовать топорные красные боксерские перчатки. Удов­ летворенный результатом, Филип спрятал персонажа подальше и продолжил разрабатывать Ghost Hunters. Через несколько месяцев близнецы Оливер придумали Dizzy, уникальную смесь аркады и приключений, сразу ставшую бестселлером среди игр для Amstrad ZX Spectrum. В общей сложности за пять лет Филип и Эндрю выпустили 25 игр для Amstrad, 17 - для Spectrum и 11 - для NES, чего оказалось достаточ­ СРС и но, чтобы попасть в Книгу рекордов Гиннесса в номинации <,Самые плодовитые разработчики 8-битпых видеоигр>>. Сидя перед компьютером, они полностью погружались в код, и время, казалось, теряло всякий смысл. Тем пе менее па пути к успеху братья то и дело сталкивались с препятствиями. Когда у них заканчивались идеи, они намеренно делали перерывы, во время ко­ торых смотрели телевизионные шоу, играли в другие игры, экспериментировали с редактором спрайтов или читали классические басни и сказки. Мультсериал <<Count Duckula,>, игра Zork, книга <,Philosopher's Quest», сказка <<Джек и бобовый ( <<Jack and the Beanstalk») и игра Gauntlet - все они оказали влияние стебель>> на создание игр серии Dizzy.
204 Рис. Глава 7. Творческое состояние ума 7.2. Игра Dizzy 111: Fantasy World Dizzy на ZX Spectrum 7.1. КАК ПРИЙТИ В ПРАВИЛЬНОЕ ТВОРЧЕСКОЕ НАСТРОЕНИЕ В чем же заключается то главное, что объединяет расслабляющие ванны Архиме­ да, помогавшие ему думать, прозрения Анри Пуанкаре при поездках в автобусе и на прогулках, а также результативность братьев-близнецов Оливер? Все три примера демонстрируют особое творческое состояние ума: чередование раз­ мышлений и расслабления, сознательной и бессознательной работы, а также роль вдохновляющих перерывов в рутине. был эрудитом и преуспел в математике, физике, инженерном деле и философии. Задействуя в работе свое <,подсозпательное Я>>, Анри Пуанкаре (1854-1912) он мог произвольно вызывать творческое состояние ума 1: «Подсознателыюе я» ни в чем не уступает «сознательному я»; оно не являет­ ся чисто автоматическим; оно способно к интуиции; оно обладает тактом, 1 Henri Poincare. The foundations of scicncc: Scicncc and hypothcsis, thc valuc of sciencc, sciencc and method. Reissuc cdition. Cambridgc University Prcss, 2014.
7.2. Поток глубокой работы 205 деликатностью; оно умеет выбирать и предугадывать. Что тут сказать? Предугадывает оно лучше, чем ~сознателЬ1lое я», поскольку преуспевает там, где последнее терпит неудачу. Запершись в своей спальне, превращенной в офис, близнецы Оливер за корот­ кое время успевали многое 1• Как только они сосредоточивались на коде, время, казалось, начинало течь быстрее. А если что-то шло не так, то для того, чтобы снова влиться в творческий поток, требовалось лишь немного подурачиться. Творчество невозможно вне надлежащего состояния ума. Для того чтобы бегать голым по округе и кричать «Эврика!», нужно предпринять сознательные уси­ лия: момент <<Ага!» не наступит без предварительной целенаправленной работы и подготовки сознания к его восприятию. В этой главе мы вернемся к некоторым из понятий, встречавшимся ранее, и объ­ единим их в описание того, что я предпочитаю называть творческим состоянием ума (cгeative state of mind). Разработчики ПО, у которых брали интервью мои коллеги и я, проводили четкое различие между индивидуальным состоянием ума (пребывание в творческом потоке, использование средств повышения про­ дуктивности, моменты «Ага!,>, мысли в душе) и коллективным (влияние окруже­ ния, способствующее свободе и гибкости). Для начала давайте разберемся, что нужно сделать, чтобы потерять контроль над временем, пока вы самозабвенно программируете. 7 .2. ПОТОК ГЛУБОКОЙ РАБОТЫ Приходилось ли вам (не )приятно удивляться скорости, с которой проходит ра­ бочий день? Невыносимой медлительности времени, когда секунды еле ползут, сколько бы вы ни посматривали на часы? А помните ли ослепительную вспышку, когда незаметно пролетает весь день, когда часы кажутся минутами? Все мы бывали в обеих ситуациях. Когда же речь идет о работе, нет ничего страшнее иллюзии того, что время остановилось. 7 .2.1. Оптимаnьное переживание Психолог Михай Чиксентмихайи называет это явление оптималЬ1lьtМ пережи­ ванием (optimal experience), или, другими словами, потоком (flow)2. Проведя интервью с сотнями успешных спортсменов, ученых, бизнесменов, инженеров и мастеров искусств, он заметил, что эти люди были не просто хороши в чем­ то - они преуспевали. И каким-либо образом получали от этого удовольствие. 1 2 В основу этой истории легло интервью Retro Gamer, Retro Gamer Reviews и Voletic. Mihaly Csikszentmihalyi. Flow: The psychology of optimal experience. Harper Perennial Modern Classics, 2008 (Чиксентмихайи М. «Поток: Психология оптимального пере­ живания~>).
206 Глава 7. Творческое состояние ума После конспектирования, анализа и применения статистических методов Чик­ сентмихайи выделил следующие девять принципов потока: • У человека есть четкая цель. • Каждый вид деятельности немедленно сопровождается обратной связью. • Существует баланс между сложностью и умением. • Действие и осознание едины. • Отвлекающие факторы изгоняются из сознания. • Человек не боится потерпеть неудачу. • Самосознание отсутствует, почти или совсем. • Чувство времени затуманивается. • Деятельность становится аутотелической (внутренне обусловленной - про- граммирование ради программирования). За известной работой Чиксентмихайи, посвященной потоку, последовал его интерес к творчеству, и по данным многочисленных исследований, предчувствие его пе обмануло: эти два понятия тесно переплетены. Мы видели следы девяти вышеприведенных принципов в предыдущих главах: принимайте обратную связь от других, преодолевайте сложности, пе унывайте из-за неудач, используйте сосредоточенное мышление, чтобы не отвлекаться, давайте волю любознатель­ ности. Теперь к этому списку можно добавить <<Будьте в потоке1>! Похоже, поток запускает глубокое наслаждение, креативность и ощущение полноты жизни. Чиксентмихайи называет поток ни много ни мало одним из способов придать жизни смысл. Только как этого достичь? Для того чтобы пережить ощущение потока, нужны три вещи: реалистичные цели, умения, со­ ответствующие возможностям для действия, и полная сосредоточенность па деятельности. Если уровень ваших умений превышает сложность задачи, вы будете отвлекаться и скучать. Если деятельность слишком трудна, вы испыта­ ете тревогу или разочарование и бросите ее. Модель потока Чиксептмихайи, описывающая различные психические состояния, сопутствующие потоку, изо­ бражена па рис. 7.3. Были бы вы склонны применить ваши навыки программирования для решения тривиальной задачи? Конечно нет - эта задача была решена уже десяток раз. Это лишь вопрос повторения реализации, который практически не требует творческих способностей. С другой стороны, настоящие трудности взывают к творческому подходу при условии, что ваши творческие навыки находятся на высоте, - а сейчас они уже должны там находиться! Людям нравится с головой окупаться в рабочие задачи. Чиксентмихайи упоминает, что 54% участников находились в состоянии потока на работе и только 18% - в свободное время. Это вовсе не удивительно, учитывая, что
7.2. Поток глубокой работы 207 s ~ С) :с ~ д. +- ' ' Рис. 7.3. -- УРОВЕНЬ МАСТЕРСТВА Высокий уровень мастерства и высокий уровень трудностей приводят к психическому состоянию потока. Меньшие трудности ведут к меньшей удовлетворенности, а более низкий уровень мастерства может вызвать тревогу. Описанные психические состояния были объединены в этой модели потока Михаем Чиксентмихайи свободное время обычно означает время простоя. На работе люди, ощущающие себя умелыми и способными решать сложные задачи, также чувствуют себя более счастливыми, более сильными, более творческими и более удовлетворенными. Чиксе1пмихайи учит нас двум важным вещам: поток можно к01пролировать и он не является уделом лишь великих мастеров и духовных лидеров. Если вы не чув­ ствуете в себе мастерства, вы можете просто начать учиться большему. Но что, если вы не встречаете трудностей? Возможно, тогда настала пора сменить саму работу. Больший поток означает большую креативность. Когда мы спрашивали про­ граммистов, что им нужно, чтобы стать креативными, один из респондентов ответил так: Я креатuвен, если все вокруг идет как надо. Я имею в виду атмосферу - зна­ ете, ощущение того, что вы находитесь в потоке, что больше, так сказать, не нужно думать о том, как что-то сделать. Когда мы попросили его рассказать об этом подробнее, он продолжил: Лично у меня это происходит, когда я могу сосредоточиться на чем-то, один или с кем-то, но только в очень спокойной обстановке, без давящих сроков и без ощущения, что я их вот-вот нарушу.
208 Глава 7. Творческое состояние ума Слишком сильное давление превращает поток в беспокойство и тревоrу. В исследованиях последнего времени обсуждался вопрос <<радостного ис­ следования,>. Был сделан вывод о том, что поток связывает каждое измерение любознательности с креативвостью 1 • Возможно, радостное исследование - это то, что чувствовал Дарвин, когда столкнулся с новыми биологическими вида­ ми на Галапагосских островах. Когда вы в следующий раз посмотрите на часы и удивитесь, куда пропали последние три часа, похлопайте себя по плечу: по­ здравляю, вы пережили поток! УПРАЖНЕНИЕ Когда в последний раз вы чувствовали поток во время программиро­ вания? Что именно доставляло вам удовольствие при выполнении задачи? Этот вопрос можно поставить и наоборот: когда в последний раз вы были не в ударе? Есть ли способ увеличить частоту переживания потока в вашей жизни, поразмыслив хорошенько? 7 .2.2. Уrnубnенная работа Если Чиксентмихайи называет самозабвешюсть потоком, Кэл Ньюпорт (Cal Newport) называет состояние глубокой сосредоточенности уVlубленной работой (deep work) 2 • Углубленная работа крайне важна, когда нам хочется что-то изме­ нить. Ньюпорт, теоретик компьютерных наук и критик продуктивности, делит нашу трудовую деятельность на две группы. Поверхностная работа (shallow деятельность, пе требующая больших когнитивных затрат, задачи ло­ work) - гистическоrо типа. Углубленная работа - деятельность, требующая больших когнитивных затрат, заставляющая нас работать на пределе возможностей. Углубленная работа создает ценность, поверхносшая же улаживает текущие дела. Углубленная работа или поток? Какова разница между углубленной работой и потоком? Занимается ли человек в состоянии потока выполнением когнитивно сложной задачи (да ; см. рис. 7.3), не отвлекаясь (да; см . девять принципов потока)? По мнению Ньюпорта, углубленная работа - это деятельность, хорошо подходящая для состояния потока. Другими словами, углубленная работа не гарантирует поток, но быть в потоке означает работать « глубоко». Поток а глубокая работа - - это полноценный опыт, это та его часть, которая позволяет надолго сосредоточиться. Отвлечение является проблемой, с которой сталкиваются все, кто работа­ ет в информационной отрасли, включая программистов. Из-за отвлечений и прерываний мы решаем «когнитив1юемкие>) задачи так же, как выполняем 1 2 Nicola S. Schutte andjohn М. Malouff. Connections between curiosity, flow and creativity. Personality and Individual Differences, 2020. Ньюпорт К. <<В работу с головой>>. Санкт-Петербург, издательство «Питер>) .
7.2. Поток глубокой работы 209 поверхностную работу. Как вы можете себе представить (а возможно, и стал­ кивались с подобным), это приводит к разрушительным последствиям и для производительности, и для творческого потенциала. Занятость обеспечивает и поверхностная, и углубленная работа, но не стоит путать деятельность с про­ изводительностью или производительность с креативностью. По сути, книга Кэла Ньюпорта «В работу с головой>.> - смесь культурной критики и практических советов, как уменьшить шум и прерывания в окружающей нас среде. Все мы знаем, что большее количество совещаний не решит эту сложную проблему, и хорошо осознаем разрушительную природу пуш-уведомлений, открытых почтовых приложений и стратегического размещения смартфонов на рабочих столах. Только ничего с этим не делаем. Более того, с развитием технологий мы только усугубляем ситуацию. Тем не менее в научных кругах раздаются призывы: «Публикуй или умри!,>, а в промышленных - <<Не про­ изводить - значит не процветать!>.> Ньюпорт пытается пролить свет на этот парадокс рабочей культуры: Способность погружаться в работу становится все более редкой как раз в то время, когда она приобретает все большую ценность для экономики. Следо­ вательно, те немногие, кто сможет выработать в себе это умение и затем сделать его основой своей трудовой жизни, добьются успеха на своем поприще 1. Сосредоточенное мышление, о котором рассказывалось в главе 5, является углу­ бленной работой - если, конечно, вам удастся отсечь все отвлекающие факторы. Каков лучший способ начать осваивать углубленную работу помимо отклю­ чения уведомлений? Ньюпорт рекомендует преобразовать хорошие практики, повышающие концентрацию внимания, в простую привычку. Наблюдательный читатель вряд ли будет удивлен. В главе 6 мы уже выяснили, что сила воли ресурс конечный. Исследования Роя Баумайстера, посвященные силе воли, доказали, что хорошие привычки в итоге погружаются в наше бессознательное, потребляя меньше силы воли и оставляя больше сил для борьбы с надоедливыми отвлекающими факторами. Выполняйте углубленную работу каждый день, превращая ее в привычку, и ста­ райтесь постепенно увеличивать временные интервалы, проведенные в таком сосредоточенном состоянии. Вы и оглянуться не успеете, как напишете книгу! При всей своей банальности поговорка «Что притягивает внимание, то и растет2 >.> верна и даже имеет научное подтверждение, метко выраженное интроспективной писательницей Уинифред Галлахер (Winifred 1 Gallagher) в ее работе <<Rapt>.> 3• Наш Цитата приведена по книге «В работу с головой,>, издательство «Питер>.>, 2017. С. 23. - Примеч. пер. 2 3 В оригинальном издании книги поговорка выглядит так: «What gets your attention is what grows,>. - Примеч. пер. Winifred Gallagher. Rapt: Attention and the focused life. Penguin, 2009.
21 О Глава 7. Творческое состояние ума мозг конструирует мировоззрение на основе того, чему мы уделяем внимание. Галлах ер делает вывод: << Умелое управление вниманием является непременным условием хорошей жизни и ключом к улучшению практически всех аспектов вашего опыта~. Управление вниманием включает в себя творчество. Считался бы Архимед по сей день величайшим ученым и инженером классической античности, если бы его размышления в ванне постоянно прерывали? Нашел бы Анри Пуанкаре доказательство своих теорем, если бы в университете ему не позволяли прово­ дить время, прогуливаясь погруженным в глубокие размышления? Добились бы близнецы Оливер больших успехов, если бы время, которое они тратили на разработку Dizzy, тщательно контролировалось менеджерами? Продолжал бы Томас Эдисон упорные попытки нести свет в массы, если бы его отвлекали кучами бессмысленной административной почты и рассылками? Хватило бы у Линуса Торвальдса времени на разработку и совершенствование операцион­ ной системы Linux, если бы на смену группам новостей comp.os.minix начала 90-х пришли современные навязчивые системы мгновенного обмена сообще­ ниями? Не думаю. 7 .2.3. Уrnубnенная работа и поток в движении Важно ли, что окружает нас при погружении в поток? Наши респонденты из числа инженеров-программистов ответили: <,Да, конечно~. В одном собеседо­ вании респондент сказал, что все сложные задачи он решает в своей машине: <<Часто бывает так, что я обдумываю все в машине, и когда прихожу па работу, остается только постучать на клавиатуре с часок или около того>>. Другие участники пробормотали, что они согласны, предположив, что мыс­ лительная составляющая и есть составляющая творческая, а набор на клави­ атуре - это просто вывод данных. Далее они перешли к обсуждению других видов деятельности, которые могут способствовать творческому состоянию ума: прогулка, душ, плавание в местном крытом бассейне. В одной группе предложили шуточный способ выявлять творческих водителей: <<Машинам позади таких водителей всегда приходится сигналить, когда включается зеленый свет~. Похоже, что теория Пуанкаре о подсознательном творчестве не так далека от истины. В интервью Чиксентмихайи с гениями творчества читается та же мысль: «их автомобиль - это "машина для размышлений", поскольку только за рулем они чувствуют себя достаточно расслабленными, чтобы подумать о проблемах и рассмотреть их с разных точек зрения~ 1• Он продолжает: 1 Как говорится, не пытайтесь повторить это дома. Переводчик считает уместным на­ помнить, что какими бы важными пи казались проблемы, основная задача водителя на дороге - соблюдение правил дорожного движения. - Прим.еч. пер.
7.2. Поток глубокой работы 211 Одшt из 11ашuх собесед11иков сказал, что пример110 раз в месяц, когда его вко- 11ец одолевают заботы, после око11ча11ия рабочего д11я 011 садится в маши11у и пол11очи едет из Чикаго 11а Миссисипи. 011 ставит маши11у, около получаса смотрит 11а реку, а затем отправляется 11азад. До Чикаго 011 добирается уже 11а рассвете. Длителъ11ая поездка действует как терапия, помогающая ему разобраться с эмоцио11алъ11ъ~ми проблемами. Субъективизм рабочеrо пространства Выбор места для творческой мыслительной работы в высшей степени субъективен. Эта мысль может показаться очевидной, но она нуждается в повторении. На одной из прежних работ мне «рекомендовали» увеличить время поездки в оба конца до трех часов. «Это же отличная возможность заняться работой в поезде!» - с энтузиазмом восклицал мой руководитель . Мои протесты не возымели действия, и я послушно согласился . В поезде я так и не создал ничего стоящего, кроме безумного рассказа для На ­ ционального месяца написания романов 1 • В поездках меня укачивает, и работать в тесноте, сидя на крохотном сиденье поезда, мне совсем не нравится . Хуже того, система железнодорожных сообщений в Бельгии не отличается пунктуальностью . Дети, играющие на рельсах, обледеневшие провода, горящие обочины, самоубийцы или просто неисправности - я прошел через все. Творческая работа в поезде - мой личный кошмар. Если вам она по душе - от­ лично! Только не пытайтесь убедить меня начать делать долгие переезды, называя их « продуктивными ». Кэл Ньюпорт и Сет Годин романтизируют длинные перелеты, видя в них идеальную возможность заняться по-настоящему углубленной работой. Вот только пе стоит повышать продуктивность и развивать творческие способно­ сти за счет матушки Земли. Пуанкаре был пе единственным, кто практиковал глубокомысленные прогулки с пулевым углеродным следом. Древнегреческие философы любили рассуждать, думать и прогуливаться одновременно. По правде говоря, опи любили думать и прогуливаться настолько, что назвали в честь этого целую школу - перипатетики, о которой мы говорили в начале главы 3. Прославленный мыслитель эпохи Просвещения Иммануил Кант обрел много знаний о внешнем мире, гуляя по своему родному городу Кенигсбергу (тогда находившемуся в Германии) и пи разу не покидая его пределов. Кант настолько прославился своими регулярными прогулками, что его прозвали <~кенигсбергскими часами,>. 1 NaNoWriMo (National Novel Writing Month), или национальный месяц написания романов, - ежегодный проект, в рамках которого участники - вес, кто желает, - по­ ощряются написать черновик романа длиной нс менее 50 тысяч слов за один месяц (ноябрь). - Примеч. пер.
212 Глава 7. Творческое состояние ума Пожалуй, самым интересным состоянием ума во время прогулки можно назвать состояние ума философа Фридриха Ницше. Он гулял от 8 до 10 часов в день 1, пробираясь через чащу немецкого Черного леса (Шварцвальд) и формулируя мысли, которые позже излагал па бумаге. Его труды, над которыми не властно время, пропитаны философией проrулок 2 : Мы не принадлежим к тем, кто черпает идеи только из книг, под влиянием книг. Это наша привычка - думать на природе: прогуливаясь, прыгая, караб­ каясь, танцуя, предпочтительно в одиночестве в горах или у моря, где даже тропинки полны мысли. Прогулки стали краеугольным камнем его философии. «Сидеть на месте стоящий грех против Святого духа», - - на­ заключает Ницше. Наш современник французский философ Фредерик Грос (Frederic Gros) пишет в своей книге «Marcher, une philosophie» ( «Философия ходьбы») о том, что <<долгая прогулка позволяет общаться с возвышенным» 3 • Прослеживается поразительное сходство с беседами Пуанкаре со своим <<Подсознательным я», и это не случайно! Недавние исследования подтвердили, что ходьба стимулирует творческую генерацию идей во время прогулки и некоторое время после нее. Марили Оп­ пеццо (Marily Oppezzo) и Дэниел Шварц (Daniel L. Schwartz) предполагают, что <,ходьба открывает свободный поток идей» и является прекрасным способом увеличить как творческий потенциал, так и физическую активность 4. С учетом вышесказанного УПРАЖНЕНИЕ ... Сделайте перерыв. Встаньте и прогуляйтесь в одиночестве. Возьмите с собой ручку и листок бумаги. Подумайте о том, что вы недавно прочитали и как можно применить это к вашей повседневной работе программиста. Давайте, я подожду. 7.2.4. Поддержка ходьбы иnи отсутствие таковой Если вы не осмелились попрактиковаться в ходьбе па работе, ничего страшного: скорее всего, вы не одиноки. Работодателям нравится видеть продуктивных ра­ ботников: они получают удовольствие при виде программистов, уткнувшихся сразу в два монитора и щелкающих по оглушительной механической клави­ атуре. <,Ого, как же они, наверное, стараются! Все молодцы, все!,> А вот чего они терпеть не могут, так это сотрудников в режиме творческих размышлений, 1 К растущей одержимости Ницше уединенными прогулками могла иметь отношение прогрессировавшая деменция, приведшая в итоге к сумасшествию. 2 3 4 Friedrich Nietzsche. The gay science: With а preludc in rhymes and an appendix of songs. Vintage, 1974. Frederic Gros. А philosophy of walking. Verso Trade, 2014. Marily Oppezzo and Danicl L. Schwartz. Give your ideas some lcgs: The positive effect of walking оп creative thinking. Joumal of Experimental Psychology: Lcaming, Mcmory, and Cognition, 2014.
7.2. Поток глубокой работы 213 слоняющихся без дела по коридору, или, того хуже, членов команды, которые внезапно исчезают в неизвестном направлении на несколько часов. Печально видеть, что к глубокомысленным прогулкам относятся в основном с подозрением. Даже в моем университете я почти не вижу признаков совре­ менных реинкарнаций Канта или Пуанкаре: ученые завалены разного рода работой, известной также как «бредовая административная работа>.>, как любил выражаться покойный антрополог и анархист Дэвид Гребер (David Graeber) 1. Несколько лет назад мы с одним коллегой работали над тем, чтобы как можно скорее выпустить срочный хотфикс. Это была такая работа, которая требовала «творческих маневров>.>. Мы работали без остановки, не делая перерывов, и в кон­ це концов пришли к приемлемому решению. Похлопав друг друга по плечу, мы решили ненадолго прерваться и поиграть в карты в кафетерии. Через пять минут пас застукал начальник. Он пришел в ярость: три часа дня, а мы имеем наглость играть в карты?! Мы послушно вернулись за свои столы. Наш при­ позднившийся перерыв выставил нас бездельниками, а ведь на самом деле мы работали усерднее (и креативнее), чем обычно. Просто это не соответствовало общепринятым правилам работы. Притворная продуктивность Дэвид Гребер включил в свою книгу «Bullshit jobs» и развлекательные, и тревожные истории о сотрудниках, притворяющихся креативными, чтобы угодить своим на­ чальникам. Например, кто-то установил браузер Lynx, работающий с командной строкой. Со стороны это выглядело так, будто он эксперт, набирающий команды на терминале, а на самом деле он весь день редактировал статьи в Википедии. Слишком многие руководители в технологических компаниях все еще считают программирование «офисной>.> работой, почти не требующей творческой сво­ боды, пусть даже они утверждают, что полностью поддерживают свободу. Если близнецы Оливер чувствовали, что работа не клеится, они смотрели телевизор и играли в другие видеоигры. Это и вдохновляло, и расслабляло одновременно. Как вы думаете, что произошло бы, если бы им приходилось работать в кубиклах и после малейшего перерыва усаживаться назад за «работу>.>? Вот почему независимые производители обычно являются самыми творчески­ ми. Несмотря на то что они тоже работают со сроками и издателями, никто не указывает им, что можно делать, а чего нельзя. Давно признано, что неза­ висимость в значителыюй мере способствует развитию творческих навыков. В семидесятых годах психолог Джой Гилфорд Uoy Guilford) назвал незави­ симость одной из характеристик креативности наряду с любознательностью 1 David Graeber. Bullshit jobs: А theory. Simon & Schuster, 2018 работа. Трактат о распространении бессмысленного труда>.>). (Гребср Д. «Бредовая
Глава 7. Творческое состояние ума 214 и рефлексией 1 • Два десятилетия спустя исследователь творчества Марк Рапко (Mark Runco) отметил положительную корреляцию между независимостью иди­ вергентным мышлением у студентов с высоким IQ2• В каждой из недавних работ па эту тему упоминается либо <<свобода>>, либо «автономия», либо «независимость». В мире разработки ПО большинство сложных задач решается пе за компьютером или в переговорке - это происходит в спортзалах, в машинах и па прогулках. Хотя для реализации решения, конечно, требуется клавиатура. Как усилить поддержку свободы творчества? Пригласите начальника вступить в группу читателей книги «Креативпый программист»! Мы подробнее обсудим влияние корпоративной культуры в разделе 7.5. 7.3. ПРЕРЫВАЙТЕСЬ! В архитектуре компьютера прерывание служит запросом к процессору на останов­ ку выполняемых инструкций для обработки события вместо того, чтобы ждать, пока завершится текушая программа. Например, прерывание последовательного соединения Ох0058 останавливает процессор дящих сетевых данных - Sharp LR35902 для объявления вхо­ при условии, что установлен флаг прерывания. Если обработчик прерывания определен, то процессор временно оценивает эту функ­ цию, после чего возобновляет выполнение инструкций прерванной программы. Творческое состояние ума работает похожим образом. Иной раз наша текущая работа неожиданно прерывается, будь то из-за внутренних идей, которые вне­ запно обретают форму в нашем сознании, или под воздействием множества внешних запросов. Элизабет Гилберт из главы 2 сказала бы, что нужно ловить момент по горячим следам, пока мозг пе принял решение вернуться к предыду­ щей задаче и идея, перервавшая нашу работу, пе потерялась безвозвратно, как показано на рис. 7 .4. Как и процессору, нам необходимо распознать, что поступило прерывание, опре­ делить его тип и источник, решить, что с ним делать, переключиться на другой контекст и в конце концов продолжить прерванную работу. На чем, говорите, я остановился? Внезапные прерывания могут нарушить движение поезда наших мыслей - вплоть до того, что он сойдет с рельсов. Подумайте об этом так: при прерывании операции записи в нетранзакционной реляционной базе данных есть вероятность потери информации. Что может быть хуже в работе со знаниями, чем потерять творческую идею? 1 Joy Р. Guilford. Charactcristics of crcativity. Illinois Statc Officc of thc Supcrintcndcnt of Instruction, 1973. Mark А. Runco. А longitudinal study of cxccptional giftcdncss and creativity. Creativity Rcsearch J ournal, 1999. PuЬ!ic 2
7.3. Прерывайтесь! 215 ---- -- Рис. 7.4. Сокрушительный поток мыслей, иллюстрирующий потенциальную потерю идей Крушение приводит пе только к тому, что разваливается поезд мыслей, а его груз (то есть цепные идеи) рассыпается, но и к необходимости тцательной уборки. Железнодорожные пути завалены обломками. Если вы хотите генерировать больше идей, мусор нужно быстро убирать. Именно это и происходит, когда мы пытаемся переключиться с контекста одной задачи на контекст другой: чтобы настроиться на прежний лад, нужно минут двадцать «поостыть,>. В исследовании, в котором изучалось, как воспринимают продуктивность раз­ работчики ПО, почти все из 379 опрошенных сообщили, что их рабочий день был продуктивен, если задачи завершались без существенных прерываний или переключения контекста 1 • Тем не менее, согласно второй части исследования, включавшей в себя наблюдение, ежедневно случается масса прерываний и пере­ ключений. При творческой работе отрицательная роль эффекта переключения ко1пекста усиливается. Кроме того, переключение внимания с творческой задачи, требующей большего сосредоточения, обходится дороже, чем переключение с задачи рутинной. Каждый разработчик знает, что программирование <<зависит от способности жонглировать сразу многими мелкими подробностями в краткосрочной памя­ ТИ>>, как однажды написал в своем технологическом блоге Джоэл С польски (J oel Spolsky), один из создателей Stack Overflow2 • Когда дело касается прерываний, мы рискуем поставить под удар пе только пашу продуктивность, но и нашу кре­ ативность! В большинстве книг по программированию упоминается негативное влияние прерываний на продуктивность, по умалчивается о креативности, от которой они могут не оставить камня па камне. Возникает вопрос: как можно получше подготовиться к неизбежному крушению поезда? ' Andre N. Mcycr, Thomas Fritz, Gail С. Murphy, and Thomas Zimmcrmann. Softwarc dcvclopcrs' pcrccptions of productivity. ln Proceedings of thc 22nd АСМ SIGSOFT Intcrnational Symposium on Foundations of Software Enginccring, 2014. 2 См. https://www.joelonsoftware.com/2000/04/19/where-do-these-people-get-their-unoriginal-ideas/.
216 Глава 7. Творческое состояние ума 7 .3.1. Осознавать, что прерывания существуют Вышеупомянутое исследование, проведенное Андре Мейером (Andre Meyer) и его коллегами, завершается обсуждением возможностей более эффектив­ ного управления и улучшения труда разработчика, позволяющих достичь тем самым более высоких уровней продуктивности. Исследователи выделили три возможности. Первая возможность - средства ретроспективного анализа. Мониторинг деятельности программистов может выявить закономерности прерываний, которые можно предугадать. Первым шагом всегда является осознание. Сто­ ит попробовать простые и популярные инструменты, такие как приложения Pomodoro, ПО для учета рабочего времени и устройства Fitblt для отслежи­ вания активности. Кухонные таймеры, повыwающие производительность проrраммирования В рамках методики Pomodoro можно использовать обычный кухонный таймер (жела ­ тельно в форме pomodoro, или помидора) для того, чтобы разделять рабочее время на интервалы длительностью примерно 25 минут с перерывами от 5 до 1О минут. После четырех так называемых « помодоро » наступает более долгий перерыв . Эта методика позволяет снизить влияние побочных эффектов прерывания потока и даже пред­ лагает собственные способы справиться с внутренними и внешними прерываниями. Впервые методика была применена в конце восьмидесятых как способ управления временем, но в последнее время завоевала массовую популярность именно среди программистов' . Конечно же, есть и многие другие помидорообразные приложения, помогающие программисту сосредоточиться на работе, причем некоторые даже исключают отвлекающие моменты и отключают соединение с интернетом. Второй возможностью является уменьшение переКJ1ючений контекста. По сло­ вам наших собеседников, быстрое переключение контекста, например чтение электронного письма в ожидании завершения сборки приложения, пе затрагивает продуктивности. Переключение же контекста, требующее перемен в мышлении, обходится гораздо дороже. Мне с трудом верится в это, поскольку в письме, скорее всего, говорится о чем-либо другом, нежели о приложении, над котором вы работаете, а следовательно, для ответа потребуется изменение мышления. Для того чтобы обойти проблему, можно, конечно, пе открывать почту. Или ускорить сборку. Или вообще ничего не собирать. Третья возможность - постановка целей. В сочетании с самоконтролем поста­ новка целей, как было показано ранее, эффективно мотивирует на изменение ' Staffan Notcbcrg, Pomodoro tcchniquc illustratcd: Thc casy way to do morc in lcss timc. Thc Pragmatic Bookshclf, 2009 (Нётсбсрr Ш. «Тайм-менеджмент по помидору•).
7.3. Прерывайтесь! 217 поведения. Однако некоторые участники справедливо замечали, что (корпо­ ративные) цели обычно сопровождаются более строгим контролем и, таким образом, требуют больших, а не меньших накладных расходов. 7 .3.2. Подrотовка к прерываниям Как ни странно, в исследовании не было упомянуто простейшее решение про­ блемы прерываний (помимо их полного исключения) - запишите, что делаете! Если вы видите, что поезд на полном ходу приближается к крушению, постарай­ тесь окинуть взглядом его содержимое, быстро опишите его, а уж после дайте поезду полететь под откос. Не стоит, однако, увлекаться катастрофами. Постоянные крушения расшаты­ вают пути. Исследование показало, что частые прерывания в долгосрочной перспективе пагубно сказываются на оперативной памяти и даже на психи­ ческом здоровье. Исследования и мой личный опыт также подтверждают, что если вас пре­ рвут, вы можете потерять чрезвычайно важную информацию в оперативной памяти. Поэтому возобновить работу будет затруднительно. На чем, говорите, я остановился? Какой тест собирался написать? Какая идея зрела у меня в го­ лове? Как было сказано выше, период прогрева и остывания может длиться до 20 минут! Фелиен Хэрманс посвятила прерываниям и тому, как с ними справляться, целую главу в своей книге «The Programmer's Brain» (см. главу 5). Ее совет прост и эффективен: записывайте. Запишите состояние вашей психики, пре­ жде чем позволить кому-то прервать вас. Оставьте след из хлебных крошек: сбросьте содержимое вашего мозга на экран или на бумагу. Пишите все, о чем думали и что планировали сделать, даже если оно не компилируется. Не за­ морачивайтесь с синтаксисом и пробелами. Так вы вновь настроитесь на работу гораздо быстрее. Проблема с написанными на скорую руку заметками на клейких бумажках заключается в отсутствии контекста. Из главы 2 мы помним, что идеи в вашей системе управления личными знаниями должны быть самоочевидны. Иначе, перечитав заметки через несколько дней, вы точно забудете их смысл, несмотря на все попытки его сохранить. Я совершал эту ошибку раз за разом - быстро записывал несколько ключевых слов, затем переключался на что-то еще, а позже не мог расшифровать записашюе. После того как разберетесь с прерыванием, либо сразу продолжайте работу, либо добавьте достаточный контекст. Совет известных романистов примерно таков же: не заканчивайте день с чистым листом. Если вы закончили главу, напишите несколько предложений для следующей. Поддерживаемое состояние психики даст вам фору на следующий день. Другие советы программистов и писателей мы рассмотрим в главе 8.
218 Глава 7. Творческое состояние ума 7 .3.3. Каких прерываний нужно остереrаться? Не все прерывания одинаково разрушительны для нашего творческого потока. Сообщение в Slack или WhatsApp можно отложить на потом. А вот крики ваше­ го начальника о том, чтобы вы надлежащим образом <<пофиксили~> что-нибудь срочное, наверное, пет. В основном мы рассматриваем прерывания как вн.ешн.ий раздражитель, хотя это далеко пе полная картина. В 2018 году было опубликовано межуниверситетское лонгитюдное исследо­ вание, показавшее, что именно делает некоторые прерывания во время разра­ ботки ПО более разрушительными, чем другие 1 • Помимо очевидных факторов, специфичн.ых для кон.кретн.ой задачи, таких как приоритет, потенциально более вредоносными признаны кон.текстн.ые факторы, например тип прерывания и время дня, когда оно произошло! Даже несмотря па то что респонденты считали внешние прерывания наиболее пагубными для их творческого по­ тока, анализ показал, что еще более разрушительным является добровольное переключение. В другом поведенческом эксперименте исследователи замерили дополнительное время, требуемое для самопрерывания, пристально наблюдая за расширением зрачка. Каждое самопрерывапие занимает примерно секунду. Одна крохотная секунда кажется пренебрежимо малой, по здесь нужно учесть следующее: ис­ следователи измерили в среднем пять прерываний, связанных с тем, чтобы от­ крыть и частично прочитать письмо. Представьте себе, сколько потенциально творческих минут теряется каждый рабочий день! УПРАЖНЕНИЕ Во время следующего часового сеанса программирования следите за количеством прерываний, ведя их подсчет на листе бумаги. Внутренние и внешние прерывания отмечайте отдельно. Старайтесь честно записывать все самопрерывапия. Повторите упражнение несколько раз, например, утром и днем в понедельник и втор­ ник. О чем говорят результаты? Удивили ли они вас? Когда вам удалось выполнить наибольший объем творческой работы? Снижение числа самопрерываний требует силы воли, о чем было рассказано в главе 6. Конечно, когда ум блуждает, возможно, настало время для перерыва, если только вы не делали его две минуты назад, - в этом случае расширение горизонтов может сотворить чудо. Не все прерывания стоит расценивать как вредные. Когда плодовитый социолог Никлас Лумап, с которым мы встречались в главе 2, чувствовал, что оп в тупике, оп переключался на контекст чего-то другого, над чем работал помимо первой 1 Zahra Shakeri, Hossein Abad, Oliver Karras, Kurt Schneider, Ken Barker, and Mike Bauer. Task interruption. In Software development projects: What makes some interruptions more disruptive than others? Proceedings of the 22nd International Conference on Evaluation and Assessment in Software Engineering, 2018.
7.3. Прерывайтесь! 219 темы. Луман всегда <sдержал горячими несколько утюгов~ 1 ; эта стратегия уве­ личивала вероятность перекрестного опыления идей из разных областей. Как рассказал один из участников лонгитюдного поведенческого исследования года, намеренное прерывание коллеги, чтобы обменяться идеями, тоже 2018 может рассматриваться как способ повышения продуктивности: Если кто-то работает над тем же проектом, что и я, и мы можем обменяться идеями, такое переключение задач может быть продуктивным. Оно эффек­ тивно также в качестве отработки действий на случай «пожарной тревоги~, например, быстрая приоритизация для устранения ошибок. Было бы, наверное, глупо описывать парное программирование с точки зрения прерываний. Возможно, более интересно рассмотреть пагубное влияние пре­ рываний в зависимости от времени дня. Некоторым разработчикам труднее восстанавливаться днем, другим - утром. Новоrодние rирnянды «Не беспокоить» Работая вместе и решаясь отвлечь кого-то вопросами, всегда непросто принимать во внимание предпочтения, касающиеся времени дня. В предыдущей компании, в которой я работал, мы попробовали ввести личные «сигнальные огни »: если за­ жжен такой огонь, это означает « не беспокоить». Как это ни печально, то, что руководство постоянно игнорировало наши сигналь­ ные огни и подозревало нас в злоупотреблении ими, быстро повергло празднично освещенный офисный пейзаж обратно в серое уныние. 7.3.4. Осознанность повышает сосредоточенность Сражение самопрерываний и силы воли кажется подвигом, достойным Супер­ мена. Не бойтесь. Во время исследования блуждания ума, описанного в главе 5, Джонатан Скулер обнаружил, что концентрация внимания сродни силе воли: это мышца, которую можно тренировать. Самый простой способ сделать это - при­ менить очень старый и обманчиво простой фокус под названием <sосознанпость~. Наши результаты позволяют предположить, что тренировка концентрации внимания может являться ключом к развитию когнитивных навыков, которые до недавнего времени считались неизменными. Таким образом, имеются основа­ ния для оптимизма по поводу блуждания ума: оказывается, многие из его задо­ кументированных последствий в отношении восприятия, познания и действия можно устранить, применив давнее противоядие, известное как осознанность. 1 То havc many irons in the fire - английская идиома, означающая «заниматься одно­ врсмс11110 несколькими делами•>, или «быть многостаночником,>. - Примеч. пер.
220 Глава 7. Творческое состояние ума Неужели мы только что связали осознанность и креативность? Повышение сосредоточенности посредством осознанности уже упоминал в Хант в книге <<Pragmatic Thinking and Learning1>. 2008 году Энди Двойственное соотношение между креативностью и осознанностью в последнее время вызывает интерес ученых. Метаапализ 89 опубликованных корреляций показал статистически значимую, но слабую зависимость между этими двумя попятиями 1 • Что это означает? Данный эффект, по-видимому, зависит от измерения креативности ( озарение или дивергентное мышление) и типа осознанности (наблюдение или осознанное действие). В других исследованиях отмечается осторожный оптимизм: практики осознанности улучшают навыки или при­ вычки ума, которые действительно могут поддержать креативность 2 • Обращаю ваше внимание: ударение па слове могут. Если даже стать гуру осознанности, это не гарантирует творческого успеха. Это просто увеличит зону охвата внимания. Для того чтобы вызвать творческое озарение, по-прежнему нужна большая работа. 7.4. ПРОВОЦИРОВАНИЕ ТВОРЧЕСКИХ ОЗАРЕНИЙ Моя жена помешана на криминальных сериалах. Ей правится любое шоу, в котором рассказывается об изощренном убийстве. Лучшая часть каждого эпизода - это кульминация в конце, когда детектива - ну конечно! - посещает вспышка озарения. Оставляя позади своих все еще озадаченных коллег, оп бросается в погоню за преступником и на глазах у всех раскрывает его пrусные козни. Этот сценарий - еще один классический случай романтизации озарения. Мы особенно рекомендуем посмотреть британо-фрапцузский сериал Death in Paradise ( Смерть в раю), в котором юмор соседствует с красивыми карибскими пейзажами. Этот сериал известен внезапными моментами осознания и тем, как подозреваемых вынуждают начать говорить под давлением улик. К этому моменту вы должны быть знакомы со всеми этапами творческого про­ цесса, описанными в главе 5: подготовка, инкубация, озарение, проверка, пред­ ставление/принятие. Архимед, Пуанкаре и близнецы Оливер подчеркивали важ­ ность этапа инкубации, предшествующего озарению. Теория подсознательного творчества Пуанкаре выдвигает на первый план сознательную работу (участие) перед подсознательным озарением: 90% упорного труда, 10% озарения. Наблюдательные зрители криминальных сериалов внимательно следят за ин­ спектором, который медленно, но верно собирает и устанавливает связи между разными уликами (упорный труд). Некоторые улики, казалось бы, пе имеют 1 2 Izabcla Lebuda, Darya L. Zabelina, and Maciej Karwowski. Mind full of idcas: А cta-analysis of the mindfulness-creativity link. Pcrsonality and Individual Differenccs, 2016. Danah Henriksen, Carmen Richardson, and Kyle Shack. Mindfulncss and crcativity: Implications for thinking and learning. Thinking Skills and Crcativity, 2020.
7.4. Провоцирование творческих озарений 221 отношения к делу, пока пе складываются в общую картину. После чередующихся периодов переживаний наступает время финала (озарение). Руководители, помешанные па эффективности рабочего времени, с легкостью поверили бы народной сказке о внезапном озарении, пришедшем ниоткуда, 110 креативпого программиста не так-то легко обмануть. Возможно, наиболее подхо­ дящим здесь будет слово «прогрессивный~. Американский романист Джек Лон­ дон сказал: << Не стоит ждать вдохновения. За пим нужно гоняться с дубинкой~. В следующем разделе мы рассмотрим еще несколько доводов, которые нужно принимать во внимание, охотясь па Жар-птицу по имени вдохновение. 7.4.1. Поодиночке или вместе? Прогулки в раздумьях выдающихся ученых, таких как Ницше, Кант и Пуанка­ ре, по всей видимости, проходили в одиночестве. Делалось ли это намерешю? Сомневаюсь, что многие современники Ницше были готовы гулять с анти­ социальным нарциссистом. С тем пониманием роли общения, которое было достигпуто в главе 3, мы можем собрать воедино преимущества размышлений при ходьбе. Поскольку современная разработка ПО - дело коллективное, пет смысла размышлять над сложными проблемами в одиночку. Даже Аристотель и его последователи любили гулять по Афинам, обсуждая различные философ­ ские вопросы, о чем было рассказано во вступлении к главе вариантов в итоге принесет большее понимание - 3. Какой из двух прогулки с думами в одино­ честве или в хорошей компании? Ответ па этот вопрос, как и па другие вопросы в этой книге, неоднозначен. На­ деюсь, вас еще не утомила вся эта 11еод11оз11ач11ость. Давайте попробуем визуа­ лизировать то, что я имею в виду. На рис. 7.5 изображены пять различных путей представления мыслей. В первом случае - с данными - всё, что у нас есть, это разрозненный набор мелких фрагментов. Отфильтровывая мусор, мы преобразуем данные в информацию: какие-то фрагменты становятся х, какие-то - у. Отлично, это уже полдела! А те­ перь попробуем соединить отдельные фрагменты, используя опыт и практику. Все реляционные базы данных выражают знания с помощью ограничений по внешнему ключу. о о О & oD о о о с о0 ff\POJPE.HИE.J .О.АН Н Ы Е. Рис. 7.5. Эволюция Основано на идеях СЕ Щ МУДРОСТЬ на первый взгляд разрозненных данных в понимание и мудрость. Gapingvoid Culture Design Group
Глава 7. Творческое состояние ума 222 Однако отношения на данный момеш носят очевидный характер: родитель - ре­ бенок. Когда же мы достигаем прозрения, у нас устанавливаются инновационные связи между, казалось бы, несвязанными фрагментами информации. Наконец, когда путь от одного узла прозрения к другому обретает смысл, к нам при.ходит истинная мудрость. Впервые я столкнулся с вариацией этой прекрасной иллюстрациии па сайте группы, помогающей другим организациям преобразовывать корпоративную культуру. Gapingvoid пользуется рисунками для изучения и объяснения процессов корпоративной культуры, а мы можем сделать то же самое для объяснения личного прозрения. Gapingvoid Culture Design Group1, Нужно признать, рисунок завершен лишь частично - сюда могут быть добав­ лены внешние воздействия, начало (почти) с нуля, обратная связь. Вспомним понятие симматезии из главы 3. Обе эти идеи в сочетании с моими скромными навыками рисования определенно привели бы к неразберихе. Тем не менее основной посыл рис. 7.5 остается неизменным. Чтобы обрести новаторское понимание, нам нужно две вещи: 1. Собрать фрагменты. 2. Соединить фрагменты. Соединение фрагментов требует некоего вклада, в том числе от других. В этом, разумеется, помогут оживленные дискуссии. С другой стороны, установление связей - процесс более личный. Поезда наших мыслей устроены по-разному и движутся с разной скоростью по разным рельсам. В этом кроется причина частых неудач сеансов парного программирования. Свести вместе эксперта не всегда лучший способ передать знания. Обычно эксперт на десять шагов опережает новичка и не горит желанием объяснять каждую мельчайшую подробность, известную ему досконально, тогда как новичок выбивается из сил, пытаясь сделать так, чтобы его поезд не отстал, и теряя по дороге драгоценный и новичка - груз. Соединяйте фрагменты вместе с другими людьми. Соединяйте их в одиночку. По меньшей мере, дайте другим жизненное пространство, чтобы опи могли думать и обрабатывать новую информацию па своей частоте. Мне доводилось работать в компаниях, в которых парное программирование было обязательным. Это одновременно обогащало и изматывало. Так много нового за столь короткое время я никогда не узнавал. Только вот настоящее озарение происходило либо до начала рабочего дпя, либо после его окончания. Времени па то, чтобы что-то обдумать, просто не было! Приходилось не отставать, иначе можно было сойти с рельсов. 1 См. https://www.gapingvoid.com/.
7.4. Провоцирование творческих озарений 223 В компаниях, где я работал позже, парное программирование применялось лишь время от времени, что давало возможность для обработки новых знаний в нуж­ ном мне темпе. У такого подхода тоже есть свои недостатки: меньшее ощущение настоящего товарищества, более медленное распространение лучших практик и т. д. Работа, па сто процентов состоящая из парного программирования, раз­ рушительна для интровертов. Я большой сторонник парного программирования, 110 когда речь идет о Креативном Программисте, периодически отдыхать друг от друга определенно полезно для обоих. С тех пор как я занимаюсь академическими исследованиями, я обычно предо­ ставлен сам себе, что является палкой о двух концах. С одной стороны, когда тебе платят за установление связей между фрагментами информации, чувствуешь некоторую свободу, с другой - то и дело пропуская те фрагменты, которые на­ верняка заметил бы мой напарник, я чувствую себя очень одиноким. Помните одного из моих собеседников, который назвал поток и концентрацию одними из качеств творческой личности, свободной от страха перед нависаю­ щими дедлайнами? Так вот, относительно подлинной креативности на работе он был настроен довольно пессимистично: Думаю, проявление истинного творчества на нашей работе затруднителшо ... Для меня это скорее ощущение того, что ты влез в собственную голову, что в данный момент ты находишься в собственном мире. На самом деле он хотел сказать вот что: для творчества нужно устанавливать связи между фрагментами, а для этого требуется личное время ( или даже время простоя). Далее в нашем разговоре он назвал момент <,Ага!~ главным доказа­ тельством креативности, которая, по мнению большинства участников, не про­ является за рабочим столом. Все программисты, с которыми я говорил, возводят па пьедестал 10% озаре­ 90% упорного труда, которые к нему ния. Странно, что никто не упоминает о приводят: ковыряние в коде, копание в непроверенных методах, продирание сквозь неправильно используемые паттерны, расшифровка сообщений об ошибках, обсуждение в сотый раз одной и той же функциональности, просто чтобы быть уверенными, и т. д. Если пе собирать фрагменты, то и связи между ними не будет. 7 .4.2. Сон и озарение Многие выдающиеся творцы относят озарение на счет того, что хорошо вы­ спались ночью. И действительно, многочисленные эмпирические данные под­ тверждают, что (хороший) сон способствует творчеству. Когда мы спим, наш гиппокамп - зона мозга, ответственная за сохранение непрерывности <<Я~ во времени и пространственную навигацию, - обретает свободу действий для игры с впечатлениями, полученными в течение дня, и связывания их между
224 Глава 7. Творческое состояние ума собой. Нейробиолог Мэтr Уилсон (Matt Wilson) говорит об этом как о целена­ правленном действии 1: Во время сна мы пытаемся осмыслить то, что уже усвоили ... Вы обращаетесь к огромной базе данных своего опыта и пытаетесь найти новые связи, а за­ тем построить некую модель для обьясненuя нового опыта. Мудрость - это правила, построенные на основе опыта, которые позволяют нам принимать решения в невиданных доселе ситуациях в будущем. Не обязательно безучастно ждать, пока сон сделает свое дело. Ученый-бихевио­ (Simone Ritter) и ее исследовательская команда обнаружили, что творчеству способствует тайное распыление запахов 2 • Вечером, перед сном, участникам предлагалась задача, требовавшая творческого решения. Во время рист Симона Риттер изложения условий задачи скрытый распылитель распространял некий запах. Во время сна одна группа участников вдыхала тот же запах, другая группа вдыхала другой, а третью оставили без запаха. На следующее утро сразу по про­ буждении все группы представили решение. Первая группа оказалась гораздо более творческой, чем остальные. Ритrер называет это <<реактивацией задачи во время сна>>. Несмотря на то что число участников было весьма ограниченным, а для оценки креативности исполь­ зовался устаревший метод времен шестидесятых годов, посыл здесь достаточно ясен: наш сон может связывать ранее пе соотнесенную информацию, и на это в известной мере можно влиять. Кстати, если вам интересно, победителем стал аромат апельсина с ванилью. Возможно, Декстер был прав, когда в одной из серий мультсериала «Dexter's Декстера~) провозгласил: «Эй, зачем учиться? Laboratory>> ( «Лаборатория У меня есть дар учиться, пока я сплю~. <,Подсознательный дискоrрафический гипнотатор>> внушает мирно спящему обучаемому необходимую французскую лексику (http://mng.bz/D4oV). Следите только за тем, чтобы пластинка не застряла на выражении «Omelette du Fromage~ (омлет с сыром). 7.4.3. Заметка о стимуnяторах Программисты обожают кофе - к такому выводу мы пришли после исследова­ ний в нескольких фокус-группах. Действие кофе на творчество представляется двояким. Первое и, возможно, главное: самого действа вставания для того, чтобы направиться к кофе-машине или кулеру, может быть достаточно для установле­ ния некоей связи, как пояснил один из участников: 1 2 O'Connor М. R. Wayfinding: Thc scicnce andmystcry of how humans navigate the world. St. Martin's Prcss, 2019. Simone М. Ritter, Madelijn Strick, Maartcn W Bos, Rick В. Van Baaren, and А. Р. Dijksterhuis. Good morning crcativity: Task reactivation during slccp cnhances bcncficial effect of slcep on creative performance. Journal of Sleep Research, 2012.
7.5. Корпоративное творческое состояние ума 225 ".кофе - в том смысле, что когда вы делали что-то и забуксовали, и вот вы встаете, идете налить кофе и на пути назад вам на ум приходит что-то, способное решить проблему. Другой участник в шутку сказал, что высокое потребление кофе увеличивает количество посещений уборной, что, в свою очередь, может спровоцировать нечто (помимо собственно процесса облегчения). Выпить кофе - или любой другой напиток - для современных программистов то же, что принять ванну для Архимеда. Однако у кофе есть и другой известный эффект: по выражению одного про­ граммиста, кофеин «заставляет мозг работать быстрее~. Действительно, это увеличивает зону охвата внимания. Однако менее известен тот факт, что слишком много кофе может заблокировать режим рассеянного мышления (см. главу 5), незаменимый инструмент, помогающий нам генерировать оригинальные идеи. В обзоре литературы, посвященной связи между стимуляторами психической деятельности и творчеством в искусстве, Иэн Смит (Iain Smith) приходит к следующему выводу: «Способность психостимуляторов давать толчок кон­ вергентному мышлению является основным механизмом, но за него приходится платить ослаблением мышления дивергентного~ 1 • Для того чтобы разрушить когнитивные стены во время философских дискуссий, древние греки пили разбавленное вино. Для того чтобы излить слова на бума­ гу и оценить свою творческую работу, писатели часто пользуются никотином и кофеином. Однако если дело касается генерации идей и размышлений, лучше, чтобы в голове было ясно. Исследование стимуляторов и их влияния на мозг представляет собой целую область для исследований. Обзор последних результатов выходит за рамки данной книги. Если вас интересуют более подробные сведения, рекомендую книгу Майкла Поллана «How to Change Your Mind~ - личное путешествие по науке о психоделиках. 7.5. КОРПОРАТИВНОЕ ТВОРЧЕСКОЕ СОСТОЯНИЕ УМА Если верить архитекторам, дизайн экстерьера и интерьера корпоративного здания много значит. Если верить нашим собеседникам-программистам, работа в стимулирующем окружении может реально улучшить творческий настрой. В главе 4 мы познакомились с современными технологическими площадка­ ми, которые пытаются воспроизвести кластеры гениев, тщательно планируя 1 Iain Srnith. Psychostirnulants and artistic, rnusical, and literary creativity. International Review ofNeuroblology, 2015.
226 Глава 7. Творческое состояние ума городские и индустриальные сообщества. Наше рабочее окружение влияет на пас больше, чем мы готовы признать. Хотели бы вы, чтобы вас окружали пышные зеленые джунгли, чередующиеся со стратегически размещенными офисными и бильярдными столами, или унылые серые кирпичные стены? Создать офис, который был бы идеальным для каждого, невозможно. Одни программисты предпочитают шумную активность, а другие - уединенность за закрытой дверью. Некоторым даже не нравится играть в бильярд. Давайте выясним, как должно выглядеть идеальное корпоративное творческое состо­ яние ума. 7 .5.1. Креативность и окружающая среда Первое, что приходит на ум при мысли о творческом дизайне окружения, - это противоречие между открытыми пространствами, которые (в теории) способ­ ствуют случайным творческим открытиям, и закрытыми офисными помещени­ ями, способствующими углубленной работе. Открытые пространства должны нарушать структуру и границы, создавая условия для неожиданных коллизий, порождающих хорошие идеи. Многочисленные исследования, в том числе моих коллег и мои собственные, подтвердили, что на практике шум открытых пространств подрывает творческую активность! 1 На другом конце спектра - угнетающая изоляция в крохотных кубиклах. Однако если и открытые и закрытые пространства работают против креативности, то как прикажете архитекторам проектировать рабочее простран­ ство? Единственным решением является компромисс. Кэл Ньюпорт в своей книге <<В работу с головой>.> предлагает сочетать длинные коридоры с кластерами закрытой субсреды. В этом случае встречи для обмена идеями происходят по дороге к кофе-машине, что не мешает течению творче­ ского потока коллег, поглощенных деталями реализации. Пространства для коворкинга могут быть дополнительно разделены па отсеки по усмотрению команды. В качестве примера объединения несочетаемых отделений, находившихся в од­ ном здании с арендаторами другого рода, такими как автосервис и мастерская по ремонту пианино, Ньюпорт приводит здание Buiding 20 Массачусетского технологического института. Пространство можно было по мере необходимости перепланировать, что открывало возможности как для междисциплинарных дискуссий, так и для уединенного сосредоточения. Изначально Building 20 создавалось как временное решение для дополни­ тельных офисных площадей. С тех пор ту же философию проектирования 1 Torkild Thanem, Sara Varlander, and Stcphcn Cummings. Open space = opcn minds? Thc amЬiguities of procreative office design. Intcrnational J ournal of Work Organisation and Emotion, 2011.
7.5. Корпоративное творческое состояние ума 227 демонстрировали и другие здания, спланированные более системно. Ньюпорт цитирует заметки Джона Гертпера Qon Gertner) о проектировании Bell Labs: Пройти такой коридор из конца в конец, не столкнувшись с некоторым ко­ личеством знакомых, проблем, развлечений и новых идей, было практически нереально. Какой-нибудь физик, отправившийся позавтракать в кафетерий, был подобен магниту, катящемуся среди железных опилок. Как подметил один программист, с которым мы беседовали, офисные простран­ ства должны «стимулировать, не мешая, но при этом взывать к воображению~. Фрейд любил окружать себя археологическими находками, которые вдохновляли его. Возможно, без этих безделушек его работа пе была бы столь блестящей. Гибридное пространство для коворкинга главы 5 при - вот что задумал Джопас Солк из создании Института биологических исследований Солка. Архи­ тектор Луис Кап (Louis Kahn) выбрал смелый дизайн экстерьера с изменяемой освещенностью и свободное расположение лабораторий, которое должно было обеспечить перекрестный обмен идеями без постоянного прерывания работы других. Результатом явилось потрясающее произведение современного искус­ ства, изображенное па рис. 7.6. -.. - ,, : . ~· .• ~ Рис. 7.6. .. ~ ·.. ~ .-..... - Внутренний двор института Солка представляет собой зеркальную структуру, в которой находятся грамотно расположенные лаборатории, технические помещения, офисные помещения с видом на Тихий океан и учебные классы. Фотография любезно предоставлена Адамом Бигнеллом (Adam Bignell), Unsplash
228 Глава 7. Творческое состояние ума Каковы же характеристики и конфигурации (гибридного) творческого про­ странства? Исследователи в области поведенческой инженерии Катя Торинг (Katja Thoring) и ее коллеги попытались ответить на этот вопрос, обратившись к литературе. Большинство необычных рабочих окружений наподобие выше­ упомянутого Института Солка, имеют отдельные помещения для различных нужд. Ниже приведена выборка выявленных типов помещений 1: • Личное пространство/место для сосредоточения. • Пространство для совместной работы. • Пространство для экспериментов. • Выставочная зона. • Пространство для презентаций/обмена опытом. • Пространство для отстраненности/отвлечения/расслабления. • Нестандартная/игровая зона. • Виртуальное пространство. • Место для инкубации и рефлексии. Крупные технологические компании любят выставлять напоказ свои ~игро­ вые~ пространства в надежде привлечь новые таланты. Помню собеседование, на котором работодатель с гордостью рассказывал о турнирах на ХЬох в обе­ денный перерыв. Позже я узнал, что обеденные перерывы служили объектом пристального контроля. Я вежливо отказался от предложения. Вот если бы у них был Super Nintendo ... Некоторые компании требуют от своих сотрудников пе только работать, по и жить в кампусе. Интересно, что в статье Торинг пространство для инкуба­ ции вынесено в отдельный пункт. Архимед потребовал бы роскошную ванную комнату. К творческой среде предъявляется масса требований: она должна быть соци­ альной, стимулирующей, увлекательной, комфортной, здоровой, безопасной, удивляющей, гибкой, доступной, игровой, просторной, отдаленной, уютной, благотворной и информативной. Кроме того, она должна способствовать слу­ чайным встречам, отражать индивидуальность компании, быть обильно озеле­ ненной, вызывать удивление своей архитектурой, содержать множество кафе и способствовать демонстрации работы над проектами. Неудивительно, что множество рабочих пространств пе оправдывают таких ожиданий. Эрик Вейнер заявляет прямо: ~творчество 1 - это ответ нашему Katja Thoring, Pieter Desmet, and Petra Badke-Schaub. Creative space: А systcmatic review of the litcrature. In Proceedings of thc Design Society: International Conference on Engincering, 2019.
7.5. Корпоративное творческое состояние ума окружению». (См.главу 229 3.) Пандемия COVID-19 резко изменила эту среду, вы­ двинув на первый план требование удаленной работы. Оказало ли это изменение положительное влияние на креативность, пока неизвестно. Несмотря на то что наше влияние на оформление рабочего пространства, по всей видимости, ограниченно, добавить несколько вдохновляющих объектов, как это делал Фрейд, все же возможно. Мне приходилось видеть, как компании набирают в штат «директоров по счастью» (Chief Happiness Officers), которые отвечают, в частности, за планировку и оформление рабочего пространства. Если в вашей компании есть такие должности - отлично! Подключайтесь к работе, познакомьте их с исследованиями креативности или одолжите им экземпляр этой книги! Если в вашей компании никто пе занимается вопросами дизайна интерьера или благополучия сотрудников, у вас есть скрытая возможность: сде­ лайте шаг вперед и помогите повысить осведомленность о влиянии окружающей среды на творческую результативность. УПРАЖНЕНИЕ Сидя за рабочим столом, будь то дома или в офисе, оглядитесь. Нс кричит ли вес вокруг: <<Скучно!»? Не добавить ли несколько вдохновляющих книг, плакатов или растений? Раскрасьте старую материнскую плату или разберите старый iPod и развесьте на стене. Изготовьте мудборд, полный того, к чему лежит душа и что вдохновляет вас. Как всегда, за другими примерами творчества можно обратиться к интернету. Житие монаха Доннинrа Иногда очень полезно временно поработать в другой обстановке. Один мой коллега удалился в аббатство, чтобы закончить диссертацию. Возможно, на этот шаг его толк­ нуло постоянное присутствие в доме орущих детей, которые то и дело нарушали его творческий поток. Михай Чиксентмихайи написал большую часть книги «Creativity» в уединенной келье с видом на восточную часть озера Кома на севере Италии. Фонд Рокфеллера каждый год отправляет ученых в красивые, но отдаленные места в надежде, что панорам­ ные виды и живой дух истории в руинах неподалеку вызовут нешуточный всплеск творческой активности. Обычно так и происходит. 7 .5.2. Рабочее место как творческая мастерская В глазах непосвященных мастерская художника - просто светлое и неухожен­ ное помещение, захламленное всяким мусором. Главный элемент мастерской - ее контекст - остается невидимым. Как и в случае со всеми общесистемны­ ми явлениями, мастерская сама по себе является частью системы, которая « 1 + 1 = 3,> 1 в 2021 году современные фламандские художники Йонас Ванстеенкисте Oonas определяет и изменяет творческий продукт. На конференции 1 См. https://www.platformwerkplaatsen.nl/nl/werkconferentie-1-1-3.
230 Глава 7. Творческое состояние ума Vansteenkiste) и Йоке Раес Qoke Raes) рассказали о том, как развивалась и об­ ретала форму их работа в отношении к физическому рабочему пространству. Попирающая законы логики формула Бейтсоп из главы 3 «1 + 1 = 3>> отсылает к тому, что Нора называла симматезией: сумма есть нечто большее, чем вместе взятые слагаемые . Каждая мастерская оказывает ощутимое влияние на конечный результат. Она может быть оснащена определенными техническими приспособлениями, на­ пример токарным станком или керамическими материалами. Руководство профессиональных деревообработчиков или скульпторов, присутствующих в мастерской, также будет по-своему влиять на результат. Произведения Йоке Раес возникают из материалов, на которые опа натыкается в своем ателье 1 или вне его, таких как списанные промышленные обрезки или объекты природного происхождения (рис . 7.7). Ее искусство меняется вместе с ее окружением. Кроме того, опа подчеркивает важность счастливой случайности. Ее произведения органично развиваются, иногда благодаря чистой случайности, хотя опа сознательно выбирает, когда отклониться от задуманного пути. По ее мнению, единого рецепта не существует. Рис. 7.7. Беглый взгляд на ателье йоке Раес. Стены украшены ее скульптурами. Множество набросков, инструкций и различных материалов находятся под рукой, и тем не менее остается достаточно света и пространства, для того чтобы дышать, думать и работать 1 Художники и дизайнеры, похоже, предпочитают термин «ателье~, а нс <<Мастерская,>. В контексте данного раздела смысл от этого пс меняется.
7.5. Корпоративное творческое состояние ума 231 Программирование и возня с ~железом~,, также зависят от физических матери­ алов и происходят в физическом контексте. Если бы несколько инженеров из Argonaut Games, о которых рассказывалось во вступлении к главе 6, не увлека­ лись работой с печатными платами, им, возможно, так и не удалось бы провести реверсивное проектирование внутренностей Game Воу. Если предположить, что любознательность и настойчивость в конце концов подвели бы их, но они все равно создали бы игру Х для Game Воу, просто заказав комплектующие, а не изготовив их, - то результат выглядел бы совершенно иначе. Рабочее место программиста оказывает свое влияние на конечный творческий продукт. При этих словах в вашем сознании, возможно, возник романтический образ гаражей, в которых рождались продукты Google и Apple. Историк-ис­ следователь Кэтрин Эрика Макфэдден (Katherine Erica McFadden) посвятила целую докторскую диссертацию тому, что она называет гаражным ремеслом (garagecraft) 1• Такие гаражи во многом служили как творческие мастерские. {Гараж] стал площадкой для игр, экспериментов и коммерциализации техно­ логий, а также для создания новых типов личности и общественных стандар­ тов. То, что мы делаем, и то, как мы это делаем, в конечном счете относится скорее к созданию самих себя, нежели к созданию обьектов. Рассказы о гаражном деле в Кремниевой долине могут звучать как сказки, но и вправду трудно отрицать влияние гаража/мастерской и их содержимого на воображение мастера. Почему бы нам, программистам, не построить для себя мастерскую или ателье, в которые мы можем время от времени удаляться в по­ исках вдохновения? 7 .5.3. Рабочее место как тихая rавань Это же рабочее место должно позволять проводить творческие эксперименты. Один из собеседников в нашем исследовании фокус-групп поясняет: Думаю, это сродни мотивации. Вы создаете основу, в рамках которой можете быть креативным, а это означает, что вам позволено делать ошибки и про­ бовать новое и что вы получаете поддержку и комфортно чувствуете себя в этой среде ... Взять, например, гибкий график работы: я думаю, очень важно, когда не нужно беспокоиться о том, как бы все успеть вовремя; вместо этого я могу спокойно пораскинуть мозгами в машине. Рабочее место, настраивающее на творческий лад, побуждает пробовать, теряться, ошибаться и пробовать снова, не действуя на нервы тиканьем таймера (во всяком случае, слишком громким). Повторюсь, свобода выступает как важный фактор, 1 Katherine Erica McFadden. Garagecraft: Tinkering in the American garage. PhD dissertation, Collcge of Arts and Sciences, University of South Carolina, 2018.
232 Глава 7. Творческое состояние ума определяющий креативность. Конечно, маркерная доска тоже пе помешает а еще лучше, если рисовать можно прямо на стенах (хвала краске IdeaPaint или краскам для меловой доски). Остается открытым вопрос: каков идеальный баланс между ограничениями и свободой? На этой глубокомысленной поте, пожалуй, можно завершить главу. итоги • Если задачи пе решаются за рабочим столом, возможно, пришла пора па время выйти из-за этого самого стола. • Время от времени разгружайте мозг, например, играя в игры, - даже если вы заняты тем, что требует безотлагательного решения. Вы приятно удиви­ тесь тому, как освеженный разум повлияет па ваши творческие способности решать проблемы. Никогда не игнорируйте сигналы своего подсознания. • Договоритесь уважать поток оптимального переживания в программиро­ вании, свойственный каждому, как внутри вашей команды, так и между разными командами. • Подобным же образом проверьте, сможете ли вы выполнять работу, требу­ ющую максимальной концентрации внимания, вне типичной офисной об­ становки. Постарайтесь определить, относятся ли задачи к углубленной или к поверхностной работе, и в соответствии с этим выбирайте рабочее место. • Гибкого, творческого состояния ума легче достичь с помощью компании. От­ стаивайте перед работодателем необходимость поддержки творчества ( того, что связано с окружением и возможностями для гибкости). • Непрерывная, монотонная, неквалифицированная работа приводит к скуке, полностью уничтожающей креативность, а частое обращение к слишком сложным заданиям повышает уровень стресса, снижая при этом творческий результат. Это очевидно, но в запале спринт-сессии все норовят об этом за­ быть. • • Не выходите на прогулку без какого-либо средства для ведения заметок. Мгновенные сообщения и электронные письма - типичные убийцы креатив­ ности. Выбирая систему обмена сообщениями для вашей команды, старайтесь держать в голове, какие сообщения должны доходить до разработчиков сразу, а какие - пет. Эта система должна позволять проверять электронную почту лишь несколько раз в день в заранее заданное время. • Осознание того, что вашу работу часто прерывают ожиданные вопросы ваших коллег, - - как вы сами, так и не­ поможет вам более эффективно на­ правлять творческое внимание. Если прерывания происходят постоянно, постарайтесь сбрасывать содержимое поезда мыслей на некий носитель, прежде чем реагировать на них.
Итоги • 233 Выказывайте интерес к чужой работе, которая может улучшить вашу, даже если она не имеет отношения к программированию. • Украшайте рабочее окружение, не оставляйте его голым и унылым. Иногда именно мелочи имеют решающее значение. • Если темп парного программирования слишком высок, чтобы вы успевали соединять фрагменты информации, старайтесь обрабатывать новые знания в собственном темпе. Ваш напарник наверняка поймет, если вы объясните, как работает ваш мозг. • Креативный Программист - это хорошо отдохнувший программист. Не за­ бывайте о том, как важно крепко спать по ночам.
Творческие методики В ЭТОЙ ГЛАВЕ ✓ Понятие обучения, основанного на искусстве ✓ Заимствование идей: хорошее воровство и плохое воровство ✓ Методики письма, повышающие креативность ✓ Обзор инструментов Креативного Программиста Смертная тень повисла над улицами рушащегося Рима. Антонинова чума, первая известная пандемия в истории, поразила Римскую империю в н. э., выкосив за два десятилетия 15% населения. 170 году Па пика, распространившаяся повсеместно, стала причиной того, что большая часть выживших либо занялась грабежом, либо бежала из города. Император же, которым в то время был Марк Аврелий, предпочел остаться и храбро встретить опасность, показав, что его жизнь представляла не большую цешюсть, чем чья-либо еще. Это являло собой разительный контраст со многими из его предшественников. Перед лицом угрозы жизни, такой как чума, стоическое воспитание Аврелия подсказало ему, что надо взглянуть па ситуацию в целом, а не сужать взгляд до круга собственных проблем. Во время и после разрушительного шествия чумы плохие новости следовали одна за другой. Римские границы постоянно подвергались нападениям со сто­ роны германских племен, медленно, по верно истощавших силы солдат империи и ее денежные запасы. Вместо того чтобы принимать недальновидные меры по
Творческие методики 235 пополнению казны, например повышать налоги и грабить своих ближних, Авре­ лий сделал нечто прямо противоположное. Он окинул взглядом общую картину. Ему стало ясно, что его предшественники накопили множество сверкающих безделушек, которые только собирали пыль. И Аврелий принял смелое решение: 011 попросту продал все сокровища империи на Форуме. Позже он вернул золото тем, кто принес утварь обратно, не принуждая тех, кто не желал этого делать. Его девиз был прост и даже скромен: «Поступай правильно. Остальное не имеет значения. Не трать время па рассуждения о том, каков должен быть хороший человек. Будь ИМ >> . Эти слова исходили от человека, который потерял девять из четырнадцати детей, жил в условиях непрерывной войны и из-за постоянных хворей предположительно сам заразился чумой (рис. 8.1), положив тем самым конец золотому веку Римской империи, длившемуся двести лет. Рис. 8.1. Антонинова чума потребовала от преданного стоика творческих действий, чтобы сохранить финансовое могущество. Можно сказать, что Аврелий устроил очень необычную гаражную распродажу в очень необычное время. Гравюра Этьена Пикара (Etienne Picart) по мотивам картины Пуссена (Poussin) «Чума в Азоте». Фото из открытых источников Восемнадцать столетий спустя в тишине гостиничного номера где-то на запа­ де Соединенных Штатов слышалось шуршание ручки по бумаге. Лысеющий мужчина средних лет делал заметки па маленьком листке. После множества
236 Глава 8. Творческие методики подобных посещений гостиничных номеров разросшаяся кипа листков ляжет в основу классического романа ХХ века «Лолита,>, который русско-американ­ ский писатель Владимир Набоков написал во время путешествий в качестве лепидоптеролога, собирая коллекцию бабочек. Набоков писал пе так, как другие. После того как в его сознании формировалось видение романа, он постепенно набрасывал па каталожных карточках всю его структуру. Это помогало ему преодолеть пресловутый страх чистого листа, или писательского ступора. Новые карточки он заполнял, когда находило вдохнове­ ние, а это могло произойти и во время охоты за бабочками. <<Я пе начинаю свой роман с самого начала, я не дохожу до третьей главы, пока не дойду до четвертой, я не перехожу послушно от одной страницы к другой в последовательном по­ рядке; нет, я выбираю немного здесь и немного там, пока не заполню все пробелы на бумаге», - сказал он в иптервью 1 • Когда дело у Набокова пе шло или когда ему не нравилась какая-то часть по­ вествования, он просто раскладывал связанные между собой карточки па полу 2 , чтобы переставить, добавить или удалить фрагменты текста. После множества перестановок (и итераций) Набоков объединял карточки, пронумеровывая их, и затем диктовал текст своей жене, выступавшей в роли машинистки, коррек­ тора, а иногда и спасительницы забракованных карточек. Подход Набокова к написанию романов, напоминающий решение пазла, обернулся несказанной гибкостью и эффективностью. <<Лаура и ее оригинал>>, последний роман Набокова, так и не был закончен. Через тридцать два года после смерти писателя, в 2009 году, он был опубликован из­ дательством Penguin как «фрагменты романа~. Сто тридцать восемь карточек, тщательно воспроизведенных вместе с помарками и перечеркнутыми словами, можно вырезать и упорядочить так, как заблагорассудится читателю, в истинно набоковском стиле. Это проливает свет на то, как Набоков выстраивал свою работу и как выбирал наиболее подходящие слова для описания персонажей. В начале XXI века командой увлеченных профессионалов в области чело­ веко-ориентированного ПО был разработан «Аgilе-манифест разработки программного обеспечения» ( Manifesto for Agile Software Development ). В нем сказано: <<Команда должна систематически анализировать возможные способы улучшения эффективности и соответственно корректировать стиль своей работы» 3 • В написании манифеста приняли участие некоторые наибо­ лее влиятельные разработчики нашего времени: Роберт Мартин (Robert С. Martin), Джефф Сазерленд Qeff Sutherland), Элистер Кокберн (Alistair Cockburn), Мартин Фаулер, Энди Хант, KeIIТ Бек (Kent Beck), Кеп Швабер (Ken Schwaber) и др. 1 Golla R. Conversations with Vladimir Nabokov. University Press of Mississippi, 2017. 2 Перестановки карточек нередко случались и внутри коробки на заднем сиденье машины по дороге в места столь любимой Набоковым охоты за бабочками. 3 См. http://agilemanifesto.org/.
8.1. О творческом инструментарии 237 Спустя два года Кен Швабер и Джефф Сазерленд уместили свои идеи о «пере­ довом методе разработки продуктов» в одно слово - Scrnm. В основу Scrum был также положен регулярный анализ: «После обзора спринтов и до следующей встречи по планированию спринта Scrum-мacтep проводит с командой сове­ щание, посвященное ретроспективе спринта» 1 • Так появилась ретроспектива спринта. Как проводить ретроспективу спринта? Согласно «Руководству по Scrum» 2 , она должна служить и приятным, и эффективным способом окинуть взглядом проделанную работу и выяснить, что можно улучшить применительно к людям, отношениям, процессам и инструментам - в зависимости от того, что команда вкладывает в понятие «проделанная>>. За прошедшие годы появилось несколь­ ко изобретательных методик, позволяющих заложить основу, собрать данные, сформировать понимание, решить, что делать, и завершить анализ. Полезные рекомендации по проведению приятной и эффективной ретроспективы дают Check-In, Mad Sad Glad («Злой-грустный-довольный>>), Five Whys ( <<Пять по­ Circle о/ Questions ( «Круговые вопросы,>), Temperature Readingи многие чему»), другие методы. 8.1. О ТВОРЧЕСКОМ ИНСТРУМЕНТАРИИ В чем же заключается то главное, что объединяет подход Марка Аврелия к управлению страной в трудные времена; гибкую систему каталожных карточек Владимира Набокова, позволявшую ему легко изменить всю структуру романа; и различные ретроспективные методики в рамках аgilе-разработки? Все три примера демонстрируют использование творческих методик для преодоления трудностей и генерации новаторского взгляда на вещи. Если бы у представлений Марка Аврелия не было той твердой основы, которую дал ему стоицизм, сегодня он не считался бы одним из пятерки хороших римских императоров. Он мог бы править столь же безжалостно, как Нерон или Юлий Цезарь, но предпочел так не поступать: ему были даны инструменты отринуть злобу и лицемерие. «Остерегайтесь стать Цезарем или окраситься в пурпур такое бывает. Храните себя простым, хорошим, чистым, серьезным, неприхот­ ливым, будьте другом справедливости, почитайте бога, будьте добрым, полным привязанности, сильным в своем деле. Изо всех сил старайтесь оставаться тем человеком, каким вас хотела сделать философия>>, - писал он, став старше, в книге «Наедине с собой». Без карточек Владимир Набоков мог и не выйти из писательского ступора. По­ добно системе <<цеттелькастен» Никласа Лумана, карточки Набокова повышали 1 Ken Schwaber. Agile project management with Scrum. Microsoft Press, 2004 (Швабер К. 2 См. https://scrumguides.org/. «Скрам. Гибкое управление продуктом и бизнесом>>).
238 Глава 8. Творческие методики творческий потенциал и продуктивность. Как и Луман, Набоков был великим универсалом, мулътипотенциалом - одновременно романистом, поэтом, пере­ водчиком, профессором литературы и лепидоптерологом. Без творческих инструментов для фасилитации ретроспективы в agile каждая встреча, проводимая раз в две недели, оказывалась бы тем же, чем и любое другое совещание, - скучной и бесполезной тратой времени. Зная один или более из вышеупомянутых методов, можно провести ее с удовольствием и эффективно, к чему должны стремиться все собрания профессионалов. В этом смысле суть данной главы аналогична сути главы 2: для преодоления творческих препятствий необходим базовый уровень технических знаний программирования, а инструментов. Связав эту главу с главой - пе 2, мы совершили полный круг! Вы можете спросить, зачем выносить эту тему в отдельную главу вместо того, чтобы распределить ее по другим главам. В конце концов, разве не являются творческими методиками системы управления личными знаниями, рассеянное мышление и самоограничения? Конечно, являются. Однако в пашем исследова­ нии фокус-групп это понятие возникло как тесно связанная, по отдельная тема. По-моему, программистам нравится говорить о своем творческом инструмента­ рии. Именно этим мы здесь и займемся. Кодинг имеет примечательное сходство и с изобразительным искусством, и с ли­ тературой. С изобразительным искусством - из-за того, что мы создаем нечто из ничего и делаем это в условиях конкретного набора ограничений. В зависимости от степени свободы это может отличаться от перекладывания бумажек или труда па конвейере, где работа определяется внешней практикой. Художник, как и програм­ мист, не обязан подчиняться всеобщим законам физики. Чтобы убедиться в этом, достаточно взглянуть на кажущиеся бесконечными конструкции М. К. Эшера. Заметьте: я написал, что кодинг <<имеет сходство с искусством~,,, а пе «его ре­ зультатом является искусство~,,. Это все еще спорный момент. Возвращаемся к вопросу: что есть искусство? Самовыражение? Воображение? Созидание? Свобода? Как вы думаете? Кодинг похож на писательство, потому что программировать, собственно, и означает писать - в особой структурированной форме, чтобы компилятор понял, что мы хотим сказать, но в то же время чтобы это могли понять также и те, с кем мы работаем, и конечные пользователи. Компилятору все равно, как называется функция buyNewBook; ему важно, чтобы после этого названия шли символы () {. Зато не все равно нам: читабельность важнее «парсибельности~,, и даже производительности. Для любой дисциплины, которую только можно себе представить, существует свой набор методик. Многие из них междисциплинарны. Полезно бывает загля­ нуть за пределы ПО. Однако таких методик просто-напросто слишком много. В последующих разделах мы сузим наше изучение творческих инструментов
8.2. Подборка. Инструментарий художника 239 набором художника, писателя и, конечно, программиста. Это ни в коей мере не исчерпывающий список, но он, я надеюсь, будет достаточным для того, чтобы начать разговор. Методики решения проблем или креативные методики? В каком случае методика решения проблем считается креативной? Задать пять раз вопрос « Почему?»- этодостаточно « креативно »? Ответить поможет беглый взгляд на главу 1. Креативные методики - это приемы и методы, побуждающие к творческим действиям. Помните: творческим является то, что признано таковым вами, а также вашими коллегами. Вот почему мне не хотелось урезать эту главу - да и всю книгу - до размера сборника практических приемов . Некоторые из них пришлись бы кому-то по душе . Некоторые показались бы кому-то слишком надуманными. А кто-то буркнул бы: « Плавали, знаем ». Позвольте лучше этой подборкой креативных методик вдохновить вас на собственную их адаптацию . Мы сосредоточимся на решении проблем, хотя многие креативные методики могут быть использованы в целях терапии или художественного самовыражения. 8.2. ПОДБОРКА. ИНСТРУМЕНТАРИЙ ХУДОЖНИКА Когда я читаю слова «креативные методики,> вне контекста, мне представляется буйная смесь пигментов секретного состава, капельная техника Джексопа Пол­ лока, когда на пол у холста выливается больше краски, чем на собственно холст, и намеренное перетекание цветов акварели один в другой в технике <<Мокрым по мокрому~,. Как бы ни были интригующи эти художественные приемы, ни один из них пе является особешю полезным для Креативного Программиста. Или все-таки является? Не стоит полностью списывать со счетов инструментарий художника. Если постараться, то некоторые практики высокого уровня, методики и привычки могут оказаться цепными и для программиста. Рассмотрим же их подробнее. 8.2.1. Обучение через искусство В попытке воссоздать прогрессивный вариант непрерывного обучения, не преследуя при этом вездесущих экономических целей, исследователь истории культуры Йерун Луттерс Ueroen Lutters) ввел понятие «обучение через искус­ ство~, ( Art- Based Learning) 1• Эта методика позволяет зрителю вступить в диалог - ответить на па- с произведением искусства. Цель обучения через искусство 1 Jcrocn Н. R. Luttcrs. In dc schaduw van hct kunstwcrk: Art-Bascd Lcarning in dc praktijk. PhD thcsis, Faculty of Humanitics, Amstcrdam School for Cultural Analysis, 2012.
Глава 8. Творческие методики 240 сущные жизненные вопросы. Рассматриваемый объект может увлечь нас в при­ ключения внутри пас самих и, как можно надеяться, привести к ответу на наш вопрос. Главную роль в этом подходе играет ассоциативное свободное мышление. Луттерс сравнивает данный метод с художественным самовыражением : «[Об­ учение через искусство] сродни художественному мимезису - неповторимому новому личному творению в результате внутреннего исследования,> . Не слишком ли расплывчатая формулировка? Дело в том, что это типично научный способ подчеркнуть личную значимость метода. Как работает метод обучения через искусство? В общих чертах его можно представить как процесс, проходящий в четыре этапа (рис. Рис. 8.2. 8.2). Четыре этапа обучения через искусство: произведение искусства; возможности; (2) (1) задайте вопрос и выберите (3) поймите дайте произведению искусства высказаться; (4) преобразуйте их в ответ Прежде всего нужно задать (себе) актуальный вопрос . В своей диссертации Луттерс приводит такие примеры: <<Почему я боюсь умереть?~ и «Как мне по­ лучить больше удовольствия от жизни в данный момент?,> После того как вы определитесь с вопросом, нужно выбрать произведение искусства - или же, возможно, оно выберет вас. Это может быть обычная книга, плакат или картина, которая привлекла ваше внимание в тот момент, сложный механизм или по­ сещение концерта. По словам Луттерса, выбор объекта происходит в основном подсознателыю, когда мы о чем-то мечтаем: <<Мы пе вольны использовать объ­ екты только таким образом, иногда они выбирают нас,>. Таким образом, выбор требует не только способности приобретать что-либо, но также, и прежде всего, способности позволять этому быть приобретенным. Затем вы даете произведению искусства высказаться. Зритель становится слуша­ телем. Это можно сделать только при «чтении в упор,> - внимательно наблюдая и будучи открытыми к возможности вдохновения. Это почти вид медитации. Не занимайтесь активным поиском ответа; вместо этого признавайте, отмечайте и преображайтесь. На третьем этапе зритель отстраняется от текущего мира и видит другие воз­ можности благодаря экспрессии произведения искусства. Здесь нужно увидеть и внутренне обсудить эти возможности. На данном этапе произведение искусства перестает быть просто художественным произведением. Надеюсь, вы все еще со мной, - мы почти у цели!
8.2. Подборка. Инструментарий художника Четвертый и последний этап - 241 этап размышления, на котором понимание и смысл преобразуются в личную историю. Обучение через искусство должно выразиться в новой истории, новом знании и предварительном ответе на перво­ начальный вопрос. Очевидно, что обучение через искусство призвано помочь справиться с больши­ ми философскими вопросами в жизни, а не с прагматическими, на которые мы пытаемся ответить, например: «Почему не срабатывает моя точка останова?~ или «Как можно сделать это асинхронным?~. Как мы, программисты, можем интегрировать обучение через искусство в наше творческое решение проблем? Эта методика очень напоминает теорию подсознательного творчества Пуанкаре: поразмышляйте над вопросом, дайте подсознанию сделать свое дело ( с помощью произведения искусства) и выйдите победителем. Возможно, вы используете какое-нибудь вдохновляющее телешоу, басню или историю, как делали близ­ нецы Оливер во время разработки своих игр, или вдохновляющие предметы, которыми любил окружать себя Фрейд. Искусство оказывает терапевтическое действие. Его восприятие может вдохнов­ лять и тем самым помогать преодолевать наши личные препятствия. Некоторые программисты из числа тех, кого мы с коллегами опрашивали в рамках исследо­ ваний креативности, высоко оценивали современные транспортные развязки, подобные той, которая изображена на рис. 8.3, как творческие инженерные чудеса: Собеседник 1. Думаю, что если я восхищаюсь творчеством, то это в основном относится к тому, как все складывается воедино. Простота и, знаете ли, сложность, представшая простой в существующем решении проблемы. Если отвлечься от ПО и IT, то это, например, хорошо сделанная транспортная развязка. Вот это действительно 1(Лассно! Собеседник 2. Раз уж вы об этом заговорили, та новая развязка, как мне ка­ жется, прекрасно решена - пробок больше нет. 1. Точно! Собеседник 2. И это было радикальным преобразованием. Собеседник Известный философ Ален де Боттон ( Alain de Botton) и историк искусства Джон Армстронг Qohn Armstrong) в своей неоднозначной книге «Art as Therapy>> предлагают новый взгляд на искусство, полагая, что оно может быть полезным, актуальным и терапевтическим. <<Великие произведения дают нам подсказки, как справиться с напряжением и растерянностью в повседневной жизни,>, - утверж­ дает де Боттон 1 • Очень похоже на обучение через искусство! Пусть «Молочница~ Яна Вермеера или новая транспортная развязка вряд ли дадут ответ на вопрос с кэшированием, над которым вы бьетесь, по внимательное изучение поможет нам лучше понять и искусство, и самих себя, находя тем самым подсказки, не­ обходимые для успешной ипвалидации кэша. 1 Alain de Botton andjohn Arrnstrong. Art as therapy. Phaidon Prcss, 2013.
Глава 8. Творческие методики 242 Рис. 8.3. Автомобильная развязка в Люммене (Бельгия), реконструированная в 2008-2012 годах. Было построено и перемещено 12 новых мостов (некоторые весили 8000 тонн). Это элегантное инженерное решение вдохновило наших собеседников до и может быть воспринято как нечто прекрасное, подобно произведению искусства. Фото любезно предоставлено Дэйви Говэртом 8.2.2. (Davy Govaert) Крадите как художник <<Крадите как художник,> название провокационного манифеста Остина Кле­ - - не может не 10 вещей, которые он сам она (Austin Кleon), посвященного творчеству в цифровую эпоху, привлечь внимания. В этой книге Клеон перечисляет хотел бы услышать, когда начинал свою творческую карьеру1: 1 1. Крадите как художник. 2. Не ждите, пока разберетесь в себе. Приступайте к делу! 3. Пишите книгу, которую сами хотели бы прочесть. [Готово!] 4. Старайтесь все делать руками . 5. Осознайте важность хобби и побочных проектов. 6. Хорошо делайте свою работу и делитесь ею с людьми. 7. Забудьте о географии 8. Будьте хорошими (весь мир - она больше пе властна над нами. - большая деревня). Austin Кlcon. «Stcal likc an artist: 10 things nobody told you about bcing crcativc>>. Workman, 2012 (Клсон О. «Кради как художник>.>).
8.2. Подборка. Инструментарий художника 243 9. Будьте скучными (лишь так можно выполнить свою работу). 1О. Воспринимайте творчество как умение вычитать. Этот список лег в основу выступления в одном из колледжей Нью-Йорка, кото­ рое быстро стало вирусным в интернете. Можете ли вы найти сходство с семью областями решения творческих задач в этой книге ( см. главу 1)? «Вычитание>> работа в условиях ограничений. «Быть скучным\'> означает быть настойчивым, находиться в потоке и проявлять твердость характера. Одна из иллюстраций в этой книге гласит: «Вам понадобятся: любознательность, доброта, выдержка, готовность выглядеть глупо\'>. Совместная работа является главной темой главы 4. Даже первый пункт, «крадите как художник>>, встречается во вступлении к главе 2, в котором мы увидели, что Kotlin был сознательно построен на пле­ чах существующих гигантов, а Сенека нередко подглядывал в труды Эпикура, своего соперника в философии, и учился на них. В каком-то смысле эта книга появилась па свет таким же образом. По мнению Клеона, есть хорошее воровство, а есть плохое. Хорошее воровство подразумевает уважение, изучение, кражу у многих, воздание должного, преоб­ разование и переделывание. Плохое воровство подразумевает принижение, по­ верхностность, кражу у одного, плагиат, подражательство, халтурную компиляцию. К сожалению, в мире разработки ПО плохое воровство - обычное дело. На­ пример, недавний проект Microsoft GitHub Copilot под названием «Your AI pair programmer\'> ( «Ваш ИИ-партнер по парному программированию\'>) на первый взгляд кажется весьма умной идеей, и скорее всего, так оно и есть. Однако <<Парт­ нер\'> на основе искусственного интеллекта, предлагающий код и целые функции в режиме реального времени, обучается на миллионах строк кода, почерпнутых непосредственно из проектов на Gi tH ub без учета лицензионных соображений. Никаких упоминаний об авторах сделано не было. Copilot, закрытый коммер­ ческий продукт, стал возможен благодаря неэтичному присвоению тысяч часов программирования разработчиков продуктов с открытым исходным кодом и не­ прикрытому игнорированию их лицензий, большинство из которых на самом деле требуют надлежащего указания авторства. В конце концов организация Software Freedom Conservancy выступила с призывом «Give Up GitHuЬ!\'> ( <<От­ кажитесь от GitHuЫ\'> ) 1• Многие разработчики ПО с открытым исходным кодом Codeberg, Source Н ut или экземпляры Gitea на локальном сервере. Вот и еще одна крупная технологическая компания, переходят на другие решения, такие как погнавшаяся за «бесплатными\'> данными. Это случается слишком часто. Мне довелось работать в нескольких компаниях, где зависимости проекта радостно добавлялись (командой yarn add) безо вся­ кой оглядки на файл LICENSING.md. У одного работодателя наблюдательного разработчика просто подняли па смех за замечание о том, что они используют 1 См. https://sfconservancy.org/GiveUpGitHub/.
Глава 8. Творческие методики 244 программы по лицензии GPL, но при этом продают продукт с закрытым исход­ - ным кодом. Плохое воровство, говорит Остин Клеоп. «Да кому какое дело?,> отвечают в компании. << Воровство1> и переделывание лучших элементов часто является необходимым условием для прогресса в некой области. Подобная практика хорошо заметна пе только в искусстве, но и в автомобильной промышлешюсти, разработке ПО и проектировании оборудования. Иногда в результате переделок получаются непримечательные и быстро забываемые подражания оригиналу. Иногда же переделывание ранее немыслимых сочетаний дает свой результат, даже если их части кажутся несовместимыми. Что получится, если скрестить жанр пинбола с жанром шутер? Получится Nitro Ball, аркадпая диковинка 1992 года производства компании Data East, которая, вопреки всему, неплохо продавалась. А если смешать жанр двумерной исследова­ тельской метроидвании 1 с летающим пинболом? Получится Yoku's Island Express (рис. 8.4), <<платформенный приключенческий пинбол1> 2018 года производства Villa Gorilla, в котором вы играете от лица навозного жука. Рис. 8.4. Villa Gorilla каким-то образом умудрились использовать лучшие механики жанров метроидвания и пинбол, получив веселое приключение 1 Метроидвания (англ. Metroidvania; от Metroid + Castlevania) - Yoku's lsland Express жанр компьютерных игр, поджанр приключенческого боевика с набором элементов игровой механики и игровым процессом, сходным с сериями Metroid и Castlevania. - Примеч. пер.
8.2. Подборка. Инструментарий художника УПРАЖНЕНИЕ 245 Когда вы в последний раз s1крали как художник~,? Было это хорошее воровство или плохое воровство? Изучали ли вы материал или лишь поверхностно взглянули, как любят делать мои студенты? (Чего уж там, признаюсь, я и сам так делал!) Возможно, сейчас самое время быстро просмотреть зависимости вашего проекта и прописать их правильно. Плагины для доступа к этой информации есть во многих экосистемах программирования, например в Node.js (license-checker), Go (go-licenses), Gradle (gradle-license-plugin) и Elixir (licensir). Помните только, что не все лицензии совместимы между собой. 8.2.3. Сипа свободноrо времени Каждые семь лет графический дизайнер Штефан Загмайстер (Stefan Sagmeister) покидает свою студию и уходит в отпуск длиною в год. Во время этого длительно­ го отдыха Загмайстер как губка впитывает все, что повстречает. Примечательные культуры, умиротворяющие леса, разрастающиеся города - все впечатления формируют основу его будущих творческих работ. Некоторые места, в которых он побывал, <<спонтанно вызывали удивительное вдохновение~, 1 • Должен признаться, я завидую. Для того чтобы вот так взять отпуск на год только ради впечатлений, нужна финансовая стабильность и немалое мужество. В своем выступлении на конференции TED, посвященном силе свободного времени, Загмайстер проводит различие между работой ( с девяти до пяти ради денег), карьерой (подъем по карьерной лестнице) и призванием (внутренняя самореализация). Он утверждает, что мы часто теряем из виду то, чего действи­ тельно хотим, и что если регулярно брать отпуск для того, чтобы переосмыслить стратегию нашей работы и ощутить вдохновение, мы с большей вероятностью увидим в том, что делаем, призвание, а не работу. Один год отпуска каждые семь лет означает, что вы посвящаете 12,5% време­ ни тому, чему хотите. Много ли это? По сравнению с прежним правилом 20% у Google или правилом 15% у ЗМ это вообще-то меньше! Конечно, это <1свобод­ ное1> время на самом деле никакое не свободное, и дается оно с расчетом на то, что бизнес тоже получит свою выгоду. С 2011 года по мере своего экспоненциального роста Google начала урезать <<свободное время~, - предположительно для того, чтобы сосредоточиться па операционной стороне бизнеса и принять стратегию <<большее количество ресурсов - меньшему числу продуктов~, 2• Быть в творческом отпуске не значит не работать - это значит работать над тем, над чем хочется. Почти всегда это служит триггером для вдохновения на основной работе. Многие писатели, например психолог Дэниел Гилберт (Daniel Gilbert), пишут книги именно в отпуске. Гилберту повезло быть штатным про­ фессором, что, очевидно, делает отпуск гораздо более осуществимым. Загмайстер 1 2 См. htц,s://www.ted.com/talks/stefan_sagmeister_the_power_of_time_off. В оригинале фраза звучит как s1more wood behind fewer arrows,>, то есть больше дерева, чтобы сделать меньше стрел. - Примеч. пер.
246 Глава 8. Творческие методики в отпуске продолжал создавать и продавать произведения искусства. Насколь­ ко мне известно, некоторые психологи закрывают свою практику на четыре месяца, чтобы думать, писать, организовывать выездные семинары и ощущать вдохновение. Сбросить темп, чтобы дать место вдохновению, - одно из глав­ ных преимуществ длительного отдыха. Как свидетельствует Загмайстер, этого может быть достаточно для того, чтобы подпитывать творчество на протяжении многих лет: <1 Все, что мы спроектировали за семь лет, прошедших после первого отпуска, зародилось в том году». Взять творческий отпуск также не означает, что не нужно ничего планировать. Загмайстер рассказывает, что его первый отпускной год был катастрофой. Вместо того чтобы генерировать идеи, он шатался без дела и просто реагировал па все, что попадалось на пути. Лучше было бы подготовить список интересных мест или событий, составить на его основе реальный план и отталкиваться от него. Однако, возможно, главная польза творческого отпуска заключалась в том, что Загмайстер снова влюбился в свою работу. Если раньше она вызывала у него недовольство, то теперь стала истинным призванием. Наши чувства оказывают на нашу работу большее влияние, чем мы готовы признать. Если из-за работы мысль о том, чтобы утром встать с кровати, для вас невыносима, то шансы на столь необходимый творческий прорыв стремятся к нулю. Это может даже служить признаком приближающегося выгорания. Психологические исследования уже несколько десятилетий говорят о том, что эмоции и настроение оказывают глубокое влияние на наши когнитивные способ­ ности, включая креативность и аналитическое решение проблем. Эти выводы не находили подтверждения в исследованиях разработки ПО вплоть до недавнего времени, когда Даниэль Грациотип (Daniel Graziotin) и его исследовательская команда обнаружили, что на самом деле довольные жизнью разработчики решают проблемы более эффективно и более творчески 1 • Участниками исследования стали 42 студента факультета computer science, которые, очевидно, не могут рассматриваться в качестве настоящих разработ­ чиков ПО. В последовавшем затем исследовании команда Грациотинаопросила опытных программистов о последствиях недовольства (или довольства) жизнью для их продуктивности и качества П 0 2 • Программисты, чувствовавшие себя довольными, сообщили о положительных результатах, касавшихся как 317 внешних процессов, так и собственного самоощущения. Наиболее значимыми с точки зрения частоты последствиями ощуще­ ния счастья для самого разработчика являются: высокая когнитивная 1 2 Daniel Graziotin, Xiaofcng Wang, and Pckka Abrahamsson. Нарру software dcvclopcrs solve proЫcms bettcr: Psychological mcasurcments in empirical softwarc engineering. PccrJ, 2014. Danicl Graziotin, Fablan Fagerholm, Xiaofeng Wang, and Pekka Abrahamsson. What happcns when software developcrs are (un)happy. Journal of Systcms and Software, 2018.
8.2. Подборка. Инструментарий художника 247 производительность, высокая мотивация, субьективно позитивная атмо­ сфера, более высокая самодостаточность, высокая вовлеченность в работу и настойчивость, повышенная креативность и более высокая уверенность в себе. Справедливо и обратное утверждение: сниженные творческие способности от­ мечаются как последствия неудовлетворенности. Какой урок можем извлечь из этого мы, программисты? Должны ли мы разом ринуться к боссу проситься в отпуск? Оставлю это на ваше усмотрение. Суть свободного времени в том, чтобы развеяться и ощутить вдохновение (без давле­ ния корпоративного духа), вновь почувствовав то самое детское любопытство, а возможно, и став счастливыми, каковая возможность была рассмотрена нами в главе 6. Среди других, как радикальных, так и не очень способов испытать это можно назвать длительный отпуск, самозанятость, смену команды, неполный рабочий день, работу в другой отрасли, мультипотенциализм, создание блага или написание книги и т. д. Совсем не обязательно уходить именно в «творческий отпуск~ (саббатикал), что звучит навязчиво (а иногда и не представляется возможным). Как выясни­ лось, новый импульс творческой эффективности может придать даже весьма ограниченный по времени отдых, например длинные выходные, когда можно просто побездельничать и полностью отрешиться от работы 1 • Организационные психологи обнаружили, что эмоциональная и физическая отстраненность от работы положительно сказывается на здоровье сотрудников и на их творческих способностях. Свободное время, каким бы ограниченным оно ни было, потра­ ченное на открытие нового и знакомства с людьми, определенно идет на пользу и креативности, и здоровью. Однако в то же время предыдущее исследование показывает, что полное ког­ нитивное отрешение от работы может отрицательно повлиять на обучаемость и творческие способности, поскольку вы оказываетесь без рабочих ресурсов, которые могли бы поддержать творческое мышление ( коллеги, которые всегда под боком, доступные материалы и т. д.). Авторы исследования приходят к выводу о том, что сотрудникам необходимо наличие свободного времени для достижения баланса здоровья и способностей к творческому решению задач. Более подробно мы изучим отношения между самоощущением и креативностью в главе 1 9. Jan de Jonge, Ellen Spoor, SaЬine Sonnentag, Christian Dorrnann, and Marieke van den Tooren. «Take а break?t~ Off-job recovery, job dernands, and job resources as predictors of health, active lcarning, and crcativity. European Journal of Work and Organizational Psychology, 2012.
248 Глава 8. Творческие методики 8.3. ПОДБОРКА. ИНСТРУМЕНТАРИЙ ПИСАТЕЛЯ Знакомство с инструментами писателей, как и с инструментами художников, может оказаться поучительным. Арсенал писателя полнится эффективными методиками, позволяющими преодолевать препятствия, побеждать страх пре­ словутого пустого листа и устанавливать новые связи между идеями. Претерпев небольшие модификации, в руках Креативного Программиста эти инструменты могут превратиться в полноценные методики. Быстрый поиск в интернете по запросу «методики творческого написания>> (creative writing techniques) дает более двух миллиардов результатов, начиная с метафор, риторических вопросов, аллитераций, олицетворений, письма в сво­ бодной форме, диктовки и переписывания, а также структурирования действий и заканчивая развитием сюжета и даже серьезными методами анализа данных для извлечения специфических языковых конструкций среди различных групп пользователей. Эти бесконечные списки писательских методик менее убедительны, чем советы, сформулированные великими авторами. В последующих разделах вашему вни­ манию предлагается подборка таких советов, которые могут помочь улучшить написание кода в творческом плане. Многие инструменты уже знакомы вам по предшествующим главам. 8.3.1. Инструментарий Вnадимира Набокова Набоков и сам всегда был готов дать совет в ходе различных интервью и лекций. В книге «Conversations With Vladimir Nabokov>> под редакцией Роберта Галла эти интервью собраны воедино, чтобы составить обзор жизни и творчества этого русско-американского мастера литературы 1 • Ниже приведены советы, которые показались мне уместными в контексте программирования. Изучайте других художников. Набоков утверждал: «Настоящий писатель должен внимательно изучать творчество соперников, включая Всевышнего. Он должен обладать врожденной способностью не только вновь перемешивать части данного мира, но и вновь создавать его. Чтобы делать это как следует и не изобретать вело­ сипед, художник должен знать этот мир~.. Крадите как художник и как писатель! Вдо:х1tовляйтесь миром вокруг. « Искусство писать - очень бесполезное занятие, если оно не подразумевает прежде всего видеть мир как потенциальную воз­ можность для вымысла>>. Конечно, между написанием художественной лите­ ратуры и реализацией требований бизнеса в ПО существует большая разница, по это не значит, что мы не можем вдохновляться тем, что видим впе мира IТ. Например, почтовую службу, доставляющую нашу корреспонденцию, можно рассматривать как асинхронный брокер сообщений наподобие популярной 1 Robert Golla, Conversations with Vladimir Nabokov. University Prcss of Mississippi, 2017.
8.3. Подборка. Инструментарий писателя 249 программы RabЬirMQ или платформы распределенной потоковой передачи событий Apache Kafka. Каждый писатель - великий обманщик (и чародей). Набоков сравнивал напи­ сание художественных произведений с обманчивой простотой природы . Это сравнение уместно и в программировании: пишите обманчиво простой код, который, говоря словами Набокова, является невероятно сложной иллюзией, но тем пе менее ясно доносящей замысел. Стиль и структура важнее, чем во­ площение великих идей, - эта концепция в последнее время получила широкое распространение среди программистов на Go. Лелейте детали! Карточки Набокова давали ему возможность работать, пере­ рабатывать и снова перерабатывать, что хорошо видно по многочисленным ка­ рандашным помаркам на рис. 8.5. <<Каждая карточка многократно переписана~, - говорил он. Ни одно слово не осталось нетронутым. В программировании, когда модульные тесты удовлетворяют начальным требованиям, нам нужно писать код, переписывать, а потом снова переписывать его. Каждая строка кода, включая те­ сты, может быть многократно переписана, пока тесты не покажут, что требуемая функциональность реализована и код легко читается другими (это улучшает сопровождаемость и возможные переработки в будущем). Красный, зеленый, рефакторинг. Повторить. « Убей своих любимых,>, как любят говорить писатели. Рмс. 8.5. Карточка с фрагментом сюжета, созданная по образцу порой беспорядочного набоковского метода написания романов. Сюжет меняется в зависимости от расположения карточек. Последняя книга Набокова, <<Лаура и ее оригинал», опубликованная после его смерти, снабжена подзаголовком «Роман во фрагментах». В ней читателю предлагается менять сюжет повествования, вырезав репродукции настоящих карточек Набокова!
250 Глава 8. Творческие методики Стиль необходимо развивать. «Стиль пе инструмент, не метод и пе выбор слов. - нечто большее, чем все это. Оп является неотъемлемым компонен­ том или характеристикой личности автора. Таким образом, когда мы говорим о стиле, мы имеем в виду своеобразную природу отдельного художника и то, как она выражается в его творчестве~. Набоков продолжает: <<Нередко в про­ цессе литературной деятельности стиль писателя становится все более точным Стиль и впечатляющим>>. Программирование - это совместная деятельность в большей степени, чем писательство, но именно поэтому я думаю, что Набоков в чем-то прав. Наш (коллективный) стиль программирования не менее важен, чем выбор алгоритмов или фреймворков. Не обязательно начинать с самого начала. Гибкая система карточек давала На­ бокову возможность писать по нескольку предложений там и сям, не начиная с первой главы и не переходя затем послушно ко второй. Мы можем последовать этому совету при реализации сложного кода. Разбив большой фрагмент на от­ дельные «карточки>> с помощью модульных тестов, можно решить проблему без необходимости начинать с начала. 8.3.2. Инструментарий Джеффа Дайера Английский писатель Джефф Дайер (Geoff Dyer), автор романов и публици­ стических произведений, получил множество наград за свои работы. Его советы писателям, которые он дает в многочисленных статьях в газете The Guardian, гораздо прагматичнее, чем рекомендации более эрудированного Набокова. Не пишите в общественных местах. «Это нужно делать в уединении, как и все, что связано с личной гигиеной~. Чувствуется кивок в сторону книги «В работу с головой>> Кэла Ньюпорта: пишите (или программируйте!), закрыв дверь; пере­ рабатывайте, открыв ее. Программирование требует сосредоточения. Идеали­ зированная картина работы в кофейне не способствует сосредоточению. Если верить Дайеру, такое только активно мешает. Постоянно дорабатывайте и расширяйте параметры автокоррекции. Наконец нашелся писатель, открыто выступающий за использование средств повышения производительности, чтобы высвободить место для более творческих мыслей. Развивайте мышечную память для клавиатурных сокращений в автозавершение. Редактор кода - 1D Е. Настройте ваш лучший друг. Ведите дневник. Другие писатели, например бразилец Пауло Коэльо, отрицают его преимущества: «Забудьте о записях. Остается то, что важно, а то, что не важно, уходит~. Когда речь идет о современном программировании, такая точка зрения очень опасна, потому что многие подробности, на которые нас просят обратить внимание, тоже имеют свойство ускользать. Придерживайтесь совета Дайера или перечитайте главу 2. Если что-то оказывается слишком трудным, бросьте это и займитесь чем-нибудь другим. «Написание - это настойчивость, - поясняет Дайер. - Не опускайте
8.3. Подборка. Инструментарий писателя руки1>. Как мы видели в главе 251 7, временно занимаясь чем-то другим, вы получаете дополнительное преимущество в виде подсознательной обработки трудностей. Выработайте привычку. Пишите каждый день. Помните о настойчивости. «Постепешю это станет инстинктом!>. График работы некоторых писателей действительно впечатляет. Стивен Кинг, например, ежедневно пишет по десять тысяч слов. Неудивительно, что он является одним из самых плодовитых аме­ риканских писателей нашего времени. Другие авторы довольствуются глубокой переработкой нескольких предложений. Пусть дело здесь не в количестве, по ежедневные привычки и вправду облегчают путь к творческому успеху. 8.3.3. Инструментарий Книга Энн Ламотт Энн Ламотт (Anne Lamott) «Bird Ьу Bird1> 1 - классический труд, раскры­ вающий боль, сострадание, любовь и страх писателя. По сравнению с советами Набокова и Дайера, советы Ламотт более личные и эмоционально насыщенные, но ничуть не менее важные. Ниже приводится подборка ее советов, которые показались мне особенно провокационными. Напишите свою уникальную историю. <<Все, что с вами случилось, принадлежит вам. Расскажите свои истории1>, - пишет Ламотт. Не бойтесь раскрыть свои питонические навыки как бывший программист на Python, ныне мыкающий­ ся во вселешюй Java. Речь пе о синтаксисе - например, верблюжийРегистр (camelCasing) или змеиный_регистр (snake_casing), - а об изобретательных способах применения личного опыта для решения текущих задач в программи­ ровании. Сделать это можете только вы. Просто сядьте. Вторя совету Дайера о выработке привычки, Ламотт пишет: «Старайтесь садиться каждый день в одно и то же время. Так вы приучите свое бессознательное к творческой активности1>. Вдохновение может прийти не сразу. Не нервничайте. Будьте терпеливы: <<Вы смотрите на потолок, потом на часы, зеваете, потом снова смотрите на бумагу. Затем, возложив пальцы на клавиату­ ру, вы коситесь в сторону образа, формирующегося в вашем сознании, - сцена, местность, персонаж, да что угодно - и пытаетесь успокоить свой разум, чтобы услышать, что хочет сказать этот пейзаж или персонаж, говоря громче, чем другие голоса,>. Во время наших опросов, посвященных творчеству, некоторые программисты говорили, что они «просто садятся и начинают писать>>. Они пе утруждают себя соблюдением синтаксиса и обычно набирают глобальные идеи в псевдокоде, чтобы просто «все это выложить1>. Затем они обращаются за по­ мощью к другим и постепенно преобразуют это в работоспособное решение. Не притворяйтесь. Ваши конечные пользователи сразу заметят это: «Вы долж­ ны исходить из того, что мы, ваши читатели, умны и внимательны, даже если за последние несколько лет мы и сдали позиции. Поэтому если вы попытаетесь 1 Ламотг Э. «Птица за птицей~>.
252 Глава 8. Творческие методики притвориться, мы вас поймаем,>. Ламотт пишет о том, что ваши читатели умны и внимательны. В программировании это не ограничивается конечными поль­ зователями! Ваших нынешних и будущих коллег, которые, скорее всего, будут читать ваш код большее число раз, нежели вы, также не стоит дурачить пустой болтовней. Креативпые программисты учитывают интересы конечного пользо­ вателя, будь ПО игрой, административным веб-приложепием или мобильным приложением для парковки. При возможности встретьтесь с ними, узнайте их и мир, в котором они живут, и тщательно проанализируйте их бизнес-по­ требности. Критически отнеситесь к сыроватыму профилю клиента и такой же бизнес-логике. Только потом пишите код с учетом потребностей клиентов. Обращайтесь за помощью к окружающим. Ламотт приводит в пример увлечен­ ного садовода, который может помочь вам включить в ваше произведение точное описание сада. Опирайтесь на опыт других, чтобы «вдохнуть в слова жизнь,>. Если вам нужно реализовать веб-сервер для потоковой передачи музыки, будет нелишним пообщаться с музыкантами, чтобы узнать о тонах и форме сигнала, что поможет более эффективно кодировать данные. Пишите шаг за шагом ( <<mицу за mицей» ). Иногда не знать, куда направляешься, совершенно нормально. Упрямо сосредоточиваться на цели означает закрывать глаза па все, что встречается на пути. Ламотт цитирует романиста и профессора Э. Л. Доктороу: <<Писать роман - все равно что вести машину ночью. Ты видишь только то, что освещают фары, но так можно проехать всю дорогу». Достаточно просто смотреть немного вперед. Перестаньте гнаться за совершенством. По словам Ламотт, «перфекционизм - это голос угнетателя, врага народа. Он всю жизнь будет сковывать вас и сводить с ума, и оп является главным препятствием, стоящим между вами и дерьмовым первым наброском,>. Опа продолжает: Думаю, в основе перфекционизма лежит навязчивая, вера в то, что если бежать достаточно осторожно, тщательно ступая только по камням, которыми выложена дорожка, то умирать вам не придется. Правда, однако, заl(Jlюча­ ется в том, что вы все равно умрете, а множество людей, которые даже не смотрят под ноги, сделают все лучше вас, да еще и получат от этого массу удовольствия. УПРАЖНЕНИЕ Представьте себе, что новый коллега спрашивает у вас совета, ка­ сающегося написания кода. Что вы ответите? Сошлетесь па руководство по стилю программирования, принятое в команде? Сядете и расскажете историю личного успеха? Передадите ему свой экземпляр книги Роберта Мартина «Чистый код»? Или вместо того, чтобы отвечать сразу, предложите попрограммировать в паре па этой неделе? Наше догматичное <<Я>> нет-нет да затеет переделку и рефакторинг какого-ни­ будь фрагмента кода до тех пор, пока это пе превратится в бесполезное занятие.
8.4. Подборка. Инструментарий программиста 2S3 Не забывайте о своем прагматичном «я~> - пе позволяйте ему бездумно срезать углы. Однако не забывайте и о своем догматичном «я~>: не позволяйте перфек­ ционизму взять верх. Держите в памяти мантру критического мышления из главы 5: креативностъ - это средство, а не цель. 8.4. ПОДБОРКА. ИНСТРУМЕНТАРИЙ ПРОГРАММИСТА Результатом исследований творчества стали свыше сотни различных твор­ ческих методик решения проблем - для анализа окружения, распознавания и выявления проблем, выдвижения гипотез, выработки альтернатив и т. д. Вопрос в том, насколько какая-либо из этих методик применима в области программирования. Разработчикам ПО известно больше творческих методик, чем они готовы при­ знать. Каждые две недели я вижу, как они применяются в ретроспективах, осно­ «Agile Retrospectivesi> Эстер Дерби (Esther Derby) Larsen) 1 или веб-сайтах наподобие https:// funretrospectives. ванных на превосходной книге и Дианы Ларсен ( Diana com. И все же я задаюсь вопросом: почему мы не обращаемся к этим методикам вне переговорки? Чем плохи вариации животворящих ретроспектив, например Triple Nickels, в процессе разработки? Подход Triple Nickels заключается в сле­ дующем. Вначале малые группы проводят мозговой штурм - каждый участник записывает свою идею на листе бумаги. Через пять минут каждый передает свой лист бумаги соседу справа, который за следующие пять минут развивает до­ ставшуюся ему идею, и так до тех пор, пока лист пе вернется к тому, кто написал па нем первым. Это отличный способ быстро выявить ограничения для своей идеи и придать ей силу, не рискуя сразу отбросить менее традиционные идеи. Такие небольшие, но забавные упражнения можно организовывать по случаю, когда программирование заходит в тупик. Преодолевать препятствия нужно на спринтах, а не между ними. В последующих разделах мы выслушаем мнения экспертов относительно тех креативных методик, которые недооценены либо не поняты. Давайте отскоблим с этих инструментов программиста ржавчину и начистим их до блеска. Обещаю, вымачивание в уксусе пе понадобится. 8.4. 1. Инструментарий Анны Бобковска 2019 году исследователь в области разработки ПО Анна Бобковска (Anna Е. Bobkowska) изучила потенциал креативных методик разработки ПО В 1 Esther Derby and Diana Larsen. Agile retrospectives: Making good teams great. Pragmatic Bookshelf, 2006 (Дерби Э., Ларсен Д. «Agile ретроспектива. Как превратить хорошую команду в великую>>).
254 Глава 8. Творческие методики с использованием особого цикла «обучение - применение - обратная связь~ (training - application - feedback) 1• Участники завершили эксперимент с более высокой оценкой креативных методик и отметили, что в сочетании друг с другом эти методики могут принести пользу на практике. Бобковска подробно описала следующие семь методик: • Задавать наивные вопросы, что позволит обнаружить скрытые предположения и неявные знания ( <<Представьте, что на этой странице понадобится только одна форма!~). • Задаваться вопросом <<Что, если ... >> или искать скрытые последствия (<<Что, если я нажму кнопку Submit двадцать раз подряд?~). • Завершать предложения <<Я мог бы быть более креативпым, если бы ... ~, чтобы понять, какие препятствия стоят перед вами лично ( <<Я мог бы быть более креативным, если бы на прогулки с мыслями наедине не смотрели косо~). • Использовать методику Lunette: рассматривать проблему па разных уровнях абстракции (переключаясь между обобщением и специализацией; тщательно разбирая код и окидывая взглядом общую картину). • Использовать реверсивный мозговой штурм: вначале высказать критику, а затем мотивировать к улучшению ( «Что вам не нравится в структуре базы данных?~). • Использовать то, что Бобковска называет Китайским словарем (данная тех­ нология выросла из сопоставления старинной таксономии животных и со­ временных таксономий), методику для создания нетипичных классификаций (создание необычных таксономий проблем, связанных с проектом). • Применять методику «Давайте их пригласим~: использовать паттерны кре­ ативности (воображаемых) экспертов в области творчества ( <<Допустим, мы пригласим Линуса Торвальдса. Что бы он сказал об этом?~). Некоторые из упомянутых методик, скорее всего, хорошо вам знакомы. В со­ беседованиях, которые мы с коллегами проводили при изучении методик креативности для программистов, выражение <<дать волю воображению,> часто упоминалось как прекрасная методика для обнаружения неизвестных ограни­ чений и предположений: Собеседник 1....или вот о нестандартном мышлении. Мы недавно применили - методику, с помощью которой можно выяснить, кое-что в ретроспективе какими способами мы можем сломать систему. Найти, где и что может пойти не так, взглянув на это дело под другим углом, так сказать. 1 Anna Е. Bobkowska. Exploration of crcativity tcchniques in softwarc cnginecring in trainingapplication-feedback cycle. In Workshop оп Entcrprise and Organizational Modeling and Simulation, Springer, 2019.
8.4. Подборка. Инструментарий программиста 255 Собесед1tuк 2. Да, я nocmoя1t1to делаю это в 1tеяв1tом виде при моделирова1tuu. Например, если это peшe1tue, то что произойдет в таком-то случае, сломается ли 01to? Если сломается, то как мы это обработаем? Если 1tem, то переходим к следующему реше1tuю, которое с этим справится. Часто затрагивалась и тема <<очистки луковицы» повторяющимся вопросом <<По­ чему?>> - как в диалогах, так и в монологах. Доказано, что размышления вслух, которые ученые называют само1tаправле1t1tой речью, помогают мозгу работать эффективнее при визуальной обработке информации 1. Если объяснить пробле­ му кому-либо - или чему-либо, - будь то отладка методом резиновой уточки 2 , подходящий рисунок на стене (как в обучении через искусство), ваш кот или коллега, часто решение чудесным образом приходит само собой. Объяснение или даже преподавание заставляет нас сбавить темп и рассмотреть проблему с разных сторон, после чего обычно приходит более глубокое понимание. Большинство методик являются полезными инструментами для выявления и устранения препятствий, связанных с реализацией, однако некоторые из них, такие как реверсивный мозговой штурм и создание атипичных классификаций, могут быть использованы и ранее, в процессе разработки идеи. Бобковска груп­ пирует методики по четырем темам: межлuч1tост1tые 1tавыки (создание команд­ ного духа, устранение личных препятствий), творческие 1tавыки ( ассоциативные навыки и генерация идей), мотивацuо1t1tые 1tавыки (помогающие обнаружить отрицательные стороны) и преодоле1tuе препятствий. Мозrовой wтурм: отрицательные стороны Что может быть более стереотипным, чем сессия мозгового штурма, рекомендован­ ная консультантами по креативности? Это наиболее упоминаемый метод как в на­ ших исследованиях, так и в тех, с которыми я столкнулся при изучении литературы. Тем не менее здесь кое-что нужно прояснить . Множество исследований показало, что мозговой штурм в том виде, в каком мы его знаем, не работает. Во- первых, в одиночестве люди генерируют вдвое больше идей, чем перед доской в пере­ говорке. Во-вторых, соединение фрагментов информации идея, которую мы все ждем, - та самая « большая » тоже лучше удается в одиночестве. В-третьих, как подметил Эрик Вейнер, во многих сессиях мозгового штурма присутствует скрытая повестка, которая «давит на крышку чайника », зажимая действительно великие идеи. В-четвертых, выпаливание идей без разбора влияет на мыслительный про- 1 2 Gary Lupyan and Daniel Swingley. Self-directed speech affects visuaJ search performance. Quarterly Journal of Experimental Psychology, 2012. В мире разработки ПО «отладкой методом резиновой уточки» (rubber duck debugging) называется метод отладки кода с помощью проговаривания проблемы в устном или письменном виде па естественном языке, как бы разговаривая с резиновой уточкой. Метод был предложен в книге «The Pragmatic Programmer». Подробную информацию можно найти по адресу https://rubЬerduckdebugging.com/.
256 Глава 8. Творческие методики цесс других . Всем приходилось видеть этакого раздражающего коллегу, который , качая головой , перебивает нас словами : « Это точно не будет работать» . В - пятых , как уже говорилось в главе 3, кластер гениев действенен только при условии , что умы достаточно разнородны . Означает ли это, что от мозгового штурма нужно отказаться? Ведь есть и другие способы наработки идей - коллективные встречи в атмосфере взаимного уважения, проходящие не в переговорке, а в кофейне . 8.4.2. Инструментарий праrматичноrо проrраммиста Культовая книга «The Pragmatic Programmer>.> 1 рекомендует каждый год изучать новый язык программирования. У каждого языка есть руководство, стиль, пре­ данные последователи и уникальный подход к решению проблем. Чем больше вы знаете языков программирования, тем более вероятно, что вы сможете творчески комбинировать и преобразовывать наработки на одном языке в другой, хотя, как было упомянуто в главе Брюсу Тейту (Bruce Tate) 4, нужно остерегаться межъязыковых коллизий. пе поправились рекомендации Эпди Хапта и Дэйва Томаса. Всего один язык в год? Почему не семь за семь педель? В книге <1Seven Languages in Seven Weeks,> Тейт дает практические советы о том, как быстро изучить новый язык проrраммировапия 2 , основываясь па своем опыте изучения семи языков за два месяца. Успех книги через четыре года вылился в неизбежное продолжение- <1Seven More Languages in Seven Weeks>.>. Книги Тейта охватывают технические аспекты языка и дают читателю представление о том, как сложные задачи решают другие программисты из самых разных сообществ. Умение мыслить в терминах нескольких языков - эффективный способ решения сложных проблем в коде. Представьте, что вы застряли с какой-либо проблемой и не представляете, как двигаться дальше, используя все ту же технологию. Но что, если вы умели бы писать код нajavaScript? Или на Elixir? Или па Kotlin? Легко ли было бы решить проблему, воспользовавшись указателями языка С? Или рефлексивной расширяемостью Ruby? А если бы вы могли выразить ее па функциональном языке? Стало бы проще или сложнее? Как насчет конвейериза­ ции fil ter() и map()? А что там у пас с обнуляемыми типами из других языков? Следует ли выражать бизнес-логику на языке Prolog? Принесут ли пользу пре­ имущества скриптовоrо языка, например Squirrel? Может быть, для выражения логики использовать собственный язык, специфичный для конкретной области? 1 Andy Hunt and Dave Thomas. The Pragmatic Programmer: From journeyman to mastcr. Addison-Wcsley Professional, 1999 (Томас Д., Хант Э. <<Программист-прагматик. Ваш путь к мастерству,,,). 2 Bruce А. Tate. Seven languagcs in sevcn wceks: А pragmatic guide to learning programming languages. Pragmatic Bookshelf, 201 О (Тейт Брюс А. « Семь языков за семь недель. П рак­ тическос руководство по изучению языков программирования,>).
8.4. Подборка. Инструментарий программиста 257 Если что-то не может быть сделано средствами одного языка, попробуйте другой. И еще один. И еще один. Что, уже седьмой? Возможно, хорошим вариантом будет обратное портирование идеи. Возможно, ваша виртуальная машина способна интерпретировать язык: Rubyи Python работают нaJVM и CLR, Clojure- диа­ лект Lisp нaJVM, а код пaJS в наше время выполняется на чем угодно. Многие программисты увязли в рутине и привычном для них образе мышления. Такое туннельное видение активно мешает открывать другие, иногда лучшие, возможности. Интересно, что никто из участников наших фокус-групп не назвал творческой деятельностью смену языка или обдумывание паттернов в других языках. Более того, в ходе наших интервью кто-то назвал попытки разобраться с синтаксисом определенно нетворческим занятием. Что не является творческим, так это когда вы, ну, находитесь в этом режиме синтаксических ошибок - вот это экстрим! Вы все набрали, а теперъ надо это запустить (смех), а вам еще нужно исправить три или четыре запятые, в зависимости от языка, которые не там стоят, и это займет болъше времени. А еще механические ошибки в модульных тестах. И что еще я записал, так это новые технологии, ее.ли вы читаете документацию к чему-то н,овому, как оно работает, как работает этот протокол ... Последнее замечание намекает па базовый уровень технических знаний, необ­ ходимый для творческой деятельности, о чем было рассказано в главе 1. Вдобавок к рекомендации каждый год изучать новый язык книга ~ The Pragmatic ввела в мир разработки ПО понятие <<ката~ из области боевых искусств. Упражнение ката обычно представляет собой фрагмент кода, кото­ рый переписывается раз за разом для развития мышечной памяти и наработки Programmer~ практических навыков, подобно хореографии в боевых искусствах. Самым популярным упражнением ката с кодом, которое я знаю, является, по­ жалуй, игра в боулинг. Когда все вспоминают правила игры, программисты пытаются реализовать их с использованием подхода ~сначала тест>> (test-first). С чего начать? Создать класс Game? Или Player, или ScoreCalculator? Стоит ли использовать наследование, чтобы повторно использовать логику подсчета очков для спэров и страйков? Такое простое на первый взгляд задание может привести к полной неразберихе в коде. Если так случится, пора все бросить и попробовать заново. Ката, в которых я принимал участие, всегда состояли из небольших отдельных упражнений, не имевших ничего общего с кодом, над которым мы работали. Онлайн-платформы для обучения ката, такие как Codewars, ориентированы в основном на улучшение знаний синтаксиса и алгоритмов. Если не зацикли­ ваться на правилах боулинга, концепция ката в программировании может стать эффективным инструментом для быстрой проработки возможных решений в вашем рабочем коде.
258 Глава 8. Творческие методики Разбейтесь на пары и постарайтесь реализовать функцию или се пс­ большое подмножество. Теперь пусть ваш папарник вернет все обратно - как обидно, не правда ли? Работая в одиночку, откатывайте изменения сами и представьте, что УПРАЖНЕНИЕ это код, который написал ваш коллега. Сможете ли вы сделать лучше него? Нс все потеряно: возможности изучены и варианты рассмотрены. Изучены новые способы мышления. Следующая итерация точно будет лучше. 8.4.3. Инструментарий Эмиnи Морхауз В 2015 году Эмили Морхауз ( Emily Morehouse) впервые посетила конференцию PyCon в Монреале (Канада). На ней Гвидо ван Россум (Guido van Rossum) создатель языка Python - объявил о поиске женщин-разработчиков Python Соге (Python Core Developer), поскольку на тот момент таковых пе существовало. Прошел еще год, прежде чем Эмили решилась ответить на это предложение, только она по-прежнему пе имела ни малейшего представления о том, с чего начать и чем па самом деле занимается разработчик ядра. К счастью, ее настав­ ником выступил сам Гвидо 1 • 8.6, исходный код CPython огромен: в нем содержится свыше кода па С и 629 ООО строк кода на Python. С чего же начать рабо­ ту в таком громадном и долгосрочном проекте? Исправлять мелкие ошибки, о которых сообщается на GitHub, смысла пет: самые простые, разумеется, уже Как видно из рис. 500 ООО строк исправлены. Поэтому Эмили под руководством наставника начала изучать ис­ ходный код. В результате опа поняла, как работают другие разработчики ядра, какие паттерны применяются многократно, как принимаются решения и, воз­ можно даже, где требуется что-то улучшить. Изучая чужой исходный код, можно извлечь ценные уроки, которые при­ годятся и в пашей работе, совсем как в манифесте Остина Клеопа <!Крадите как художник~. Спросите совета у любого писателя. Первое, что он скажет: <!Больше читайте,>. Чтобы стать хорошим писателем, вначале нужно стать хорошим читателем. Меня озадачивает, как мало мы, программисты, сознательно читаем и учимся па чужом коде, особешю за пределами нашего уютного кода проекта. В прежних группах чтения были книги о программировании, но кода свободного и открытого ПО (free and open source software, FOSS) пе было никогда. Чтобы стать хорошим программистом, вначале нужно стать хорошим читателем. И возможно, писать тоже нужно. Известный хакер и поборник ПО с открытым исходным кодом Эрик Реймопд (Eric S. Raymond) в своей статье <<How to Become а Hacker,> 2 советует именно писать, а не кодить (см.главу 1, в которой описан пример рабочего про­ цесса написания). 1 Посмотреть основной доклад Эмили Морхауз на конференции PyCon Colombla 2020 о том, как она стала Core Dcvelopcr, можно по адресу https://youtu.be/ТSphDJdco8M. 2 См. http://www.catЬ.org/esr/faqs/hacker-howto.html.
8.4. Подборка. Инструментарий программиста >.."5 КОД, дОБАВЛЕННЫ~ СТРОКИ л5о В ГОдУ КОДА 259 l, '1-. .д .2> .)fP. ()::S С)~ o.1S" о Рис. ~2 ·~ 8.6. График истории to::,;:, 'о~ ~ ,.,,, J).'?_ 'lo год развития кодовой базы CPython с разбивкой по годам. Он дает представление о том, как развивался и разрастался код на протяжении более чем 28 лет. Основан на данных, собранных Пабло-Галиндо Сальгадо Galindo Salgado). Сгенерирован с помощью инструмента git-of-theseus, доступного на GitHub, созданного Эриком Бернардссоном (Erik Bernhardsson) (РаЫо Социальные платформы программирования, такие как GitH ub и GitLab, яв­ FOSS. Многие из ляются хорошим подспорьем в чтении и понимании кода тамошних крупных проектов активно ищут участников. Пусть продираться через неиссякаемый поток проблем и строк кода может быть страшновато, но FOSS - это прекрасный способ отточить свои инструменты креатив- участие в 1юго программиста. Если ваши амбиции столь же серьезны, как намерение Эмили Морхауз стать Python Core Developer, то наличие наставника, который будет проверять, как у вас идут дела, вовсе не является роскошью. Эмили призналась, что без помощи ментора она не справилась бы. Наставник может воссоздать столь необходимый контекст, который в противном случае остался бы вне поля зрения. Отдельные фрагменты кода становятся реликтами, которые никто больше не осмеливается трогать. Почему в этом файле собраны эти странные функции С? Почему не использовать х или у? Без надлежащего документирования эти коллективные знания быстро затеряются во времени.
260 Глава 8. Творческие методики Помимо чтения кода и наличия наставника, Морхауз подчеркивает, как важно заслужить доверие со стороны сообщества разработчиков. Это очень трудоемкий процесс. О том, как добиться сопереживания, почему-то не говорится пи в одном гайде CONTRIBUТING. md. После того как вы успешно вольетесь в сообщество, вам предстоит поддерживать новых участников и общаться с назойливыми незна­ комцами в интернете. Оказывается, у разработчика ядра Python, как и у любого другого разработчика, гораздо больше задач, чем просто писать код. итоги • Принимаясь за решение сложной проблемы, не забывайте время от времени менять инструменты. Не будьте подолгу сосредоточены на чем-то одном - старайтесь охватить проблему в целом с другой точки зрения. • Ухаживайте за инструментами в вашем творческом арсенале. Критически оценивайте и периодически оттачивайте их. Может быть, пришло время выкинуть те, которые вконец затупились? • Восприятие шедевров вне мира технологий может высечь искру идеи и вдох­ новить вас на ее воплощение в коде. Дайте шедеврам высказаться. Когда дело касается творчества, не стоит слушать только себя. • Избегайте принижения, поверхностности и халтурной компиляции идей. Воздавайте должное, изучайте и переделывайте идеи. Крадите как художник, а пе как воришка. • Чешите там, где чешется. Изучение обходных путей - это эффективный способ отточить навыки творческого решения проблем и в перспективе создавать новые продукты. • При написании кода не забывайте о том, что на клавиатуре есть клавиша Иногда вычитание вносит большую ясность, чем сложение. Backspace. • Заложите в свои планы свободное время и периодически уходите в отпуск, чтобы подзарядить батарейки творческого мышления. Изучение новых мето­ дик и знакомство с новыми людьми, выходящие за рамки ваших обязанностей, определенно послужат источниками вдохновения и улучшат вашу работу. • Помните о том, что ваше нынешнее настроение и эмоции положительно либо отрицательно влияют на ваши копштивпые способности и, таким образом, на вашу способность творчески решать проблемы. Не каждый день обязан быть творческим. • Стиль и структура кода не менее важны, чем содержание и функциональная корректность. Излишняя креативность в программировании может привести к затруднениям в поддержке кода. • Если начало окажется трудным, начните с середины, а может быть, даже с конца. Если окажется сложным синтаксис, тогда просто пишите, не обращая
Итоги 261 внимания на синтаксические ошибки. Если вначале вы ухватите основу идеи, вам будет проще реализовать ее на выбранном языке программирования. • Пожалуй, один из самых главных инструментов в творческом арсенале про­ граммиста - редактор кода. Изучите его как следует. Не жалейте времени на то, чтобы повозиться с горячими клавишами и различными настройками. Освоение основ в дальнейшем окупится с лихвой. • При столкновении с трудностями совершенно нормально на время отстра­ ниться от них и перейти к чему-то другому. Возможно, через час или через день решение придет само собой. • Примените на практике знание языков программирования. Если вы хорошо знаете синтаксис передачи сообщений в Ruby, то у вас не возникнет проблем с методами Elixir. Пойдите дальше - напрягите свои лингвистические мыш­ цы и осильте изучение двух новых языков к следующему месяцу! • Испытайте в деле некоторые из понравившихся инструментов ретроспектив1юго мозгового штурма за пределами привычной переговорки. • Обсудите проблемы программирования с родителями, детьми, друзьями-не­ программистами и клиентами. Их взгляд, далекий от технического, может указать на простое решение, которое вы, глядя с колокольни эксперта, упу­ стили ИЗ ВИду. • При организации ката посмотрите, можно ли выделить для упражнений фраг­ менты кода из репозитория исходных кодов текущего проекта. Возможно, эти фрагменты являются лучшими кандидатами для обучения вас и ваших коллег по сравнению с более оторванными от жизни примерами. • Если у вас еще нет наставника, ищите того, кто поможет вам выковать соб­ ственные творческие инструменты.
Итоговые мысли о креативности В ЭТОЙ ГЛАВЕ ✓ Креативность - оттачиваемое, а не предопределенное качество ✓ Различные взгляды на креативность, основанные на опыте ✓ Когда не надо быть креативным ✓ Дополнительное чтение Мы начали наши приключения в мире креативности с идеи о пробуждении вашего внутреннего homo f aber. Гарантирую, что если вы уделите должное в11и­ мание техническим знаниям, общению, ограничениям, критическому мышлению, любозпателыюсти, творческому состоянию ума и творческим методикам, то постепенно будете становиться Креативпым Программистом. И все же впереди вас ждет одно из самых трудных заданий - применение теории на практике. Его вы должны выполнить сами. Преграды па вашем пути будут испытывать па прочность вашу любознательность и настойчивость. Надеюсь, я вдохновил вас на то, чтобы, пе сбавляя оборотов, продолжить двигаться дальше. Мне хотелось бы поблагодарить вас за то, что оставались со мной на протяжении всей нашей исследовательской миссии. Эта была та еще поездочка, по <<лучшее, конечно, впереди>>. Моя работа как писателя, предлагающего новое понимание творческого решения проблем в области разработки ПО, на этом завершена, ваша же в качестве дипломированного Креативного Программиста только начинается.
9.1. Помните: творческой личностью может быть каждый 263 Удачи вам в предстоящем путешествии! Помните, что если путь окажется тер­ пистым, эта книга будет рядом, чтобы служить вам проводником. Пробегайтесь время от времени по ее главам, дабы напоминать себе о том, что творчество - не ракетостроение: творческим человеком может стать каждый. 9.1. ПОМНИТЕ: ТВОРЧЕСКОЙ ЛИЧНОСТЬЮ МОЖЕТ БЫТЬ КАЖДЫЙ Чарльз Дарвин страдал от повышенной тревожности, вследствие чего каждый день вынужден был лежать в постели часами, и тем не менее он внес огромный вклад в мировую науку. Многие лауреаты Нобелевской премии, интервью с которыми провел когнитивный психолог Михай Чиксентмихайи, проявляли скромность, когда их спрашивали об их творческом процессе. Некоторые из них даже признавались, что это мог сделать каждый; они просто оказались в нужном месте в пужное время. Эти слова обнадеживают. Гением творчества может стать каждый - это не является заслугой (исключительно) генов, IQили природной предрасположен­ ности. Опять-таки, как говорил Альберт Эйнштейн ( процитируем еще раз): «Дело не в том, что я такой умный, я просто дольше думаю над проблемами~,,. Большинство гениев не отличались особым умом или социальными навыка­ ми. Они были такими же, как мы с вами: преданными делу, трудолюбивыми, любознательными. Психолог Кэрол Дуэк доказала, что фиксированное мышление можно превра­ тить в мышление роста. Это же справедливо и для творчества (мы говорили об этом в главе 6): Если показать студенrrю.м (в нашем случае программистам), что творчество это навык, которому можно научиться и который, следовательно, не является намертво зафиксированным, их творчество расцветет пышным цветом. Если я и хочу, чтобы вы вынесли что-либо из этой книги, так это гибкое пред­ ставление о творчестве как о навыке, которому можно обучиться и которым можно овладеть, как программированием на Elixir или Scala, как свободным владением командной строкой в Unix и как знанием шаблонов проектирова­ ния ПО масштаба предприятия. Творческим человеком может быть каждый. Творческие способности - это не то, с чем рождаются или к чему нужно иметь особый талант. Творчество не является магией, присущей только Рембрандтам, Кандинским, Ван Гогам, Мадоннам, Майклам Джексонам, Линусам Торвальдсам или Стивам Джобсам. Напротив, креативность - это относительно современный социокультурный вердикт. Творческий потенциал не сводится только к одпому фактору, например способности к латеральному мышлению. Действительно, это не ракетостроение,
264 Глава 9. Итоговые мысли о креативности но понятие довольно сложное: концепции креативности тесно взаимосвязаны и основаны на отношениях - другими словами, опа общесистемна. Если креативность, подобно программированию, является оттачиваемым навы­ ком, то ее тоже можно тренировать и наращивать, как мышцы. Этому мпепию существует множество научных подтверждений, о которых я упоминал в данной книге. Это очень напоминает цикл обучения с подкреплением: становясь все более креативпым программистом, вы учитесь становиться более креативпым. «Лучшие практики» креативности моrут нести в себе риск Я всегда неохотно раздаю советы другим делать то или сё, чтобы повысить их кре­ ативность: все устроено не так. Вспомните пример, посвященный осознанности , в главе 7. Простые упражнения не дадут ощутимого результата, однако руководители, думающие только о краткосрочной перспективе и слишком сосредоточенные на данных, огульно прописывают упражнения как лекарство от любых рабочих проблем. Очень опасно сводить творчество - или осознанность, раз уж на то пошло, - к набору лучших практик, даже если каждая глава заканчивается маркированным списком ос ­ новных мыслей. Книга должна быть определенным образом структурирована. Я знаю, что программисты - люди прагматичные, и они могут быть нетерпеливы и любят пролистывать страницы, чтобы добраться до сути, поэтому, пожалуйста, не повторяйте здесь эту ошибку. Помните: системное мышление, а не мышление по частям! 9.2. НЕСКОЛЬКО СЛОВ О РАЗВИВАЮЩИХСЯ ВЗГЛЯДАХ НА ТВОРЧЕСТВО По мере того как летят годы и мы становимся старше, все сложнее быть откры­ тыми новым взглядам - хотя в то же время, становясь мудрее, легче мыслить критически. Дэниел Левитин (Danie!J. Levitin) в своей книге «Successful Aging: А Neuroscientist Explores the Power and Potential of Our Lives>> объясняет, что па протяжении жизни наша личность может (и будет) пеодпократпо меняться. Если вы когда-нибудь проходили популярный тест личпостпых качеств <,Большая пятерка,>, который оценивает вашу личность по пяти показателям ( открытость впечатлениям, добросовестность, экстраверсия, покладистость и невротизм), не удивляйтесь, если результаты в одном возрасте будут сильно отличаться от результатов в другом. Вы пе обязаны провести остаток дней, будучи слишком несговорчивыми или слишком экстравертироваппыми: эти черты не более чем снимки момента во времени. Концепция возрастных особешюстей личности может серьезно отразиться па творческих способностях. Меньшая открытость впечатлениям означает, что становится сложнее оставаться любознательным и быть в курсе всего нового и интересного, что, как вы, надеюсь, уже знаете, является важной составляющей
9.2. Несколько слов о развивающихся взглядах на творчество 265 творчества (глава 6). В то же время Дэниел Левитин отмечает, что молодые люди менее склонны к совместной работе, каковая является еще одним важным фактором творчества (глава 3). В другом исследовании, посвященном взаимодействию ресурсов рабочего места, возраста и того, что психологи называют креативностью идей (idea creativity) или идейной составляющей творчества, ученые обнаружили положительную связь между возрастом и креативностью идей при условии надлежащей корпоративной поддержки 1 • Другими словами, по мере того как мы становимся старше, опыт предыдущих проектов значительно повышает нашу способность к креативности идей, что выражается в большем количестве творческих прорывов. 9.2.1. От техническоrо индивидуализма к иrре в креативной команде Исследования, проведенные моими коллегами и мной, подтверждают, что аспиранты и младшие разработчики ПО понимают креативность иначе, нежели более опытные программисты: они склонны сосредоточиваться па технических задачах и творческой свободе при запуске гринфилд-проекта и делают акцент на творческой свободе, которую человек ощущает при работе в одиночку. Конечно, в основном аспирантам и младшим разработчикам просто не хватает опыта. Они никогда по-настоящему не работали в сотрудничестве с другими над большим программным проектом, за исключением тщательно подобранных заданий, которые, помимо прочего, легко оценить. Бывший консультант по тех­ Microsoft Адам Барр возлагает часть вины за это на университетские computer science. В своем недавнем выступлении «Lessons From the Fifty-Year Quest to Turn Programmers Into Software Engineers,> 2 он объясня­ нологиям в программы по ет, что индивидуальные и небольшие задания в высших учебных заведениях слишком ориентированы па единственного программиста, тогда как в отрасли требуются технические специалисты, умеющие работать с уже существующим живым кодом (а также работать вместе) (рис. 9.1). Не могу не согласиться с Адамом. При изучении креативного поведения сту­ дентов мы с коллегами отметили то же самое. Например, когда мы спрашивали аспирантов на факультете computer science, когда они проявляют творческие способности, первое, что они отвечали, обычно было техническим по духу: .. .когда передо мной стоит конкретная задача, для которой еще нет правuль­ ного решения. Об алгоритмах сортировки много уже известно, и [в интернете] легко найти правильные решения, но для других вещей, о которых ничего не написано, приходится придумывать что-то самому. 1 2 Caлnen Binnewies, Sandra Ohly, and Comelia Niessen. Age and crcativity at work: The interplay between job resources, age and idea creativity. Journal of Managerial Psychology, 2008. См. АСМ Tech Talks at https://learning.acm.org/techtalks.
266 Глава 9. Итоговые мысли о креативности ОДИНОЧКА шшrт~fm БОЛЬШИЕ МАЛЕНЬКИЕ ЗАЛ.А Ч И ПРОЕКТЫ И Н.П.УСТР ИЯ ~~ КОМАН.П.НЫК иrРОК Рис. 9.1. Разрыв между наукой и индустрией с точки зрения Адама Барра. В университетах сосредоточиваются на решении небольших задач по программированию, в основном на индивидуальном уровне, в то время как индустрия ожидает сотрудничества в больших проектах Ответы па вопрос «В каких случаях вы творчески подходите к программиро­ ванию?>.> были весьма последовательными. В то же время, если мы задавали те же вопросы программистам с опытом работы пе менее семи лет, ответы были примерно следующими: ... когда приходит время проявить творческие способности, когда я могу ШIИ должен думать [вместе с другими] о комплексном решении и мы обсуждаем альтернативные пути, а не идем по проторенной дорожке. В таких ответах на первый план обычно выходят сотрудничество (мыслительная работа совместно с другими) и критическое мышление (поиск и оценка альтер­ нативных путей), а чисто техническая сторона задачи отходит па второй план, по все равно считается важной и актуальной. Мы обнаружили, что эти различия существенны. Результаты нашего опроса, по всей видимости, подтверждают предположение пейробиологов о том, что главные черты личности (которые можно связать с рассмотренными нами креа­ тивностями) различаются в разных возрастных группах. Эти выводы могут помочь при работе в командах с разными возрастными груп­ пами. Возможно, от недавнего выпускника пе стоит ожидать того же уровня креативпости, что и от опытного разработчика: оп ведь еще пе может опереться па внушительный запас ранее накопленных знаний, чтобы связать данные для получения новаторской идеи. И все же это пе означает, что мы, преподаватели,
9.2. Несколько слов о развивающихся взглядах на творчество 267 не должны делать акцент на тех аспектах творческого решения задач, которые студенты изучают в меньшей степени. Креативность может помочь в борьбе со снижением когнитивных функций Несколько человек из тех, с кем мы проводили собеседования, намекнули на то, что общее физическое и психическое состояние является непременным условием творческого успеха . Они оказались правы : недосыпание в течение нескольких но­ чей нарушает режимы сосредоточенного и рассеянного мышления, потенциально блокируя способность генерировать и распознавать озарения. Дальше - хуже : с возрастом отдельные участки мозга (например, префронтальная кора) буквально сжимаются, и мы испытываем все больше трудностей с такими «когнитивноемкими» задачами, как программирование. К счастью, если вы всю жизнь занимались творческим решением задач и мозговым штурмом, то вы постоянно тренировали и тормошили свой мозг различными увлека­ тельными способами . Неврологи, например Дэн и ел Левитин, доказали, что « занятие мозга интересными делами » стимулирует нейропластичность нашего мозга, сохраняя тем самым его молодость, и помогает предотвратить когнитивные расстройства, такие как деменция . Не прекращайте бросать себе вызовы! 9.2.2. Вновь я посетил ... CPPST Раз уж вы дочитали книгу до заключительной главы, самое время еще раз об­ ратиться к тесту решения проблем в стиле креативного программирования (CPPST), упоминавшемуся в главе 1. Возможно, новообретенное понимание рассматриваемой темы позволят получить более высокий средний балл в каждой области. Помните, что не стоит сводить тест к «мерянию,> цифрами с другими людьми или между проектами. Когда я впервые говорил о тесте CPPST в начале наших приключений, я на­ мерешю обошел кое-что вниманием. Среди почти 300 студентов, привявших участие в тестировании, было примерно поровну первокурсников и учащихся на последнем курсе факультета computer science. Проводя статистический анализ обеих групп по отдельности , мы заметили слегка различающиеся корреляции. Например, в целом студенты последнего курса получили более низкие оценки по вопросам, связанным с общением. К нашему удивлению, они гораздо реже соглашались с утверждением <<Я регулярно запрашивал обратную связь у одно­ группников и коллег», чем первокурсники. Возможно, выпускники чувствуют себя слишком уверенными в себе и убеждены, что не нуждаются в отзывах других. Возможно, индивидуализм, о котором говорил Адам Барр, к моменту окончания обучения полностью овладел их мозгом. Однако более вероятно, что обратная связь воспринимается ими не как нечто способное улучшить собственные творческие идеи, а как нечто обязательное, связашюе с выставлением оценок.
268 Глава 9. Итоговые мысли о креативности Первокурсникам же привычнее запрашивать обратную связь (как у одногруп­ пников, так и у преподавателей) просто потому, что они меньше знают. Анализ также показал, что семь рассматриваемых нами составляющих творче­ ства можно перегруппировать в три всеохватывающих конструкта: способности, мышление и взаимодействие. Отметим, что данная категоризация актуальна только для студентов, поскольку большинство вопросов, оказавшихся реле­ вантными, опять же касалось (технических) способностей. Другими словами, неправильное восприятие студентами творческого решения проблем исказило результаты в пользу проблемы <<программиста-одиночки>>. Не является ли это еще одним свидетельством различий в креативности, связанных с возрастом? УПРАЖНЕНИЕ Окиньте взглядом вашу профессиональную карьеру программиста и поразмышляйте над ней. Менялись ли по мере ее развития ваши предпочтения или навыки в отношении семи основных составляющих креативности, предложенных в этой книге? Уверены ли вы в том, что причиной этого стал не конкретный проект, а тонкие изменения ваших личностных качеств? 9.3. КОГДА НЕ СТОИТ БЫТЬ ТВОРЧЕСКОЙ ЛИЧНОСТЬЮ Танцовщица и хореограф Твайла Тарп (Twyla Tharp) в своей книге <<The Creative Habit: Learn It and Use It For Life>> делится практическими советами о том, как оставаться на гребне творческой волны и выработать творческую привычку дли­ ною в жизнь. Это звучит очень похоже на то, что мы пытаемся сформулировать для программирования, но Тарп, по-видимому, отождествляет творчество с почти неземной самоотдачей. Такие фразы, как <<Ваша работа - это ваша жизнь>> и <<Не ожидайте меньшего, чем соверше11ство1>, вызывают во мне желание бежать от творчества, а не принять ero!1 Я искренне восхищаюсь такими людьми, как Тарп и Дзиро Оно (Jiro Ono), 97-летний шеф-повар из Японии, который посвятил жизнь всего одной скром­ ной вещи - суши. В поисках совершенных суши Дзиро Оно ежедневно встает в 5 часов утра и ежедневно идет па рыбный рынок самолично, чтобы выбрать лучшее из лучшего. Исследование показывает, что отказ от работы (то, что мы называем уходом на пенсию) повышает вероятность социальной изоляции и снижения когнитивных - а значит, творческих - способностей. Поэтому люди, которые продолжают преданно заниматься своим ремеслом, вызывают истинное восхищение. Creative HaЬit1>, 10 ООО часов или Однако в том виде, в каком творчество изображено в юшге «The оно практически недостижимо, если не потратить на него 1 Twyla Тharp. The creative hablt: Learn it and use it for life. Reprint edition. Simon & Schuster, 2006.
9.4. Дальнейшее чтение 269 больше. Я не являюсь ярым сторонником этой точки зрения, хотя и осознаю, что целенаправленная практика определенно является эффективным способом превратиться из подмастерья в мастера. Технические знания способствуют твор­ честву - собственно, это одно из необходимых его условий ( глава 2), и конечно, практика творит чудеса, но требование никак не меньшего, чем совершенство, оставляет в стороне 90% того, что мы хотели бы в большей степени придать своей натуре - творчества. Проблема возведения творческого совершенства на пьедестал слегка тревожит. Во-первых, перфекционизм легко приводит к выгоранию и депрессии - двум социальным проблемам, которым и без того уделяется слишком мало внимания и которые рассматриваются в основном с точки зрения экономики. Во-вторых, жесткая и претенциозная интерпретация творчества с большой бук­ вы <<Т» - например, нешуточных научных прорывов или изобретения нового алгоритма искусственного интеллекта, до которых большинству из нас еще расти и расти, - как единственно достойного вида творчества ведет к отвержению побед меньшего масштаба, легко достижимых для каждого. В-третьих, святость ремесла приводит к иmорированию причин, по которым вы делаете то, что делаете. Программисты, рассматривающие программирование как ремесло, склонны перебарщивать с принципами чистого кода и недорабатывать в отношении создания того продукта, который нужен заказчику. Как говорилось в главе 5, творчество - не цель, а средство. Творческий разум знает, когда не стоит быть творческим. Творчество может быть очень требова­ тельным, или, выражаясь другими словами, вы и ваши коллеги могут требовать от своей креативпости слишком многого. Остерегайтесь колебаний психики: пребывание в режиме перегрузки может причинить ущерб. Иногда необходимо ( и приносит большое облегчение) не быть Креативным Программистом, а про­ сто выполнить несколько менее сложных задач, заодно подзарядив батарейки. 9.4. ДАЛЬНЕЙШЕЕ ЧТЕНИЕ Как быть, если жажда творческих знаний еще не утолена? Не стоит беспокоить­ ся: впереди еще много интересных материалов, в которые можно углубиться. В данном разделе представлена подборка рекомендуемой литературы, сгруп­ пировашюй по каждой из семи составляющих креативности. Некоторых из этих книг мы уже касались в предыдущих главах, но они более чем достойны прочтения. Я намеренно оставил в стороне академические материалы, в которые бывает трудно вникнуть (и получить на руки из-за нелепого платного доступа): • Технические знания. • Andy Hunt, «Pragmatic Thinking & Learning». Прагматический подход к обучению и поведенческой теории, сдобренный небольшим количеством
Глава 9. Итоговые мысли о креативности 270 когнитивных и нейробиологических приправ. Просто обязательное чтение, органично сочетающееся с книгой <<Креативный программист». • Sonke Ahrens, <<How to Take Smart Notes: One Simple Technique to Boost Writing, Learning and Thinking-for Students, Academics and Nonfiction Book Writers,> 1• Справочник для ознакомления с методикой ведения заметок <<цетгелькастен» Никласа Лумана, представленной в главе 2. • Общение. • Eric Weiner, «The Geography of Genius» 2• Совершите кругосветное путеше­ ствие и откройте для себя социальное измерение творчества с помощью величайших творческих мыслителей в истории и остроумных замечаний Вейнера, связывающих полученные результаты с современным нам миром. • Steven Johnson, << Where Good Ideas Соте From: The Natural History of Innovation,> 3• Узнайте, как произошли и развивались города, по мере того как идеи и творчество перетекали между ними подобно жидким сетям, о которых шла речь в главе • 3. Ограничения. • Mihaly Csikszentmihalyi, <<Creativity: Flow and the Psychology of Discovery and Invention» 4• Основополагающий труд, состоящий из интервью с гениями творчества и убеждающий пас в том, что при надлежащей само­ отдаче и любознательности творческой личностью может стать каждый. В книге также приводится обзор множества академических исследований в области творчества. • Patricia D. Stokes, <<Creativity From Constraints: The Psychology of Breakthrough,>. Проследите вместе с Патрисией за шагами первых куби­ стов и узнайте, как художники используют самоограничения для создания выдающихся произведений. • Критическое мышление. • Daniel Kahneman, << Thinking, Fast and Slow». Инновационный экскурс в со­ знание, объясняющий две системы, которые управляют нашим мышлением и всей жизнью: быструю, интуитивную и эмоциональную - и медленную, целенаправленную и логическую. Также Дэниел исследует бесчисленные заблуждения относительно критического мышления. • Felienne Hermans, << The Programmer's Brain: What Every Programmer Needs to Know About Cognition». Эта книга, предназначенная для программистов, исследует, как работает наш мозг и как взломать его, чтобы улучшить 1 Арене 3. <<Как делать Zettelkasten>.>. полезные заметки. Эффективная система организации идей по методу 3 Вейнер Э. «География гениальности>.>. Джонсон С. «Откуда берутся хорошие идеи. Рождение и судьба инноваций>.>. 4 Чиксентмихайи М. «Креативность. Поток и психология открытий и изобретений>.>. 2
9.4. Дальнейшее чтение 271 мышление применительно к программированию. Если книга «Thinking, Fast and Slow>> разъясняет академическую теорию, то «The Programmer's Brain» посвящена практике технического специалиста. • Любозпателыюсть. • Carol S. Dweck, «Mindset: Changing the Way You Think to Fulfill Your Potential». Это одна из самых продаваемых книг всех времен, и на то есть причины. Если вы ищете подробную информацию о психологии мышления роста, о котором рассказывалось в главе 6, - эта книга для вас. • Emilie Wapnick, «How to Ве Everything: А Guide for Those Who (Still) Don't Know What They Want to Ве When They Grow Up» 1• Обязательная к прочтению книга, если вам нравится идея универсальности, но вы не знаете, как применить ее в работе программиста. • Творческое состояние ума. • Cal Newport, <<Deep Work: Rules for Focused Success in а Distracted World» 2• Критический взгляд па современный мир, полный прерываний, и возможное решение этой проблемы: закрывайте дверь ( но не всегда), отключайте звук уведомлений (но не всегда) и выполняйте больше углубленной работы. • Mihalyi Csikszentmihalyi, <<Flow: The Psychology of Optimal Experience» 3• Еще один классический труд Чиксентмихайи, в котором рассказывается о потоке в спорте, музыке, живописи, писательстве, образовании и других областях. Несмотря на то что большинство примеров не относится к миру разработки, их можно без труда перенести в нашу программистскую среду. • Творческие методики. • Austin Кleon, «Steal Like an Artist: 10 Things Nobody Told You About Being Creative»4. Остроумный, практичный, наглядный, краткий, а главное, юмористический подход к тому, как давать творческие советы, который замечательно годится для программистов. • Bruce А. Tate, «Seven Languages in Seven Weeks: А Pragmatic Guide to Learning Programming Languages»5. Если вы знакомы с книгой «The Pragmatic Programmer: Fromjourneyman to Master», то «Seven Languages in Seven Weeks,> переключит ваши знания языка программирования на более высокую передачу и подчеркнет методики освоения будущих и не­ прерывно меняющихся направлений. 1 Вапник Э. «Мультипотснциалы. Руководство для тех, кто уже вырос, но так и нс решил, кем хочет стать>>. 2 Ньюпорт К. «В работу с головой>,>. Санкт-Петербург, издательство «Питер,,,. 3 Чиксентмихайи М. «Поток: Психология оптимального переживания>,>. 4 Клеон О. «Кради как художник>,>. Тсйт Брюс А. «Семь языков за семь недель. Практическое руководство по изучению языков программирования,,,.
Ваутер Грунефелд Креативный программист Перевел с английского А. Денисов Ю. Сергиенко Руковод!fГель дивизиона РуководlfГель проекта А. Питиримов Ведущий редактор Е. Строганова Л. Денисова Литературный редактор В. Мостипан Художественный редактор Корректоры С. Беляева, Н. Викторова Л. Егорова Верстка Изготовлено в России. Изготовитель: ООО «Прогресс ЮIИГа>>. Место нахождения и фактический адрес: 194044, Россия, г. Санкт-Петербург, 52. Тел.: +78127037373. Б. Сампсониевский пр., д. 29А, пом. Дата изготовления: Налоговая льгота - 05.2024. Наименование: книжная продукция. Срок годности: не ограничен. общероссийский классификатор продукции ОК 034-2014, 58.11.12 - Книги печатные профессиональные, технические и научные. Импортер в Беларусь: ООО «ПИТЕР М», Подписано в печать 28.03.24. 220020, РБ, г. Минск, ул. Тимирязева, д. Формат 7Ох1ОО/16. Бумага офсетная. Усл. п. л. 121/3, 21,930. к. 214, Тираж тел./факс: 1500. 208 80 01. Заказ 1886. Отпечатано в полном соответствии с качеством предоставленных материалов в ООО «Фотоэкслерт>> 109316, г. Москва, ВолгоградСЮ!Й проспект, д. 42, корп. 5, эт. 1, пом. 1, ком. 6.3-23Н