开发大型项目时最大的瓶颈是什么?[关闭]


11

假设我的公司正在开发MS Word的副本(仅作为示例)。假设一个人拥有无限的可用现金并且拥有像Microsoft这样的组织,那么开发过程的瓶颈将是什么?换句话说,快速开发此类软件的最常见障碍是什么?假设所有规格均已就绪并且组织运行良好,那么我们只专注于软件开发,直到产品准备好发货为止。一些替代方法可能是:-编写代码-编写测试-手动测试最终产品-首先由于设计不良而重写代码-设计代码-由经验丰富的开发人员进行代码审查-设计GUI-基于alpha重新设计GUI / beta用户反馈-处理来自用户的反馈-等待alpha / beta用户反馈

请在您的答案中使用参考或陈述您对该主题的经验。


4
有好的开发者吗?

@ThorbjørnRavn Andersen让我们说说微软的好与坏。
大卫,

1
这是严重不足的,无法解决。

Answers:


3

以我的经验,主要的“瓶颈”是学习过程。当您的假设公司着手开发下一个Microsoft Word时,您需要了解的内容与实际了解的内容之间会有巨大的差距。差距的大小取决于许多因素,它可能在技术领域。您已经提到了问题中的某些问题,例如设计,用户反馈等。MicrosoftWord已有30多年的开发历史,因此在历史,代码,工具和人员之间都有大量的知识。

因此,如果我尝试这样做,我将尝试雇用在该领域具有技术和管理经验的最佳人才。尝试阅读该领域中任何可用的文献。我也会尝试尽快获得客户反馈。最大的问题是您不了解的关键事项,这些关键事项可能会在您的过程中很晚才发现。

顺便说一下,这并不是软件项目独有的。对于您尝试做新事情的每个大型项目,都是如此。例如看波音梦幻客机。有很多关于这方面的书。神话人月是其中之一。


37

假设所有规格均已到位,并且组织运行正常。

您已经假设不存在软件开发过程中的两个最大“瓶颈”(根据我的个人经验)。


4
++是的。并假设您有规格,则不会更改它们。需要专业开发人员知道如何预测尚未要求的更改,以及在更改时如何进行处理。
Mike Dunlavey

我知道这些是巨大的障碍,但是我并不是在问这些问题,因为我已经知道它们,而且很明显。
大卫,

8

即使在您假设的完美世界中,我仍然可以看到一些问题:

从我自己的角度来看,最重要的可能就是与客户打交道。以我自己的经验,业务必须与经常在项目开发过程中尝试更改项目的客户打交道。在某些情况下,他们试图提出变更请求作为错误修复,以避免必须支付任何费用。这可能会导致很多官僚主义,从而可能导致项目延迟或导致代码快速被黑客入侵,从而进一步发展为技术债务。我已经阅读并听说过处理这些问题的团队,就像呼吸一样容易,我当然希望我能参加其中的一个:)

第二个问题是缺少适当的域模型。埃里克·埃文斯(Eric Evans)在他的著作《域驱动设计》(Domain Driven Design)中对此进行了很好的介绍。缺少良好的域模型会导致Glenn的答案中突出显示了一些问题,例如试图定位错误。如果没有干净的域模型,遍历/调试代码以隔离和修复问题可能会很耗时。我认为良好的域模型可以使生活和调试更加容易,甚至在进一步维护和扩展应用程序时也是如此。

我上面提到的问题不会立即产生任何问题,但是如果您需要长时间维护该产品,它们可能会再次困扰您和您的团队。


我认为这是一个很好的答案!
大卫

4

我不确定您所说的“组织运转正常”是什么意思,但是即使在一个出色的组织中,任何规模较大的项目中最大的瓶颈也是沟通。《神话人月》指出,随着项目团队的成长,沟通组合会爆炸式增长,几乎可以保证错误和信息遗漏。


2

从到目前为止的工作中可以看出,很大的瓶颈源仅来自于错误和造成它们的人为错误。只需考虑一下调试代码,查找问题的解决方法然后重新测试新解决方案所花费的时间。现在,假设该修复程序是否引起了另一个细微的错误。它可能是主要的痛苦之源,从而减缓了总体发展速度。


这是一个很好的答案。在错误中,您要说的是最大的瓶颈,这不同于询问开发人员的最大时间消耗。识别错误,找到修复程序,重新测试或其他。
大卫,

1
重新测试不是问题。在我看来,真正的瓶颈通常是发现错误,但是找到正确的修复程序可能需要花费相同的时间。

2

我认为布兰登·莫瑞兹(Brandon Moretz)是最好的答案。但是我想补充一点,要从大型项目中获得第一个版本并不难。我个人从来没有失败过。

我没能做的就是创建第一个版本,以便也可以及时提供第二个,第三个etc版本和/或bug修复以及或小的功能增强。


0

是的,我会同意上述观点,并且必须遵循软件模型。据我所知,主要是:

1.时间管理2.团队效率和团队管理3.团队协调和4.与客户更好的理解

如果我们拥有以上四个条件,那么我们就可以进入一个成功的新世界,并在个性和软件方面取得很多进步。这导致了与客户的良好关系,客户会在不考虑我们的情况下下达订单。


0

在需求,设计,实施,部署等方面的潜在缺陷。就像破损的东西一样,但您尚未找到它。想象一下,软件开发是每个新错误都是由最新更改引起的。

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.