研发规范化的适度性实践(一)
目前很多(80%以上)中小型的软件企业,已经逐步意识到研发团队管理的重要性,其中隐含了对于研发过程规范化的迫切需要。对于初创团队和已经成型的企业,实践方法各有特点,本文主要结合初创团队情况讨论研发规范化的适度性实践方法。
对于初创的研发团队来说,研发规范化的建立比较容易,操作起来也比较简洁易行,主要包括三方面的工作,技术规划、工作规范、日常跟进。
技术规划的意义在于对参与项目开发的工程师在技术上建立保障手段,确保团队都按照同样的要求工作。技术规划主要指要做的东西(一般是一套软件,例如一个产品或一个项目)进行适度的划分。这个环节一定要做,适度是关键,可能只需要一天完成,也可能需要几周甚至更长,根据具体产品、项目、市场、客户等方面的需求。例如,一个初创团队接了一个120万的软件项目,但是必须在3个月内上线。作为初创团队的技术负责人,首先要做的就是镇定,无论3个月这个时间点是否可行,根据软件工程的特点,按照需求(包括分析)、实现、测试、上线四个主要阶段进行估算所需要的人力。人力需求的特点是开始少而精,主要包括需求调研和技术体系规划,需求调研在本文中就不再多谈,主要说说技术规划。针对本案例,3个月上线120万这个规模的软件项目,一般的工作量会在90~150个人月范围内,甚至更多,但是,并不意味着投入100人,就能1个月或者1个半月就能完成。另一个需要团队特别注意的就是软件维护和软件复制,如果3个月项目造成延期或者大量维护工作,甚至无法复制,可能会使团队在后续项目中陷入非常被动的局面。即使这个项目完成,也给后续工作留下了潜在的障碍。对于初创团队来说,第1个项目往往是亏本赚吆喝,那么,一定是为了能够积累技术、产品、团队,因此,在项目开始之初,在技术方面,需要对所做工作进行初步的规划和定义,以Web项目为例,最简单的体系结构无非是使用MVC框架去开发,初创团队一般会积累一些最基础的应用框架,例如用户、权限等等,那么技术规划包括什么?简单的说,假设待开发功能明确,能够20个人参与开发,其中有10个人是外包,能够基于技术规划的要求和需求说明,并行完成开发工作,在完成后能够集成为一套完整的软件。技术规划需要考虑的是前后台数据接口规范、前端页面开发规则(页头、页尾等)、公用的JS库、页面组件(例如日历、对话框、分页列表、图表工具等)、哪些需要用配置文件定义、哪些需要用数据库定义、样式书写要求等等。对于一个精通Web应用开发的工程师(一般初创团队至少有一个),考虑到已有的技术积累,一般1~2天能够完成上述工作。在这个过程中,适度是非常重要的原则,避免过度而成为体系结构设计,也避免无效规划,使得参与开发的工程师各自为政。
上述内容“技术规划”是从纯技术角度对参与项目的工程师之间建立统一的技术性要求,工作规范是从管理的角度要求参与者遵从共同的规则,确保团队工作保持一致步调一致。同样,工作规范也须采用适度原则,同样以上述案例为参考,最基本的工作规范包括明确默认工作状态、保持邮件畅通、代码定期提交(例如每日)、每个人的工作任务从redmine中获取、每天或发生重要变化时更新redmine、所有工作依据文档而不是语言、每人负责保持自己名下任务的鲜活性(保持及时更新,避免僵尸任务)等。其中团队整体就默认工作状态达成一致非常重要,即如果每个人没有提出异议,则表示所负责的任务能够确保按照计划保证质量完成。
技术规划和工作规范都是“要求”性的内容,无法确保所有人遵从,那么第三点“工作跟进”就非常重要,以本文的案例为参考,需要每日跟踪工作进度,每周进行工作任务的总结,必要时调度外部资源或外包工作。一般可通过简短的会议和相关人进行工作跟踪,会议方式是按照参会者的任务列表,按照优先级,逐一审阅工作进展情况,询问任务是否正常进行?是否有问题?如果有,是否需要支持?需要注意的是,在这种会议上尽量避免长时间讨论具体问题,重要的是识别是否有影响进度的风险,如果有,是什么问题,至于如何解决,可在会后明确解决方案后再处理。
上述是对于初创团队保持研发适度规范的主要内容,与此相关的还有很多细节内容,例如需求调研、技术文档编写、代码评审、代码库的建立和维护、代码提交与控制、高强度工作下的沟通方法、项目级的过程资产积累、软件版本的管理、测试、软件发布,以及后续的运行维护等等。
研发规范化过程需要把握一个适度原则,仅仅有制度、工具、通过某认证无法解决实际问题。特别对于已经形成特定风格的开发团队和企业,经过多年或者多个项目的积累,形成了自己团队特定的开发风格和工作习惯,进行研发规范化是一个具有挑战性的过程,更应该遵循循序渐进、重点问题优先解决的方法。