最近很多朋友咨询的一些硬件问题,发现朋友们没有仔细的看datasheet,也没有好好的做电路分析。我讲一讲华为是怎么做硬件开发的,给正在做硬件开发的朋友一些启示。说的不对的地方,大家批评指正。
曾经2007年,刚工作2年的时候去一家小公司去面试。当时考题,我感觉我做得很好,面试的时候,对方对我也很认可。但是他当时说:“我需要招一个,在大公司待过的,最好知道硬件开发流程和规范的。虽然你题答得不错,但是我们需要一个有丰富经验的,最好在华为待过的。”
当时,我就在想“华为的规范和流程是啥样的”,就一直想去看看。之前对华为的面试一直都不是很感兴趣。之后,就很想有机会去华为看看。2008到了华为。
我能想到的华为硬件开发的几个不一样的点,跟大家分享一下,想到哪写到哪,欢迎大家批评指正。
1、 文档,评审,设计。
当时刚入职时,三个人做一个电路板。虽然电路复杂一些,还是有一些人力过剩的。所以,我就被安排去写一个PCI转UART的逻辑。
我当时是新员工,也急于表现自己,利用周末的时间,估计用了一周的时间,就写完代码,开始仿真了。我以为我的导师兼主管会表扬一下,结果没有,他说:“你为什么没有召集大家讨论?然后再写方案,评审?然后再动手写代码?”我当时是没有理解的,觉得我一个人就搞定的事情,为啥要这样劳师动众?
现在反思:
第一、 从主管的角度,不知道新员工的个人能力,你能把做的事情讲清楚了,他才放心。
第二、 从公司的角度,有一套流程来保证项目的交付。那么则不再太依赖某个人的个人能力,任何一个人的离职,都不会影响项目的交付。这也是华为最了不起的地方,把复杂的项目拆得非常细碎,这样不需要特别牛的人来交付项目。这是为什么华为的工程师的收入是思科的N分之一。
第三、 从效果角度,毕竟一个人的想法是有限的,把想法文档化的过程,就是整理思路的过程;讨论的过程,就是收集你自己没有想到的过程。正式的评审,是大家达成意见的过程。提前讨论,让相关的人都参与到你的设计中,总比你设计完了,被别人指出一个致命的问题要强得多。
就是因为华为把一项工作拆散了,所以沟通,文档,评审,讨论,变得非常重要。
这个工作模式的缺点,也是显而易见,沟通成本高,工作效率低。
2、 华为的硬件领域的人员构成:
在华为内部里面,人员角色非常多。硬件的人是对产品开发阶段,端到端负责的。
做单板硬件工程师,可以涉猎最多的领域,同时也是工作内容最杂,接触人最多,扯皮的最多的工种。
但是也因为有人专门负责画PCB、EMC、电源、逻辑,原本硬件工程师应该做的领域。那么硬件工程师就武功尽废,变成“连连线”。
其实不然,正是由于每个人都是一个小的领域,没有人统领,所以一个好的硬件经理的作用非常的重要,是贯穿所有领域和全部流程的关键角色。
正如原来华为内部论坛上有一个人比喻的,硬件工程师更像是处理器里面的“Cache”,是所有环节的中转站。
大公司把人的分工分的这么细,也是防止某一拨掌握了太多公司的核心技术,出去单搞了。
3、 华为的流程
其实华为的流程,很多人都知道IPD流程是从IBM来的,同时华为也去咨询过爱立信,爱立信的硬件开发,完全没有流程一说。
我个人理解:IPD流程已经在华为变种,结合了中国人的特点,华为的企业特点进行了变通和优化。如果华为僵硬的套用IBM的这套流程,也必定不会这么成功。
那么概括一下华为的硬件开发流程:
需求分析→总体设计→专题分析→详细设计→逻辑详设→原理图→PCB→检视→粘合逻辑→投板→生产试制→回板调试→单元测试→专业实验→系统联调→小批量试制→硬件稳定→维护。
流程的根本在于,这个环节做好了,再进入下一个环节。所有的环节其实跟其他公司并没有太大的区别,只不过严格把握了进入下一个环节的考核条件。令硬件工程师最纠结的是“没有个节点跟’投板’对应”。
华为支撑IPD流程的系统是PDM(又名爬的慢)
PDM的中文名称为产品数据管理(Product DataManagement)。PDM是一门用来管理所有与产品相关信息(包括零件信息、配置、文档、CAD文件、结构、权限信息等)和所有与产品相关过程(包括过程定义和管理)的技术。
华为所有的器件资料,产品部件,工具,文档,原理图,PCB,逻辑代码等都存在这个系统上。
但是系统过于庞杂,其实比较难使用,跟服务器归档、SVN归档、也容易搞混淆。