有时候,你必须去做该做的事
摘要
这是一篇关于学习 Rust 编程的个人反思,强调了克服完美主义、拥抱编程和写作中迭代创作过程的重要性。
<p><a href="https://lobste.rs/s/ry92nr/unfortunately_you_sometimes_need_do">评论</a></p>
查看缓存全文
缓存时间: 2026/08/21 18:58
# 有时你必须硬着头皮去做
原文链接:https://griffinberlste.in/blog/do-the-thing/
在这篇文章中,我漫谈创作过程,并分享一些学习Rust代码(或其他任何编程语言)的建议。
---
在我的研究中,我很幸运能编写大量代码。过去几年主要使用Rust,我非常喜欢这门语言,但它也以难学著称。那么,你该如何学习Rust,或是任何其他需要创造力的技能呢?
和许多人一样,我深受“完美主义心魔”困扰,这常常导致事情难以推进。这种心理麻痹效应在初期尤其明显。比如我现在从事的文字工作——将意识中翻腾的思想汤汁提取出来,用语言精准呈现,这个复杂混乱的过程总让我轻易感到沮丧。这种挫败完全源于一个认知:眼前成品并非我心中所想。它要么缺失某种本质的真实,要么显得自命不凡,要么需要读者具备文本未提供的前置知识,或是其他种种不可避免的存在缺陷。
这是无法逃避的现实。无论你创作什么,它几乎总能以某种方式改进,哪怕只有你自己能察觉。而一旦屈服于这种打磨优化的冲动,最终往往一事无成,甚至无法开始。最完美的版本只存在于想象中;遗憾的是,那个版本永远无法在现实中存在。
我的应对思路是:大脑本质上是懒惰的——或者说高效,取决于视角——对技能采用“用进废退”机制。不幸的是,这意味着你必须去做想学的事,而且初期必然做得糟糕。这确实让人沮丧。如果光靠深度思考就能掌握技能该多好。但我认为,若果真如此,艺术的吸引力将会大打折扣。
将创作行为拆解到最基本要素,无论艺术还是代码创作,通常遵循以下流程:
1. 从创意碎片开始
2. 尝试实现
3. 评估成果
4. 持续改进直至“足够好”
而根据我的经验,我的失败模式往往是:刚完成最微小的创作,就急着跳转到评估阶段。当作者尚未完成表达时,很容易戴上编辑的滤镜——因为创作本身往往充满挑战。虽然优质批评很难,但挑刺却很容易。这种失败循环通常表现为:
1. 有个想法
2. 做了*一点点*
3. 陷入思维漩涡
4. 干脆去刷网页
5. 暗想“以后再处理这个项目。一定。”
但关键在于:在完成第一版草稿之前,你几乎不可能真正理解自己正在创造什么。这点对写作和代码开发同样适用。在尚未把握作品形态——而非仅仅感觉——之前,批评大多具有麻痹性,它用“能带来改进”的承诺诱使你停滞不前。
换句话说,理解作品存在两个必要层面:宏观与微观。前者是整体愿景、大目标、核心方法;后者是实现愿景所需的具体工作,以及处理现实复杂问题的琐碎操作¹。宏观视角*必然不完整*,必须通过微观实践获得的认知不断修正。认识到这一点,我们才能取得实际进展,避免因宏观认知与微观实践冲突而气馁。如此,两个层面形成循环:实践优化宏观认知,宏观认知指引实践以防迷失细节。
这听起来越来越像自助哲学了。恶心。
说点实在的:如何学习Rust编程?简言之,我建议先至少通读《Rust程序设计语言》²的前几章,然后立刻开始写代码。做个简单的小项目实现任何你想尝试的有趣功能。可以试试rustlings³,甚至跟随这些教程⁴。网上有大量教学资源⁵,我相信总有一款适合你的思维模式。
但请记住:永远要亲手写代码。看代码时轻易觉得“我懂了”,却并未真正理解或记住——这种情况太常见了。顺带一提,这也是我认为LLM是学习编程极差工具的原因,尽管我承认自己对此类技术确实偏悲观⁶。
你写的代码很可能一开始无法正确运行、无法编译,或令你抓狂。这完全正常。你没有做错任何事。你需要深入细节泥潭,与之缠斗,才能真正掌握它。**不幸的是,你必须硬着头皮去做。**但幸运的是,代码可以运行验证,无需主观分析!能运行的烂代码依然是代码⁷。而这往往是写出优质可运行代码的第一步。虽然技术债务真实存在,但在初学阶段通常无需过度担忧。
先做出东西,再考虑如何优化。
相似文章
用 Rust 重写
本文评估了2026年的‘Rewrite It In Rust’运动,讨论了现实世界中的性能提升、诸如新错误和平台支持等挑战,并提倡增量重写而非完全重写。
Rust 中的进行中工作
本文介绍了一种在 Rust 开发过程中延迟错误处理的技术和库,允许开发者临时将错误降级为警告,从而在保持正确性的同时维持生产力。
把事情做完
一篇个人博客文章,反思完成项目的困难、放弃年度计划,并转向简单的实体项目清单。
编写玩具软件是一种乐趣(2025)
一篇倡导编写玩具程序以深入理解软件并重新发现编程乐趣的博客文章,反对过度工程化和软件开发的工业化。
正念编码:目的与意图
一篇鼓励开发者以清晰意图编写代码的文章,认为命名困难往往揭示了抽象设计的问题,并指出理解代码的“为什么”与“是什么”同样重要。