硬件开发流程概述
上世纪80年代末,IBM是有史以来盈利最多的公司。但进入90年代后,IBM遇到了严重的危机,1993年亏损80亿美元,几乎解体。危难时刻,郭士纳出任IBM总裁,采用IPD对IBM的产品开发模式进行了变革,并取得了巨大成功,IBM5年销售额增长了100亿美元。
IPD的思想来源于PACE模型(Product And Cycle-time Excellence),但IBM更强调跨部门协作的重要性,关注市场驱动,由此形成了自身的IPD流程。
1997年末,任正非带队访美,参观了休斯、IBM、贝尔实验室和惠普等知名企业,其中IBM给任正非留下了深刻的印象。在IBM听了整整一天的分享之后,任正非决定请IBM为华为建设IPD流程。2003年华为在全公司推行IPD后,产品的研发周期缩短了一半,故障率减少了95%,客户满意度持续上升。华为体系化的流程对华为的项目成功有巨大指导作用,这也是国内很多公司喜欢研究和学习华为的原因。很多人做流程管理,也是以华为为案例。
华为和IBM等公司的成功已经说明流程是有效的,IPD是有效的。不论是什么流程,其中三点是核心价值:
第一点、员工的动作被标准化了,对于每个节点的工作任务有了明确的输入输出条件、交付件质量要求。在这样的流程体系下,一个任务优秀员工、或是一个经验丰富的员工可能能做到90分,而普通员工、或者是一个新进团队的员工按照流程要求做,也能到40分到60分、甚至是80分,通过流程人和人之间的差异被弱化了,项目的结果变得有保障了。
第二点、项目任务结构化、工程师团队专业化,在宏大的流程体系中,工作任务被切割到很小的颗粒度,工作线程被分割到很精专的范畴。因此、团队的组织结构和人才模型也必须是与这样的流程体系匹配的,公司用流程培养了一大批在特定产品的特定细分专业领域上水平很高的工程师,他们经过长年打磨技能高超,在特定体系中如鱼得水。
第三点,建立了“认可流程、按照流程执行”的组织文化,所有的员工都对流程价值高度认同,坚持按照流程做事,按照IPD流程描述的研发活动中过一个审核节点是一项非常严肃的事,会有很多不同角色的意见碰撞。工程师按照流程去完成项目中的各项任务,管理者通过检查流程每个环节去管理团队,长年反复训练,团队的执行力就会变得很强,团队擅长按照规则做事。
有一位资深的管理者曾这样说“流程化管理的本质,就是一个去艺术化的过程”。艺术靠的是作家的灵感,很难复制和推广,所以艺术品非常昂贵。但现代化的科技企业要的就是大规模的复制,标准化的交付,所以管理就是要借助流程实现“工程化”,一切基于步骤、数字、事实说话。流程把团队塑造成了纪律性极强的研发部队,一板一眼、持续改进业绩。
硬件产品开发涉及的知识域庞杂、开发周期长、犯错后修改的代价大,因此要通过硬件开发流程把完整的硬件开发活动结构化、标准化。清晰的流程能够帮助硬件工程师规范化的开展硬件设计、开发、验证、维护等各个阶段的工作,明确在硬件产品开发各阶段必须要完成的任务,制定各阶段必须要达成的质量目标。清晰的流程对硬件工程师掌控硬件项目帮助很大,硬件工程师理解了硬件开发流程,并坚决的执行流程里的标准动作,就能做到“有序工作,步步为营”,可以极大提高硬件项目的成功率。让硬件开发不仅仅是依靠工程师的个人经验。
硬件开发活动是需要流程化的,通过流程的帮助提高项目的成功率,但在硬件开发实践中我们也体会到,学习和借用大公司的流程一定要有“就事论事”和“实事求是”的态度,所谓“就事论事”就是要根据自己开发的产品形态和应对市场的特点制定适合自己的流程,而不是生搬硬套;所谓“实事求是”就是要结合自己团队的组织形式和专业分工去做流程化的任务分解,而不是向大公司一样设置很多节点却没有对应的组织去实现,反而形成了人力和资源的耗散。总之,我们提倡深入理解硬件开发的本质,结合自己产品和团队特点做好量体裁衣。
各个公司对硬件的流程的理解和构建不一样,所以对于不同的硬件开发阶段会使用不同的名词,特别是像华为这样公司因为运用IPD流程,会使用一些社会上不常用的名词,例如“概念阶段”,并且会使用一些专有名词比如:“TR4”。如果没有在相应的环境里面长期进行开发活动,会产生阅读障碍。所以我们在撰写本书的过程中,使用更易于理解,更通用化的叫法。[z3] 把硬件开发活动分为立项、需求、计划、总体设计、详细设计、硬件测试、系统集成和验证、硬件维护这几个阶段,在每个阶段继续细化硬件开发、测试活动,整体结构化的逻辑框图如下图所示。
硬件开发流程逻辑框图
(1) 立项阶段项目立项是硬件开发的开始,好的开始就是成功的一半,在这个阶段我们要写好项目计划书,做到“先胜后战”,把产品和项目的全景在项目开始之前勾勒清楚。立项阶段主要考虑产品形态、市场价值、投入与回报。这个阶段是比较容易被工程师忽略的,但是有些公司没有专职的产品经理负责立项,硬件工程需要充分参与立项阶段的工作,避免项目开始之后,发现供应问题、技术不可实现、市场变化等原因导致项目流产或者项目没有市场等问题。
相关阅读:
硬件产品立项的关键
华为是怎样研发的13——立项
(2) 需求阶段
立项和需求阶段,在流程表述图中呈现出由粗变细的形状,像一个喇叭口,这个喇叭口表达的含义就是“需求收敛”。“做正确的事”比“正确地做事”更重要,需求阶段就是细化具体做什么事情,保障后续开发是在“做正确的事”。在立项和需求阶段,需求都是渐进明细的,这个阶段的投入也是为了在保障后续阶段需求稳定。需求阶段是整个项目的关键工作阶段,团队做好需求收集、需求整理、需求传递和需求度量的规则。通过点对点沟通、会议、工具等方式进行需求分配、在项目中有组织机制保障有序开展需求增加或减少的动作。在需求分析阶段,要充分分析需求价值,保障在需求阶段之后,整个项目就进入了“做正确的事”的阶段了。需求管理是贯穿整个项目开发阶段的,保障需求稳定,保障后续的每一个需求变更是可以带来更多价值的。
相关阅读:
需求设计与需求分析写作
需求变更管理 定义、流程、模板
需求怎么来的?
需求的收集及分析
华为是怎样研发的(19)——需求跟踪
(3) 计划阶段
孙子兵法说“多算胜、少算不胜”,意为作战前计算周密,胜利条件多,可能胜敌;计算不周,胜利条件少,就不能胜敌。计划管理能体现出一个硬件项目经理的把控全局的功力,制定一个合理的计划也要遵循分层计划、渐进明细的原则。硬件经理可以先定目标,做出整体计划,设置里程点,分层细化项目计划;然后跟随项目开展逐步明晰项目计划,找到计划中的关键路径,集中精力管理;在项目开展过程中时刻关注计划执行中的依赖关系,关注计划执行的风险;制定合理的计划的能力也是项目经理对项目细节的把控度、风险的把控度、人员管理能力、项目实施过程中的应变能力的综合体现。
(4) 总体设计阶段
“总体设计”在是连接需求到开发的关键环节,对于产品的规格定义、产品系列的档位区格、要有一个系统性、全局化的设计过程。对于复杂的产品我们要做好架构设计,对于海量发货的系列化产品我们要做好档位区分,规格定义和成本核算等工作[z9] ;同时我们还要进行硬件专项分析,完成器件选型,为下一阶段的“详细设计”打好基础。在总体设计阶段通过关键器件选型、预布局、热设计、结构设计等维度,基本确定电路板的规格和形态。
(5) 详细设计阶段
详细设计中要把硬件设计的细节文档化,形成详细设计方案,然后开展原理图和PCB的设计工作。为了保障产品的质量,你需要通过原理图、PCB检视这样活动进行强化产品的质量水平。硬件设计重在细节,归一化、检视这些工作能帮助你把打磨好产品细节,同时也避免犯错。
有些开发流程,例如IPD流程是针对各种产品的通用流程,对于硬件详细设计阶段的一些关键节点没有做明确定义,把流程的角色转换时作为关键节点,例如:开发转测试,测试转生产等。但是硬件开发过程中,一些关键节点是一定要严格把控,才可以进入下一个环节的:启动PCB设计、PCB投板、PCB回板、功能调试完成等关键节点,严格把控进入条件和完成自检可以非常有效的带来项目在质量、进度上的提升的。所以本书会细化讲述硬件相关的关键节点。
硬件研发工程师职位与规划
硬件研发工程师通常负责硬件产品,一般是硬件设备的一部分的设计与开发,一般要求应聘者熟悉数字电路和模拟电路设计及相关的设计工具的使用,精通单片机,可编程逻辑器件的开发,精通汇编语言,对各种设备接口熟悉,有时还要求应聘者熟悉C/C++语言开发,熟悉移动设备的应用开发,精通嵌入式系统原理和开发。
硬件研发工程师一般是电子类相关专业,主干课程有电子科学与技术,计算机科学与技术,电路分析原理,电子线路,数字电路,算法与数据结构等等!
硬件编程有两个层次:一个是指令系统的设计,另一个是应用系统的设计。
不同的硬件有着不同的指令系统,如果要从事这方面的职业,还是需要在电子技术方面有扎实的基础,如果要做应用系统的设计(使用指令实现某些功能)比如单片机的应用程序设计,则需要对该硬件指令熟悉,再懂得一定的汇编基础。
一定程度上,通过高级语言控制硬件也算硬件编程,比如使用C语言编写驱动程序,虽然属于软件范畴,但仍然需要熟悉硬件及相关语言。
下面总结一下硬件开发的基本过程:
(1)主动了解各方面的需求,并综合起来;明确功能与设计的特点,如CPU处理能力,存储容量及速度,I/O端口的分配方案,接口要求,电平要求和特殊电路要求等。
(2)根据需求分析制定硬件总体设计方案,寻求关键器件及相关技术材料,技术途径和技术支持,充分考虑技术可行性,可靠性和成本控制,并对开发调试工具提出明确要求。
对于关键器件,可以去索取样品。
(3)总体方案确定后,开始进行软件和硬件的详细设计,包括绘制硬件原理图,软件功能框图和PCB设计,同时完成开发元件清单,还需要与软件设计者深入交流,以确定内存大小,内部结构,对外接口的数量以及类型。
(4)做好硬件背板后,对原理图实际中的各个功能单元进行焊接调试,必要修改原理图并做记录。
(5)软硬件系统联调。一般情况下,经过调试后,原理及硬件设计上有所调整,需要二次投板。
(6)可靠性,稳定性测试,然后通过验收,完成项目。
硬件工程师的基本技能如下:
(1)由需求分析至总体方案,详细设计的规划创造能力。
(2)熟练运用设计工具设计原理图和PCB板的能力。
(3)有数字和模拟电路基础,懂得常用的AD、DA接口电路设计。
(4)各种计算机接口的电气特性,如USB,RS232和CAN等。
(5)熟悉使用一套ECAD工具,熟悉电路仿真,验证。做电路板要懂得混合信号设计,EMC及高速电路设计方面的知识。
(6)了解各种可编程逻辑器件结构,懂得VHDL,Verilog之类的硬件描述语言,懂得可编程器件的实现算法。
(7)熟练运用单片机,DSP,PLD,FPGA进行软硬件开发,具备调试能力。
(8)熟练运用仿真工具,示波器,信号发生器,逻辑分析仪等具备调试的能力。
(9)具备常用电路的设计能力,如复位电路,常用滤波电路,功放电路,高速信号传输线的匹配电路等。
(10)具备设计文档的组织编写能力。
(11)具备故障定位,解决问题的能力。
相关问答
硬件研发工程师干什么的?需要什么知识?
硬件研发工程师是电子产品研发团队中的重要成员,负责设计、开发和测试硬件电路原理、PCB设计、布局和调试等工作。以下是硬件研发工程师的常见职责和所需知识:...
年薪50W+的硬件工程师,是如何炼成的?
能够达到年薪50万+的硬件工程师,已经算是顶尖的高级工程师了。硬件工程师的普遍工资并不是很高,平均月薪也就1万左右吧,低于1万的大有人在,能够达到月薪2万以...
硬件测试工程师是干什么的?有哪些任职要求?申请方
[回答]很多同学在找硬件测试工程师相关工作的时候了解一下硬件测试工程师到底是干什么的?以及任职有那些要求都是很有必要的,这样能够帮助我们提前了解这...
什么是硬件设计师?
硬件工程师需要会的东西太多了,首先你要熟悉了解电子方面的很多基础知识,然后在这基础上开始深入。1、学会设计、建构和测试各种计算机硬件及其相关设备,要会...
想做一个硬件工程师,不知道怎么开始?
一、何为硬件,何为软件首先大家需要知道何为硬件何为软件,就是我们平常所指电子领域的电子电路方面的,所有的电子电路及电子元件所构成的某个产品,是实实在...
硬件开发工程师学习哪些知识
[回答]这个比较负责管理,嵌入式Linux的科学知识很多,不是一朝一夕就可以做一名研发工程师的。明确建议你,可以去电脑it培训学校去学下,比如长沙新华电脑学...
游戏《开发物语》的硬件工程师怎么弄?
一直转如果要把某(注意!是单一员工)个员工转职为流程如下:将该员工的:程序、脚本、音乐、图画全部升级至5级出现:总监、制作人全部升级至5级出现:硬件工...
什么是计算机硬件工程师-懂得
计算机硬件工程师主要工作任务1.计算机产品硬件设计2.了解计算机的结构及其发展趋势3.对计算机硬件的销售及市场有较深刻的认识4.区域市场管理5.按...
为什么硬件开发工程师称自己为“搬砖工”“拧螺丝工”?
这个说法是个自嘲而已。硬件开发工程师是指制定计算机组装计划;能够选购组装需要的硬件设备,并能合理配置、安装计算机和外围设备;安装和配置计算机软件系统...
IT硬件研发工程师转产品经理合适吗?
做产品和做开发差别还是蛮大的,要做产品经理要照顾客户的意愿还要和开发人员协调,哪些功能可以做,哪些做不了,哪些可以优化。如果真心想转的话,从公司内部先...