在研发项目的进度管理中,有必要对每个研发任务的性质做一个界定,即该任务属于技术开发还是产品开发。
所谓的技术开发,指的是那些风险较大的开发任务,这些风险包括所选技术路线(如硬件、平台等)本身的风险,也包括研发工程师能力不足的风险(如新技术学习能力、分析和解决复杂问题的能力等)。常见的技术开发任务有:验证新的硬件平台、操作系统、开发核心算法、研究新的技术平台等。
和技术开发相反,产品开发指的是那些没有风险的开发任务,用通俗点的话来说,就是:“都是工作量问题,没啥难度”。常见的产品开发任务有:一般的界面开发、某些应用程序开发、测试程序编写等。
从进度管理的角度看,产品开发任务是完全可以做到、也应当做到进度可控的,即开发工程师对任务工时的预估应当和实际开发工时大致相当。相对而言,技术开发的不确定因素更多,因此项目进度规划要做得很精确难度也更大,甚至有时候某些任务是完全无法预估的。比如某些算法的开发,算法工程师可能努力很久也无法达到预期的准确率和性能指标,再比如验证新的硬件平台,也许经过验证发现硬件平台本身存在某些致命缺陷而导致其永远无法满足某些产品规格要求,等等。对于技术开发的进度管理,我认为应当比产品开发做的更细致,花费的精力更多,其具体的管理手段和方法足可以另外写一篇文章了。
明确了技术开发和产品开发的概念,则很多研发相关的课题都可以更进一步的进行讨论了。
1 工程师经验评价
所谓的研发经验,我认为就是胜任更多产品开发任务的能力。我们评价一个工程师经验丰富,也就是意味着项目开发中很多别人眼中的技术开发任务,在他看来是产品开发任务。按照这个标准,如果一名工程师自认自己在某个领域经验丰富的话,则他必须具备准确的开发工作量预估能力和在规划时间内完成任务的能力。
2 工程师能力评价
研发能力我认为指的是两方面的能力,一是研究能力,即独立完成技术开发任务的能力,二是开发能力,即比其他人更快完成产品开发任务的能力。这两种能力,我更看中的是研究能力,当然,这两者本身并不冲突,甚至多数情况下开发能力强的工程师,研究能力也非常强,反之亦然。
3 项目管理几个相关原则
A如何判定子任务的性质是项目开发难度评估的关键
B技术开发性质的任务优先级最高,应当尽可能早的展开
C技术开发任务因为其对工程师的主观能动性、创造性更高,所以应当倾向于选择奖励性质的管理工具,即在任务成果通过验收后,应当采取奖金、通报表扬、荣誉等方式进行奖励
D产品开发任务的管理,倾向于用罚的管理工具进行管理,即对未能承诺完成任务的工程师,应当通过约谈、分组讨论等方式帮忙分析问题和适度表达管理者对工程师的不满
E能力强的工程师优先承担技术开发任务
F条件允许情况下给项目开发团队配备一名经验丰富的总工
4 关于总工的几点建议
绝大多数项目团队中开发工程师的背景和经验都是不同的,这就是说,对于同一个任务,有些工程师觉得是技术开发,而另一些则觉得是产品开发,但是,对于项目团队而言,只要某一任务有一个工程师觉得该任务是产品开发任务,则该任务被视作产品开发任务。从这个角度看,一个经验丰富的总工程师对项目团队的意义是非常重大的。
总工应当重点关注那些研发工程师感觉是技术开发性质的任务,可能的情况下,在任务启动前要进行相关的技术培训和工作详细规划,任务开发过程中应当对重点难点亲自进行指导。