软件研发项目的效能提升

2019-01-27 12:36龚永峰
中小企业管理与科技 2019年25期
关键词:测试人员效能环节

龚永峰

(浩鲸云计算科技股份有限公司,南京211135)

1 引言

很多软件企业随着业务发展,出现了诸多研发问题,如产品交付延期,研发加班,产品故障率高,测试压力大,客户满意度低。这些问题更多是提升研发效能不得当所致。软件研发是一个复杂的系统工程,效能提高也就需要系统化端到端地思考,需要从多方面入手。研发流程优化,做好每个环节,做好环节与环节的衔接,助力提效。在敏捷和精益的推动下,很多软件研发项目只是望文生义,只学到了“速度”,提出了快速迭代,快速交付,忽略了做好每个环节才是提效的根本。

2 需求管理的提效

首先研发的源头:需求管理的提效。需求的准确性是至关重要的,或者说需求的主要部分必须是正确的。不能因为任务紧急、抢占市场需要,稀里糊涂地启动研发,将来再不断去废弃已经完成的工作。这种情况从研发项目的过程数据看是高效的,因为工作时间很长,代码行数、测试用例足够多。但是从最终目标,项目价值来看,做得都是无用功,这样效能也就无从谈起了。不仅仅是需求,正确做好软件研发的每个环节的事情,就是一种提效。

3 环节信息准确传递

环节信息的准确传递,减少上下游沟通,减少信息传递的流失,会是明显的提效。信息传递的环节越多丢失的也就越多。一个项目的研发往往会经过需求调研,需求分析、设计、编码、测试、交付等众多环节。降低这么多环节的信息丢失方法有两种:一种是减少环节,通过人员复用的方式隐形减少环节,如需求调研和需求分析同一批人做,减少这两个环节的需求传递。其他环节也可以采用类似手段和方法。另一种方式是下游环节提前介入上游环节的活动,如需求分析阶段,系统架构师、编码工程师、测试工程师、交付工程师一起和需求分析师做需求分析,避免串行需求传递,同时也可以提前发现问题,减少返工,提升每个环节的输出质量,就是一种有效的提效[1]。

4 提升人员能力是提效的基础

在软件研发项目中,人员的能力的重要性基本都是得到大家认可的,但是很多时候只是部分岗位的人员被要求优秀的人员担当,如设计岗位的系统架构师是公认的重要岗位,而普通的编码人员、测试人员却被忽视。

其实在整个研发流程中,每个岗位的人员都很重要,不一定都需要最优秀的,但是一定是最合适的人员,人员的基本素质不能降低。另外,每个岗位的人才不能局限于专业能力,更应该重视综合能力。如编码工程师,如果能够有一定的系统架构能力,在设计阶段就能发现方案是否具备落地的可行性,提升设计方案的质量。如果测试人员有需求分析的能力,在需求评审阶段就能更好地完善需求。

人员的综合能力高,在必要时也可以弥补短时间部分岗位人员少量紧缺的情况,更好地提高人员利用率[2]。当然这只是一种有效的补充,而不是真正的替代,如果走极端方式,所有岗位的人员都要求全能,最终全部混用,这不但不能有效提高效能,只会让研发过程混乱,产品质量不可控,毕竟专业的人应该做专业的事情。所有全能型人才一定是精于某个方面,如果长时间、大比例使用非专业人员做专业的事情,非但不能提高人员利用率、效率,反而会让产品质量更低,交付更艰难。而且员工的专业技能长期得不到重用,也会导致人员流失。

根据多个大型项目的使用经验来看,具备岗位基本技能的人员混用比例应该控制在10%~30%,时间在1~3 个月为宜,能够很好地解决岗位和技能之间的短时间缺口,岗位的新鲜感也会让员工的工作热情和积极性更高。

5 软件研发工具是有效的提效手段

很多企业为了节约成本,软件研发的管理还停留在“Excel+邮件”的方式上,项目过程中遇到问题,只能花费大量的时间在邮件中检索,几个项目做完了,庞大的项目数据散落在各处,回溯总结项目只流于形式。没有客观的数据来纵向总结项目,也没办法横向对比多个项目。有效的项目管理工具会成为项目提效的好帮手。首先,需求管理工具,如Jira,可以将组织和软件产品各个模块管理起来,可以将需求、功能点、任务,测试用例、故障相关联,将需求、设计、开发、测试等各个环节打通,可以让整个研发流程更加顺畅。其次,自动化测试工具的使用是研发提效的一个利刃。自动化测试不仅可以降低人工测试的随意性,也不会受限于测试人员能力的差异,更重要的是可以在一个研发周期内对每个迭代版本做重复的回归测试,保证已经开发完成的功能不会在后继版本中被破坏[3]。最后,持续构建平台是软件研发流程中一个非常重要的工具,可以轻松实现多模块,多团队研发的协作,解决手工集成、测试、部署的重复性劳动。可以更早地发现问题,降低解决问题的成本,减少手工错误的概率,提高完整产品构建的频率。

我们在很多项目中使用了持续构建平台,加入了静态代码的检查,脚本的编译执行、代码编译、单元测试、系统部署、自动化用例执行。采用有变更即运行,1 小时解决问题的原则,真正能做到随时发布版本的原则,大大加快了产品迭代速度,解决问题的速度,提供版本质量和客户满意度。

6 结语

上述的这些方法、工具是比较通用的软件研发提效的方法和手段,如果结合各种不同项目的特点,针对具体研发场景,还可以挖掘出更贴合项目的提效手段,如技术手段的提效,针对一个大型项目做分中心、微服务化,前后端分离,降低项目代码管理的复杂度,降低系统的整体耦合度,提高研发的并行度等。愿意在研发过程中多观察,多思考,发现障碍点,积极尝试,研发效能也会不断提高。

软件研发提效是一个永恒的话题,每一个研发项目都希望能够提高效能,为组织创造出更高的价值,各个研发项目也都会有一些独特之处,提效的方法也会有所不同。根据项目经验来看,都可以归结为人、工具、流程这三方面,只要能够有效利用好这三方面,做好彼此的平衡,能够很好地提高软件研发的效能。如果顾此失彼,只是追求某个点,某一方面,而忽略之间的联系和配合,最终的效果也将会大打折扣。

猜你喜欢
测试人员效能环节
迁移探究 发挥效能
必要的环节要写清
充分激发“以工代赈”的最大效能
论职务犯罪侦查中测谎技术的应用与完善*
桥式起重机使用环节重大危险源辨识研究
在农民需求迫切的环节上『深耕』
浅析软件测试中的心理学应用
绿植防辐射只是个传说,是真的吗?
唐代前后期交通运输效能对比分析
新形势下如何发挥专卖内管委派制的作用和效能