如何将失败的项目重回正轨? [关闭]

问题描述 投票:19回答:20

您一定听说过失败/失败项目的典型故事:

  1. 一支缺乏经验的程序员团队全天候工作
  2. 修复错误只是为了引入新的错误
  3. 客户尖叫他甚至不能做基本的东西(保存/查询)等。
  4. 程序员过去常常会通过规范来进行即兴创作
  5. 没有自动化的单元测试会加剧这种情况
  6. 在实际上没有遵循在纸上看起来不错的架构文档
  7. 使用的第三方组件首先成为尚未经过健身测试的瓶颈
  8. 里程碑错过后的里程碑
  9. 由于没有人同意实际需要完成的工作量,团队无法提出交付日期
  10. 没有技术领导/或牛仔编码员可以承担技术问题

现在,如果你被带入#10那么你的第一步是什么?

更新:首先:感谢大家的谢绝。好吧......我被带进#10。当我们向客户提出建议时,我是最初的建筑师。然后,不幸的是,由于我被分配到其他地方,我无法承担交付责任。 :)

假设它是现有桌面应用程序的Web化。我现在被带进#10。遗憾的是,逃跑不是一种选择。我确信这仍然可以通过遵循敏捷的最佳实践来逆转,并且只是想挖掘社区的想法。

更大的问题可能是:如果开发团队没有规范,只有运行应用程序的(基线)代码,原始解决方案要求查看代码并动态提取业务规则。现在,没有经验的程序员不愿意看VB 6.0代码并想要文档!那么如果你要实现敏捷流程,你如何解决这个问题呢?

project-management development-process
20个回答
22
投票

Vyas,我觉得我可以写下这个问题。我之前的工作涉及恢复一年后开发失败的KVM项目。规格以用户手册和开发人员使用类似产品的形式出现。我最后教C到3个汇编程序员并从头开始重新构建。我们在4个月内将产品成功推向市场。 (然后我辞职了。去看看。)

我要做的一些事情,特别是对于缺乏经验的团队:

1.一支缺乏经验的程序员团队全天候工作 10.没有能够承担技术问题的技术领导/牛仔编码员

  • 给他们一个(短暂的)休息时间从项目到“充电”。也许是一天,也许是一个下午,或者也许是一顿长长的午餐。它将标志着“旧”项目的结束和成功的开始。
  • 得到他们的同意,当他们回来时,他们会把他们的屁股弄掉,并保证你会成为他们的首选,拉拉队员和防弹衣。你们是一个团队,你们的工作就是打造自己的道路,消除分心,带领他们。
  • 计划立即取得成功,无论多么小,并保持“可以做”的态度。

8.里程碑错过后的里程碑 9.由于没有人同意实际需要完成的工作量,团队无法提出交付日期 客户尖叫他甚至不能做基本的东西(保存/查询)等。

  • 小咬一口!尽可能地打破每一块,然后处理小部件。您将尽早识别“陷阱”并更好地确定整个项目的范围。
  • 定义您的接口。任何时候你可以隔离一个块,做它。这允许并行开发,因为您已经决定了参数,前置条件,假设,内部发生的事情以及返回值。您可以将其存根,并独立构建其他模块和测试。
  • 优先。专注于首先影响客户的缺陷和问题。新功能最后。如有必要,推迟功能而不是提供有缺陷的代码。
  • 分配责任。志愿者是首选,每个人都在他/她的专业领域,但每个人必须对每项任务负责。
  • 跟踪缺陷,并记录有助于您重现,定位和修复它们的所有内容。记录任何剩余的交货时间,以便客户不会感到惊讶。

程序员过去常常按照规范进行即兴创作 6.在实践中没有遵循在纸上看起来不错的架构文档

  • 您将随时创建规格详细信息,每个部分都在需要之前创建。只要每个人都理解当前的任务并且你已经了解了全局,那就不必是漂亮,完整甚至是书面形式。
  • 当开发人员准备好对其进行编码时,一次讨论一个实现。如有必要,自己编写骨架,让团队填写“胆量”。你想让他们专注于每项任务,而不是“即兴创作”。
  • 随时可以回答问题。您的主要目标是保持团队的工作效率。

2.修复错误只是为了引入新的错误 5.没有自动化的单元测试会对情况产生影响

  • 尽快计划并开始单元测试。如果可能,请在团队外部注册资源。
  • 在小问题变大之前解决它们 - 或者隐藏它们。对每个小块的信心可以建立对整体的信心。

7.使用的第三方组件首先成为未经过健身测试的瓶颈

  • 当你没有编码时,头脑风暴解决方案。如果可能的话,不要让他们阻止你的进步。你能封装或编码它们吗?替换他们?

一般建议:

  • 保持领先于团队。在团队遇到问题之前预测并尝试解决问题。在需要之前收集任何必要的信息。
  • 不断沟通。明确表示您不需要任何意外,并且每天都会征求关注,问题,状态,路障等。鼓励协作并在整个团队中分享“发现”。
  • 庆祝每一次成功。赞美一个聪明的解决方案,在问题解决后带上甜甜圈,演示一个新的工作特征......任何能够表明你欣赏他们的团队的东西。
  • 完成每项任务,然后继续前进。不要浪费时间调整,增强或改造任何不是成功的直接障碍的东西。
  • 信守对团队,客户和管理层的承诺。

祝你好运 - 请让我们发布!


1
投票

如果你真的必须让它走上正轨(如果不能选择bailing)

首先接受管理层的失败。然后,您可能希望继续实施严格但轻量级的流程。

我建议采用某种形式的敏捷,因为没有GURU最容易成功实施,但你必须非常严格,包括配对,无情重构,评论,尖峰功能,可视性,TDD,一周周期, 8小时工作日(是的,超过8小时往往会伤害生产力而不是帮助,正如您似乎注意到的那样)......

也不要削减任何东西。敏捷的部分依赖于其他部分 - 没有配对,重构和测试,你无法消除前期设计(最大的敏捷失败之一)。

不要忘记它的管理方面。一周的迭代开始(每周演示)。不断适应。每天都很短的站立来解决问题。 (保持最多15分钟,表更长的问题等)Burndown图表,核心团队与客户端。

你不能每周都有15分钟的会议和2周的迭代,并称之为敏捷,但如果你做得对,它可能会给你一个机会。您可能会有一位优秀的敏捷顾问为您提供入门培训。

此外,不断评估哪些有效,哪些无效。准备好修复不起作用的东西。每周会议分析那几周的发展成功和失败。

总体而言,它可以发挥作用,并且可以让一支岌岌可危的团队投入使用,但这并非易事。最好的部分是你可以实现它而不需要从你当前的开发中抽出大量的时间。你只是继续发展,但你做得更好。


1
投票

严峻的形势,你没有客户信任,在这种情况下基本上无法成功,无论如何。

对于所有意图和目的,项目需要重新启动;令人遗憾的事实是,工厂通常不会让这个机会重新开始并重新评估那里的一切。

我不想这么说,但是你需要停止开发并花一个月的时间来解决出错的问题......

结果需要成为一个可行的6个月 - 1年交付的计划,真正使他们专注于必须具备的东西以及对您的第三方组件的真实贸易研究。并且破坏代码库需要是一个选择;启动一个新的源代码控制项目,当你到达一个特定的模块端口peices有意义并留下垃圾。

敏捷是伟大的,所有的,一旦你得到一个真正的计划,一个有效的方法;但它不会修复与客户的破坏关系...或者已经存在的所有垃圾。


1
投票

阅读完您的经历后,这是关键学习的总结:

格言 1:确保这不是“死亡之月”

埃莉 2:确保交付的内容有效3:重构和Realgin代码库到架构/最佳实践4:了解真正的问题:团队在技术上是否具有竞争力?

肯德尔 5:确保技术领导力的可用性

比尔K. 6:实施敏捷流程(至少自动化单元测试,如果不是TDD,短期迭代可以使进度可见)7:让客户买入8:准备抛出不起作用的东西(一厢情愿)

养兔场 9:确保仍有机会重新开始的团队成员

蒂姆 10:激励团队,并且随着改进变得明显奖励他们

jsl4980 11:您需要从您的团队(大多数人)和客户那里按期购买[这会引发更多问题。如果您的客户询问团队是否有足够的能力坚持您的日程安排怎么办?如果你自己知道团队提出的时间表只是表明他们缺乏理解,那该怎么办?

粥 12:团队是否承诺? 13:你正式QA吗?

帕特里克 14:重新开始,重新设计并重新构建尚未开发的模块的架构/设计最佳实践。


1
投票

摘要有14项。你无法做到这一切。那么,第一步是什么?

这是你必须先做的事情 - 改进一件事。

  • 你有基本的质量问题。 (#2-5)
  • 你有架构和组件问题。 (#6,7)
  • 你有日程安排问题。 (#1,8,9)

你可以解决质量问题。正式的单元测试,走向TDD可以提供帮助。这可能很难,因为架构问题导致测试速度变慢。

你可以解决架构问题。这可能会更难,因为它可能会涉及无法交付的返工。但它可能会解决质量问题。或者,它可能因基本的测试问题而复杂化。

你可以解决时间表。如果没有其他更正(即质量或架构),您可能无法解决修复计划问题。

我认为人们态度的整体改善来自于一次成功 - 任何成功 - 尽早开始。什么是最低挂的水果?

  • 一个长期存在的错误?一个单元测试套件,用于查找和修复该错误?
  • 一个主要的建筑特色?每个人都可以在他们的立方体中发布的图表是否有用?演讲如何澄清事情?
  • 一个新的用例?一个真正有效的新功能?

1
投票

1
投票

首先,要解决你可能会失败 - 如果你不能接受,不要接受挑战。这包括成为替罪羊(确实发生了)。管理层不会用这些术语来看待它(即他们没有故意/有意识地'让你起来')。但这是企业环境的现实;如果你承担责任(通常比那些没有承担更多的工资),那么如果事情没有成功,那么你的头脑是为了阻止。你必须准备好长期坚持下去。我曾经被安置在一个客户网站上8个月来修复一个渐弱的项目。正如您所看到的,其中一个博客海报在发布版本准备好之前花了9个月。

现在,假设你可以在不顾你努力的情况下全部呈梨形,这就是我的建议:

  • 错误跟踪系统将成为您最好的朋友,它将让您重新获得控制。你不能希望从整体上理解一个复杂的系统,所以“分块”它会有所帮助。并且错误跟踪系统允许您将问题单元化并将其分发给您正在使用的其他人。
  • 你需要处理技术和政治方面的挑战。技术通常不是那么糟糕,因为你是一个程序员,你知道如何做到这一点。政治上的那些更加棘手,你掌握的是一艘无可救药地离开航线的船,你在百慕大三角区。最大的挑战往往是在客户中遏制负面情绪的潮流(例如客户:“这些牛男不知道他们在做什么”,“他们答应我这个并没有交付”,“我没有信心在这些家伙中任何更多“)。
  • 对于初学者,请向客户道歉,并具体告诉他们您正在采取哪些措施来重新修改他们的项目,例如:你:“我对你项目的延迟感到抱歉,我现在已经陷入困境。我已经看过项目历史了,就个人而言,如果我为这个系统付出了很多钱,我也会生气。我要解决的第一件事是......“< - 宾果,你刚刚对这个项目负责,这意味着没有回头 - 现在全部或者全部没有。
  • 其他一些人在这里说过,我同意;停止添加新功能。他们没有提到的是你可能必须这样做以保持客户满意(记住,挑战的技术和政治方面)。
  • 尽可能了解业务领域。阅读您可以获得的任何需求文档。由于你不知道最初讨论的是什么,你迟到这个项目是一个巨大的劣势。魔鬼在细节。这就是我迟到的项目让我陷入困境,我无法打捞,每个人都处于优势,我错过了一个小小的要求。当时,这并不是什么大不了的事情本来可以很容易地纠正,但从政治角度讲,这是打破骆驼的稻草。一个可能有帮助的策略是在客户网站上出去几周。
  • 明白时间就是金钱。它不仅仅是一个技术问题。客户已经支付了一些不正确或未交付的东西。贵公司已经耗费了资源,可能已经用完所有项目预算 - 业务现在正在亏损。这就是新功能问题再次出现的地方,是的 - 人们说不要添加它们,稳定。但添加新功能可能是一种政治上有用的策略,管理层会很高兴,因为新的资金正在用于不合规格的工作。
  • 我建议不要让你或你的编码人员工作时间荒谬。如果您通常在下午5点离开,请在下午6:30或晚上7点离开。你和你的编码男孩可以连续几周保持一两个小时的额外工作,也许周末可能需要4-5个小时。每晚工作到晚上9点或晚上10点将导致大约2周的倦怠(有些可能会更长)。在那之后,你在项目上的额外时间会带来更大的伤害。在不太可能的情况下,你的老板对此提出异议,做出选择;做他们所要求的(即工作更多时间),或者说“我已经花了额外的时间来完成这个项目 - 我在这里长期工作,如果我死了,我将完成这个项目。但这就是我愿意投入多少时间的限制。我还有其他承诺要做好工作“< - 但要为后果做好准备(记住,政治情况和技术情况一样多)。
  • 这里有人说“停下来写一个规格,停下来做这个......” - 我很抱歉,我不能在这里同意你的看法,这是不现实的。该项目已经停滞不前,管理层或客户想要的最后一件事是“我们必须停止一切......”。我之前尝试过这个,我已经向客户和管理层说过“我们会停下来,直到我们停下来并编写详细的系统测试计划。这将花费我两周时间” - 客户不想要为此付出代价,管理层不愿意承担这笔费用。事情发生了,虫子不断涌现。
  • 学会“玩杂耍” - 你必须提前制定任务,以便程序员不要等你。这通常意味着你自己做的编码更少。通常,这可以通过在编码开始之前制定项目计划来实现。程序员在完成他们目前正在进行的工作之后应该知道他们接下来要做什么,而且他们不应该问你“我接下来要做什么?”,他们应该已经知道了。
  • 内置恢复实用程序,特别是如果软件具有难以确定的重复出现的问题。例如;可能需要12个小时来追踪错误并修复它,可能需要2个小时才能放入实用程序(读取“hack”)以解决问题。时间和动力是essessen,不幸的是,可能需要修改。
  • 要非常注意客户的心情。他们需要知道你“在他们身边”(例如客户:“产品是不可接受的”,你:“我同意,如果我在你的位置,我会踢我们的驴子。我只能告诉你是我的并且不会休息,直到它全部工作“)。当客户回到您的网站上时,他们实际上会开始帮助您。例如,它们可以保护您免受管理层的压力。
  • 以身作则引领你的家伙。 “我会留下一点工作在项目上,我会很感激你的帮助,如果你愿意留下来”,“我知道这不是我们的混乱,但我们还是要打扫干净无论如何。我希望客户能够获得一些高质量的软件“。程序员通常可以更少关心让他们陷入这种情况的公司,但他们可能会关心他们自己或客户中的一个('可能')。

我在这里看到的许多建议都假设了相当高的权力(例如“停止项目正确地重新启动它”或“对新功能说不”) - 你正在启动已经陷入困境的项目,并且作为一名程序员,传统上你会有更少的权力影响变革,然后是真正的经理人。这并不意味着“放弃/不要尝试” - 它只是意味着你必须要有创造力并做一些你通常不做的事情(即使用'软'或人的技能)。

很多人都在这个项目上保释,为山丘奔跑。到目前为止,我已经完成了3个无可救药的迟到项目。我设法修复2,1我无法解决。就个人而言,我不会打扰一个迟到的项目。毕竟,可能发生的最糟糕的事情是你被解雇了:)


0
投票

如果你从一开始就参与了这个项目,我讨厌说出来,但公司应该取代你(以及整个团队)。

应该由具有实际项目管理流程的合格团队重新分析,并由具有这种情况经验的项目经理领导。

原始程序员都不应该在保存它的“新项目”上工作。他们可以转移到其他项目(他们不必被解雇),但要重新审视项目,每个人都应该被替换。

当然,管理层必须了解并参与项目将比预期更晚的事实。如果管理层不同意这一点(更换团队,找到经验丰富的领导,退后一步,重新开始)那么@Maxim是对的 - 离开那里。


0
投票

1)我要评估的第一件事是团队中的人是否致力于项目?如果没有,那么做任何其他事情都是毫无价值的。除非我有一支敬业且忠诚的团队,否则没有什么能阻止这场灾难。 2)我会确保团队中有质量保证。 3)为客户提出合理的迭代和增量发布计划。随着我们陷入困境,客户无法很快获得所有东西。根据客户的优先级,我们会经常向他提供较小的功能增量。这将使客户保持参与,因为他看到了一些事情发生了一点点前卫。


0
投票

无论你做什么,一步一步做。

首先,它不是关于添加功能,而是关于修复应用程序。不要添加任何新内容。只是重构。对有人要求你在系统中引入的任何新东西说不。

不要试图改进整个应用程序。带上你的团队,让它专注于当时的一个方面,尽可能采用最佳实践,特别是使用单元测试。

仅使用测试驱动开发。在这种情况下,它会立即显示您不理解的行为的哪一部分(如果您不知道要测试什么,则无法编写测试代码。

所以这是路线图:

  1. 确定需要更改的关键部分
  2. 隔离暗示此行为的代码
  3. 在其余代码中查找此代码的任何出现
  4. 重构使用这种知识和大规模TDD
  5. 集成,测试和修复,直到这个特定部分工作
  6. 回到步骤

让老板明白这个情况:这需要时间,金钱,而且会很痛苦。解释为什么,你将做什么,以及你没有别的办法,否则它将再次失败。

最重要的是,不要试图让它第一次清洁。重构你能做到的,但不要指望你第一次改变你正在工作的部分的整个架构。您将不得不多次在整个应用程序上迭代该过程。

没有奇迹。只是方法和耐心。


0
投票

去过那里,按照以下步骤:

稳定

  • 收集真实的故事:代码库有多好/多坏,开发人员有多好/多坏,真正需要完成的事情(裸骨最少),何时需要完成
  • 减少加班(疲惫的人,好或坏,不能正常工作)
  • 删除坏的,输入新的/好的 - 错误的更换(许多可能被烧毁,甚至强迫改变)
  • 删除对错误/不需要的代码的访问(专注于提供80%值的代码库的20%)
  • 将基本代码实践放在适当位置,确保只有好的代码进入(不要再破坏基础)

控制

  • 实施专注于应用程序组件的团队(尽可能分离)
  • 将代码管理,发布管理,风险管理,质量保证等放在适当位置(构建您的环境以便您可以成功)
  • 让你的客户/赞助商获得好的一面 - 交付一场胜利,即使它是一个有点稳定的非常小的版本 - 然后进行变更管理(控制要求的东西)

向前走

  • 制定计划(规划是必不可少的,根据艾克计划是无用的 - 你需要计划找到缺失的东西并设定目标,但不要指望未来) - 需要持续规划
  • 积极管理您的员工 - 优秀的人才能做出好的产品 - 确保您获得并保持最佳状态
  • 随着时间的推移重构 - 随你清理代码 - 你可能没有一次性修复所有内容的奢侈,所以要加班以提供更清晰的代码库
  • 勇敢地前进 - 加班对你的团队的交付测试(但不是压力)会更加激进

11
投票

逃跑或找一份新工作。这是一个death march,他们需要一个scape山羊。

通常情况下,死亡游行将涉及通过要求团队成员特别艰苦地工作,周末或者试图“在问题上抛出(足够的)身体”而不同的结果,通常导致职业倦怠的绝望尝试来纠正项目的进程。


0
投票

敏捷重构。确定并优先考虑客户需求,然后在现有代码的简短冲刺中创建最重要的东西。祝你好运男人:)


9
投票

冻结版本,并开始修复程序问题....优先处理客户投诉(公司的业务部门可以优先处理)并使程序运行。一旦解决了最大问题,请开始清理代码。将任务分配给其他开发人员,并开始对所有新代码实施编码实践。

如果你可以做任何你想做的事情,那么看看真正的问题是什么并处理它们。如果这意味着组建一个新团队从头开始全面开发软件,那就这样吧。但你应该尝试至少修复主要的错误。不要费心引入新功能,它们只会使问题复杂化,并且一个不起作用的程序和不处理问题会导致客户失败。


5
投票

10号显然是最严重的问题,或者至少是所有其他问题的根源。找一个具有创造力和能力来交付项目的人,让他们自由地做任何事情 - 包括重新开始。


5
投票

我希望你收到的报酬非常好。无论如何,我的计划将按以下顺序执行:

0)停止在整个团队中添加功能或功能。在执行以下步骤并执行步骤5时,允许解决错误,然后停止错误修复和恢复功能开发:

1)应用我称之为逆向人员配置法:较弱的团队成员会减慢速度越来越快的团队成员,一般来说,迟到的软件项目需要移除,而不是添加。因此,您需要评估团队成员作为个人贡献者的质量。消除团队中较弱的员工,因为可能有一些人。最好通过查看他们的代码并检查他们的错误修复并找出谁使代码变得更糟而不是更好并将其切割为团队来完成。现在不是指导的时候,你需要最好的人来改变在最佳时期“固定”情况。如果你不能解雇他们或重新分配他们,让他们喝咖啡或其他人留下的东西。

2)评估代码本身。识别代码中未构造良好和/或未被很好抽象的区域。如果区域代码构造不好和/或显然对它应该做的是脆弱的,则将其作为重写目标。这一点感觉很痛苦,但从长远来看,它会节省你的时间。重复出现的错误和/或修复历史将有助于识别无法挽救的代码。如果代码区域或模块从根本上构建得很好,但在接口级别上没有很好地抽象,那么它应该适合于重新分解。这将节省大量时间并且是有用的代码。保留重写区域,重新考虑区域和合适区域的列表。

3)定义一个新的合理架构,您相信这将为您最终在功能和特性中的位置提供强大而完整的解决方案。该架构可能不是最佳的开始清洁,但实际上与您希望的位置相匹配。

4)与利益相关者合作,决定什么将使可接受的第一个版本试图为“后期”版本提供尽可能多的功能。也许你不能削减任何东西,但如果可以,现在是时候做了。

5)停止后台错误修复工作并将定义的工作分配给(剩余)团队,以估计其余功能的合理新实施计划。他们需要拥有时间表。汇总时间表并保持相当保守。现在,您可以合理地预测何时可以实现可行且可靠的功能。

6)实现剩余的功能,然后通过解决剩余的错误来加强发布。我假设在这里观察所有正常的良好软件开发实践,如源代码控制,单元测试等。

7)尽可能多地移除障碍物,以尽可能快地让团队摆脱困境。

8)监控问题,并尽可能地将手弄脏。提供在您可以提供帮助的范围内承担更糟糕的问题,并使团队中的所有成员保持高效。

祝好运!


3
投票

这不再是技术领导,而是现在的项目管理。

你作为技术主管将只是在泰坦尼克号上转移躺椅。所以,如果我是事实上的项目经理,我会怎么做。

1)确定项目发起人和利益相关者 - 包括官方赞助商和实际利益相关者。

2)去他们并要求项目“变暗”一个星期。

3)如果他们不同意,请离开这个项目。

4)如果他们同意,请将项目暂停一周 - 一切都停止。

5)花一周时间与项目中的重要人员交谈,以确定真实的项目状态。

6)在参与这些讨论的同时,开始制定项目恢复计划,强调范围,进度,预算和人员之间可能的权衡。

7)在本周末,确定哪些(如果有的话)可能的项目方案是可行的。

8)将这些场景中的最佳状态反馈给项目发起人和利益相关者,并开始谈判。

9)当商定前进方向时,重新启动项目并祈祷 - 可能不按此顺序。


2
投票

马克西姆已经指出了常识(退出死亡之旅)。但如果由于未知的原因你想坚持下去,让我用我在类似情况下的经验来谴责你 - 也许它可能会有用。

这是我在一个沉睡的老城区的第一份工作,那里有很好的电脑工作,很难找到,而且大学毕业后我很快就需要一份。我被雇用了因为管理层认为我足够热情并且可能比什么都没有好(我提议带来我自己的补偿,以节省他们给我一台PC的费用,并提供单独工作的经验)

由于死亡行军的情况,该项目已被其创建者抛弃,并在删除代码中的所有注释并执行其他混淆后消失。没人知道win32 / MFC的东西。

我只是开始研究旧纸和铅笔上的代码(大量的摩擦和修正),直到20天之内,我才知道整个代码,包括变量,心脏以及发生的事情。

有了这些知识,我就能够制作一个关键的作品,以前所有人都没有。当然,这只不过是海洋中的一滴水,但它让管理层能够为客户赢得信心“聪明的家伙 - 让他非常困难 - 已经有了x工作 - 你的工作时间会很长”。

一旦客户确信并且我们能够购买一些时间,就会带走一些压力。这给团队带来了一些希望,我们开始好好地挣扎。 6个月后,我晋升为项目负责人,9个月后,我们获得了修复发货(许多进度演示和明显越来越满意的客户)。

如您所见,成功的要素不是直接可复制的。但我总结一下,你需要首先对项目充满希望 - 展示一些进步并赢得信心 - 同行,管理层和客户。一旦到位,技术内容也应该得到纠正 - 没有什么可以取代这部分方程式。

如果这似乎不太可能,那么辛苦工作(哦,是的 - 很多很多像你从未想象过的工作 - 为什么你认为它被称为死亡游行)将是一种浪费,你甚至可以在开始之前放弃。

我别无选择,我热血沸腾,迫切需要一份工作。技术细节,其中某些东西可以发挥作用,并且只是点击到位。我真的通过这项工作赢得了很多善意和自尊,但从长远来看,这只是一个我可以充分沉着地讲述的故事,除了那些知情人士之外别无其他。

对你而言可能会有所不同,但它可供你决定。

祝好运


1
投票
  • 确保你不是替罪羊
  • 切割范围蠕变
  • 修剪功能“要求”
  • 实现更快的开发周期(可能是敏捷/ Scrum / XP /无论如何)

1
投票

如果可以的话,逃跑吧。

如果没有,您需要停止所有使项目不稳定的活动 - 包括编码和修复缺陷。

评估你的位置

将需求分解为更小的“里程碑”

阅读一些实用的书籍(Mcconnell的“软件项目生存指南”浮现在脑海中。

找出所有问题和风险。向所有参与者传达所有这些信息。

每件作品一件。

在达到目标时庆祝改进和里程碑。

祝好运。你的情况听起来很糟糕。它可能无法挽救 - 事情必须改变才能变得更好。

© www.soinside.com 2019 - 2024. All rights reserved.