传统的技术经理,按我理解有如下职责:
- 计划。一般公司都会要求技术经理之类的制定开发计划。我就曾经做过不少,甚为痛苦。很多计划完全就是拍脑袋制定,基本上缺乏可执行性和灵活性。对我来说,从未有过按计划执行的项目。
- 分配任务。根据自己的喜好和对员工的了解,将开发计划分配给Team成员。
- 检查任务。有些Team里面,技术经理是唯一代码Review者,所有人代码都提给他?你看得过来么?
- 考核。按照HR的要求,一段时间给员工打分。
- 招聘。
在敏捷组织中,传统技术经理的一些职责消失了。代替为以下更职责:
- 培养。从技术上培养每个员工,让每个人都能达到自己的最佳发挥,让每个人发挥出自己的潜能。
- 规范。比如采用TDD、BDD开发,如何使用版本库,如何代码Review。
- 清障。把影响团队开发的不良条件清理掉。比如工作环境,设备,更好的CD/CI,让团队能发挥出最大潜能。
而传统的计划、分配任务、检查任务从职责中消失。至于考核,我是不太喜欢的,至少目前的KPI考核之类的,我看不到任何有用之处。对于OKR考核,我没有实践过,不清楚是否有效。