我们都去过那里:
- 您的项目失败或被取消。
- 您花了几天时间编写的代码被团队拒绝了。
- 您介绍给团队的设计模式造成了混乱。
- 每个人都忽略您的想法。
我的问题是,程序员处理诸如此类的与开发相关的故障的最有效方法是什么?
我们都去过那里:
我的问题是,程序员处理诸如此类的与开发相关的故障的最有效方法是什么?
Answers:
您的项目失败。
软件开发极易发生项目故障,并且根据严重程度,最好由管理层来处理。
许多项目已经失败,还有更多项目将失败,因此请注意!了解您的项目失败的原因,这样您下次就不会再犯同样的错误了。您从失败中学到的东西要比从成功中学到的要多得多。
您花在编码上的时间被团队拒绝了。
保存您的工作(以备后用)。有两种可能性:(a)很糟糕,并且多个人以相同的方式做出反应的事实表明了这一点(b)这确实是天才的工作,但远远超出人们习惯或可以理解的范围。人们通常不喜欢他们不了解的东西。最好在适当的时候显示它,或者在不同的地方显示不同的“文化”
在您的公司中没人听您的想法。
这可能是个坏主意,或者文化与您的想法不符。要么搬到一个支持您的文化的地方,要么再次批判性地评估您的想法(客观上没有您自己的偏见)->我的想法真的那么好吗?<- 杀死你的自我
您在团队中强行引入的设计模式造成了混乱。
老实说,您已尽力而为,但并未证明您的计划方式。最好重新开始,或者从团队中汲取设计中的错误,然后继续前进。
他们不是失败,而是经验
您可以通过反思自己的感受以及是否想要更多这种感受来学习和成长。
如果是不好的经历(如您提供的清单),那么可能会希望避免伴随的不好的感觉(假设您的皮肤不那么浓密,以至于您根本不在乎动作的影响)。
总体而言,不要太想将自己与他人进行比较,他们在解决所有问题时会遇到与您一样多的麻烦。
好吧,你问:)一一:
* 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.
因此,为什么应该避免使用武力。能够讲话不是能够听的前提。没有其他评论。
哦,男孩,如果您真的想把一切都发生在您身上,那就很多了!
警告:在下面的许多要点中,您可能会觉得我在批评您,并且想让您对事故负责,而不考虑外部因素。我不。只是您没有提供太多细节,我只提供了要执行的动作清单以确保事情不会出错。我知道我自己犯了很多错误(每个人都犯了),只有从中汲取教训,我们才会变得更好。要向他们学习,我们首先需要开始将它们视为错误,并对我们所犯的错误承担责任。地狱,对其他人的问题承担责任,您也可以从中学到东西。
您现在可以做很多事情来缓解这种情况。
但是,您可以做很多事情来避免将来再次出现。我建议尝试提高您的项目和时间管理技能。
我读过的一本比率最佳的书((有效建议)/页),也许不是最好的一本,是Rob Thomsett的Radical Project Management。
您并没有真正指定您的项目失败了什么,但是我假设是将通常的成本/时间/质量三角形不平衡的事情组合在一起。在我眼中,最重要的因素是领导项目和开发,同时始终与您的技术参与者(开发人员和测试人员)以及您的利益相关者保持联系。太多的项目失败是因为它们不听取赞助商或利益相关者的意见,也没有推动他们参与该过程。
如果他们不参与,您将不知道他们想要什么。如果您不知道他们想要什么,则无法交付。如果您不交付,他们会很不高兴。那是失败的。此外,如果您不让利益相关者参与,他们就会与软件工程的现实脱节,这意味着他们不了解您的问题。如果他们经常与您联系,他们会更好地了解您必须处理的内容。当您告诉他们“小”(笑声)功能将花费数月的时间时,他们将更能理解。他们可以更好地信任您的计划,因为他们帮助制定了计划。一个项目不能仅凭“开始时的规格,开发,测试,最后的交付”就成功。只是从来没有。您可能会提供规范中要求的内容,
同样,最重要的是进行回顾,并确保它没有自我,而且不是责备游戏。只要找出问题。
我一直处于那种情况。同样,除了以下方面,您可以采取其他措施来缓解这种情况:
但是您仍然可以做一些事情来防止这种情况:
好吧,这里有2个选项,我们将同时研究这两个选项:
让我们开始假设它们是不好的(再次,自我反省并接受您的想法只是很糟糕,我知道这很困难)。您怎么做才能改变这种状况?
想法只是想法。如果您只是将它们作为想法提出建议而被拒绝,我不明白您为什么会对此感到难过。但是,如果您在不通知任何人的情况下采取行动,然后仅提交您的想法而被拒绝,那么很明显,我感到很沮丧。和您的经理做!
假设您的想法很好:
另外,我对该方法本身感到有些惊讶。您实际上必须推动引入一种设计模式吗?这似乎很奇怪。模式已经存在,或者您需要根据模式重构解决方案的一部分。你不推(像人来说,就像您通过一项框架或技术的推喜欢的人开始推到能写真的很难有XML无处不在,现在HTML5在大光明信他们的产品覆盖)。
你为什么要推?为什么会有阻力?也许是有道理的。
您是否能够提供示例,说明该特定模式将以显着方式(例如,通过将其与“ 重构为模式”的示例进行匹配)来帮助改善代码库。
完全偏离主题的注释,但这是我在阅读问题标题时第一次想到的内容,因为我认为该问题涉及软件故障...我有一个软件实现了BlackHole类,以在其中一个中管理非常特殊的异常组件。看起来(确实是)一个很奇怪又肮脏的骇客,但是命名本身是如此的出色,我们都以一种很酷的方式来处理失败而赞誉它!:)
首先,遇到失败时感到沮丧或生气是可以理解的。如果在这种情况下向某人提供建议,他们很可能不想听到“刚克服它并继续前进”或“只是将其视为学习机会”。
实际上,只要您私下或与朋友一起做,沮丧和消除沮丧会很健康而且很有成效。人们有不同的处理方式,但我认为最有效的方式之一是写一封愤怒的假信(重要!请勿将此信发送给任何人)。解释您的感受,例如为什么您觉得发生的一切都是不合理的。
确保表达了自己的所有感受,发泄愤怒后,请花一些时间使自己平静下来。也许您只需要几分钟或几个小时。
在这一点上,您希望能够更加客观地考虑这种情况。如果您写了一封信,请自己阅读。如果您向某人倾诉,请尝试记住您说的话。如果您只是想对某人大喊大叫,那么请在心理上进行回顾。
我经常在生气时写一封信,然后让自己平静下来之后,我会努力完善这封信,以更清楚地传达我最初想说的话,直到我满意阅读它的人会明白我的意思。当时的感觉。
关键是要客观地挑选出您的观点。他们有道理吗?也许他们需要澄清或进一步的细节。他们没有根据吗?如果您客观地将自己放在别人的鞋子上,您会明白自己提出的观点吗?您同意这些观点吗?您可以利用这个机会来评估自己。你做得好吗?有什么可以做得更好的事情?
有什么办法可以纠正或至少改善这种情况?花一点时间考虑一下,实际上是否可以采取任何措施来解决或改善这种情况。通常没有,但有时有。
如果您对某事有过错,那么这可能就像向某人道歉一样简单,清楚地说明出了什么问题,做错了什么,为什么做以及在修复或防止它发生时将要做什么。未来。
接下来,考虑可以采取哪些措施来改善未来。您可以采取什么措施防止同一件事再次发生?确定要实现的目标,并使用从第3步中学到的知识来为自己创建一个计划。
如果其他所有方法均失败,请尝试重新启动:
try
{
// ...
}
catch (OhNoes111Exception)
{
// reboot fixes everything!
System.Diagnostics.Process.Start("ShutDown", "/r");
}