译:完成的艺术

原文:https://www.bytedrum.com/posts/art-of-finishing/
作者:Tomas Stropus
译者:ChatGPT 4 Turbo

编者注:很多人都有完不成的困扰,这篇文章前面写的比较冗长,可以直接跳到策略部分,策略部分里的方法都非常实用,值得背下来。如下,1)定义完成,2)拥抱 MVP,不追求完美而是追求足够好,3)设定 Deadline 创造紧迫感,4)通过小项目练习「完成」的肌肉记忆,5)区分创意,别急着做,6)庆祝完成,当成一件大事,要有仪式感,7)借助外部给自己责任感。

这是一个安静的星期六下午。我抽出了几个宝贵的小时来编码,手里拿着一杯热腾腾的咖啡,心中涌动着熟悉的冲动,想要投入到某个项目中去。当我安顿好自己,打开终端时,我面临着一个已经变得太过熟悉的挑战:决定该解决我众多未完成项目中的哪一个。

我浏览我的项目目录,眼前是一片半途而废的想法和停滞的进行中作品所构成的墓地。每一个都代表着我试图解决的一个不同的问题,尝试掌握的一项不同的技术。它们都很有趣,每一个都有其自身的目的和潜力。但当我浏览它们时,我已经可以感觉到我的热情在减退。我知道,无论我选择哪一个,我都将不仅仅面对原始问题,还有自我上次查看代码以来已经生长出来的新挑战多头蛇。

经过一番思考,我做出了选择并启动了我的 IDE。当我拉取最新的变更并开始通过我的提交历史进行考古挖掘时,我为自己将要发现的事情做好了心理准备。果然,它就在那里:一个未完成的前端任务,更像是线框图而不是精 polished 的 UI。或许,它是一个遇到我之前没预料到的限制的库集成。或者,以典型的过度设计方式,我为一个本可以用一个简单脚本解决的问题构建了一个复杂的架构。

我卷起袖子,决心要取得进展。接下来的几个小时在一阵阵活动中飞快过去了 —— 重构代码、调试集成问题,或是与 CSS 搏斗以让那一个组件正好对齐。不知不觉中,我分配的时间已经用完了。

当我准备离开我的工作台时,我无法摆脱一种挫败感。我开始时充满了乐观,准备取得重大进展。现在,我却留下了一种令人不安的不足感。尽管我努力了,感觉上我几乎没有推动事情有所进展。代码库仍然是 TODO 注释和半成品功能的迷宫。软件开发的多头蛇为我设法处理的每一个问题再生长出了两个新头。

这种热情、挣扎和失望的循环变得太熟悉了。这就是九头蛇项目效应:无论我取得了多少进展,新的挑战似乎总是会接踵而至。但是,虽然这种模式看起来似乎无法打破,我决心找到一种方法来驯服这头野兽。在这篇文章中,我将探讨打破这一无休止的开始和令人不满的中段循环的策略。是时候学习完成的艺术了,一劳永逸地屠杀这头九头蛇,终于体验到完成项目的满足感。

无尽项目的诱惑

在无限可能的领域里,有一种特定的舒适感。当一个项目正在进行时,它可以是任何东西。这是薛定谔的项目 —— 在你实际完成它并发布到世界上之前,它同时是完美和有缺陷的。当你宣布一个项目“完成”时,你将它暴露给外部和内部的批评。如果它不够好怎么办?如果我错过了一些关键的东西呢?

这种对最终性的恐惧,加上新想法的兴奋,为项目的拖延创造了一个理想的环境。启动新项目总是比推进一个项目的最后,通常是单调乏味的完成阶段要容易。但这不仅仅是出于恐惧。

一个未完成的项目充满了醉人的_潜力_。它可能是下一个大事件,一个革命性的想法,或者你的杰作。这种潜力往往比成品的现实更令人激动。一个正在进行的项目的熟悉领域也提供了舒适感。你了解代码库,你理解问题,你处于自己的元素中。开始新事物意味着面对未知,这可能是令人望而却步的。

生产力的幻觉也起着重要的作用。只要你在做某件事,你就会感觉自己很有生产力。项目接项目地跳转,可以给你提供不断的“新项目能量”,这比完成单一项目的磨砺感觉更令人振奋。这是一种避免完成时来临的困难决定的方式。你是否裁掉那个花了几周时间但还不够好的功能?你是现在发布还是再花一个月进行打磨?通过保持项目的进行,你可以绕过这些艰难的选择。

个人项目中缺乏截止日期在这个复杂性中又增添了一层2。没有截止日期的外部压力,我们太容易陷入完美主义的陷阱。我们发现自己在不断的调整和完善,总是追求那个难以捉摸的“完美”解决方案。讽刺的是,这种追求完美往往导致不完美的结果 —— 或根本没有结果。在我们的职业生涯中,截止日期迫使我们优先考虑和做出实用的决定。但在个人项目中,无限时间的奢侈可能变成一种诅咒,让我们为了那些实际上对项目的整体成功或实用性影响不大的细节,花费数小时、数天,甚至数周的时间。这是一个明显的提醒,有时候,“足够好”真的就是完美,特别是当另一种选择是根本不完成时。

矛盾的是,有时我们对成功的恐惧和对失败的恐惧一样多。一个成功的项目可能导致期望值上升、更多的责任,或者一种我们还没准备好接受的身份变化。未完成的项目成为了一个安全网,保护我们免受成功的未知后果。

我的典型项目时间线图

永远不完成的代价#

但这个无休止的开始的循环付出的代价是巨大的。完成一个项目看到其结果的独特满足感,是任何数量的开始都无法比拟的。此外,未完成的项目带来一种心理负担。它们悄悄地停留在你的脑后,悄悄地消耗你的精神能量和热情。

或许最重要的是,我们从完成项目中学到的课程,与我们从开始它们时学到的不同。开始教会我们关于创意和最初的实施。另一方面,完成教会我们关于坚持、注意细节,以及知道何时放手的艺术。这些是只能通过完成行动来磨练的宝贵技能。

永远不完成的成本远不止错失机会那么简单。虽然开始项目可能会让你接触到新技术或概念,但真正的 技能成长 往往发生在完成的过程中 —— 解决那些最后、最棘手的问题时。每一个未完成的项目都可能侵蚀你的自信心。随着时间的推移,你可能开始怀疑自己是否有能力完成任何重大的事情,从而创造了一个不完成的自我实现的预言。

项目的最后阶段通常包括优化、重构以及真正理解你的代码的复杂性。不完成,你就错过了这些宝贵的学习经验。在职业设置中,被认为是那种开始事情但不完成的人,可能对你的职业生涯有害。雇主和客户都重视能够交付完成项目的人,使得完成能力成为一项关键的职业技能。

每个未完成的项目都占据了心理空间。就像打开了几十个浏览器标签 —— 每一个都会使用你一点心智 RAM,使你减少了接收新想法和专注工作的能力。这种心理混乱可能会大大耗损你的创造力和生产力。

或许最重要的是,你否认了自己在向世界发布完成项目时无与伦比的满足感。在发布中有一种 传递的喜悦,这是开始新事物所无法复制的。完成的项目还能吸引反馈,没有发布,你就错失了来自用户或同行的宝贵洞见,这些洞见可能会大大提高你的技能和未来项目。

理解无休止项目的吸引力和永远不完成的成本是至关重要的。这不是要贬低新开始的兴奋感,而是要找到一种平衡 —— 学会将那种最初的热情转化为同等重要(如果有时不那么光鲜亮丽)的完成事情的工作。通过认识到我们自身的这些模式,我们可以开始开发策略来克服它们,终于战胜项目九头蛇。

征服项目海德拉的策略

那么,我该如何打破这一循环?我如何学会完成我开始的事?以下是一些我正在实施的策略,以驯服我自己的项目海德拉:

  1. 从一开始就定义“完成”:在深入项目之前,我会清晰地定义什么样的状态算是“完成”。哪些核心功能构成了一个完整的项目?我会把它们写下来,并抵制在过程中扩展这个列表的冲动。这种清晰性有助于防止范围蔓延,并为我提供了一个明确的目标。
  2. 🚀 拥抱最小可行产品(MVP):我不会追求完美,而是追求“足够好”。我会让一个基础版本投入使用,并推向世界。我总是可以迭代和改进。这种方法有助于保持动力,并提供早期反馈的机会。
  3. 为我的项目设定时间框:我会给自己设置一个截止日期。它不必很短,但应该是有限的。有一个结束日期创造了紧迫感,并帮助我防止无休止的功能蔓延。我发现将较大的项目分解成较小的、有时间限制的阶段有助于保持进度感。
  4. 🧩 练习完成小事情:通过定期完成小项目或任务,我将建立我的“完成肌肉”。我认识到,完成的技能就像其他技能一样 — 随着练习而提高。这可以是简单的完成一篇博客文章或每周完成一个小的编码挑战。
  5. 💡 把创意和实施分开:我会保持一个单独的创意日志。当新的功能或项目想法在实施过程中出现时,我会把它们记下来,留待将来考虑,而不是立即采取行动。这有助于保持对当前项目的关注,同时仍然捕捉到可能有价值的想法。
  6. 🎉 庆祝完成:我会把完成当作一件大事。无论项目多么小,当我完成一个项目时,我都会庆祝。这种积极的强化可以帮助我转变思维,朝着完成方向前进。无论是请自己吃一顿好饭,还是简单地与朋友分享我的成就,认可这些胜利都会增加未来项目的动力。
  7. 👥 拥抱责任感:我会找到让自己对完成项目负责的方法。这可能涉及找到一个责任伙伴,对项目里程碑进行公开承诺,或加入一个开发者团队。外部的责任感增加了对通常孤独的个人项目旅程的动力和支持。3

这些策略提供了我个人克服海德拉项目挑战的路线图。通过一贯地实施它们,我希望培养出更好的习惯,并增加看到项目完成的机会。这关乎在我工作周围创建一个支持性的结构,平衡内在动力与外部责任感,并逐渐建立完成技能。

当然,策略只是开始。真正的挑战在于一贯地将这些方法应用到我的工作中。这是一个试错的过程,了解哪些最适合我的个人风格和每个项目的特定需求。但是,通过每个小小的胜利,通过将每个项目推进一点点完成,我正在培养终于驯服海德拉项目所需的习惯和心态。

向前的道路#

前方的道路将是充满挑战的。我知道,改变根深蒂固的习惯和思维模式需要时间和持续的努力。沿途可能会有挫折 —— 当新项目的诱惑使我偏离完成当前项目的时候,或者当不完美的恐惧让我犹豫宣布某事“完成”的时候。但我致力于突破这些障碍,建立我的“完成肌肉”。

这段旅程不仅仅是关于完成代码;它关乎作为一名开发者和创造者的成长。每完成一个项目,无论多么小,都是向着不仅仅是带着热情开始,而是带着满意结束的人迈进的一步。

海德拉项目在我的工作上悬挂了太久。有了新策略和决心,我准备正面迎战这个兽性。是时候停止规划,开始行动了。

现在,如果你们可以原谅我,我有一个项目要完成 —— 这次,我打算坚持到底。4

脚注#

  1. 然而,不像猫,大多数未完成的项目既不是活着也不是死了 – 它们只是占用着我们的硬盘 SSD NVMe 驱动器的空间。
  2. 这种现象与 帕金森定律 密切相关,该定律指出:“工作会扩展以填满完成它的可用时间。” 在个人项目中,可用时间通常是无限的,导致无休止的扩展。
  3. 由美国培训与发展协会的一项研究发现,如果人们向其他人承诺,完成目标的可能性为 65%。当他们与承诺的人有一个具体的问责约定时,这个概率增加到 95%。
  4. 我一次性完成了这篇文章,由决心和惊人量的咖啡提供动力。制作这篇博客文章未对任何九头蛇造成伤害。