编写更多“无用”软件

594人浏览 / 0人评论

2023 年 6 月 26 日星期一

在我上一篇关于 Hurl 的博客文章之后,有人问我,我引用:“......为什么?” 简单的答案是“为了开玩笑”。但更长的答案是,无用的软件1是探索和体验计算乐趣的绝佳方式。玩耍是探索和快乐的重要组成部分。

作为技术专家,我们每天都致力于制造有用的东西。软件工程师编写代码来解决实际问题。计算机科学家研究问题以产生新颖、真实的结果。技术作家撰写实际技术、编写真实文档等等。这样的例子不胜枚举,共同点是,如果我们做技术工作,我们是在有用的东西的背景下做的。

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

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

你失去了游戏中如此重要的一面。

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

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

  • 一个糟糕的国际象棋引擎和 UI,充满了错误,它教会了我 GUI 编程和游戏编程,并让我更彻底地了解了国际象棋引擎的工作原理。

  • 一个键值存储,它实现了 Redis 的 API 的一部分,它教会了我有关系统编程以及如何编写更高效的代码的知识。

  • 一个LAN 唤醒实用程序,它教会了我 WOL 的工作原理以及 Rust 网络编程的工作原理。

  • 一些国际象棋游戏的可视化让我探索用代码制作艺术,并尝试将我喜欢的游戏可视化的方法。

  • 一个国际象棋数据库,我在其中学到了很多有关位图和数据库内部结构的知识。

  • 一个基于 LLM 的工具,可以“解释”命令的作用

  • POP3 服务器端协议的未完成实现,我正在其中学习该协议,并且很有趣地思考基于 POP3 的应用程序会是什么样子。也许我们应该制作电子邮件应用程序,而不是网络应用程序!

  • 通过“Crafting Interpreters”学习并享受用 Rust 编写一些东西的乐趣!(另外,有点想看看我是否可以匹配或超过我朋友 Mary 的实现性能。)这教会了我很多关于解释器和编译器的知识,但目标只是享受它。

  • 用 Rust 完成了一半的“程序员迷宫”,当它变成一件苦差事时就放弃了。这很有趣,但我不想再继续下去了。

还有更多我不记得的小脚本,用于发挥想法和概念并进行尝试。我认为能够不那么认真地对待我们的手艺并尝试一些“无用”的东西是一种很好的学习方式,并且可以从玩电脑中获得一些乐趣。这是我经常尝试做的事情3

所以,这最终就是“为什么”?赫尔身后。这是一种游戏形式。它没什么用,但我可能会学到一些东西,而且我一定会在这个过程中获得乐趣。比赛很重要,我认为我们都应该参加更多比赛。

1

即使是还不存在的软件,比如 Hurl。

2

我在我的个人项目中使用问题跟踪器,因为问题跟踪器确实给我带来快乐。我个人生活的项目管理让事情变得不那么令人难以承受。

3

Recurse 中心也是一个拥抱这一点的绝佳场所,我在那里收获了很多。我强烈推荐它。页脚中有一个指向他们网站的链接。

如果这篇文章对您来说有趣或有用,请分享! 如果您有意见、问题或反馈,可以发送电子邮件至我的个人邮箱要获取新帖子,请订阅时事通讯或使用RSS 源

原文链接:https://ntietz.com/blog/write-more-useless-software/

全部评论

晴天下起了小雨
2017-10-01 18:00
很喜欢,果断关注了
wjmyly7336064
2017-10-01 18:00
相当实用,赞美了
橘大佬
2017-10-01 18:00
就是有些细节再到位点就好了…