软件研发管理实践小结

作者:陆金龙    发表时间:2023-07-01 06:11   

关键词:  

做了4到5年的软件研发管理了,团队规模都在5-10人,对一些管理要素做个小结。

1.研发岗位设置

      明确研发岗位的岗位设置:一般分项目、产品、开发、测试等几个小组,规模大一点的团队每个组单独设置需要的各岗位,规模小的团队则往往采取2个或多个岗位由同一人兼任的方式,节约人力成本和沟通成本。

1.1 完整的岗位设置

      完整的岗位设置一般如下:

      项目组:设置项目经理岗位。

      产品组:设置产品经理、需求分析师、UI设计师岗位。

      开发组:设置技术经理、系统设计师(兼系统架构设计)、后端开发工程师(兼数据库工程师)、前端开发工程师、移动开发工程师。

      测试组:设置测试经理、测试工程师岗位。

      实际执行时出于成本和效率考虑,有些岗位不会招聘专人,其工作内容由其他岗位人员兼任。因此没有专人任职的岗位仍然需要明确岗位职责和任职要求,作为兼任人员工作开展和考核的参照。

1.2 精简的岗位设置

      小规模团队的岗位职责和任职要求仍按前述岗位设置进行编制。实际岗位设置时进行岗位精简和岗位职责调整。建议如下:

      对于人数5-6人左右的精简团队,通常只设置团队负责人、需求分析师、UI设计师、后端开发工程师、前端开发工程师、测试工程师。如果要进一步精简,测试工程师可由需求分析师兼任,UI设计师也可任用外部兼职人员,但保留该岗位对产品UI设计的质量更有保障。

      项目经理可由团队负责人或合适的其他岗位人员兼任。产品经理的工作可进行拆分,由团队负责人、需求分析师、UI设计师3个岗位人员协同负责。技术经理可根据不同项目情况由团队负责人、后端开发工程师或前端开发工程师兼任。移动开发工程师可由有相应技术和经验的开发人员兼任。

      对研发涉及的相关岗位编制岗位说明,主要包括岗位职责和任职要求,既作为人资发布招聘信息用,也作为团队组建、内部管理以及考核的基本依据。

      岗位的任职要求特别是技术经验要求,需要随着主流技术的最新发展趋势进行更新。

1.3 岗位职级划分

      人员职级划分一般涉及初级、中级、中高级、高级。

      初级为执行层,需要指导和监督,可作为新进人员过渡阶段,初级人员难以独立完成较复杂的任务,还会消耗带导人员的精力。因此小规模团队不适合保留长期停留在初级的人员,团队成员最好都是能独当一面的骨干,至少得是精兵。

      中级为主力层,清楚自己的岗位职责和要求,工作积极主动。能独立完成较复杂的任务,能够发现并解决问题。能力和技术上既有一定的积累,也有一些短板和瓶颈,有人指导和协助时,工作能做得比较好。

      中高级为骨干层,能独当一面,清楚自己的岗位职责和要求,且经验相对丰富、能力强,对解决复杂问题有自己的见解和创新的方案。既能够指导和帮助初级、中级人员,也能协助推进研发中的技术攻关或复杂问题的方案制定,分担经理的任务和压力。

      高级为团队领导或领导小组核心成员,在专业领域有深厚的业务和技术积累,对工作熟练而常常有创新的办法,由很强分析和解决问题的能力。在公司层面,主动关注公司的发展,参与公司层面重要的决策会议、承担公司层面相关任务,协助其他部门工作,参与部门相关策略的制定。在研发部门能独立领导项目,协调跨部门资源,争取公司领导的支持;能够对团队成员的工作进行评价、指导、监督和纠正,能够帮助团队成员解决工作中的难点或提供有效的建议、方案。

2.研发管理规范

2.1 研发过程管理规范

      参照的相关标准 CMMI3、ISO9001、ISO27001,制定研发活动流程,主要包括需求调研、立项可行性分析、项目立项会议、项目启动、需求开发、系统设计与UI设计、编码、测试、集成、项目验收以及相关环节的评审会议等。又可分产品、研发、项目管理不同维度的过程管理。

      项目过程管理遵循软件工程的项目周期,重要的环节包括:

  • 立项管理:立项建议、立项调查、可行性分析、立项评审;
  • 项目规划:项目估计(规模、工作量、成本),项目计划,计划变更管理;
  • 项目监控:偏差和进度;
  • 需求开发:需求跟踪和变更控制,用于需求调查,产品需求定义;
  • 技术预研:技术预研计划、实施、预研报告;
  • 系统设计:概要设计、用户界面设计、数据库设计、详细设计;
  • 实现与测试:编程、单元测试、集成测试、系统测试(功能、健壮性、性能、安全、UI);
  • 配置管理:文档、代码的版本控制与管理;
  • 交付:测试报告、部署、试运行、试运行报告;
  • 鉴定验收:验收计划、初验申请、终验申请、初验证书、终验证书;
  • 培训:系统应用培训、系统管理培训,用户手册(功能、性能、安装、初始化、操作)。

     更多过程管理细节可参考 卖糖果的小傻嘟的简书文章: 我曾经经历的CMMI3认证之关于软件开发人员的访谈 。

     涉及的文档有立项可行性分析报告《项目立项书项目任务书项目计划《用户需求说明书》产品需求规格说明书《概要设计说明书》《详细设计说明书》《数据库设计说明书》《测试用例》、《测试计划》《测试报告》《项目试运行说明书》《用户使用说明书》、《项目验收报告》,以及需求、设计相关的评审表。

2.2 研发技术规范

      研发技术规范包括已文档的形式描述,包括:

(1)《研发过程文档模板》,参考CMMI3简化。

(2)《代码版本管理规范》,使用代码版本管理软件如gitlab,管理项目分组和项目、为项目设置分支、设置不同用户的提交、推送、合并分支请求、合并分支权限。规定代码提交、推送、拉取的要求,建立代码审查、代码互审机制。

(3)《Java后端项目开发规范》、《Python后端项目开发规范》,对项目构建工具、项目目录文件结构、项目框架选型等进行规定,对编码风格、编码规范进行描述。

(4)《前端项目开发规范》,对项目构建工具、项目目录文件结构、项目框架选型等进行规定。对编码风格、编码规范进行描述。

(5)《运维管理规范》,系统的账号管理、系统发布审核机制、备份方案等。

(6)其他,研发相关约束。

2.2 信息安全管理规范

   参照ISO27001相关规定进行管理。

3.研发管理工具

项目管理:Jira、钉钉项目管理工具。

共享文档:Wiki、钉钉共享文档。

代码版本管理:Gitlab。

自动部署工具:Jenkins。

运行系统隔离工具:容器Docker。