После моей последней статьи в блоге о Hurl (новый язык программирования) кто-то спросил меня, и я цитирую: «… зачем?». Простой ответ — «ради шутки». Но более длинный ответ заключается в том, что бесполезное программное обеспечение — это фантастический способ исследовать и испытывать радость от компьютеров. Игра — важная часть исследования и радости.
Как разработчики, мы проводим свои дни, занимаясь созданием полезных вещей. Инженеры-программисты пишут код для решения реальных проблем. Ученые-компьютерщики исследуют проблемы, чтобы получить новые, реальные результаты. Технические писатели пишут о реальных технологиях, составляют реальную документацию и многое другое. Список можно продолжать, но общее в нем то, что если мы занимаемся технической работой, то делаем это в контексте чего-то полезного.
Многие люди занимаются программированием, потому что оно в какой-то мере доставляет им радость. Быть инженером-программистом ради денег — это на 100% оправданно. Это, безусловно, одна из причин, по которой я выбрал эту профессию. Но при таком количестве вариантов карьерного роста, доступных потенциальным инженерам-программистам, я подозреваю, что для многих из нас удовольствие от работы было, по крайней мере, частью выбора.
Когда целый день работаешь над полезными вещами, выполняя работу, легко потерять искру радости. А если она погаснет? Это страх, который я ощущал в некоторых людях, меняющих профессию или делающих программирование менее приоритетным направлением своей повседневной работы. Когда вам приходится что-то делать, это ежедневное давление подавляет радость. Все, что вы делаете, сопряжено с обязательствами и ассоциируется с работой.
Вы теряете тот аспект игры, который так важен.
Написание бесполезных программ — отличный способ освободиться от этих обязательств. Если вы пишете что-то просто для того, чтобы поиграть, вы сами определяете, чего именно вы хотите от проекта. Вы можете остановиться в любой момент и сделать не больше и не меньше, чем вам интересно. Не хотите писать тесты? Пропустите их. Не хотите использовать issue tracke? Откажитесь от него. Закончили изучать то, что хотели? Остановите проект, если он больше не приносит удовольствия!
Вот некоторые из «бесполезных» вещей, которые я написал за последние несколько лет просто ради забавы:
- Ужасный шахматный движок и пользовательский интерфейс, изобилующий ошибками, который научил меня программированию GUI и программированию игр, а также позволил лучше понять, как работают шахматные движки.
- Хранилище ключевых значений, реализующее часть API Redis, которое научило меня системному программированию и написанию более эффективного кода.
- Утилита wake-on-LAN, благодаря которой я узнал, как работает WOL и как работает сетевое программирование в Rust.
- Визуализация некоторых шахматных партий, которая позволила мне познакомиться с созданием искусства с помощью кода и поиграть со способами визуализации любимой игры.
- Шахматная база данных, где я узнал много нового о растровых изображениях и внутреннем устройстве баз данных.
- Инструмент, основанный на LLM, который «менсплеит» (объясняет простыми словами), что делает та или иная команда.
- Незаконченная реализация серверного протокола POP3, в которой я изучал протокол и получал массу удовольствия, размышляя о том, каким будет приложение на базе POP3. Вместо веб-приложений, может быть, стоит делать почтовые приложения!
- Работал над Crafting Interpreters, чтобы научиться и получить удовольствие от написания чего-нибудь на Rust (кроме того, я хотел проверить, смогу ли я сравниться или превзойти по производительности реализацию моей подруги Мэри). Я узнал много нового об интерпретаторах и компиляторах, но целью было просто получить удовольствие.
- Прошел половину книги «Лабиринты для программистов» на Rust и бросил, когда это превратилось в рутину. Было весело, но дальше идти не хотелось.
И еще несколько небольших скриптов, которые я не помню, чтобы поиграть с идеями и концепциями и попробовать себя в этом деле. Я думаю, что возможность относиться к своему ремеслу менее серьезно и пробовать «бесполезные» вещи — это лучший способ учиться и получать удовольствие от простых игр с компьютером. Это то, что я стараюсь делать часто.
Вот, собственно, и все «почему?», лежащее в основе Hurl. Это форма игры. В этом нет никакой полезности, но я наверняка чему-то научусь и получу удовольствие от процесса. Игра — это важно, и я думаю, что мы все заслуживаем того, чтобы играть больше.