编写无用软件获得更多乐趣


虽然无用,但是有趣!

编写“无用”软件如何激发快乐和学习。

编写更多 "无用 "的软件,在游戏玩乐中探索和体验计算的乐趣。

大多数技术工作都注重实用性,而编写 "无用 "的程序则可以让人们在没有义务的情况下自由尝试。(无以为用,有以为利)

作为技术专家,我们每天都致力于制造有用的东西:

  • 软件工程师编写代码来解决实际问题。
  • 计算机科学家研究问题以产生新颖、真实的结果。
  • 技术作家撰写实际技术、编写真实文档等等。
  •  

这样的例子不胜枚举,共同点是,如果我们做技术工作,我们是在有用的东西的背景上下文下做的。

但是,许多人开始编程是因为它在某种程度上给我们带来了快乐。当然,成为一名软件工程师也是 100% 为了钱。这当然是我倾向于将其作为我的职业的部分原因。但对于未来的软件工程师来说,有如此多的职业道路可供选择,我怀疑对这门手艺的享受至少是我们许多人做出决定的一部分。

当你整天都在做有用的事情、做工作时,快乐的火花很容易就会消​​失。(业务爱好作为工作也会失去乐趣)
这是我从一些正在转行或让编程成为日常工作重点的人那里听到的一种担忧。当你必须做某事时,日常压力会抑制你的兴奋感。你所做的一切都伴随着义务,并与工作本身相关。

你失去了玩耍中重要的一面。

编写无用的软件是将自己从这些义务中解放出来的好方法。如果你写一些东西只是为了玩,你就可以定义你想要从项目中得到什么。您可以随时停止,并且做的事情不会超过或少于您感兴趣的事情。不想编写测试?跳过它们。不想使用问题跟踪器?抛弃它2 . 学完了你想学的东西吗?如果项目不再有趣,就停止它吧!

以下是我这几年写的一些玩玩的“无用”东西:

  • 一个糟糕的国际象棋引擎和 UI,充满了错误,它教会了我 GUI 编程和游戏编程,并让我更彻底地了解了国际象棋引擎的工作原理。
  • 一个键值存储,它实现了 Redis 的 API 的一部分,它教会了我有关系统编程以及如何编写更高效的代码的知识。
  • 一个LAN 唤醒实用程序,它教会了我 WOL 的工作原理以及 Rust 网络编程的工作原理。
  • 一些国际象棋游戏的可视化,让我探索用代码制作艺术,并尝试将我喜欢的游戏可视化的方法。
  • 一个国际象棋数据库,我在其中学到了很多有关位图和数据库内部结构的知识。
  • 一个基于 LLM 的工具,可以“解释”命令的作用
  • POP3 服务器端协议的未完成实现,我正在其中学习该协议,并且很有趣地思考基于 POP3 的应用程序会是什么样子。也许我们应该制作电子邮件应用程序,而不是网络应用程序!
  • 通过“Crafting Interpreters”学习并享受用 Rust 编写一些东西的乐趣!(另外,有点想看看我是否可以匹配或超过我朋友 Mary 的实现性能。)这教会了我很多关于解释器和编译器的知识,但目标只是享受它。
  • 用 Rust 完成了一半的“程序员迷宫”,当它变成一件苦差事时就放弃了。这很有趣,但我不想再继续下去了。

Hacker News 上的讨论也鼓励编写更多“无用”软件以获取乐趣,而不是只关注有用性。

  • 虽然一名参与者的应用程序最初因无用而被拒绝,但它最终以意想不到的方式被使用。
  • 另一个人编写了代码来解决证明购买合理性的问题,这唤起了人们的怀旧之情。
  • 人们现在更多地出于乐趣而编写原型,而不是太努力地试图做到正确。有时,有趣的项目是在后期得到改进和维护的。
  • 其他人认为无用的东西可以变得非常有用,重写一些东西是一种很好的学习方式。