数据结构论坛

首页 » 分类 » 定义 » 华为的研发团队是什么样子的
TUhjnbcbe - 2024/7/9 16:13:00

技术人员应该如何成长,企业又该如何来管理研发团队?技术咖或管理技术的BP一定不要错过,向华为学习研发流程与管理。软件开发师书单拉到最后可查看。目录如下:1、华为产品开发的工作流程2、华为的产品开发是做什么的3、华为如何管理研发团队4、华为的软件开发理念:敏捷5、软件开发者应具备哪些能力?6、软件开发师的书单和常用工具

一、华为产品开发的工作流程

华为提倡流程化的企业管理方式,任何业务活动都有明确的结构化流程来指导。研发工作也不例外,其工作流程包括6个阶段,分别是概念阶段、计划阶段、开发阶段、验证阶段、发布阶段以及生命周期管理阶段。

1、概念阶段

概念阶段是对产品的基本功能、外观、价格、服务、市场销售方式、制造等基本需求进行定义的阶段。比如,你首先要知道做这个项目是为了解决什么问题,为了清楚地知道这些需求,要经常和客户、项目经理等交流。这个阶段主要产生新产品的需求说明书。

2、计划阶段

制定产品规格说明书,确定产品的系统结构方案、明确产品研发后续阶段的人力资源需求和时间进度计划。

3、开发阶段

根据产品系统结构方案进行产品详细设计,并实现系统集成,同期还要完成与新产品制造有关的制造工艺开发。

4、验证阶段

验证阶段进行进行批量试制,验证产品是否符合规格说明书的各项要求,包括验证新产品制造工艺是否符合批量生产要求。验证阶段后期还要向市场和企业生产部门发布新产品,并经历新产品产量逐步放大的过程。

5、发布阶段

可以通过正式会议形式召开,需要召集产品经理、主要开发人员、测试人员、上级领导等参与,准备充分,尽最大可能说清楚这个产品发布之后的效果、效益,为下一个项目总结经验,也为上线后的价值评估做准备。

6、生命周期管理阶段

产品的更新换代是各个行业的普遍规律,华为的生命周期管理则明确了产品生命周期策略及产品终止策略。

二、华为的产品开发是做什么的?

产品开发是产品从开始到形成的过程。从服务器的部署,到代码的存档迭代,都是开发人员作为主导的阶段。比如手机产品开发,在进入市场之前都会有大量的工作要完成:外观设计、机构设计、样品制作、原料选择、制程选择、评估验证、设计验证、生产验证、可靠性测试等。根据华为产品的开发流程,在每一个阶段上都会设置相应的技术岗位,比如概念阶段就有需求分析工程师,开发和验证阶段就有通用软件工程师、高级软件测试工程师等等。

以软件工程师为例,一般情况下他们的工作职责有:

完成软件系统代码的实现,编写代码注释和开发文档。辅助进行系统的功能定义、程序设计。根据设计文档或需求说明完成代码编写、调试、测试和维护。分析并解决软件开发过程中的问题。协助测试工程师制订测试计划,定位发现的问题。配合项目经理完成相关任务目标。

在华为,软件工程师的岗位职责和岗位要求如下:

三、华为如何管理研发团队

1、技术干部体系

华为的研发部门拥有自己独立的人力资源部——技术干部部,从各业务部抽调干部担任。干部部专门研究研发体系下的人力资源的管理问题。华为研发为了加强干部部的工作,规定研发领导没有在干部部任过职,没有系统地管理过人力资源,不能再升职。

针对绩效管理,很多公司对于对于研发部的业绩评价都比较侧重于短期目标,但是对于涉及研发部门长期发展潜力的目标不够重视,这就导致了这些企业的研发部只重视短期“打粮”,不重视长期“种地”。而华为的绩效管理,强调的是结果导向、人才成长的绩效、中间过程的沟通和管理,而不仅仅是简单的绩效考核。

针对工程师团队普遍存在的沟通不畅的现象,华为是每天,每位工程师要针对当日工作情况做总结向直接上级提交;每月必须做一次部门经理与项目经理、项目经理与工程师之间有记录的双向沟通;针对月度的绩效考评,经理也要与工程师进行当面沟通。

2、对开发项目实行端到端的管理

在一些企业中,由于产品开发没有实施端到端的管理,出现了许多问题,如产品开发完成了要去销售了才发现注册工作没有做。华为引入的“端到端”提示研发团队,在做研发的时候,要从市场中来,最终通过项目活动满足市场需求,就是说,研发项目不仅仅是技术体系一个部门的工作,而且需要其他部门参与形成跨部门的团队才能完成产品开发目标,保证市场的需求。

为了完成最终的产品开发目标,,我们需要市场人员的参与、销售部门参与、注册部门参与、技术部门参与、制造部门参与等等,只有各个部门参与了,才是端到端的产品开发管理。为了实现端到端的目标,产品开发项目团队成员是跨功能部门组成的,项目经理是这个团队的领导。

3、建立跨部门的项目管理模式

华为公司建立了产品开发团队(PDT),由PDT经理、PDT成员、外围小组三个层次组成。PDT成员分别来自不同的功能部门,如研发、市场、财务、采购、用户服务、生产等部门,每个部门只有一个代表。PDT成员在LPDT(产品开发项目领导)下完成产品开发项目目标。在这种模式下,LPDT对团队成员具有考核的权力,在考核周期,各LPDT将核心组成员的考核意见汇总到职能部门经理处,由职能部门经理统一给出对项目成员的最终考核结果。

4、将研发项目按不同业务类型进行分类管理

华为公司将研发体系的项目重点分为产品预研、产品开发、技术预研、技术开发四类,见下图:

5、依靠过程审计保证项目过程

为保证研发项目结果的成功,华为公司引入了过程审计的概念,由PQA(产品质量保证)承担过程审计的任务。每个产品开发项目启动阶段,公司质量部会为项目指定一个PQA,以保证审计项目团队成员是否按照公司规定的流程实施项目。研发团队在执行流程的过程中接受PQA的审计,以保证流程得到有效执行。

6、培养项目经理

华为公司为培养项目经理,专门成立了项目管理能力建设组,制定了培养计划,并对项目经理的资格条件进行了规定。

关于项目经理认证,华为公司从知识、技能、行为和素质四个方面进行认证,并对项目经理认证规定了五个等级,其中从第二级开始规定资格认证的条件,有以下对应关系:

7、在研发项目中技术管理和项目管理分开

华为公司的研发项目管理,体现了技术线和管理线分开的思路,在项目团队中有两个非常重要的角色,一个是项目经理,另一个就是系统工程师。在研发项目中,项目经理更像是管理专家,协调各个部门与角色的关系,而系统工程师更像是技术专家,在预测需求、指导产品开发满足这些需求方面扮演重要的角色。

四、案例——华为的软件开发理念:敏捷

软件更像一个活着的植物,软件开发是自底向上逐步有序的生长过程,类似于植物自然生长。华为公司遵循着敏捷软件开发理念,即不断地进行迭代增量开发,最终交付符合客户价值的产品。华为的敏捷包含3个层次:分别是理念、优秀实践和具体应用。

随着移动化、云计算、大数据、物联网等业务不断发展,企业数字化转型势不可挡,但企业园区网络面临诸多挑战。比如接入终端增长网络规模增大,如何提升运营效率?如何实现园区安全防护?为此,华为的技术研发团队针对大中型园区推出敏捷园区网解决方案,为企业客户打造无线化、智能化、自动化的数字化园区网络。

在北京的城市公共交通发展中,随着城市规模和人口规模的增长,以及新型业务如运营调度、安全防范和乘客信息服务等系统建设的逐步开展,北京公交现有信息化基础设施环境和资源日渐不足,进而影响业务系统运行及运营管理效率。华为公司针对此问题,深入分析北京公交集团的情况,提出了一套分层分区、高度集成的公交集团调度指挥骨干网络承载解决方案。该方案采用分层分区的层次化设计理念,外联互联网、政务外网,内部覆盖公交集团、各分公司的生产办公网络,具备性能强大、可靠性高、安全性高、可演进等特点。方案解决了公交集团分支多、管理难的问题,提升了业务数据传输承载能力,保障了调度业务的安全性和可靠性。

华为的技术团队结合北京公交集团实际需求提出的敏捷网络解决方案,实现了一定的客户价值,即彻底提升了公交骨干网络性能,为各类信息系统稳定运行提供基础支撑和保障;通过技术的运用,提高了公交运营管理水平和运转效率,降低了司售人员及调度员的劳动强度。

五、研发岗位应具备哪些能力

下图是华为员工的能力素质模型,根据0、1、2、3划分了四个等级:

优秀的软件研发人员,除了要具备以上基本能力外,还需要以下几个核心能力:

1、掌握必备的专业技能

研发是一项技术性很强的工作,以至于你要学习很多东西才能做好这份工作,研发人员要掌握的技能有:至少掌握一种编程语言、如何构造代码、面向对象的设计、算法和数据结构、开发平台及相关技术、框架或堆栈、基础数据库知识、源代码控制、构建和部署、测试、调试等等。

2、文档习惯

良好的文档是正规研发流程中非常重要的环节,作为研发者,30%的工作时间写技术文档是很正常的。而作为高级研发者和系统分析员,这个比例还要高很多。缺乏文档,在未来的查错、升级以及模块的复用时就会遇到很大的麻烦。

3、需求理解与分析能力

对于研发工程师来讲,他们需要理解一个模块的需求,理解需求就可以完成合格的代码,但是对于研发项目的组织和管理者,他们不但要理解客户需求,更多时候还要制定一些需求。

4、项目设计方法和流程处理能力

研发工程师必须掌握不少于两到三种的项目设计方法,并能够根据项目需求和资源搭配来选择合适的设计方法进行项目的整体设计。设计方法上选择不当,就会耽误研发周期,浪费研发资源,甚至影响研发效果。一个开发设计者还需要把很多功夫用在流程图的设计和处理上。

5、复用性和模块化思维能力

复用性设计、模块化思维就是要程序员在完成任何一个功能模块或函数的时候,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,就会有更多时间和精力投入到创新的代码工作中去。

6、整体项目评估能力

作为系统设计人员,必须能够从全局出发,对项目又整体的清醒认识,比如公司的资源配置是否合理和到位,比如工程进度安排是否能最大化体现效率又不至于无法按期完成。评估项目整体和各个模块的工作量,评估项目所需的资源,评估项目可能遇到的困难,都需要大量的经验累积。

7、团队组织管理能力

完成一个项目工程,需要团队的齐心协力,一些技术性的指标和因素如下:

(1)工作的量化

没有量化就很难做到合适的绩效考核,而程序量化又不是简单的代码行数可以计算的,因此要求技术管理人员需要能真正评估一个模块的复杂性和工作量。

(2)对团队协作模式的调整

一个优秀的软件开发工程师应该能够根据程序员之间的能力水平差距,以及根据项目研发的需求,选择合适的组队方式,并能将责权和成员的工作任务紧密结合,这样才能最大发挥组队的效率。

六、软件开发师的书单和常用工具

1、软件开发工程师的书单:

(1)需求分析:

《需求分析与系统设计》、《有效需求分析》、《掌握需求过程》、《实战需求分析》

(2)程序设计:

基础理论:《编码:隐匿在计算机软硬件背后的语言》编程语言:《C和指针》、《C++程序设计原理与实践》、《Java核心技术(第9版)》、《精通C#(第6版)》、《JavaScriptDOM编程艺术(第2版)》、《Python基础教程(第二版)》、《编程语言实现模式》、《程序设计方法》、《算法(第4版)》、《调试九法——软硬件错误的排查之道》

(3)软件开发:

《程序设计实践》、《HeadFirst设计模式》、《重构》、《HowtoBreakSoftware》、《极客与团队》、《程序员修炼之道:从小工到专家》、《奇思妙想:15位计算机天才及其重大发现》、《写给大家看的设计书》、《通用设计法则》

(4)思想与领导力:

《卓有成效的管理者》、《你的灯还亮着吗》、《成为技术领导者》、《程序员职业素养》

2、产品开发常用工具

1
查看完整版本: 华为的研发团队是什么样子的