Дилан во время выступления со своей группой в Осло, 2019 год
Дилан Бити (Dylan Beattie) — разработчик из Британии. Но он не только кодит, но еще преподает, выступает на конференциях, играет в рок-группе и очень любит миксовать музыку и технологии.
Один из его проектов — это каверы на рок-хиты, где текст изменен под IT-тематику. А пару лет назад Дилан разработал новый язык программирования, где код выглядит как текст рок-песни, и назвал его Rockstar.
Что примечательно, о программировании Дилан говорит с такой же страстью и охотой, как и о музыке. Как он не дает себе заскучать на коммерческих проектах и почему just for fun — это лучший подход к обучению, Дилан рассказал в интервью журналистке Highload.
Дилан во время выступления со своей группой в Осло, 2019 год
Оскар Уайльд однажды сказал: ‘All art is quite useless’ («Все искусство достаточно бесполезно»). Я с этим согласен: у настоящего искусства нет цели. Но оно вызывает эмоции. Ты смотришь на произведение искусства, и ты смеешься, или плачешь, или задумываешься о чем-то.
С этой точки зрения программирование — это не искусство. Но я думаю, что мы можем использовать программирование, чтобы создавать вещи без цели, just for fun, и тогда это будет искусством. При этом программирование может быть искусством и само по себе, а не инструментом для его создания (как когда с помощью нейронных сетей генерируют картины).
Если вдуматься, таких примеров тоже много. Посмотрите на Code Golf. Участники этого соревнования пытаются записать, допустим, вычисление чисел Фибоначчи как можно более коротким кодом.
Миру не нужен алгоритм Фибоначчи в четырех строчках на Golang — это не решает никакую проблему. Но это забавно для тех, кто этим занимается, и тех, кто увлекается такими вещами. Они посмотрят и скажут: «О, а это умно».
Я пришел в программирование, потому что меня захватил процесс написания кода. Я запросто могу попасть в петлю мотивации и удовлетворения:
Позже я читал в научных статьях, почему так происходит. Оказывается, при решении проблем наш мозг выделяет дофамин, и мы чувствуем приток радости. Это дает нам мотивацию делать что-то снова и снова.
Увы, в рутинной работе программиста так получается не всегда. Все больше значит не код сам по себе, а код, который уходит в продакшен.
Программист в компании — звено, которое помогает делать продукт и решать бизнес-проблему. Поэтому то, что он пишет, нужно тестировать, поддерживать, релизить, менеджерить и т.д.
Я ответственно к этому отношусь, но согласитесь — это уже не так весело.
Так что сейчас я работаю на коммерческих проектах, но стараюсь держать баланс между «скучным» кодом для бизнеса и «интересным» кодом для себя. Потому что если ты занимаешься только первым — ты устанешь от этого, а если только вторым — у тебя не будет денег.
Я регулярно устраиваю челленджи или принимаю в них участие. Например, перед Рождеством я решал задачи с Advent of Code. Не чтобы победить, а чтобы просто покодить — решить проблему, улучшить работающий код и… все.
Advent of Code — предрождественское соревнование для программистов с задачами на каждый день с 1 по 25 декабря
На коммерческих проектах тоже бывает интересно, если выбирать подходящие. Я ищу что-то, где есть хотя бы одна из трех вещей:
Разница между работой и хобби в том, что, занимаясь хобби, ты можешь остановиться в любой момент, когда перестанет быть весело. И это полезно практиковать в двух случаях.
Когда ты делаешь что-то just for fun, то фокусируешься на процессе, а не выхлопе. Linux, кстати, тоже изначально создавался just for fun 🙂 Но даже если в итоге не получится сделать что-то масштабное, не получится ничего вообще — ну и пусть.
Так что своим ученикам я тоже часто даю проекты just for fun. Так я напоминаю им, что в учебе главное получить опыт, а не найти правильный ответ.
Дилан во время выступления на конференции. Дилан — постоянный участник конференций и организатор воркшопов по программированию
Я однажды где-то прочитал: ‘Start with something small. And then see what happens next’ («Начни с малого. А затем посмотри, что получится»). И это очень правильно. Потому что когда ставишь себе большую цель, она кажется необъятной. Но когда решаешь сделать что-то, что можешь закончить до конца выходных, это уже не кажется таким неподъемным.
Особенно когда на каждом следующим шаге у тебя есть свобода выбора — хочешь ты это заканчивать или нет.
Мое второе хобби — музыка. Я люблю ее с детства. Ребенком я слушал записи своего отца. Сейчас я тоже постоянно слушаю музыку и играю ее сам — в группе.
Почему же я тогда не стал музыкантом? Мой учитель сказал, когда мне было 15 лет:
«Не делай это профессией. Возможно, у тебя получится заработать этим, но однажды ты проснешься, посмотришь на свою гитару и тебе не захочется играть, но придется — чтобы заплатить по счетам. И тогда ты возненавидишь это»
‘Don`t do this for a living. You’ll work hard and maybe you’ll make it. And then one day you’ll wake up, look at your guitar and think ‘I don’t want to play it’, but you’ll have to — to pay your bills. And after that you will not love it anymore’ (ориг.)
Иронично, ведь так же можно сказать и о программировании. Но мне сказали это о музыке, так что я стал программистом 🙂
Я все еще не знаю, кем стану, когда вырасту. Каждый день я нахожу новые возможности. С другой стороны, программированием заработать проще, чем музыкой.
Мне нравится быть музыкантом, имея при этом высокооплачиваемую работу. У меня есть время и желание заниматься музыкой и в то же время возможности купить все нужное оборудование без лишнего стресса.
Моя первая попытка совместить музыку и технологии была, когда я попробовал заставить компьютер Amstrad CPC 6128 играть мелодии.
Гораздо позже, когда я стал программировать на Java, я начал экспериментировать. Сначала просто записывал гитарные мелодии на компьютер, потом совмещал их с другими звуками и добавлял разные эффекты. И чем больше я в это погружался, тем больше понимал, как много интересных идей может возникнуть на стыке.
Amstrad CPC 6128. Уже на этом компьютере можно было креативить
Наверно, мой самый известный проект в этой области — это язык программирования Rockstar. Как я уже говорил, он начался как шутка: я задался вопросом, можно ли создать язык программирования, на котором код будет выглядеть как рок-песня. Так что я взял строчки тех песен, которые знал и любил, и попробовать превратить их в строчки кода.
В итоге, я сделал шуточную спецификацию к этому языку и опубликовал ее. А затем люди начали ее использовать. Этого не должно было случиться, но это случилось.
Кстати, несколько участников Advent of Code этого года выполняли задачи на Rockstar. Я же иногда беру код программ на Rockstar (которые по сути — рок-песни) и выступаю с ними на вечеринках 🙂
Рабочий код на Rockstar
Я не слишком слежу за другими проектами, которые находятся на пересечении музыки и технологий. Мне больше нравится создавать. А вдохновляюсь я тем, что создается в этих областях по отдельности.
Например, я часто ищу новые песни для своего проекта пародийных песен для программистов. Или темы для этих песен — исходя из трендов индустрии.
Сейчас мы хотим сделать песню про контейнеры. На одной из конференций мне подкинули идею сделать что то на основе Smells Like Teen Spirit: ‘entertainers… containers’ — хорошо рифмуется.
Пародия Дилана на Bon Jovi — You Give Love a Bad Name
Кстати, после поездки на конференцию в Киев я начал учить украинский, а сейчас изучаю русский — потому что на нем разговаривают в большем количестве стран. И мне посоветовали сделать пародию на исполнителя Noize MC. «Назови меня попсой» — эта песня. Возможно, она появится в нашем репертуаре 🙂
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…