咬紧牙关,发布它
摘要
本文探讨了创造性工作中构建与发布之间的冲突,强调克服完美主义以进行发布对于编程和写作的生产力至关重要。
<p><a href="https://lobste.rs/s/pdulza/grit_your_teeth_ship_it">评论</a></p>
查看缓存全文
缓存时间: 2026/09/20 06:10
# 咬牙坚持,果断交付
来源:https://www.seangoedecke.com/grit-your-teeth-and-ship-it/
擅长构建与擅长交付是两种不同的技能。短期内,这两者实际上相互冲突:如果你有构建的天赋,你可能会在交付上表现*更差*。艾拉·格拉斯对此有一段经典的论述。
> 我们所有从事创造性工作的人,最初入行都是因为我们有良好的品味。但这里存在一个差距。在你刚开始创作的几年里,作品确实不够好。它试图变得优秀,具有潜力,但尚未达到。然而你的品味——那个吸引你入行的东西——依然出色。而你的品味,正是让你对自己的作品感到失望的原因。
解决这个问题的唯一方法是**咬牙坚持,果断交付**。即使你认为自己的作品很糟糕,也必须强迫自己发布它。
### 编程https://www.seangoedecke.com/grit-your-teeth-and-ship-it/#programming
有天赋的程序员有一种近乎病态的(https://www.seangoedecke.com/addicted-to-being-useful/)渴望去构建优雅、正确、整洁的系统。正是这种渴望驱使他们学习语言的奥秘细节,或是花时间一遍遍打磨和重构代码。但这同时也使他们不愿交付。软件中的任何缺陷都会在情感上困扰他们。如果他们带着这些缺陷交付,会觉得别人会认为他们不够细心才没发现这些问题,或者认为他们水平不够而无法修复它们。
当你独自编写软件时,这种情况已经很烦人了;但在科技公司工作时,这完全是致命的。任何大型软件系统都布满了缺陷,无论是由于时间压力、相对缺乏经验(https://www.seangoedecke.com/bad-code-at-big-companies/)、棘手的特性(https://www.seangoedecke.com/wicked-features/),还是其他上百种原因。与之协作是一个妥协的过程:在代码库的特性和怪癖下寻找最佳解决方案。事实上,由于大型代码库中最重要的是统一性(https://www.seangoedecke.com/large-established-codebases/),有时正确的做法甚至是*复制*缺陷,只要它们不是灾难性的。
有天赋的程序员常常会陷入停滞。我经常看到他们退缩到可以安全地让代码“正确”的小领域里:调整开发环境配置,或者重构测试。有时他们什么也不做,在羞耻和愧疚中打转(再加上一事无成带来的加倍羞耻感),直到崩溃离职。如果他们的品味差一些,他们就不会那么擅长编程,但会变得有用得多。通常,你可以通过时间和努力改善一个糟糕的代码差异。但你无法改善*没有*的代码差异。
### 写作https://www.seangoedecke.com/grit-your-teeth-and-ship-it/#writing
我对笨拙的句子和行文不均的散文很敏感。这可能让写作过程变得不愉快:我知道我想表达什么,但似乎无法用足够清晰和优雅的方式说出来——而我知道这是可能的。超过一半的时间,当我完成一篇博客文章的初稿时,看着它,我并不觉得它很好。但我(大部分情况下)还是咬牙发布了它,因为**你必须优先考虑交付**。
和任何技能一样,交付会越练越轻松。如果我一个月没有发布博客文章,我总是觉得下一篇草稿写得太差或太无趣,不好意思放出去。但当我每天发布一篇文章时,我通常对每篇草稿的感觉都很好。当我回读以前的文章时,我分不清哪些是我当时感觉良好的,哪些是感觉糟糕的。这与文章是否受欢迎(https://www.seangoedecke.com/popular/)之间没有关联。以下是一些我在写作时并不喜欢但引起读者共鸣的文章:
- 做最简单且可能有效的事(https://www.seangoedecke.com/the-simplest-thing-that-could-possibly-work/)
- 软件工程可能不再是终身职业(https://www.seangoedecke.com/software-engineering-may-no-longer-be-a-lifetime-career/)
- 软件工程师应该有点玩世不恭(https://www.seangoedecke.com/a-little-bit-cynical/)
以下是一些我觉得写得不错但未能获得广泛关注的文章:
- 弱势的工程经理(https://www.seangoedecke.com/weak-managers/)
- 在所有可能解决方案空间中的路径(https://www.seangoedecke.com/solution-space/)
- 试图给不尊重的人留下印象(https://www.seangoedecke.com/impressing-people/)
你无法预测人们会觉得什么有趣或有用。因此,产出大量作品比少量高度打磨的作品更能带来回报。
意识到你某些最随意、顺手为之的作品,会比你费尽心力1(https://www.seangoedecke.com/grit-your-teeth-and-ship-it/#fn-1)完成的作品更成功,这可能会令人沮丧。具体来说,这令人沮丧,因为这意味着你意识到自己无法*掌控*自己的成功。你无法通过专注于单一作品直到满意其出色来产出成功之作。相反,你只能做很多事,看看哪些能行得通。你必须以动量为导向(https://sunilpai.dev/posts/the-senior-engineer-death-spiral/),而非以结果为导向。换句话说,**你必须咬牙坚持,果断交付**。
减少写作的一个常见原因是过分珍视自己的想法。如果你认为自己有一个非常吸引人的概念,你不想“浪费”在一个写得糟糕的故事上。但事实上,你可以反复写同一个主题,直到把它写好!我大约写了三十篇关于交付的文章(这就是其中一篇),或者关于科技公司如何运作的文章,或者关于内在情绪调节与技术能力同样重要的文章。只要我对这些话题还有兴趣,我预计会继续写和思考这些想法。
---
如果你喜欢这篇文章,请考虑订阅(https://buttondown.com/seangoedecke)以接收我新文章的邮件更新,或者在Hacker News上分享它(https://news.ycombinator.com/submitlink?u=https%3A%2F%2Fwww.seangoedecke.com%2Fgrit-your-teeth-and-ship-it%2F&t=Grit%20your%20teeth%20and%20ship%20it)。
以下是一篇与此文有共同标签的相关文章的预览:
> 工程绝望谷 我已经交付(https://www.seangoedecke.com/how-to-ship)了许多成功的工程项目。当我开始一个项目时,我现在非常(或许是不切实际地)有信心能成功交付它。即便如此,在每一个这样的项目中,都会有一段时期——也许是一天,甚至是一周——感觉一切都出了问题,项目将是一场灾难。我称之为工程绝望谷。掌握项目管理的重要部分,就是预见到并熬过这段时期。继续阅读……(https://www.seangoedecke.com/the-valley-of-engineering-despair/)
---
相似文章
发布产品的最佳时机是什么?我搁置一个能正常运行的应用程序一个月,因为我一直告诉自己需要完美的计划……
Ray Fernando 反思了他因完美主义而延迟发布一个能正常运行的应用程序的经历,并得出结论:尽早发布更有利于解决实际问题。
有时候,你必须去做该做的事
这是一篇关于学习 Rust 编程的个人反思,强调了克服完美主义、拥抱编程和写作中迭代创作过程的重要性。
如何确保你永远无法发布
这篇博客文章讽刺地概述了如何结合常见的软件开发实践,如微服务和严格审查,造成多重的协调障碍,阻碍产品发布效率。
@thdxr: 让产品成功发布和交付的最后20%一如既往地困难,这就是99%的程序员总是……
产品发布和成功的最后20%依然艰难,致使许多程序员放弃项目。
管他呢,继续做吧
一位程序员反思生成式AI对编程和游戏创作的打击效果,但尽管价值缩水,仍决心继续创造。