像硬件一样做软件

一次偶然的聊天,跟同事聊起软件和硬件的异同。这个同事以前没有接触过软件,他曾经在华为做过手机的开发工程师。从他那里,我了解了手机开发的内幕,流程化,效率化,是降低成本,提供产能的重要因素。

因为他刚刚接触软件,所以要描述一下软件的感受。他的一句话很是触动了我。他说,看起来,跟做硬件相比,做软件的都是不负责任的。他们拿着设计并不完善,考虑并不周全的文档,就开始启动代码。结果是做到尽头了,回头再改,然后重新开发。最后,整个项目做的七零八碎,结构混乱,代码效率低下。甚至是延期。

仔细想想公司内部其他部门的现状不就是如此吗?项目前期不重视投入,风险控制不足,各种文档都是照着葫芦画瓢,没有精心仔细设计,把所有的质量保证都放在后期测试上。

他跟我讲了,做硬件的底线。众所周知,在一个多层板上,在一个BGA封装的芯片上,要想做出很多飞线是不太可能的事。一个跟硬件相关的项目的成败,最重要的点是,第一版的硬件是否能用,是否能够满足第一阶段的软件功能的需求。如果第一版有问题,那么所有的时间点都将推迟,最后导致后期加班加点都赶不上进度。所以,出硬件第一版需要做至少3次以上的大规模评审,评审人员不小于10人。电路原理的设计失误,是很难通过飞线或者其他方法弥补的。硬件电路从修改原理图到出电路板,至少要超过3天时间,那么这3天时间,就是一段时间浪费。

单从风险控制上,硬件的风险就要远远大于软件。对于每个软件程序员,是否都会时时刻刻提醒自己的软件风险呢?假如你的编译次数要求不超过10次,就是说编译10次之内,要求完成你的模块功能,是否每个软件程序员都能做到?我想,这是可以做到的,只是一个软件程序员不会这么要求自己而已。如果结构设计周全合理,如果程序员不会出现低级语法错误,那么10次以内的标准完全可以达到。

硬件的机会,远远小于软件。同样是一个项目,如果你负责硬件部分,那么你的压力就要超过软件部分。首先,一个小小的失误就会造成全面推迟,导致软件规划全盘混乱。其次,硬件的投入成本是巨大的,一套电路板几十块,做出来,不能用的话,就要全部当做垃圾处理。我想老板不会让你随便的往垃圾桶里扔钱的,所以如果做硬件不成功,那么你的机会就是34次而已。老板不会傻到看你扔了4次,还不阻止你的地步。所以,从个人压力和机会上看,硬件需要有经验的人员,有责任心的人员,还要有颗大心脏。延伸过来,做软件的不要把升级和补丁,作为自己失误的砝码。如果给你一个标准,你的软件在第一次测试时,总体bug不超过3个,能不能做到呢?如果达不到这个标准,就要被辞退,你还有信心继续做下去吗?

质量保证。由于硬件的特性,开发周期固定,所以硬件的质量保证主要依赖于前期的电路评审,这个阶段,要查找每个芯片的电器特性,编程手册等等,使他们都互相匹配,正常工作,同时,让后期程序员方便的编写驱动和其他软件。硬件的最主要的文档就是电路原理图。对软件的质量保证,从我当前了解的实际情况是,对日项目注重后期测试,对欧美的项目则注重前期设计和程序员个人水平。我的个人经历。以前对日做外包项目,后来一次机会做欧美项目,就把对日的一套拿给欧美的评审组看,结果被骂得狗血喷头。可见,欧美的软件质量之高。我觉得软件的质量保证不应该把重心放到后期的测试上。设计失误是质量缺陷的最大障碍。所以看看对日的代码,就知道人员素质了。测试不会测出所有bug,关键在于对质量的态度,和设计的控制。假设,没有后期的测试,一个纯的软件项目会有多少成功率呢?

 

一个软件工程师,应该向硬件工程师学习,学学对风险的控制,对工作的谨慎态度,对质量的追求。像硬件一样去做软件,是一个高素质软件工程师的必须态度。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值