研发工作实际上不仅仅包含技术开发工作,其范围涵盖新产品的全生命周期,以从产品创意的产生、产品概念形成、产品市场研究、产品设计、产品实现、产品开发、产品中试、产品发布等整个过程。套用项目管理铁三角的说法,研发管理三大重点则应该是效率、质量和成本。而团队建设、绩效管理、风险控制、知识管理、流程设计、项目管理等等可以认为是辅助手段或者是包含在进度、质量和成本控制中的内容。
在研发体系结构设计和各种管理理论基础之上,借助信息平台对研发过程中进行的团队建设、流程设计、绩效管理、风险管理、成本管理、项目管理和知识管理等的一系列协调活动。
成本控制上,在人力资源给定的情况下,研发开销是基本固定的。对于研发成本的控制,更多的是资源是否用在刀刃上,是否做对了项目,研究对了课题,这方面的控制主要体现在公司的战略规划、产品规划上面,做错了产品、方向,往往是浪费最大的。规划任何一个新产品都需要做到“大胆设想、小心求证、重质量轻数量”,严格立项过程。而且就研发来说,技术积累很重要,过去的成功经验未必能够复制到新的领域,因而进入任何一个新的领域,都需要慎之又慎。这部分的工作,大部分都产生于公司决策层面和产品规划层面,对于研发部门来说能做的比较少。因而研发管理的重点还是在质量上。
研发质量很多时候,会被理解为QA(Quality Assurance)和QC(Quality Control),往往归宿于质量管理部门。QC往往关注的是产品而非体系,在软件研发领域对应的就是测试;而QA则建立体系并确保体系按要求运作,涉及到过程内容(流程设计)。QC是通过对质量的结果进行检测、鉴定,防止劣质产品的发布;QA对研发是否符合过程进行控制。通过QA/QC两个环节的配合,确实能够起到一定的质量控制作用,但质量管理单单靠QA和QC是远远不够的,会存在很多问题与漏洞,更重要的是技术经理们在设计、开发环节中进行控制。
首先,在微观问题上,QA人员由于能力的限制对研发过程中细节的把握不可能像开发经理一样到位,这就注定了对于流程是否符合的控制,往往是仅仅解决了要做什么的问题,而无法解决怎么做,做得怎样的问题。“怎么做,做得怎样”,这往往跟执行者的能力相关,仅仅靠流程、控制点是难以达到的。而且过程中的细节问题,很难去全部规范完备、做到滴水不漏,即使真的做到滴水不漏,也必然使得过程过于庞大而导致效率低下。就如同有些SOP去规范员工如何写邮件一样,那应该是小学语文老师的工作,不是QA所要关注的点,也不具有可操作性。
解决怎么做,做得怎样的问题则需要技术经理去控制,而且在控制过程中还需要注意方式方法。例如,开发过程中要求规范编码,包括规范编码风格、采取统一的变量命名方式、必要的注释、抽取公用函数解决重用问题、代码不合理情况下进行重构、设计不足情况下优化设计等等。而这些往往就是QA们难以做到,也非QA人员能力范围之内,即使做了也难以控制好的,这就需要技术经理们的去进行管理、同时灵活把握方式方法。
就像王传福所说技术人员往往不善于交际、脾气怪一样,程序员们大部分也都这样,容不得其他人指手画脚,技术经理们当面去指出程序员那里代码写得有问题,很多时候会引来反感。一个相对好操作的方法是:由技术经理或者高级程序员,定期不定期,举行代码分析会,从现有程序中抽取带有典型问题的代码,逐一分析,逐步灌输编码的规则、理念,讲述过程中对事