Креативность для разработчиков программного обеспечения и продуктов и почему она так важна

Информатика, хоть и техническая область, — это искусство. Да, вряд ли это понимание мы слышали раньше, но что это на самом деле означает на практике? В каких ситуациях в информатике возникает эта потребность в художественных, творческих инновациях и как мы можем реализовать ее через 0 и 1, составляющие наши продукты?

Я хочу подойти к этим вопросам с помощью предложения: наши рабочие процессы кодирования и разработки продукта должны быть построены как творческий процесс. Это означает, что вместо того, чтобы вовлекаться в процессы творческого мышления только тогда, когда возникает необходимость, мы должны постоянно находиться в этом мышлении; мы должны окружать наши процессы разработки методами, оптимизирующими инновации и нестандартное мышление.

Именно благодаря таким рабочим процессам, о которых я расскажу ниже, мы создаем действительно инновационные и долговечные технологии. Во-первых, мы исследуем суть процесса: мыслительные процессы и подходы к проблемам, которые могут усилить эту творческую линзу. Затем мы поговорим о некоторых постоянных привычках, которые входят в нашу рутину разработки и могут действовать как «усилители» для нашего творчества.

Давайте конкретизируем все это: что такое творчество в компьютерных науках? В каких ситуациях нам нужен творческий подход, чтобы наша продукция была в лучшем виде?

Короткий ответ? Практически все ситуации, с которыми мы можем столкнуться. Вот длинный ответ:

  1. Придумывать новые идеи (невиданные ранее) и полезные (они действительно нужны людям).
  2. Придумать новый способ кодирования чего-то конкретного, более быстрого, эффективного, по-настоящему элегантного и т. д. Мы все знаем об удивительном кайфе, который мы испытываем, когда пишем по-настоящему *сексуальный* код.
  3. Создание чего-то красивого: красивый дизайн, естественная интуитивность и т. д.
  4. Поиск новых способов улучшения разработки продукта или самого процесса решения проблем.

…и многие другие примеры.

Такие усилия, естественно, управляются творческими частями нашего мозга. Таким образом, не так уж сложно убедить вас в важности творчества даже в более технической практике кодирования. Итак, давайте погрузимся в хорошее: сам процесс. Я поделюсь тем, что я считаю эффективным набором шагов для решения таких проблем, а также некоторыми примерами, к которым я применил эти методы, работая над конкретным проектом graphIQal.

Во-первых, аналогия

Я хотел бы провести аналогию, которая может помочь нам понять, насколько тесно связаны кодирование и разработка продукта с более типичными творческими практиками, такими как музыка.

Один разработчик программного обеспечения однажды сказал мне, что знает поразительное количество людей, включая его самого, которые переключились на эту карьеру из Music Performance. Я обдумывал это некоторое время. Сначала я был озадачен тем, как этот переход имел смысл; поля довольно далеко друг от друга. Однако есть параллели, которые интересно исследовать.

В классическом фортепианном исполнении накладывается довольно техническая внутренняя структура: вы должны следовать определенным правилам темпа, стиля и т. Д. Но, несмотря на это, музыкальное исполнение рассматривается как область, требующая художественных и творческих способностей. На самом деле мы знаем, что это комбинация обоих. Если исполняемое произведение является зданием, правила поддерживают структуру, но то, что делает структуру красивой, — это вложенное в нее творчество: чувства, которые вы вызываете, художественный выбор, который вы делаете, и т. д.

В кодировании у нас, очевидно, есть неотъемлемая структура. У нас есть правила, которым мы должны следовать. Но способ, которым мы делаем что-то прекрасное, заключается в творчестве, которое мы вкладываем в его развитие. При наличии обоих этих слоев мы, как программисты, можем вызвать чувства, подобные тем, когда пианист привлекает внимание целой комнаты слушателей, нажимая клавиши.

Так что, возможно, имеет смысл, что многие люди подходят к разработке исходя из этого фона. Возможно, они даже лучше подготовлены к успеху, чем те из нас, кто имеет техническое образование.

Часть 1. Расхождение и схождение — метод подхода к новой функции, проблеме или решению

Ранее я перечислил несколько процессов разработки продукта и технических процессов, которые могут дать наилучшие результаты, если рассматривать их как художественный, творческий процесс, такой как создание идей для функций.

К каждой из этих проблем можно подойти с похожей структурой, типичным творческим рабочим процессом: расхождением и схождением.

На первом этапе мы расходимся. Мы используем наш банк знаний и ресурсов для повторения, создания и производства результатов. И еще выход. В случае разработки новых функций и экранов это влечет за собой абсурдное количество фигм (вайрфреймов пользовательских потоков/экранов). Notion, например, внедрила эту практику в свой рабочий процесс методом бесконечных итераций. Для graphIQal наша команда также внедрила рабочий процесс индивидуального подхода к вопросу о дизайне или функциях путем создания многих, многих, многих итераций, рисунков и ментальных карт, а затем совместного обсуждения.

Другой, более технический пример процесса расхождения — это когда я создавал инструмент для рисования ментальных карт для graphIQal. Мы представили функцию физического рисования на экране: пользователи могут рисовать круги, которые сразу же становятся узлами на карте ума, и рисовать линии, чтобы соединить их в форме карандаша, а не в более неестественном выборе на панели инструментов. Мне нужен был лучший, самый эффективный и самый элегантный способ определить, нарисовал ли пользователь фигуру, которую он хотел бы использовать в качестве узла.

Хотя этот технический вопрос включает в себя такие понятия, как геометрия, я подошел к нему с помощью аналогичного творческого процесса. Я взял бумагу и карандаш (я знаю, это шокирует) и начал набрасывать все формы, которые я хотел бы обнаружить как узлы. Я спросил себя, что у них общего. Сначала я придумал метод вычисления приблизительного центра фигуры и использования среднего расстояния от этого центра, чтобы определить, может ли это быть круг.

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

Конвергенция — это процесс объединения всех итераций, ресурсов и идей и их синтеза новым способом, который решает проблему, над которой вы размышляете.

Процесс конвергенции позволяет нам свести наши дикие мысли и идеи только к их сущности. Он процветает на аналогиях и конкретных примерах, потому что мы избавляемся от ненужного мусора через эту конкретику. Существуют психологические теории, связанные с идеей, что мозг мыслит метафорами. Ученый Иоганн Кеплер, например, хотя и работал в технической области, преуспевал в силе междисциплинарных аналогий и метафор, чтобы делать проницательные открытия. Особенно я люблю аналогии, — писал он, — мои вернейшие господа, знающие все тайны природы… ими следует очень пользоваться.

Много мозгового штурма, который мы проводим для graphIQal, находится в абстрактном пространстве, о теории связи и визуализации информации. Однако для того, чтобы объединить и преобразовать наши идеи в полезную сущность (конкретные характеристики, ценности и цели), мы должны быть к чему-то привязаны. Например, при проектировании итераций и итераций в Figma я буду проверять свои идеи на конкретных вариантах использования, таких как организация ресурсов для диссертации.

Я спрошу себя, что хотел бы сделать кто-то в этом положении? Что было бы для них интуитивно понятным? Как мои проекты вписываются в рабочий процесс, который они себе представляют? С помощью этой линзы я могу исключить ненужные шаги/кнопки/функции, которые не способствуют достижению этих основных целей.

Креативность для улучшения самого творческого процесса

Ранее я упомянул улучшение вашего собственного творческого процесса как вариант использования описанных выше методов. Я утверждал, что к этому следует подходить как к творческому начинанию само по себе. Личным примером этого является навигация по процессу улучшения и реализации продукта путем написания сообщений в блоге об этом.

В нашем исследовании для graphIQal мы обнаружили несколько интересных способов, с помощью которых люди улучшали свой собственный творческий процесс с помощью собственных решений для преодоления препятствий, с которыми они сталкивались. Среди них, например, создание карты знаний с помощью Figma перед началом любой исследовательской работы или использование рисунка часового цикла для отображения параллельных графиков времени в книге (показано ниже).

Это само по себе требует расхождения и схождения, как я видел. Одна из ключевых частей моего творческого процесса — это банк знаний, который я создал для себя в Notion. То, как это воплотилось в жизнь, началось на стадии расхождения: я читал такие книги, как Building A Second Brain, и экспериментировал с тем, как я хотел, чтобы моя информация была организована, и как я мог лучше всего получить к ней доступ. Затем я объединил это в конкретную систему, просмотрев примеры того, как я хотел ее использовать, включая конкретные ситуации, темы и элементы, которые я хотел, чтобы она охватывала.

При обновлении творческого процесса для graphIQal одно из препятствий, которое мы обнаружили, заключалось в том, что нам нужно было больше находиться в абстрактном пространстве, чтобы определить конкретные функции и рабочие процессы, которые он будет поддерживать должным образом. Чтобы бороться с этим, мы придумали, как мы сами могли бы использовать graphIQal для создания graphIQal, и использовали эти процессы для тестирования нашего продукта в сравнении с другими. Некоторые примеры этого: мы решили спланировать подкаст так же, как с graphIQal. Я планирую эти сообщения в блоге так же, как и с graphIQal. Мы синтезируем наши исследования клиентов так же, как и с graphIQal. Это почти рекурсия 🤯.

В конечном счете, независимо от того, решите ли вы принять этот конкретный творческий рабочий процесс, нельзя отрицать, что существует растущая потребность в использовании наших творческих способностей как в разработке программного обеспечения, так и в разработке продуктов. Творческий результат, к которому стремится этот процесс, — это мысль, предполагающая появление смартфона в мире, в котором ничего подобного не существовало. И посмотрите, где мы сейчас. Это тип мышления, который создает прочные инновации в постоянно меняющейся, постоянно растущей, постоянно развивающейся области компьютерных наук.

Часть 2: бонусы для творческого развития

Подобно сбору монеты в игре Mario Kart, существуют определенные практики, которые, будучи включенными в нашу повседневную жизнь, действуют как усиление нашего творчества.

Первый шаг — избавиться от того образа, который возникает у вас при мысли о кодере: сейчас 3 часа ночи, наш персонаж не принимал душ шесть дней и не спал еще дольше. Мозг бедняжки двигается, как машина, а пальцы печатают, как робот. Этот рабочий процесс, который я считаю достаточно очевидным, не является оптимальным.

Возвращаясь к основному принципу, который я обсуждал вначале, давайте подойдем к нашим рабочим процессам разработки так же, как мы подошли бы к творческому процессу.

Создание «пространства» для творческих идей

Одна ключевая вещь, которую следует отметить при создании творческих идей, заключается в том, что этот процесс не может быть ограничен по времени; мы не можем выделить время, в течение которого мы уверены, что наш мозг найдет решение данной проблемы. Но это самые полезные проблемы для решения. Для этого наш мозг получает пользу не только от интенсивной работы, но и от интенсивных перерывов.

Дарвин, возможно, один из самых известных ученых всех времен, относился к науке аналогичным образом. Его дни состояли из долгих прогулок и моментов, преднамеренно пустых для размышлений, свободных от отвлекающих факторов, с вспышками интенсивной работы, распределенными повсюду. Акт предоставления вашему мозгу пространства, необходимого для творчества, важен: это идея типа доверься процессу. Наш мозг делает что-то довольно классное, когда его предоставляют самому себе, не отвлекая. Идеи кипят, развиваются, соединяются и растут.

Это стало постоянной частью моего рабочего процесса. Буквально вчера я работал над экраном Figma для graphIQal, который касался того, как пользователи могут извлечь наибольшую выгоду из просмотра ресурсов и идей и связывания их внутри графического представления. Я был сосредоточен на одной и той же проблеме около часа, по сути, просто перефразируя свои неоптимальные идеи снова и снова, потому что я не давал своему уму возможности для творчества.

Итак, около 30 минут я включил классическую музыку и просто прогуливался по кампусу. Я позволил своему мозгу блуждать; Я следил за ходом мыслей, связанным с тем, что было бы для меня интуитивно понятным и чего я хотел бы достичь с помощью такой функции. Из-за отсутствия необходимости мгновенно переводить мысли во что-то осязаемое, ваш мозг создает и проходит все более и более широкие ответвления в этой практике, придумывая то, о чем вы не могли подумать на месте. Я смог представить, что, возможно, пользователям было бы полезно иметь расширяемый ресурс, из которого они могли бы перетаскивать отдельные части на другие идеи, чтобы соединить их на основе одного раздела ресурса.

Такие практики важно применять ежедневно, а не только перед лицом нерешенных проблем. Написание хорошего кода, в дополнение к разработке хороших продуктов, в значительной степени является творчеством: всегда есть способ сделать это лучше. Мы должны дать нашему разуму пространство и время, чтобы обдумать эти способы.

Создание банка знаний

Пункт выше был о том, как лучше всего подготовить наш разум к великим мыслям. Но наш мозг не существует в пустоте. Они существуют, связывая воедино ресурсы, опыт, мысли и информацию из внешнего мира. Таким образом, мы выиграем от того, что будем постоянно подвергать себя такому воздействию.

Любопытство здесь жизненно необходимо. Навыки, используемые в разработке программного обеспечения и продуктов, образуют набор инструментов для воплощения идей и продуктов в любой другой области. Теоретически, если мы имеем дело с такими областями, как психология, производительность, здравоохранение, общество и т. д., и можем связать части каждой из них, чтобы решить проблему новым и полезным способом, это отличный продукт. И этот процесс творческий.

В книге Тиаго Форте Building A Second Brain автор обсуждает идею о том, что мы должны начинать только те проекты, которые завершены на 80 %. Это означает, что в рамках нашей повседневной жизни мы должны собирать и отмечать средства массовой информации и опыт, которым мы подвергаем себя, и что лучшие и наиболее необходимые проекты естественным образом возникают из уникальной комбинации этих входных данных. Тогда творчество становится актом синтеза новым способом, а не созданием чего-то из ничего.

Эндрю Хуберман (очень рекомендую его подкаст Huberman Lab) обсуждает идею о том, что для творчества идеи должны уже присутствовать в вашей голове, и они находятся путем объединения лакомых кусочков наших банков памяти. Таким образом, творчество — это процесс поиска пищи.

На днях, работая над целевой страницей для graphIQal, я курировал контент и разделы, чтобы наилучшим образом отразить ценность, которую мы хотим дать нашим пользователям. Но это не был праздный процесс, когда мы просто сидели и думали. Я просеивал ресурсы и ресурсы, которые я ранее собрал. Я начал с интервью с клиентами и предыдущих протоколов встреч/обсуждений/мозгового штурма, которые мы провели.

Помимо этого, я просматривал свой собственный банк знаний по идеям и ресурсам, с которыми я столкнулся, о творчестве, теории, лежащей в основе graphIQal, и даже психологии, чтобы понять, как лучше всего представить эту информацию пользователям. Я даже принесла кое-что, что заметила в подкасте о тренировках.

Так родилась идея graphIQal, который представлял собой процесс поиска пищи, аналогичный тому, который я описал выше: мы столкнулись со всеми этими различными идеями о творчестве, оригинальности, визуализации информации и ее хранении, и мы увидели линию, которая можно провести между ними, и проблемы, которые могут быть решены.

Подумайте, вместо этого, если мы используем противоположный подход, открывая себя внешним ресурсам только тогда, когда это необходимо (например, исследование конкретной проблемы). Здесь мы ограничиваем то, что может видеть наш разум. Одна вещь, которую мы узнали в ходе исследования клиентов для graphIQal, заключается в том, что чтение чего-либо в контексте конкретной задачи или проекта накладывает линзу, через которую вы видите только части, непосредственно относящиеся к рассматриваемой проблеме. А в остальном, кто знает, к чему это может иметь отношение позже? Всегда есть ценность, которую можно извлечь из знаний, даже если мы еще этого не знаем.

Оба процесса, о которых я говорил выше, довольно активны. Они задействуют нашу силу воли, чтобы «смотреть вперед» и интегрировать сегодняшние практики, которые создадут для нас возможности в будущем, которых мы еще не ожидали. Это прыжок веры, который может показаться не слишком срочным, но стресс срочности не создает идеальных условий, при которых происходят настоящие инновации. Среди этих повседневных практик лучшие идеи «всплывают», заставая нас врасплох.

Кто знает, какие творческие идеи ждут вас?