这是用户在 2024-9-19 13:52 为 https://www.bytedrum.com/posts/art-of-finishing/ 保存的双语快照页面,由 沉浸式翻译 提供双语支持。了解如何保存?
Skip to content

The Art of Finishing 完成的艺术

Published:
|
 at 08:10 PM 晚上 8:10

It’s a quiet Saturday afternoon. I’ve carved out a few precious hours for coding, armed with a steaming cup of coffee and the familiar urge to dive into a project. As I settle into my chair and open my terminal, I’m confronted with a challenge that’s become all too familiar: deciding which of my many unfinished projects to tackle.
这是一个安静的星期六下午。我空出了宝贵的几个小时来编码,手握一杯冒着热气的咖啡,迫切想要投入到一个项目中。当我坐在椅子上打开终端时,我面临着一个我太熟悉的挑战:选择到底要处理哪个未完成的项目。

I navigate to my project directory, greeted by a graveyard of half-implemented ideas and stalled works-in-progress. Each one represents a different problem I’ve tried to solve, a different technology I’ve attempted to master. They’re all interesting, each with its own purpose and potential. But as I scan through them, I can already feel my enthusiasm waning. I know that whichever one I choose, I’ll be facing not just the original problem, but a hydra of new challenges that have sprouted since I last looked at the code.
我进入到我的项目目录,看到半实施的想法和停滞的进行中作品成堆。每一个都代表了我曾试图解决的不同问题,我曾努力掌握的不同技术。它们都很有趣,各有自己的目的和潜力。但是当我浏览它们时,我已经感到我的热情正在减退。我知道无论我选择哪一个,我将面临不仅是最初的问题,还有自从上次查看代码以来萌生的无数新的挑战。

After some deliberation, I make my choice and fire up my IDE. As I pull the latest changes and begin the archaeological dig through my commit history, I brace myself for what I know I’ll find. Sure enough, there it is: an unfinished frontend task, more wireframe than polished UI. Or perhaps it’s a library integration that’s hitting limitations I hadn’t anticipated. Or, in classic over-engineering fashion, I’ve built a complex architecture for a problem that could have been solved with a simple script.
在经过一番深思熟虑后,我做出了选择并启动了我的 IDE。当我拉取最新的变更并开始探索我的提交历史时,我为即将发现的事物做好了准备。果不其然,那里就是它:一项未完成的前端任务,更像是草图而非精细的 UI。又或许是一个遇到了我未曾预料到的局限性的库集成。又或者,以经典的过度设计的方式,我为一个可以用简单的脚本解决的问题建立了复杂的架构。

I roll up my sleeves and dive in, determined to make progress. The next couple of hours fly by in a flurry of activity — refactoring code, debugging integration issues, or wrestling with CSS to get that one component to align just right. Before I know it, my allocated time is up.
我挽起袖子,决心取得进展。接下来的几个小时里,我忙个不停 —— 重构代码、调试集成问题,或与 CSS 作斗争来使那个组件对齐。不知不觉,我分配的时间用完了。

As I prepare to step away from my desk, I can’t shake a feeling of frustration. I started the session full of optimism, ready to make significant headway. Now, I’m left with a nagging sense of inadequacy. Despite my efforts, it feels like I’ve barely moved the needle. The codebase is still a maze of TODO comments and half-implemented features. The Hydra of software development has grown two new heads for every one I managed to address.
当我准备离开工作台时,我无法摆脱一种挫败感。我满怀希望地开始工作,准备取得重大进展。现在,我只剩下一种挥之不去的无力感。尽管我努力工作,但感觉自己几乎没有取得任何进展。代码库仍然是一片杂乱无章的 TODO 注释和半实现的功能。软件开发中的九头蛇每解决一个问题,又长出了两个新的问题。

This cycle of enthusiasm, struggle, and disappointment has become all too familiar. It’s the Hydra Project Effect: no matter how much progress I make, new challenges always seem to sprout in their place. But while this pattern may seem unbreakable, I’m determined to find a way to tame this beast. In this post, I’ll explore strategies for breaking out of this cycle of endless beginnings and unsatisfying middles. It’s time to learn the art of finishing, to slay this Hydra once and for all, and to finally experience the satisfaction of a completed project.
这种热情、挣扎和失望的循环已经变得太过熟悉了。这就是九头蛇计划效应:不管我取得了多大进步,新的挑战总是不断冒出来。但是虽然这种模式看起来无法打破,我决心找到一种方法来驾驭这个怪兽。在这篇文章中,我将探讨摆脱这种无休止的开端和不尽如人意的中间过程的策略。是时候学习完成的艺术了,一举斩杀这个九头蛇,最终体验一个已完成的项目带来的满足感。

My Hydra looks amazing, I am fantastic at drawing

The Allure of the Endless Project
无尽项目的魅力

There’s a certain comfort in the realm of infinite possibility. When a project is ongoing, it can be anything. It’s Schrödinger’s1 project — simultaneously perfect and flawed until you actually finish it and put it out into the world. The moment you declare a project “done,” you open it up to criticism, both external and internal. What if it’s not good enough? What if I missed something crucial?
在无限可能的领域中,有某种安慰。当一个项目正在进行时,它可以是任何东西。这是薛定谔的 1 项目 — 在你实际完成并将其推向世界之前,它同时完美和有缺陷。一旦你宣布一个项目 "完成", 你就会开放它接受批评,既来自外界,也来自内心。如果它还不够好呢?如果我遗漏了什么关键的东西呢?

This fear of finality, combined with the excitement of new ideas, creates an ideal environment for project procrastination. It’s always easier to start something new than to push through the final, often tedious stages of completion of a project. But there’s more to it than just fear.
对最终结果的恐惧,加上新想法的兴奋,造就了项目拖延的理想环境。开始一个新事物总是比坚持走完一个项目的最后往往让人厌烦的阶段更容易。但这不仅仅是因为恐惧。

An unfinished project is full of intoxicating potential. It could be the next big thing, a revolutionary idea, or your magnum opus. This potential often feels more exciting than the reality of a finished product. There’s also comfort in the familiar territory of an ongoing project. You know the codebase, you understand the problems, and you’re in your element. Starting something new means facing the unknown, which can be daunting.
一个未完成的项目充满了迷人的潜力。它可能是下一件大事、一个革命性的想法,或者是你的代表作。这种潜力通常比成品的现实更令人兴奋。正在进行的项目也给人一种熟悉的感觉。你知道代码库,你理解问题,并且处于自己的环境中。开始一些新的东西意味着面临未知,这可能让人望而生畏。

The illusion of productivity plays a significant role too. As long as you’re working on something, you feel productive. Jumping from project to project gives you a constant stream of “new project energy,” which can feel more invigorating than the grind of finishing a single project. It’s a way of avoiding difficult decisions that come with completion. Do you cut that feature you spent weeks on but isn’t quite right? Do you release now or spend another month polishing? By keeping projects ongoing, you can sidestep these challenging choices.
生产力的幻觉也起着重要作用。只要您一直在某事上工作,就会感到很有成就感。从一个项目跳到另一个项目,给您带来持续不断的 "新项目活力", 这种感觉可能比完成单个项目更令人振奋。这是一种逃避完成时必须做出的艰难决定的方式。您要不要砍掉那个您花了几个星期才完成但并不十分合适的功能?要不要现在就发布,还是再花一个月完善?通过保持项目持续进行,您可以规避这些艰难的选择。

The absence of deadlines in personal projects adds another layer to this complexity2. Without the external pressure of a due date, it’s all too easy to fall into the trap of perfectionism. We find ourselves endlessly tweaking and refining, always chasing that elusive “perfect” solution. The irony is that this pursuit of perfection often leads to imperfect results — or no results at all. In our professional lives, deadlines force us to prioritize and make pragmatic decisions. But in personal projects, the luxury of unlimited time can become a curse, allowing us to justify spending hours, days, or even weeks on minor details that, in reality, make little difference to the project’s overall success or usefulness. It’s a stark reminder that sometimes, “good enough” truly is perfect, especially when the alternative is never finishing at all.
在个人项目中缺乏截止日期增加了这种复杂性 2。没有外部压力的截止日期,很容易陷入完美主义的陷阱。我们发现自己无休止地调整和完善,总是追求那种难以捉摸的 "完美" 解决方案。矽岸的是,这种对完美的追求常常导致不完美的结果 - 或根本没有结果。在我们的职业生活中,截止日期迫使我们优先考虑并做出务实的决定。但在个人项目中,无限时间的奢侈可能会成为诅咒,让我们为微小的细节花费数小时、数天甚至数周的时间,而这些细节实际上对项目的整体成功或有用性影响很小。这是一个明确的提醒,有时 "尚可" 确实是完美的,特别是当另一种选择就是永远无法完成的时候。

Paradoxically, sometimes we fear success as much as failure. A successful project might lead to increased expectations, more responsibility, or a change in identity that we’re not quite ready for. The unfinished project becomes a safety net, protecting us from the unknown consequences of success.
自相矛盾的是,有时我们会和害怕失败一样害怕成功。一个成功的项目可能会带来更高的期望、更多的责任,或是我们还无法承担的身份转变。未完成的项目成为我们的安全网,保护我们免于承担成功的未知后果。

My typical project timeline graph

The Cost of Never Finishing
从未完成的代价

But this cycle of endless beginnings comes at a steep price. There’s a unique satisfaction in seeing a project through to completion that no amount of starting can match. Moreover, unfinished projects carry a mental weight. They linger in the back of your mind, quietly draining your mental energy and enthusiasm.
但是这种无休止的新开始代价高昂。看到一个项目从头到尾完成,会有独特的满足感,这是任何开始都无法带来的。此外,未完成的项目会带来心理负担。它们会在你的大脑后方徘徊,悄悄地消耗你的精神能量和热情。

Perhaps most importantly, we learn different lessons from finishing projects than we do from starting them. Starting teaches us about ideation and initial implementation. Finishing, on the other hand, teaches us about perseverance, attention to detail, and the art of knowing when to let go. These are invaluable skills that can only be honed through the act of completion.
也许最重要的是,我们从完成项目中学到的教训与从启动项目中学到的教训不同。启动项目教会我们理念和初步实施。而完成项目则教会我们坚韧、注重细节以及何时放手的艺术。这些宝贵的技能只能通过完成项目的行为来磨练。

The costs of never finishing extend far beyond just missed opportunities. While starting projects might expose you to new technologies or concepts, it’s in the act of finishing — of solving those last, trickiest problems — where real skill growth often occurs. Each unfinished project can chip away at your confidence. Over time, you might start to doubt your ability to complete anything substantial, creating a self-fulfilling prophecy of incompletion.
永远无法完成的代价远远超出了错失机会。虽然开始项目可能会让您接触到新的技术或概念,但在完成项目的过程中 — 解决那些最后最棘手的问题 — 通常会发生真正的技能提升。每个未完成的项目都会削弱您的自信。随着时间的推移,您可能会开始怀疑自己完成任何重大事情的能力,从而成为一个无法完成的自我应验预言。

The end stages of a project often involve optimization, refactoring, and really understanding the intricacies of your code. By not finishing, you miss out on these valuable learning experiences. In professional settings, being known as someone who starts things but doesn’t finish them can be detrimental to your career. Employers and clients value those who can deliver completed projects, making the ability to finish a crucial professional skill.
项目的最后阶段通常涉及优化、重构和深入理解代码的复杂性。如果不完成项目,您将错过这些宝贵的学习经验。在专业环境中,被视为开始事情但无法完成的人可能会对您的职业发展造成不利影响。雇主和客户重视能够完成项目的员工,因此完成项目的能力是一项关键的专业技能。

Every unfinished project takes up mental space. It’s like having dozens of browser tabs open — each one uses a little bit of your mental RAM, leaving you with less capacity for new ideas and focused work. This mental clutter can be a significant drain on your creativity and productivity.
每个未完成的项目都占用了您的心理空间。这就像打开了许多浏览器标签页 —— 每个标签页都会占用一些您的心理工作内存,从而让您有较少的精力去处理新的想法和专注工作。这种心理杂乱可能严重影响您的创造力和生产效率。

Perhaps most importantly, you deny yourself the incomparable feeling of satisfaction when you release a finished project into the world. There’s a joy in shipping that can’t be replicated by starting something new. Finished projects also invite feedback, and without shipping, you miss out on valuable insights from users or peers that could significantly improve your skills and future projects.
也许最重要的是,当你将一个完成的项目发布到世界上时,你会失去无与伦比的满足感。将作品发布会带来一种快乐,这是开始新事物所无法复制的。完成的项目也会邀请反馈,如果不发布,你就会错过用户或同行的宝贵洞见,这些洞见可能会大大提高你的技能和未来的项目。

Understanding both the allure of endless projects and the cost of never finishing is crucial. It’s not about dismissing the excitement of new beginnings, but rather about finding a balance — learning to channel that initial enthusiasm into the equally important (if sometimes less glamorous) work of seeing things through to completion. By recognizing these patterns in ourselves, we can start to develop strategies to overcome them and finally slay the Project Hydra.
了解无休止的项目的诱惑以及永远完不成的代价至关重要。这不是要否定新开始的激动人心,而是要找到平衡 —— 学会将最初的热情引导到同样重要 (尽管有时可能不那么引人注目) 的完成工作上。通过认识到我们自身的这些模式,我们可以开始制定策略来克服它们,最终斩杀 "项目九头蛇"。

Strategies for Taming the Project Hydra
对付项目喜马拉雅的策略

So, how do I break this cycle? How do I learn to finish what I start? Here are some strategies I’m implementing to tame my own Project Hydra:
那么,我该如何打破这一循环?我该如何学会完成自己开始的事情?以下是一些我正在实施的策略来驯服我自己的项目 "九头蛇":

  1. Define “Done” from the Start: Before diving into a project, I’ll clearly define what “finished” looks like. What are the core features that constitute a complete project? I’ll write them down and resist the urge to expand this list as I go. This clarity helps prevent scope creep and gives me a clear target to aim for.
    从一开始就明确 "完成" 的定义: 开始一个项目之前,我会清楚地定义 "完成" 的样子是什么。什么是构成完整项目的核心功能?我会把它们写下来,并抑制扩大这个列表的冲动。这种清晰有助于防止范围扩大,并为我提供了明确的目标。

  2. 🚀 Embrace MVP: Instead of aiming for perfection, I’ll aim for “good enough.” I’ll get a basic version working and out into the world. I can always iterate and improve later. This approach helps maintain momentum and provides early feedback opportunities.
    🚀 拥抱 MVP: 不要追求完美,只需要 "够好" 就可以了。我会让基本版本运行并投放到世界上。之后我可以一直迭代和改进。这种方法有助于保持势头,并提供早期反馈的机会。

  3. Time-Box My Projects: I’ll give myself a deadline. It doesn’t have to be short, but it should be finite. Having an end date creates urgency and helps me prevent endless feature creep. I find that breaking larger projects into smaller, time-boxed phases helps maintain a sense of progress.
    时间盒子项目: 我会给自己一个截止日期。它不必很短,但应该是有限的。有一个结束日期会创造紧迫感,并帮助我防止无休止的功能膨胀。我发现将较大的项目分解为较小的、有时间限制的阶段有助于保持进度感。

  4. 🧩 Practice Finishing Small Things: I’ll build my “finishing muscle” by completing small projects or tasks regularly. I recognize that the skill of finishing is like any other — it improves with practice. This could be as simple as finishing a blog post or completing a small coding challenge each week.
    🧩 练习完成小事情:我将通过定期完成小型项目或任务来训练我的 "完成能力"。我意识到完成的技能就像其他任何技能一样 - 需要通过练习来提高。这可以像每周完成一篇博客文章或完成一个小型编码挑战那样简单。

  5. 💡 Separate Ideation from Implementation: I’ll keep a separate idea log. When new features or project ideas pop up during implementation, I’ll jot them down for future consideration instead of immediately acting on them. This helps maintain focus on the current project while still capturing potentially valuable ideas.
    💡 将创意与实施分开:我将保持一个单独的创意日志。在实施过程中出现新的功能或项目想法时,我会记下来以供将来考虑,而不是立即采取行动。这有助于保持对当前项目的关注,同时仍能捕捉潜在有价值的想法。

  6. 🎉 Celebrate Completions: I’ll make finishing a big deal. I’ll celebrate when I complete a project, no matter how small. This positive reinforcement can help shift my mindset towards completion. Whether it’s treating myself to a nice dinner or simply sharing my accomplishment with friends, acknowledging these wins boosts motivation for future projects.
    🎉 庆祝完成:我会把完成一件事情变得很重要。无论项目有多小,我都会庆祝完成它。这种积极的强化可以帮助我转变完成项目的心态。无论是给自己一顿美餐还是简单地与朋友分享我的成就,认识到这些胜利都会提高我未来项目的动力。

  7. 👥 Embrace Accountability: I’ll find ways to make myself accountable for finishing projects. This could involve finding an accountability partner, making public commitments about project milestones, or joining a group of fellow developers. External accountability adds motivation and support to the often solitary journey of personal projects.3
    👥 拥抱责任 :我会找到方法让自己对完成项目负责。这可能涉及寻找责任伙伴、公开承诺项目里程碑,或加入一个开发者团体。外部责任会为通常孤独的个人项目之旅增添动力和支持。3

These strategies provide my personal roadmap for overcoming the challenges of the Project Hydra. By implementing them consistently, I hope to develop better habits and increase my chances of seeing projects through to completion. It’s about creating a supportive structure around my work, balancing internal motivation with external accountability, and gradually building the skill of finishing.
这些策略为我个人克服 Project Hydra 挑战提供了路线图。通过持续实施它们,我希望培养更好的习惯,提高完成项目的机会。这是关于在工作周围创造一个支持性的结构,平衡内部动力和外部责任,并逐步培养完成的技能。

Of course, strategies are just the beginning. The real challenge lies in consistently applying these approaches to my work. It’s a process of trial and error, of learning what works best for my personal style and the specific demands of each project. But with each small win, with each project pushed a little closer to completion, I’m building the habits and mindset needed to finally tame the Project Hydra.
当然,策略只是开始。真正的挑战在于持续将这些方法应用于我的工作。这是一个试错的过程,了解最适合我个人风格和每个项目具体需求的方法。但随着每个小小的胜利,每个项目逐步接近完成,我正在培养所需的习惯和心态,最终驾驭项目的挑战。

The Path Forward
前进之路

The path ahead will be challenging. I know that changing ingrained habits and thought patterns will take time and consistent effort. There will likely be setbacks along the way – moments when the allure of a new project tempts me away from finishing the current one, or when the fear of imperfection makes me hesitate to declare something “done”. But I’m committed to pushing through these obstacles and building my “finishing muscle”.
前路必定充满挑战。我知道改变根深蒂固的习惯和思维模式需要时间和持续不断的努力。沿途很可能会遇到挫折–有时新项目的诱惑会让我放弃当前的工作,有时对完美的恐惧会让我难以下定决心。但我决心克服这些障碍,培养我的 "完成能力"。

This journey isn’t just about completing code; it’s about growing as a developer and creator. Each finished project, no matter how small, is a step towards becoming someone who not only starts with enthusiasm but finishes with satisfaction.
这个旅程不仅仅是完成代码,而是成为一个更优秀的开发者和创造者的过程。无论项目有多小,每一个完成的项目都是朝着成为一个不仅充满热情开始,而且以满足感完成的人迈出的一步。

The Project Hydra has loomed over my work for too long. Armed with new strategies and determination, I’m ready to face this beast head-on. It’s time to stop planning and start doing.
海德拉计划一直笼罩着我的工作太久了。凭借新的策略和决心,我已准备好正面迎接这个怪物。是时候停止计划开始行动了。

Now, if you’ll excuse me, I have a project to finish – and this time, I intend to see it through.4
现在,如果你谅解我,我有一个项目要完成 - 这一次,我打算坚持到底。4

Footnotes

  1. Unlike the cat, however, most unfinished projects are neither alive nor dead - they’re just taking up space on our hard SSD NVMe drives.
    与猫不同,大多数未完成的项目既非活着也非死去 - 它们只是占用着我们硬盘固态硬盘 NVMe 驱动器上的空间。

  2. This phenomenon is closely related to Parkinson’s Law, which states that “work expands so as to fill the time available for its completion.” In personal projects, the available time is often infinite, leading to endless expansion.
    这一现象与帕金森法则密切相关,该法则指出 "工作会不断扩展,直到填满可用的时间"。在个人项目中,可用时间往往是无限的,从而导致无穷尽的扩张。

  3. A study by the American Society of Training and Development found that people have a 65% chance of completing a goal if they commit to someone else. That chance increases to 95% when they have a specific accountability appointment with the person they’ve committed to.
    根据美国培训与发展协会的一项研究发现,如果人们向他人承诺,完成目标的几率为 65%。而如果他们与承诺的对象安排了具体的责任预约,完成的几率将增至 95%。

  4. I finished this article in one sitting, fueled by determination and an alarming amount of coffee. No Hydras were harmed in the making of this blog post.
    我一口气完成了这篇文章,凭借决心和大量咖啡的驱动。这篇博文的创作过程中没有伤害到任何水怪。