处理与开发相关的失败的最有效方法是什么?[关闭]


49

我们都去过那里:

  • 您的项目失败或被取消。
  • 您花了几天时间编写的代码被团队拒绝了。
  • 您介绍给团队的设计模式造成了混乱。
  • 每个人都忽略您的想法。

我的问题是,程序员处理诸如此类的与开发相关的故障的最有效方法是什么?


作为正在进行的结构化标签清除计划的一部分,正在我们的元讨论站点讨论此问题。

Answers:


79

您的项目失败。

软件开发极易发生项目故障,并且根据严重程度,最好由管理层来处理。

许多项目已经失败,还有更多项目将失败,因此请注意!了解您的项目失败的原因,这样您下次就不会再犯同样的错误了。您从失败中学到的东西要比从成功中学到的要多得多。

您花在编码上的时间被团队拒绝了。

保存您的工作(以备后用)。有两种可能性:(a)很糟糕,并且多个人以相同的方式做出反应的事实表明了这一点(b)这确实是天才的工作,但远远超出人们习惯或可以理解的范围。人们通常不喜欢他们不了解的东西。最好在适当的时候显示它,或者在不同的地方显示不同的“文化”

在您的公司中没人听您的想法。

这可能是个坏主意,或者文化与您的想法不符。要么搬到一个支持您的文化的地方,要么再次批判性地评估您的想法(客观上没有您自己的偏见)->我的想法真的那么好吗?<- 杀死你的自我

您在团队中强行引入的设计模式造成了混乱。

老实说,您已尽力而为,但并未证明您的计划方式。最好重新开始,或者从团队中汲取设计中的错误,然后继续前进。


29

他们不是失败,而是经验

您可以通过反思自己的感受以及是否想要更多这种感受来学习和成长。

如果是不好的经历(如您提供的清单),那么可能会希望避免伴随的不好的感觉(假设您的皮肤不那么浓密,以至于您根本不在乎动作的影响)。

总体而言,不要太想将自己与他人进行比较,他们在解决所有问题时会遇到与您一样多的麻烦


1
仅两个字:强化学习
炒锅2010年

-1:它们既是经验,也是失败。
Thomas Eding

14
  • 保持镇定-不要惊慌,这不会使任何事情变得更好
  • 损坏控制-保存仍可保存的内容
  • 从错误中学习-再次做错事可能不会使它起作用
  • 考虑一个新的开始-在没有失望和内gui感的情况下开始下一次尝试
  • 查看更大的失败- 与阿丽亚娜5的第一次飞行相比,您的失败可以忽略不计
  • 如果您不能独自处理,请咨询心理治疗师

11

你建立一些东西。

对我来说(我认为这不适合每个人),构建一些东西(漫画,图纸,小游戏,任何东西)就像建立一点信心来战胜失败。这也可能是表达您对失败的愤怒或痛苦或任何与失败有关的好方法,但是以“建设性”的方式表达出来。

无论如何,这对我有用。


6

好吧,你问:)一一:

* Your project failed.

那不是什么新鲜事。我们所有人都在私下里失败了,而在同龄人的全面视野下我们都失败了。任何接受过中小学教育的人都经历过这一过程。

如果我不能犯错误并且期望稳定的工作,则应考虑向HR发送一份备忘录,让他们知道人类将被禁止日后考虑。

连续几次失败意味着您要么要求和规范不合理,要么就没有从错误中吸取教训。任何一种情况都要求立即采取行动。

可以想象,许多人只是为了获得一份工作就签了字,然后想出一些办法来实现要求。

* What you have spent days coding was rejected by your team.

那个会发生。正如其他人指出的那样,保存它。再来一遍。这就是我们称之为有效的原因。我认为,在这种情况下,您可能没有使团队非常参与您的工作。

要求可能是在昨天或一个小时前更改的。但是,这应该是一个例外,而不是规范。同行评审既残酷又有用。如果您的代码经常被认为是“不足”(或类似的东西),那么您应该花更多的时间挑拨大脑并让他人参与。我相信这个问题在大多数团队环境中都是谬论,除非“团队”只是自我描述。

* Nobody listens to your ideas in your company.

同样,这需要上下文。你到这多久了?您的其他黑客对您的能力有多信任?您是否考虑过为许多人带来更多工作的想法可能会出于任何原因而将其驳回?我曾经因为没有准备好IPV6而将其驳回,但它在环回设备上(专用)使用了一个简单的域套接字。沉没它的人根本无法做更多的工作。

另外,您表达自己的能力如何?您可以结交朋友并影响他人吗?

* The design pattern you introduced with force in your team created a mess.

因此,为什么应该避免使用武力。能够讲话不是能够听的前提。没有其他评论。


5

哦,男孩,如果您真的想把一切都发生在您身上,那就很多了!

警告:在下面的许多要点中,您可能会觉得我在批评您,并且想让您对事故负责,而不考虑外部因素。我不。只是您没有提供太多细节,我只提供了要执行的动作清单以确保事情不会出错。我知道我自己犯了很多错误(每个人都犯了),只有从中汲取教训,我们才会变得更好。要向他们学习,我们首先需要开始将它们视为错误,并对我们所犯的错误承担责任。地狱,对其他人的问题承担责任,您也可以从中学到东西。

您的项目失败

您现在可以做很多事情来缓解这种情况。

但是,您可以做很多事情来避免将来再次出现。我建议尝试提高您的项目和时间管理技能。

我读过的一本比率最佳的书((有效建议)/页),也许不是最好的一本,是Rob Thomsett的Radical Project Management

您并没有真正指定您的项目失败了什么,但是我假设是将通常的成本/时间/质量三角形不平衡的事情组合在一起。在我眼中,最重要的因素是领导项目和开发,同时始终与您的技术参与者(开发人员和测试人员)以及您的利益相关者保持联系。太多的项目失败是因为它们不听取赞助商或利益相关者的意见,也没有推动他们参与该过程。

如果他们不参与,您将不知道他们想要什么。如果您不知道他们想要什么,则无法交付。如果您不交付,他们会很不高兴。那是失败的。此外,如果您不让利益相关者参与,他们就会与软件工程的现实脱节,这意味着他们不了解您的问题。如果他们经常与您联系,他们会更好地了解您必须处理的内容。当您告诉他们“小”(笑声)功能将花费数月的时间时,他们将更能理解。他们可以更好地信任您的计划,因为他们帮助制定了计划。一个项目不能仅凭“开始时的规格,开发,测试,最后的交付”就成功。只是从来没有。您可能会提供规范中要求的内容,

同样,最重要的是进行回顾,并确保它没有自我,而且不是责备游戏。只要找出问题。

您花了几天的时间编码被团队拒绝

我一直处于那种情况。同样,除了以下方面,您可以采取其他措施来缓解这种情况:

  • 将其保留在SCM中以备后用。
  • 也许尝试将小片段逐步推入主要代码库,而不是进行大量重构。

但是您仍然可以做一些事情来防止这种情况:

  • 为什么会发生?拒绝的原因是什么?
  • 在大多数情况下,当我看到这种情况发生时(对我来说也是这种情况),这意味着开发人员是单独使用还是以牛仔编码模式进行操作,并且制作了从未要求过的东西。不是来自业务需求的代码可能是花哨的和“更好的”,但通常是浪费时间和金钱。另外,如果您将其集成,则将花费更多,因为它将需要再次测试。像为您赚钱的人那样思考:您还必须在该级别上保持高效。
  • 产生的软件质量令人满意吗?它是否符合贵公司活动中的标准和约定?
  • 您是否定期(并且经常!)向直接经理报告此事?您是否偶尔与团队的其他开发人员进行交流?如果没有,他们对此一无所知,现在他们要评估和审查它会花费大量时间。最后,它并不能说明同一时间。这就像总是试图推迟清洁您的出租公寓,然后仅在外出时才尝试对其进行清洁:这是一项糟糕的工作,令人精疲力尽,这比定期进行的工作要困难得多,而且通常不会完成对。
  • 您是否进行了产品测试?单元测试?集成测试?
  • 您的代码是否定期检入SCM?它在另一个分支中吗?它需要一个不同的分支还是可以在中继中完成?推迟提交代码通常是一个不好的信号。显然,有时您很想这样做,但您只是将自己开枪射击。

在公司中没人听您的想法

好吧,这里有2个选项,我们将同时研究这两个选项:

  • 你的想法不好。
  • 你的想法很好。

让我们开始假设它们是不好的(再次,自我反省并接受您的想法只是很糟糕,我知道这很困难)。您怎么做才能改变这种状况?

  • 您为什么提出这个主意?有什么理由?您的想法试图带到餐桌上真正需要吗?
  • 您是怎么想到这个主意的?您是自己做的吗?你分享了吗?头脑风暴?计划?原型?(以正确的顺序执行这些操作。如果在途中失败了,则放弃该想法,不要继续前进。或者至少不在您的工作计划中。)

想法只是想法。如果您只是将它们作为想法提出建议而被拒绝,我不明白您为什么会对此感到难过。但是,如果您在不通知任何人的情况下采取行动,然后仅提交您的想法而被拒绝,那么很明显,我感到很沮丧。和您的经理做!

假设您的想法很好:

  • 你的介绍好吗?
  • 您提供演示文稿的方式好吗?(我是一个开发者,我知道我说的是:我们是脾气暴躁,傲慢迂腐 PITAS谁是永远正确和谁在一起是很难的工作,因为往往我们不相称的自我)。
  • 您有实施计划吗?您是否考虑过成本和时间?您认为它对用户/客户有何好处?您认为它如何影响销售?您是否认为实施该想法可能会影响其他项目和优先事项?您会告诉我,“为什么我要做所有这些,这些都是我的经理以及市场或销售团队的工作?!” 除了现在,您正在尝试做他们所有工作的一部分。

您在团队中强行引入的设计模式造成了混乱

  • 你为什么要介绍这种模式?
  • 如果造成混乱,则可能是:
    • 不是正确的模式
    • 实施不正确,
    • 不是整合的权利。
  • 您是如何介绍它的?您如何精确定义状态“混乱”?
    • 可读性较低的代码?
    • 少维护?
    • 建筑物坏了吗?
    • 有各种“混乱”。知道什么乱七八糟可能有助于了解在那里失败了,如果是设计模式的错。

另外,我对该方法本身感到有些惊讶。您实际上必须推动引入一种设计模式吗?这似乎很奇怪。模式已经存在,或者您需要根据模式重构解决方案的一部分。你不(像人来说,就像您通过一项框架或技术的喜欢的人开始推到能写真的很难有XML无处不在,现在HTML5在大光明信他们的产品覆盖)。

你为什么要推?为什么会有阻力?也许是有道理的。

您是否能够提供示例,说明该特定模式将以显着方式(例如,通过将其与“ 重构为模式”的示例进行匹配)来帮助改善代码库。


完全偏离主题的注释,但这是我在阅读问题标题时第一次想到的内容,因为我认为该问题涉及软件故障...我有一个软件实现了BlackHole类,以在其中一个中管理非常特殊的异常组件。看起来(确实是)一个很奇怪又肮脏的骇客,但是命名本身是如此的出色,我们都以一种很酷的方式来处理失败而赞誉它!:)


@Rachel:感谢您配合META-SO所做的修改。从那时起,我还没有注意到这个问题已被重新措辞。
haylem 2012年

3

步骤1:生气是可以的!

首先,遇到失败时感到沮丧或生气是可以理解的。如果在这种情况下向某人提供建议,他们很可能不想听到“刚克服它并继续前进”或“只是将其视为学习机会”。

实际上,只要您私下或与朋友一起做,沮丧和消除沮丧会很健康而且很有成效。人们有不同的处理方式,但我认为最有效的方式之一是写一封愤怒的信(重要!请勿将此信发送给任何人)。解释您的感受,例如为什么您觉得发生的一切都是不合理的。

步骤2:花一些时间让自己冷静下来。

确保表达了自己的所有感受,发泄愤怒后,请花一些时间使自己平静下来。也许您只需要几分钟或几个小时。

步骤3:查看步骤1中发生的情况

在这一点上,您希望能够更加客观地考虑这种情况。如果您写了一封信,请自己阅读。如果您向某人倾诉,请尝试记住您说的话。如果您只是想对某人大喊大叫,那么请在心理上进行回顾。

我经常在生气时写一封信,然后让自己平静下来之后,我会努力完善这封信,以更清楚地传达我最初想说的话,直到我满意阅读它的人会明白我的意思。当时的感觉。

关键是要客观地挑选出您的观点。他们有道理吗?也许他们需要澄清或进一步的细节。他们没有根据吗?如果您客观地将自己放在别人的鞋子上,您会明白自己提出的观点吗?您同意这些观点吗?您可以利用这个机会来评估自己。你做得好吗?有什么可以做得更好的事情?

步骤4:决定采取的行动

有什么办法可以纠正或至少改善这种情况?花一点时间考虑一下,实际上是否可以采取任何措施来解决或改善这种情况。通常没有,但有时有。

如果您对某事有过错,那么这可能就像向某人道歉一样简单,清楚地说明出了什么问题,做错了什么,为什么做以及在修复或防止它发生时将要做什么。未来。

接下来,考虑可以采取哪些措施来改善未来。您可以采取什么措施防止同一件事再次发生?确定要实现的目标,并使用从第3步中学到的知识来为自己创建一个计划。

如果其他所有方法均失败,请尝试重新启动:

        try
        {
            // ...
        }
        catch (OhNoes111Exception)
        {
            // reboot fixes everything!
            System.Diagnostics.Process.Start("ShutDown", "/r");
        }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.