首页 科技快讯 开发者指南:用编程方式克服对失败的恐惧

开发者指南:用编程方式克服对失败的恐惧

来源:晰数塔互联网快讯 时间:2021年11月18日 16:51

神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。

编者按:都说失败是成功之母,但是真失败了大部分人都觉得脸上挂不住,然后就想避免失败,继而害怕失败,等到下一次失败时就会更加羞愧,对失败的恐惧从而变得更加强烈,最后陷进一个死亡漩涡。本文从一个开发者的视角提出了用编程的方式来克服对失败的恐惧,希望能帮到你。文章来自编译。

划重点:

失败这个东西总是会跟羞耻的情绪纠缠在一起

失败可以分为这三类:可预防的失败、复杂型失败、创新型失败

适应失败有三个步骤:对失败进行规范化、了解失败、拥抱失败

讨论成功大家一般都是比较乐意的,但如果你问他们失败的情况,他们就不大情愿分享了。

有趣的是,失败这个东西总是会跟羞耻的情绪纠缠在一起。不过,失败却是做出任何新颖的东西不可或缺的一部分,从失败中获得的教训是任何其他东西都无法相提并论的。所以,不妨想想办法,看看怎么更好地适应失败,弄清楚为什么大家会害怕失败。

定义失败

首先,我们得定义好失败。出于这个目的,我们用保留采用一个非常简单的定义:尝试做某件事但没有成功。

虽说这个定义是有效的,但不是所有失败都一样。有很多不同的办法可以对失败进行分类。简单起见,我会把失败分成这 3 类。

可预防的失败:你本来具备有知识和能力预防失败的发生,但失败还是发生了。

例子:你推出了一项功能,然后意识到这项功能不适合特定套餐的客户,即便这已经是常识了。

这类失败的好处包括有机会可以调整当前的流程。

这种类型的失败给人的感觉是最糟糕的,因为它不属于新事物那种类型。我们要避免犯这种类型的错误,但也可以从中吸取教训,学会在今后避免这种失败,然后继续前进。检查表与自动化测试非常适合防止这种情况发生。

复杂型失败:内部和外部因素都凑到一起了,从而以一种新的方式产生失败结果。

例子:两项服务上线,同时上线给某共享资源带来了压力,导致资源崩溃。

此类失败的好处包括:

调整当前流程与防止错误继续向前的机会

对系统及其运作方式有了全新的认识

这种失败也许可以预防,但是如果一方面还想着要快速行动的话,就很难为每一种极端情况都做好准备。发生像这样的失败时,你可以从中学习并成长。比方说,在上面这个例子里,你可以在将来更加关注这种资源,增加它的容量,或者甚至重新评估整个架构。

创新型失败:当答案没法提前知道时出现。因为你以前从未遇到过这种情况,也许今后永远也不会再遇到。

例子:你推出了一项全新的功能,而用户根本就没接触过。

此类故障的好处包括:

创新、变革与反思的机会

有机会学习到以前学不到的东西

这种失败应该是你想要的那种。因为它是新的、令人兴奋的,而且最重要的是,这种失败让你有机会学习以前学不到的东西

创新往往会发生在这种地方。当然,也许有办法防止这种类型的失败。你本可以多跟用户交流,你本可以多分析一下数据,但最终你还是选择冒险,你从中学到了一些东西。你还有更多的问题要提出,比如说‘为什么用户不参与进来?” 你还可以改变自身的工作理论。

对我来说,进入这个失败领域永远要比光是想“如果这可能是下一个大事物会怎么样?”但从不去尝试要好。

总结:

三类失败

现在我们对失败是什么以及失败的各种形式已经了解了。那怎么去适应它呢?就像做软件一样,让我们采取循序渐进的方法。

对失败进行规范化

了解失败

拥抱失败

对失败进行规范化

为了适应一个东西,它必须是我们熟悉的东西。因此,要让失败规范化,我们必须先熟悉失败。

每个人在人生的某个阶段都会遭遇失败。你第一次尝试走路的时候会摔跤。你第一次学习阅读时,你会被单词给难住。知道自己可能会遭遇失败也有能力战胜失败就行了。其实你已经一次又一次地这样做过了,只不过也许你已经忘记了。不过,这些是比较常见的失败类型,而大家对它们的了解也更多些。

app崩溃、引入新的bug,或者推出的功能无人赏识,这些是不太能够接受的失败类型,但这也是你成长过程的一部分。

如果你想写出华丽、干净、架构好且经过测试的代码,你猜会怎么着?为此你得先写出一堆垃圾代码。如果你把这个应用到任何其他的手工艺或艺术形式上——如演奏乐器、绘画、写歌等——第一次尝试都会是垃圾。

只要知道垃圾也没关系就行了。继续尝试。失败是这个过程的一部分。

你还记得自己的第一个大的bug是什么吗?不是 QA 发现或代码审查时资深开发者指出的那种,而是投入生产后出现的那种?

我会告诉你我的情况。

我刚开始做软件开发人员的时候,当时是在一家做车贷的金融科技初创企业工作。我写了一个查询,用来查找任何具有重复 VIN(车辆识别号)的车辆,然后在贷款批准流程把相关的车牌提取出来。代码看起来大概像下面这样:

这次变更一经合并之后,我在 slack 上马上收到了这条消息。

贷款页面加载不了了

我当时害怕极了,同时又感到很困惑。这是我的工单,我的代码,但我不知道我哪里出错了。代码已经通过了代码审查,看起来也没问题。

那么,问题到底出在哪里?

后来才发现,出于节省时间的考虑,一些经销商会把带伪车牌号(比方说0000000)的车列出来,然后在贷款达到某个阶段后再更新车牌号。这么做是完全没问题的,但我的代码会把带伪车牌号的每一辆车都找出来,导致页面加载时间过长,从而基本上变得毫无用处。

怎么改?添加限制。

说实话,我第一次开始写代码的时候,并没有想到性能和查询限制的问题。在那之后,等我去到规模很大的公司,或者节省一两秒钟意味着会有更多用户互动的app时,就知道始终要把性能放在第一位了。

这是我必须学会的东西,失败可以成为一位好老师。

我还想强调我的团队做出的响应。首先要修复错误,合并,然后讨论失败是怎么发生的。失败最重要的往往不是失败本身,而是你和周围的每个人如何应对失败。没有责备,没有“你早该知道的”,我也没有为自己的错误感到羞耻。

了解失败

我们已经介绍了如何去熟悉失败。现在让我们更深入地了解失败以及失败的对应物,耻辱。

耻辱:

“羞耻是一种高度厌恶的情绪体验,与回避和退缩倾向密不可分。” (马斯科洛&费舍尔,1995 年)”

“当我们没有达到自己的标准时,所产生的那种为自己更感到丢脸的感觉。” (H.B.刘易斯,1971)

“未能完成任务或达到目标。” (M. Lewis & Haviland-Jones, 2000)

“当一个人觉得自己正在变成自己讨厌或害怕的那种人时。” (吉尔伯特,1998 年;奥吉尔维,1987 年)

以上对羞耻的定义均出自科学文章。虽然说法因作者和出版物而有所不同,但有一点几乎每个人都同意:

羞耻是一种关系情绪(relational emotion)

这意味着什么?你可能会因为脚踢到石头而生气,或者因为天气变化而感到难过。但是羞耻感不一样,因为你只能在跟他人的关系中体验到这一点。如果没有受众或者我对受众的看法,我就不会感到羞耻。

“从这个角度来看,羞耻的功能是让人把自我隐藏起来,避免被重要他人审查,从而最大限度地降低失去爱和被拒绝的可能性。” (McGregor & Elliot,2005)

如果我们将上述措辞的含义外推的话,可以假设羞耻起源于部落时代的一种进化上的反应。换句话说,你感到羞耻后,会把导致你产生那种感觉的原因隐藏起来,从而避免被部落嫌弃,因为被嫌弃基本上就意味着死亡。虽然时代变了,但情绪对我们的影响仍然是出于本能。

对失败的恐惧

一项科学研究把对失败的恐惧定义为:“失败时会感到羞耻的能力或倾向”(阿特金森 1957)。另一个则假设“相对于对失败恐惧感低的人,对失败高度恐惧的人在有了失败的感知体验后羞耻感会更强”(McGregor & Elliot,2005)。

我们可以用羞耻/失败循环来说明这一点。

你做某事失败了。

你因为那次失败而感到羞耻。

羞耻是一种你不想经历的,强烈的负面情绪,所以你想避免失败。

你害怕失败。

下一次再失败时,你会觉得更加羞耻。

你对失败的恐惧变得更加强烈。

此外,有一点不要忘记,要想让你经历第一次失败时感到羞耻,需要有其他人(或你觉得其他人在)看着你。

这是对害怕失败的一种看法,我个人觉得这种看法还是比较令人信服的。像众多的心理学一样,这种恐惧其中一个可能的起源是童年,尤其是当父母对失败高度敏感,但对成功的态度却模棱两可时(McGregor & Elliot,2005)。不过,在人生的任何阶段也都可能会形成。还记得我们之前提到过的东西吗?

重要的不是失败本身,而是你和你周围的每个人对失败的反应。

好的,我们知道失败是免不了的了,我们也知道为什么大家会害怕失败了……那怎么才能坦然接受失败呢?

拥抱失败

如何拥抱失败?一部分在于想办法让自己变得更有韧劲。

那如何变得更有韧劲呢?

对失败要有大题小做的态度(De-Catastrophize Failure):我们遭遇失败的时候,占主导的往往是这三种思维模式。

私人化:都是我的错。

普遍性:错误是免不了的。

永久性:现在一切都毁了。

可是,我们还可以进一步检视这些看法。其他人有没有任何输入或参与?之前是不是也曾出现过这种失败?这种情况是不是一点挽救的余地都没有了?

弄清楚我们的大脑是怎么想的,了解我们对不自在的情况下可能出现的常见想法是什么,就可以为失败做好准备,并坦然接受失败。这不全是我们的错,我们也不是老是失败,一切都会好起来的。

表现出同情心。假装你正在安慰处在相同境地的朋友。你会对着犯错的人说他们把一切都给毁了吗?当然不会。别这样对待别人,更不要这样对待自己。

事前分析:事前验尸是在项目或计划开始之前,个人或团队想象失败的情形,然后再反过来思考如何防止这些失败的发生。

事后反思:事件发生后,建立一份事件的时间表,围绕着失败是如何发生的以及防止类似事件继续发生的办法进行头脑风暴。

自问自答:为了给自己加油打气,一种常见的做法是对自己说“我一定能行的!”,但有强有力的证据表明,质疑自己可能是更有效的做法。

这就是对自己说“我能行”和“我行不行”之间的区别。如果你对自己提出的问题是“我行不行?”,你就得强化你行,而且有技能去做的事实。

曾经有研究人员(Senay、Albarracin 与 Noguchi,2010 年)进行过一系列实验,他们让小组事先准备好问题或断言。研究表明,事先准备问题的每次的表现都要更好些。提出这些问题是目标导向行为的激励因素。

构建心理安全:如果你想要冒险和创新,最重要的是要拥有一个失败时感到安全的环境。构建起心理上的安全感很难,但非常重要。

以下是有助于创建此类环境的一些建议。

让领导者接受脆弱。

鼓励同理心,在需要的时候让团队成员放心。

建立反馈循环,让每个人都有发言权并觉得别人听进去了。

组织活动让大家分享他们自己的失败。

营造一个鼓励大家尝试新事物的空间,比方说黑客日或黑客周。

结论

我希望你暂时先别管软件开发,不妨思考一下自己的人生吧。失败会渗透到我们人生的每一个角落。你是不是曾经发表过或听到朋友说过类似下面的内容?

我不会做饭来拯救自己的生命,所以我只能点外卖。

我不会唱歌,所以他们唱卡拉 OK 我就躲在外面。

我跳舞很糟糕,所以我干脆不跳。

这些说法背后是不是带有对失败的恐惧?他们都没提到自己是不是喜欢做这项活动,光是说自己不擅长。这是不是羞耻感在作祟?

我一直在讲这个,就好像那是你一直都意识到的东西一样,但其实你已经把其中的大部分都内化进潜意识里面了。也许你内心深处存在着恐惧,但你自己没有意识到。

我们不不妨重新审视一下失败的原始定义:尝试某事但没有成功。就算你很可能会失败,但我真的真的希望你至少去尝试一下。请记住,你对失败并不陌生。学说话、开车、做饭以及任何其他你涉足过的技能,你肯定在某个时候曾经失败过。老话不是说了嘛,“初试不成功,努力勿懈怠。”希望你今天就去尝试点自己感到害怕的事情!

译者:boxi。

相关推荐

开发者指南:用编程方式克服对失败的恐惧
恐惧扼杀潜能,这15种办法可以战胜恐惧
面对失败的恐惧,创业公司最需要的是“坚忍哲学”
编程热只停留在少儿阶段?「Le Wagon」认为“成人编程教育”正当时
用游戏化方式完成“反人性的学习”,一家公司完成1800万美元融资
反败资本:击穿“失败经济学”
营销观察 | 在朋友圈买下编程课,你上的是Python还是成功学
张朝阳:创业者面对焦虑恐惧的最好方法是与其共存
李笑来登GitHub趋势榜第一:币圈大佬的鸡汤编程指南
苹果接受批评 对App Store审查指南进行了修订

网址: 开发者指南:用编程方式克服对失败的恐惧 http://www.xishuta.com/newsview54111.html

推荐科技快讯