软件产品开发,讲究的是拥抱变更、小步快跑、快速迭代、尽快发布。但硬件产品开发,需要考虑实现难度、实现周期(包括layout设计、结构设计、手板、开模、嵌入式开发、硬件测试、软件测试等)、以及预期上市节点时产品相关功能是否还有竞争力等等,而且一般变更的成本极高、研发的周期非常长。所以很多同学认为敏捷只适合软件行业,不适合硬件行业。
今天,给大家分享一些敏捷在硬件行业里的应用,希望给你一些启发。
在分享之前,我们先明确2个观点:
1、敏捷不是银弹
我在咨询和培训生涯中,遇到很多同学,学习敏捷的初衷就是:“我们现在研发管理一堆问题,听说敏捷很厉害,大厂都在转敏捷,我们也要搞敏捷,搞完了我们这些问题就能解决了”。就如一个病入膏肓的人,把敏捷当作一剂良药,希望能达到立竿见影的效果,我想说:这简直是痴人说梦。
敏捷没你想的那么神奇,更不是你的救命稻草。学习任何一门新知识、一种管理方法,不是让你照搬照抄,而是思维的升级,带你从另外一个视角看看有什么启发。
2、敏捷未必是唯一解
项目有多种形式,项目团队要根据项目特点来选择对应的生命周期模型。英国组织理论家拉尔夫·D·斯泰西( Ralph D Stacey) 提出的模型用于对项目开发的复杂性进行分类,以方便组织选择恰当的管理行为。
如果一个项目处于“简单的”区域,采用传统的预测型生命周期(瀑布模式)即可,如盖一栋普通的房子。
如果一个项目处于“繁杂的”,或者是“复杂的”区域,适应型方法(敏捷)可能更有效。通过频繁的调整、检查、适应,最终达成客户目标,完成项目。
如果一个项目处于“混乱的”区域,无论是瀑布还是敏捷,都没有良药。随着时间的推移,需求明确一些或者技术更确定一些(即转化成“复杂的”、“繁杂的”区域),则可以使用敏捷方法来实现。
硬件产品,如何采用敏捷开发?
前期尽量明确需求
在产品原型阶段尽量把产品的技术规格指标确定下来,减少变更。通常我们可以根据IC厂商的参考设计,基于他们的解决方案和自己的产品特性,来设计外围的接口电路,节省很多前期的开发时间和费用。
原型期快速迭代验证方案
有同学说,硬件怎么快速迭代?我们这里的迭代,指的是解决方案设计的快速迭代,比如选定的某个硬件设备,集成后不知道是否可行,或者某个外设,是否满足解决方案的要求等等等等。都可以快速迭代。具体怎么做?
在产品原型期,硬件部分的工作风险最大,需要快速验证方案的可行性,或者做技术刺探(Spike),此时可以先用开发板+洞洞板或者面包板,快速验证硬件平台方案的可行性。
我之前学习及工作中,买过很多的开发板,比如以前刚学习的时候买的还是叫友善之臂的2440开发板,后来买了arduino、树莓派等。这些都是可以来快速验证方案的可行性。
同样,IC厂商,通常也都会提供demo板给我们进行调试。此时就可以基于这些demo板来测试解决方案的特性,或者接入外设,进行软件的调试、硬件的验证。记得以前在做机器人项目的时候,核心板需要外接各种类型的传感器,比如各种类型的摄像头、传感器等…这些外设,又都是不同的厂商提供,此时软件就要根据厂商提供的demo程序,来快速验证可行性(比如性能和精度),验证可行后,硬件就可以根据厂商提供的硬件原理图来进行整体产品的原理图设计。
架构设计:标准化、模块化、平台化
做产品设计和盖房子是一个道理,盖房子用的是砖、钢筋和水泥这些东西。把这些东西进行不同的组合,就可以盖成不同的房子和大楼。软件开发的核心思想是:高内聚低耦合,对于硬件也是,要尽量的解耦、模块化。标准化、模块化、平台化,才能做到快。也就是先做减法再做加法。
标准化、模块化、平台化的最大好处就是,能够复用,而不是重复造轮子,从而降低风险,而且开发周期短。
硬件模块化设计的几个特性:
(1)独立性:硬件功能模块能完成相对独立的的功能。
(2)重复性:硬件功能模块能够重复使用。
(3)组合性:硬件功能模块能够根据不同的产品设计需求,进行不同的组合,形成不同的产品硬件设计方案。
(4)连接线:根据不同的产品硬件设计需求,通过不同的硬件模块组合形式,建立硬件模块之间的相互连接关系,用于实现产品的硬件设计方案。
仿真与模拟
硬件开发周期较长,甚至有一些是需要做破坏性的测试。而且一旦前期产品设计错误,会导致严重的风险。这个时候可以采用计算机模拟仿真技术。
嵌入式系统需和其运作的环境互动,一般会预期有合理的传感器信号为其输入,也会依输入及系统设计来驱动实体系统。为了使系统正常工作,需要将嵌入式系统的环境纳入仿真考量范围内。若嵌入式系统模型和环境模型连接,一起进行仿真,则即称为模型在环(Model in the Loop,简称MIL)。
比如下图是某车企在研发制造过程中的MIL设计。
现在各行各业都有不同的仿真模拟软件。在方案设计环节,就可以采用敏捷方法,通过仿真,快速验证方案的可行性。
举个生活中的例子:
装修的时候,一般都会让设计师出个装修图,先出平面图,然后和客户确认布局的合理性,快速调整。如果OK了,再去做仿真建模,出效果图。这就是敏捷思维的运用,快速交付、快速迭代、尽早验证。
我记得当时装修的时候,家里采用的是无主灯设计,需要在不同区域设计灯光效果,灯光设计师就采用了DIALux软件模拟,给我模拟了不同区域的灯光设计效果。根据此,就可以算出实际的照度,够不够亮,功率选多少瓦,色温选多少K,光束角选多少度,用它可以告诉你结果。最终的效果也是非常的满意。
这些都是敏捷方法的运用。
结尾
在当前VUCA时代,对于整个项目,有可能采用混合式生命周期管理方法。预测、迭代、增量、敏捷方法的组合,就是一种混合方法。在前期需求不太清晰的阶段,采用敏捷方法不断调整、快速试错,找到方向。待需求明确后,可基于确定的需求采用预测型生命周期,按部就班的推进下去。
也有可能在某个生命周期过程中,采用其他生命周期的实践方法。比如团队在使用预测型生命周期,同时也采用了敏捷的实践如每日站会、短迭代、回顾会等。
硬件的敏捷,不一定是完全按照敏捷流程来执行,但可以采用部分的敏捷实践来提升交付质量和效果。只要是能够给我们带来交付效果的提升,过程的改进,质量的提升,那就是好的方法。不管花猫狸猫,逮到老鼠就是好猫。
以上文章由@丁仿 圣略咨询敏捷教练、管理圈APP创始人
原创发布于管理圈,未经许可禁止转载。