我与一家硬件工程师进行了交谈,该工程师的组织得到了“敏捷或破产!”的授权。
他们正在尝试通过两周的迭代来管理技术风险和计划风险。 而且,他们正在尝试展示最终产品 ,而不是模拟产品 。 而且,即使他们独立工作,他们也应该每天站起来。
这些都没有道理。
临时交付的变更成本是多少?
如果您具有纯软件产品,则在创建以下环境后,可以最大程度地降低交付和更改成本:
- 构建时间短。 您可以在几分钟或更短的时间内构建产品。
- 足够的测试自动化来了解构建的工作原理。
- 团队所做的足以显示进度。
该环境使您可以根据需要多次发布。 当然每天或每小时。
而且,软件产品需要一组人员,因为他们需要整个堆栈中的人员。
机械和硬件产品的更改成本不同。 而且,产品不是以相同的方式“全堆”。
考虑各种硬件交付
我至少知道以下几种硬件交付方式:
- 模拟。 在硬件人员转变为物理形式之前,人们使用软件进行原型制作。 我经常看到硬件人员使用仿真来降低风险。 (将模拟视为测试。)
- 原型:机械和硬件原型。 考虑面包板,电线突出。
- 飞行员:作为软件人,我们合作过的人。 我从未见过超过三轮的试验硬件。 更常见的是两轮。
- 客户发布的最终硬件。
通过这些可交付成果,我们可以看到产品的进展。 每个交付成本是多少?
临时硬件交付的成本是多少?
我们可以评估或以某种方式预测这些可交付成果的相对成本:
- 仿真:您需要为每个工程师支付一次仿真软件费用。 现在,项目的这一部分看起来像软件。 硬件人员创建代码以创建产品,然后在模拟器中创建测试。 这看起来很像软件构建和冒烟测试。 也许更多测试。
- 原型:现在我们要考虑资本支出。 我们需要购买足够的零件来创建原型。 而且,因为我们现在处于身体状态,所以我们会了解到我们错过的东西。 我们有数小时的工作和一些电线来修复我们错过的东西。 我的经验是,即使模拟器需要通宵完成测试,原型仍然需要花费一周的时间来解决。 也许您可以在一天内创建原型。 (我从未见过。)
- 试验硬件:购买更多零件的资本支出。 而且,因为您不从事制造业,所以您要购买一两个或三个或三个。 (即使您购买了47个,也没有购买成千上万个。)而且,是时候创建一个可行的原型了。 至少一天。 以我的经验,几周。
- 最终硬件:向生产过渡的某种形式。 在此之后的任何更改都趋于疯狂。 特别是如果您在软件无法解决的领域发现问题。
当您从模拟转换为任何物理形式时,都会产生大量成本。 除了模拟之外,硬件交付与软件交付完全不同。
在软件方面,我们可以构建产品并在几分钟到一个小时内进行测试。 (如果不能,请查看构建的周期时间,并了解如何在几分钟内而不是更长的时间内节省成本。
在硬件方面,一旦我们采用物理形式,我们将同时拥有资本和运营费用。 而且,也许我的信息很陈旧,而且一位出色的硬件工程师可以在一天内获得原型的工作。
将硬件原型的软件构建时间从几分钟到一小时到最少一天进行比较。
这就是为什么如果您要展示产品,那么两周的迭代对于硬件没有意义。
什么对硬件有意义?
基于Scrum的严格敏捷方法不适用于硬件。 太贵了。 而且,硬件团队往往与软件团队不同。 (我将在第2部分中进一步讨论。)
瀑布式方法也不适用于太多硬件产品。 那是因为我们在继续学习。
拥有硬件产品时如何学习?
过去,与我合作的硬件人员使用这种方法:
- 创建他们希望可以使用的总体设计。
- 循环播放直至达到放行标准 (可能是着陆区 )或物理限制或时间用完:
- 通过仿真以多种方式测试设计,通常一次只能测试一项功能。
- 最后,告诉软件人员他们不能包含在硬件中的内容。 我们会像鬣狗一样大笑,然后重新设计软件。
这是一种迭代方法,遍历功能集和体系结构。 该生命周期的名称是:进化原型。
当变更的成本较低时,敏捷方法就会奏效。 虽然基于迭代的方法可能不起作用,但是您可以选择硬件的生命周期。 我将在第2部分中专门解决该问题,以尽可能降低产品开发成本。
翻译自: https://www.javacodegeeks.com/2020/01/costs-of-an-agile-approach-for-hardware-products.html