涉及对软件研发管理体系的一些概念认知、什么样的软件研发管理体系适合我们的发展以及构建我们的软件研发管理体系应包含哪些内容。结合Zui近一段时间的思考,今天和各位朋友探讨一下软件研发管理体系建设这个话题。今天要谈的这个话题主要包括以下几点:1、研发体系框架2、人员组织能力 3、项目管理能力 4、技术研发能力 5、持续交付能力 6、运维服务能力 7、安全可控能力 8、资源建设能力
在正式探讨该话题之前,简要谈谈Zui近的一些思考和想法,首要一点是社会的发展、业务的变化、技术的进步促进了研发模式的转变,也促进了研发内容的转变,例如从以往的单体架构向云化架构演变、从以往的PC端应用向多终端应用演变、从以往的传统应用向智能化应用演变,另一方面项目交付的发展方向也是发生了重大转变,从以前的注重过程标准、流程可控、需求明确和面面俱到向关注交付价值、交付效率、安全保密和过程可视的方向转变。正是基于对上述这些认知和理解,让我对软件研发管理体系的建设有了一些新的思考,为此和大家一起分享交流。
一、研发体系框架
在个人看来,研发体系主要从标准方法体系、技术能力、组织架构、交付模式、服务客户等方面去分解考虑,并在中间通过人员组织能力、项目管理能力、技术研发能力、持续交付能力、运维服务能力、安全可控能力和资源建设能力等贯穿。研发体系框架示意如下图所示:
二、人员组织能力
在人员组织能力方面,需要建立组织岗位体系框架,包括岗位标准库、培训规范、岗位胜任能力标准、岗位认证流程、岗位等级认证、岗位发展通道等。在岗位体系建设方面,可以考虑按职能类(如部门总经理、部门副总经理、行政助理等)、项目类(如项目总监、gaoji项目经理、项目经理、项目工程师等)、专业类(如技术总监、技术经理、开发经理、系统架构师、开发工程师、测试工程师、实施工程师等)的方式进行分类设置。明确相应的岗位发展通道。
关于组织岗位体系框架的建立,通常需要在公司层面来统筹考虑,需要和HR部门等诸多部门进行协同落实。还需要建立绩效考核评价方法,针对研发人员的绩效考核评价方法在会对各岗位人员个人技能、综合素质及工作任务进行持续跟踪,并根据人员考核计划开展绩效面谈辅导,帮助全员改进工作方法、提升工作技能和工作质效。培训作为人员组织能力的有机组成部分,需要强化培训和知识共享,通过建立内部培训体系,内部培训与外部培训相结合,多样化培训形式,将技术认证、培训积分等纳入技术序列晋升考评条件,强调培训的结果。
三、项目管理能力
项目管理能力方面,需要在标准化项目管理与敏捷迭代之间融合升华并逐步形成满足未来发展需要的敏捷项目管理能力,促进管理与工程维度相结合,应用zuijia实践,从而快速、高质量交付可工作的软件。除了项目管理体系方面的内容之外,还需要关注设计评审规范、应用开发规范、质量管理、配置管理等方面的内容。对于涉及评审规范,需要针对需求、概要设计、数据库设计、详细设计、原型设计、界面设计等制定相应的评审规范,要对测试计划、测试用例等进行评审,还需要有代码评审和发布评审等方面的规范约束。对于应用开发规范,可以重点关注架构规范、设计规范、UI规范、编码规范、测试规范等。其中,架构规范方面是通过规范架构设计,来管控软件的技术合规性;对设计进行规范,包括如统一文档格式规范、功能设计要素、DFX设计规范、数据库设计规范等;UI规范是为避免使用者对不同系统进行多次学习、操作思维不连贯,从而提升操作效率;代码规范是为了代码能被更好的维护、扩展和更高的质量。包括代码编写规范和代码质量管理规范;测试规范则是规范测试过程,包括测试步骤、测试方法、测试工具、用例规范等。通过对测试进行合规性管控,提高产品质量。
四、技术研发能力
技术研发能力主要从应用开发能力、平台研发能力和技术创新能力三个维度考虑。
应用开发能力着重于考虑对各类业务应用的前后端开发支撑能力;平台研发能力着重于考虑对基础平台、公共组件、套件、工具等的研发提炼并让软件开发逐步具备搭积木能力;技术创新能力着重于紧跟前沿技术,特别是云大移物智方面的相关新技术的研发突破,以便于更好地为业务服务。在技术研发方面,需要持续增强基础开发能力,并在平台化、产品化方面深入研发,拓展云计算、物联网、移动互联网、大数据、人工智能等方面的技术能力。
五、持续交付能力
在持续交付能力方面,不同阶段会有不同的做法。个人认为,在构建持续交付体系框架的初期,可以考虑从两个方面出发,一是统一软件开发平台,二是推行CI/CD。统一软件开发平台,主要目标是把基础服务平台化、软件架构标准化,从而进行快速的开发和迭代,提高整个应用开发域的自主可控能力。
推行CI/CD方面,主要是通过搭建自动化工具平台,构建持续交付流水线,实现端到端无缝集成。这里面可快速运用的实践包括代码构建自动化、静态代码扫描自动化、API接口测试自动化等。有关这方面的一些实践会在后续计划分享的敏捷和DevOps转型实践的有关文章中探讨。
六、运维服务能力
在运维服务方面,有两方面的考虑。是对于软件开发项目的生产运维,这方面可能会涉及到持续部署等方面的内容,更多会牵涉到DevOps中有关Ops的部分内容。一方面是针对常规性的IT运维服务及管理,这方面需要围绕提升IT服务交付质量打造以流程、规范制度、技术人才和工具共同支撑的运维服务管理体系。
七、安全可控能力
在安全可控方面,着重于将安全问题摆在凸显问题。这里面既有应用安全,也有过程安全,也需要考虑本质安全。应用层安全包括应用安全、内容安全、工控安全等。过程安全包括物理层安全、设备层安全和数据层安全,其中设备层安全包括物理安全、环境安全、设备安全等,系统层安全包括网络安全、软件安全等,数据层安全包括数据安全、身份安全、隐私保护等。
八、资源建设能力
资源建设能力方面着重于持续积累组织过程资产,包括持续积累在研发过程中所获得的经验和教训,其中包含显性知识(文字档案),隐性知识(员工脑子中的思想、经验)。组织资产积累除了显性知识,更重要的是把隐性知识显性化。
还需要持续构建知识库,推行各项制度、标准、规范、流程。