冲劲陷阱速查表

15 Aug 20235 min · 1 分钟English · 中文

Gumption Trap Cheatsheet

Avoiding the setbacks and hangups that cause us to give up completely.

The ultimate test’s always your own serenity. If you don’t have this when you start and maintain it while you’re working you’re likely to build your personal problems right into the machine itself - ZAMM

What is a Gumption Trap?

A gumption trap is an event that causes us to lose passion and craftsmanship for a project. While a regular setback makes us want to take a break, a gumption trap makes us want to set the project on fire and throw it off a cliff.

It was first used in Robert Pirsig's cult classic "Zen and the Art of Motorcycle Maintenance".

Why do they occur?

Pirsig defines it as anything that causes us to lose sight of "Quality" and no longer care about how well something is done. We just want to get it over with, even if it means walking away altogether.

Gumption traps occur because passion is a non-renewable resource. It's near impossible to "force" ourselves to care about something. We can only increase our sophistication at acting like we care.

Energy can be renewed with a break. Time can be increased by re-scoping expectations. But running out of gumption is a game over. So it's the most important thing to safeguard.

Examples of Gumption Traps

Forced Backtracking

When you're almost at the end of a project that involves a complex sequence of steps but discover something that requires you to basically start all over.

This occurs usually at a time when you think you're almost done. After days of work you finally have it all together except for: What's this? A connecting-rod bearing liner?! How could you have left that out? Oh Jesus, everything's got to come apart again! - ZAMM

Gumption Desperation

When you realize you're about to lose motivation for the project so you hurry up wildly in an effort to make up for lost time. This rarely works as it just creates more mistakes. It's the "Hail Mary" strategy of negative expected returns but high potential reward. Buying lottery tickets and trolling online are examples in real life and in online games where you internally give up on at succeeding using the conventional path

Intermittent Failures

These are failures that disappear as soon as you try to debug them and can't be consistently reproduced. You don't know why they happen and you can never sure that they are 100% fixed. They're discouraging when they happen over and over again despite multiple layers of duct tape attempts. They exist in the background like an constantly looming shadow, threatening to sabotage all future initiatives.

Value Rigidity

This is a inability to re-value what you see because of a commitment to previous values. An example is a pre-mature diagnosis that prevents you from making new discoveries as new information is discovered. It's like a jigsaw that you're sure you have the pieces to but is actually missing a few.

Like a monkey with its fist in a jar, it's impossible to escape the currently situation without letting go of something valuable.

Anxiety

This gumption trap of anxiety, which results from overmotivation, can lead to all kinds of errors of excessive fussiness. You fix things that don't need fixing, and chase after imaginary ailments. You jump to wild conclusions and build all kinds of errors into the machine because of your own nervousness. These errors, when made, tend to confirm your original underestimation of yourself. This leads to more errors, which lead to more underestimation, in a self-stoking cycle. - ZAMM

Boredom

Boredom means you’re off the Quality track, you’re not seeing things freshly, you’ve lost your “beginner’s mind” and your motorcycle is in great danger. Boredom means your gumption supply is low and must be replenished before anything else is done. When you’re bored, stop! Go to a show. Turn on the TV. Call it a day. Do anything but work on that machine. If you don’t stop, the next thing that happens is the Big Mistake, and then all the boredom plus the Big Mistake combine together in one Sunday punch to knock all the gumption out of you and you are really stopped. - ZAMM

Examples in Software Engineering

1. Legacy Code Labyrinth

You're given the responsibility to modify or extend a piece of legacy software. As you delve deeper, you realize there's minimal documentation, no unit tests, and the original developers are long gone. Every modification seems to break another feature, and the entire codebase feels like a fragile house of cards. You're tempted to rewrite the whole thing, but time constraints and lack of organizational support demoralize you.

2. Dependency Hell

After spending hours developing a feature, you decide to integrate a new library or tool. This results in a cascade of incompatible dependencies. Every solution you try introduces new conflicts. The more you untangle, the more convoluted it gets, leading to a strong urge to scrap everything and start over.

3. Endless Refactoring Cycle

The pursuit of the "perfect" code leads you down a rabbit hole of constant refactoring. Each change seems to make sense in isolation, but collectively, they lead to over-engineering and code that's even harder to understand. This obsession with perfection can sap enthusiasm and lead to burnout.

4. Shifting Requirements Whirlwind

Just as you're about to complete a feature, stakeholders change their minds, and the requirements shift. The new changes negate much of your previous work. This repetitive cycle not only diminishes the value of your efforts but also leads to disillusionment and dwindling passion for the project.

5. Feedback Loop Frustration

You push code, expecting it to pass all tests and checks, but it fails due to some trivial issues or flaky tests. Each iteration requires waiting for the entire CI/CD pipeline to complete. This inefficient feedback loop erodes your patience and enthusiasm for the task at hand.

6. Unrealistic Optimism Overload

You underestimate the complexity of a task, thinking it'll be straightforward. As you start, you uncover layers of intricacies. The discrepancy between your initial estimate and the actual effort required creates frustration, leading to reduced motivation and the desire to cut corners.

7. Documentation Desert

You're trying to integrate with an external service or use a new tool, but the documentation is either non-existent or woefully out of date. Every step becomes a process of trial and error, and you feel like you're groping in the dark. The lack of guidance and clarity can rapidly drain your gumption.

8. Siloed Knowledge Sinkhole

You're stuck on a critical bug or feature, but the one person who has the expertise is either unavailable or has left the company. You're left to piece together the puzzle with fragmented information, leading to a feeling of isolation and a decline in morale.

一个人的内心宁静始终是最终的考验。如果工作时失去了这种宁静,你可能会将个人的问题纳入机器中 - 《摩托车维修艺术禅意》

何为“冲劲陷阱”?

“冲劲陷阱”是一个事件,导致我们对项目失去热情和匠心。当我们遭遇常规挫折,可能只是想休息一下;但遇到“冲劲陷阱”,我们可能希望彻底放弃项目。这个词首次出现在罗伯特·皮尔西格的经典之作《摩托车维修艺术禅意》中。

为何会出现?

皮尔西格描述,任何使我们失去对“品质”的追求,不再关心结果的事情都可能导致“冲劲陷阱”。热情是不可再生资源,很难“强迫”自己关心某事。只能更加巧妙地表现出关心的样子。能量可以通过休息来恢复,但一旦失去冲劲,游戏便结束。因此,保护冲劲至关重要。

“冲劲陷阱”实例

强制回溯

当你的项目即将完成,但发现一个错误导致你必须重新开始。

冲劲绝望

当你意识到即将失去项目的动力时,你会急于寻找替代方案,但往往会导致更多的错误。

间歇性故障

这些是你尝试修复但无法稳定复现的故障,令人沮丧。

价值刻板

无法重新评估你所看到的东西,因为你坚守以前的价值观。

焦虑和无聊

焦虑和无聊都可能导致你失去冲劲,甚至做出错误的决策。

软件工程中的例子

1. 遗留代码迷宫

负责修改老旧软件时,缺乏文档和测试,使你感到挫败。

2. 依赖地狱

集成新库导致依赖冲突,每次解决都引入新问题。

3. 持续重构循环

追求“完美”的代码导致过度工程化。

4. 要求不断变动

每当一个功能快完成时,需求就改变,使之前的工作失去价值。

5. 反馈循环挫败

代码测试失败,每次迭代都需等待整个流程完成。

6. 过度乐观

低估任务复杂性,导致挫败感。

7. 文档匮乏

集成外部服务或新工具时,缺少有效文档。

8. 知识孤岛

关键问题上卡住,但知道答案的人不在。