На прошлой неделе нам с Кэт посчастливилось пообщаться с Чадом Фаулером, программистом, автором The Passionate Programmer, начинающим инвестором, основателем The International Ruby Conference и RailsConf. »И музыкант .

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

«Никто не становится музыкантом, потому что хочет устроиться на работу и вести стабильную и комфортную жизнь. Музыкальная индустрия - слишком жестокая среда, чтобы это могло быть осуществимым планом. Все люди, которые становятся профессиональными музыкантами, хотят быть великими. По крайней мере, когда вы только начинаете, величие в музыкальном мире бинарно. Музыкант хочет либо быть великим (и прославиться этим!), Либо не делать всего этого ». - Чад Фаулер, Страстный программист

Кэт: В своей книге Страстный программист вы упомянули, что образ мыслей музыканта о желании - необходимости - быть великим помогает вам стать замечательным программистом. Вы можете сказать, что это ограничивается программированием или может применяться во многих различных областях?

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

Если вы занимаетесь механической обработкой или чем-то в этом роде, вероятно, нет смысла быть великим.

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

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

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

Катя: Как вы думаете, люди недооценивают творческую составляющую программирования?

Чад: Люди, которые не являются программистами, делают, и люди, которые плохие программисты делают.

Когда я попал в программирование, меня окружали люди со степенью магистра. У меня не было диплома ни в чем, но я изучал музыку и занимался музыкой профессионально. Я был поражен тем, насколько нетворческими почти все вокруг меня: эти люди с учеными степенями - аспиранты - следовали за мной повсюду, делали заметки на работе, потому что я думал, а они не думали.

Великие программисты определенно творческие люди.

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

Кэт: Не могли бы вы подробнее рассказать о том, что думали вы, но не видели, как думают ваши коллеги с учеными степенями?

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

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

«Когда вы создаете, скажем, оркестровую пьесу, у вас есть простая идея, и как только у вас появляется эта простая идея, вы переходите в режим решения проблем».

Для меня у меня бывают моменты прозрения, когда я понимаю, что застрял в музыкальном потоке мыслей, и если я его нарушу, в этот момент произойдет что-то замечательное, и я могу сделать что-то необычное и создать что-то интересное.

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

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

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

« Программное обеспечение с точки зрения реализации - это общение с будущими программистами».

Есть что-то в переоценке и поиске прозрений, когда вы меняете направление. Мои коллеги были бы счастливы получить инструкцию, а затем просто сели бы, набрали и отфильтровали ее, и попросили бы еще одну, не задумываясь об общей картине того, что они создают.

Катя: Не могли бы вы рассказать мне о времени, когда казалось, что вам было поручено что-то однообразное, но вам действительно нужно было мыслить критически и творчески, чтобы добиться успеха?

Чад: Я работал в небольшой компании, которая производила образовательное программное обеспечение 15 лет назад, и мы создали эту действительно причудливую систему, для которой меня наняли.

По разным причинам нам пришлось запустить его и откатить, потому что он не понравился клиентам. Это был год напрасных усилий, и до сих пор это был один из худших событий в моей карьере.

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

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

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

Это повлияло на бизнес: мы взяли то, что раньше занимало 14 часов, и сократили это до трех минут.

Но мне это понравилось не поэтому. Дело в том, что мы сделали эту прекрасную вещь, и никто не просил нас сделать это, так что это дало нам свободу творчества и странностей с этим, что мы и сделали, и это было весело.

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

Другой пример:

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

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

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

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

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

Поскольку никому Ook! переводчик, я написал первый в мире Ook! Устный переводчик. Это никому не было нужно, поэтому я был полностью сосредоточен на процессе его создания и на том, как я думал об этом, что привело к более творческому процессу.

Можно сказать, что бесполезное программное обеспечение - это самое скучное программное обеспечение, поскольку оно никому не нужно.

Катя: Это очень похоже на упражнение, которое вы бы выполняли на уроке поэзии!

Чад: Это так - я убрал это из музыки. Я понял, что разработчики программного обеспечения не практикуют - мы тренируемся на работе, потому что нет концепции практики. Я начал работать над различными способами, которыми я мог бы попробовать себя в качестве разработчика программного обеспечения, как я делаю это на саксофоне.

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

Катя: Как вы думаете, это неизведанное пространство в программировании? Художники сядут и, например, будут рисовать не для создания произведения искусства, а просто для создания самого себя.

Чад: Ленивые музыканты и ленивые артисты так не поступают. Я практиковался на саксофоне - половину времени я просто играю то, что хорошо звучит, а вторую половину занимаюсь. Если это звучит хорошо, вы не тренируетесь, потому что не расширяете свои границы.

« Если это звучит хорошо, вы не тренируетесь, потому что не расширяете свои границы».

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

Я согласен с тем, что это малоизученная область.

Примерно в то же время парень по имени Дэйв Томас, который является одним из соавторов Прагматичный программист, написал серию сообщений под названием Code Kata. Это было заимствование концепции боевых искусств о том, что вы делаете что-то для практики, и ее применение в программном обеспечении.

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

Катя: Мне очень интересно, что вы все время используете слово «бесполезно». Похоже, вы сильно от этого выросли, так что это вовсе не кажется бесполезным.

Чад: Его создание не бесполезно, но то, что вы создаете, бесполезно - оно не имеет ценности. Фактически, когда я писал в блоге об этом опыте, я назвал это бесполезным программным обеспечением как способ практики, так что вы не зацикливаетесь на ценности, которая проявляется в конце того, что вы делаете, а вместо этого вы полностью сосредотачиваетесь о процессе.

«… Не зацикливайтесь на ценности, которая проявляется в конце того, что вы делаете».

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

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

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

Говорят, что сейчас в США люди не вырастают до 27 лет, так что вы закончили все свое образование и к тому времени, когда поймете, чем вы действительно хотите заниматься в своей жизни, окажетесь на какой-то отстойной работе.

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

Все, что я делал, это учился, поэтому для меня колледж был потрясающим. Я стал умнее, чем когда начинал, и сразу занялся программным бизнесом. Думаю, это потому, что я выбрал то, чем я был увлечен, что все время поддерживало меня интеллектуально и постоянно поддерживало меня в этом творческом режиме, поэтому, когда я пришел на рабочее место, мне понадобилось что-то подобное.

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

Катя: Смелое заявление. Как вы думаете, это потому, что сейчас все стало настолько транзакционным? Не похоже, что кто-то делает что-то для процесса, как вы описывали. Все дело в результате.

Чад: не знаю. Вы используете слово «сейчас», как будто что-то изменилось, и я действительно не знаю, изменилось ли что-нибудь

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

Катя: Я слышала о том, что не нужно хорошо выполнять свою работу - нужно хорошо разбираться в чём-то другом, в том, что вы любите. Отказ от идеи Стива Джобса о том, что ваша страсть должна привести к карьере как таковой.

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

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

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

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

У меня есть друг и товарищ по группе, с которыми я играл, когда был моложе. Мы оба учились в музыкальной школе и какое-то время были в высшем эшелоне городской молодежи, потом на 20 лет наши пути разошлись.

Я недавно восстановил с ним связь. Он играет на пианино, я играю на саксофоне. Мы начали много играть вместе, и он рассказал мне свою философию, потому что я спросил кого-то: «Что делает Крис?» и они сказали, что он берет то странное выступление, которое никому не нужно, и играет только странные вещи. Вы знаете, странные вечеринки, на которые никто не хочет ходить, и игры с людьми, которые ужасны, или заблудшие, или в чем-то странные. Я подумал, нормально ли он принимает наркотики или что-то в этом роде, и я имею в виду это буквально в музыкальном мире.

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

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

Я не измучен, как остальные мои старые друзья-музыканты, которые, кажется, ненавидят слушать музыку сейчас, потому что все, что они делают, - это дерьмовые блюзовые концерты и они играют «Mustang Sally» 20 раз в неделю в Мемфисе, пока пьяные танцуют. В конце концов, вы судите о своей музыке по тому, какая еда подается в перерывах, а не по тому, какую музыку вы делаете.

Кэт: Какая среда лучше для людей, которые хотят проявить больше творчества в программировании? Есть ли плюсы и минусы как у стартапов, так и у крупных компаний?

Чад: есть плюсы и минусы. Это тоже зависит от того, кто вы.

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

Пример, который я вам рассказал, где мы автоматизировали работу, которая раньше занимала 14 часов, был взят из стартапа. Иногда я говорю о том, чтобы устроиться на работу где-нибудь в Арканзасе, где я живу, и на самом деле не говорю им, что я делаю, а затем смотрю, смогу ли я автоматизировать всю свою работу, чтобы я работал только 10 минут в день. Я думаю, что это возможно в большой компании, где ожидания невысоки.

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

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

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

Кэт: То, что вы музыкант, явно повлияло на ваше мышление, но есть ли способы напрямую включить музыку и искусство в свое программное обеспечение?

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

Один случай, который у меня был действительно близок, произошел в 2003 году, когда Дик Гэбриэл, который, как мне кажется, стал первым человеком, который случайно написал о шаблонах проектирования в программном обеспечении, имеет степень магистра иностранных дел или докторскую степень и стихи. Он очень влиятельный мыслитель в мире программного обеспечения, особенно в том, что касается Лиспа, раннего объектно-ориентированного программирования.

Он и еще несколько человек создали пилотную программу в Университете Иллинойса в Урбане, которая включала в себя MFA и разработку программного обеспечения. Я был частью этого пилота с восемью другими людьми. Мы уехали на резидентуру. Идея заключалась в том, чтобы пройти период глубокой резидентуры все вместе, а затем уйти самостоятельно и вернуться. Они собирались пустить меня туда, несмотря на то, что у меня не было степени бакалавра, что было в некотором роде увлекательно.

Мы пробыли на месте только первые девять дней. Все было как в Writers Workshop. Все, что мы делали, было прямо из сборника пьес для получения степени магистра в области поэзии. Это был захватывающий опыт. Вы приносите свой софт, вы сидите в коридоре, и все это обсуждают. Тебе нельзя говорить и тому подобное. У нас был интересный круг музыкантов, поэтов и художников.

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

Это был конец эксперимента - я не знаю, может быть, мы им не понравились - он так и не продолжился после той девятидневной работы, которую мы проделали.

Кэт: У вас есть много советов для разработчиков программного обеспечения, которые хотят стать более выдающимися. Что вы можете посоветовать молодым людям, все еще пытающимся понять, что им делать со своей жизнью?

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

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