微信扫描登录
或者
请输入您的邮件地址来登录或者创建帐号
提 交取 消
GITBOOK.CN需要您的浏览器打开cookies设置以支持登录功能

如何做好研发管理:老曹的管人理事经
作者:Chat 实录

2017年1月10日周二晚8点30分,“中生代技术”社区老曹带来了主题为“老曹眼中的研发管理二三事”的交流。以下是主持人赫阳整理的问题精华,记录了老曹和读者间问答的精彩片段。


问:请问在平衡管理者自身开发任务和团队内外其它事务的时间和流程上的一些问题

答:这是基层管理者的一个困境,既要协调团队,又要持刀上阵。在时间安排上,一线员工一般是8小时4个task, 基层管理者的task 一般是2~3个,有1/4~1/3 的时间用到团队内外协调沟通上。就敏捷流程而言,做好那4个会(规划,立会,演示,回顾),对于团队外的非紧急问题或者非规划讨论而言,可以回答半小时之后再讨论处理,这样既可以让问题发起者将问题梳理明晰,又可以让自己处理好手头的工作,尤其是在coding的阶段。


问:着重于论道,论术不是很多,想请问在研发管理中的kpi作者是怎么看的?如何做到正向的激励,又不会慢慢使团体过于功利化呢?

答: 研发是一件创造性活动,我讨厌KPI,提倡团队的结果导向和过程敏捷。

激励分为物质激励和非物质激励两种, 基层管理者很难实现物质激励(例如发奖金),需要相关激励机制的配合。对于非物质激励,关键是价值观认同,说白了就是洗脑。另外,技术提升也是激励的一种形态,让团队真的有成就感。


问:工作中会碰到两种成员:一种聪明不是很服管,态度一般,但完成效率很高,能单独完成复杂事物,另一种是不聪明但服管,态度很认真,但效率不是很高,经常需要指导。请问这两种成员应该怎么培养?怎么管理?

答:对于聪明的员工,给予认可,并提供更多具有挑战性的工作,包括技术的预研和分享。

对于所谓服管的员工,关键在于质量和效率的匹配程度,衡量一下他/她对团队的价值贡献,如果ABC中的C即成长空间有限的话,将被列入新陈代谢的名单,小白兔对团队而言是危险的。


问:产品作为项目经理如何lead技术?

答:产品经理 一般作为product owner, 而所谓的项目经理更像scrum master,product owner 如果兼作 scrum master,这是一个好事情。产品经理不要期待lead 技术,而是要结果导向,能否按时完成产品功能和目标,演示成果才是所需要关注的。 产品经理和技术人员之间不要“撕”, 不是纠缠在是否听谁的上面,而是本着相互帮助共同完成目标的态度,确定目标,积极协作。


问:作为一个技术管理者,自身的职业发展路径如何规划?如何不断培养自己的技术领导力?

答:一个技术管理者的职业发展是因人而已的,一句话,follow your heart, 你的初心是什么?什么能够给你带来更多的乐趣。 我见过转型为产品总监,产品VP的技术管理者, 也见过走上CTO岗位的,还可以持续的热爱代码,既是某方面的专家,又是一个全栈工程师甚至全栈架构师。关于全栈架构师的描述,可参看我的两篇旧文:


问:都有哪些管理雕虫小技可以直接使用?

答:雕虫小技相当于编程时的tips,都有有典型的使用场景和适用范围,例如 面对站会迟到 的童鞋,有多种办法:

  1. 冷处理,大家静止沉默等他到来,让他意识到在浪费大家的时间。
  2. 热处理,他到了,鼓掌,罚10*2^(n-1)元红包,即10,20,40 等等,将红包用于团队建设。

问:针对产品规划团队和研发团队是两个部门的情况,如何落实产品经理对产品的生命周期跟踪?

答:组织结构决定系统架构,这是康威定律的简明说法。关于组织结构与研发的关系,大家可以听一下中生代的另一位朋友——右军给大家带来的一场Chat:《从康威定律和技术债看研发之痛》

如果产品和研发是分开的,是一个比较难受的事,但通过敏捷的方式还是可以改善的。敏捷的本质是通过信息的透明性,产品的可验证性和适应性来来管理复杂性、不可预测性和变化。 团队间需要信息共享协同工作的工具,例如trello,worktile,slack等。 产品经理对产品生命周期的跟踪通过信息共享实现。

问:测试团队和研发团队一般的配比是多少,如何对测试团队进行绩效跟踪?

答:测试与研发的配比一般不要低于1:7,建议QA入团队,QA的绩效是在团队绩效的约束下的。绩效跟踪同样可以通过协同工具实现,对于绩效考核,可以在QA和研发之间做绩效互评,然后取正态分布的期望,或者简单的加权平均。

问:测试用例的管理有什么好的建议么?

答:文档的管理,包括测试用例的管理,推荐使用 confluence,它可以记录文档的变更状态。


问:公司有多个产品同时开发,人员和开发项目几乎1:1,有什么好办法合理安排人员?怎么有效跟踪推进进度?(背景:12个开发,大大小小的产品有10个。)

答:创业团队还是成熟公司?人员和开发项目几乎1:1 几乎没怎么见过,开发项目都是微型么?

正像我文中解释的, first thing,first。 最重要的事情只有一件(推荐阅读), 应该集中优势兵力打一点的。跟踪进度,推荐使用问题7中所谈到的协同工具。如果是外包的话,那是另一种做法了。


问:讲讲敏捷状态下的周期性绩效考核有哪些关键点吧。

答:个人认为,敏捷状态下的周期性绩效考核可能存在如下几点:

  1. 周期:一般以3个sprint为宜 ,但需要关注每个sprint的回顾会。
  2. 任务量: 关注燃尽图,借助工具了解伙伴的工作状态。
  3. 绩效考核体系: 主要是promotion 的机制和 carreer development 的结合。
  4. 评价方式: 多角度,但未必是360度评价, 面谈必不可少,明确进步与不足。

问:请教下敏捷的质量管理关键点?求案例分享。

答: 0 bug is a dream。 代码质量是第一位,可以尝试文中谈到的四种方式和原则。

敏捷质量管理的要点,个人认为,是如何快速发现和修复问题,更多是对架构和技术能力的考量,例如:

  1. 灰度升级的方式和体系架构。
  2. APP端的热补技术,例如Tinker 和 JSpatch 的应用。

问:产品、研发过度设计怎么解?就是平时会遇到很多从开发角度讲很容易实现的方案和可以解决更多问题的方案。从产品功能上却要满足各种情况,这里就是涉及到怎么界定过度设计问题。设计了很多用不到的功能,设计了要返工的功能。但如果不考虑的更全一些,扩展性又比较差。这个问题应该怎么处理比较好一点?

答:过犹不及。在敏捷过程中,我遇到的更多是设计不足,只有在大企业和大团队才有可能出现过度设计的问题。对于过度设计,更多原因可能是在杜撰需求,需求的界定可以使用User Story 和 UML 中的Use Case 相结合。 扩展性最好也从结果的连续性上考虑。


问:您眼中的技术总监是应该具备什么样的技术能力?该如何面试一位技术总监呢?

答:技术总监也是有类别的,客户端总监,服务端总监,中间件总监,解决方案总监等等,这是与不同公司的产品形态和商业模式有关的。 对技术总监的具体技术能力要求也是因岗位而定,阿朱曾经写过一篇《CTO、技术总监、首席架构师的区别》的短文,可以参考一下。

面试中可能除了技术能力外,还需要面试例如沟通,抗压,应变等能力即软技能。


问:我提一个土一点的问题哈,有人说公司不靠谱,我走了;有人说老板合不来,我要去找新天地.请问曹总,有没有办法帮助年轻人如何做向上管理,包括在合适的时间炒掉老板!

答:个人觉得, 对于初入职场的年轻人而言,前两份工作,尤其是第一份工作,最好在3年以上, 至少也要9个月以上,要逐渐学会看别人的优点,没有垃圾的老板,只有狭隘的视角。

对于年轻人,管理者可以尝试帮助他思考职业规划,提升的方向和路径,没有人能够随随便便成功的。


问:如果老板并不特别支持敏捷(假设不懂) 那么还可以推吗? 应该高调敏捷还是低调敏捷?

答:敏捷开发主要是通过高透明性、可检验性和适应性来管理复杂性、不可预测性和变化。 首先是结果导向,一定要让老板知道结果,尤其是在演示会议中。 在老板不知情或者自己权力有限时,敏捷要从低调做起, 但是要让管理团队体会到变化。


问:敏捷导入有啥建议?技术上发展太快,如何让技术员工信服?典型问题就是敏捷太理想,敏捷团队素质要求高,我们做不了。怎么办?

答:敏捷需要组织结构上的支持的。组织机构决定了系统架构,也决定了研发流程。 敏捷导入前,要有相应的技术准备和预热,比如请敏捷教练外训,相关工具的熟悉等等。

就技术而言,没有最好的技术,只有相对适合的技术。 结果导向,让团队有成就感。

敏捷是个面向结果的过程,都是可以做到的。个人敏捷,团队敏捷,项目敏捷等等,现在还出现了数据敏捷,关键是观念的转变,辅助以技术的支撑。


问:创业性公司,或类似小作坊这种,如何进行研发管理?另外开发大部分都是1-2年小白怎么搞研发管理?

答:很幸运,本人有过亲身经历。

首先,架构是第一位的,尤其是面向云服务的架构,利用公有云服务,以及各种XaaS,使小团队做大事情成为可能。另外编程语言的选择也是一个因素,决定了技术栈的构成。小作坊更适用于结果导向,过程敏捷的。

带初级工程是要有耐心的,条件允许的情况下,花时间结对编程是值得的。


问:年后又是一年一次的跳槽季,如何留住核心员工,如何劝走文中说的问题员工,有何建议?

答:对于核心员工,要防患未然。 核心员工应该在人才矩阵中的, 每月最好都给予关注,及时把握动向,往往他提出离职的时候,就已经晚了。

对问题员工,要霹雳手段,菩萨心肠,长痛不如短痛,直接办离职。


问:请问,有些开发工程师对自己的开发工作已经养成了习惯,如果公司因为业务或其他原因需要改变架构运用新技术,如何让现有开发同学快速接受和改变?

答:管理是管人,理事。管人中很重要的一项就是 才管理ABC, C中重要的一点就是学习能力,保证组织是学习型的。 哪些工作习惯是好的工作习惯么?是提高生产率的习惯么?

另外,技术的预研很重要,尤其是和团队中当前技术的对比,分享要透明,是共同决策的结果。


问:何来计划一些工作,因为总是有意想不到的东西出现来打乱计划,怎么来规划一些新的技术应用?

答:sprint 的周期 是以需求不改变为依据的。什么是意想不到的东西?老板发现的bug,还是?

对于新技术可以关注,gitchat,中生代等等都是学习新技术讨论技术痛点的好场所。


问:你管理团队包含了比你资历深的,技术好但是不听管理的,整个团队都倾向于一个方向但他非要另外一个方向的,这个怎么搞?在多个技术方案都可行的情况下这人不考虑具体方案落地过程的人员配置需求,只在技术层面讨论哪个更优,该怎么处理?

答:这时,一定要明确团队的目标和资源,包括时间的限制,全面比较两个或多个方案,关键是找到最优路径,而不是单纯的技术最优,可以采用集体智慧的。 如果无法说服,不要影响团队,可以调离他。


问:我觉得目前的研发管理工作,觉得业务和研发之间的沟通问题,怎么能对需求的理解达到最高?

答:业务和研发最好在一个team,这样目标一致,规划会要充分一点,可以尝试用UML中的相关界定需求的边界。其实,定义需求是研发的起点,也是第一个关键点。

问:如何把政治因素的影响降到最低?

答:有人的地方就有政治,最好把政治斗争归结为为经济服务, 用利益来绑定双方,可以降低政治因素的影响。

问:我们几个项目的回顾产品问题总结如下,能否指教解决的思路?

enter image description here

答:粗略看了一下,一半以上都是和需求相关的。 需求的界定需要花时间的,所花费的时间是整个 sprint 中 最耗时的,推荐不少于1天的。如果要启动研发,至少要明确MVP 最小可运行的产品。如果产品经理有缺憾需要技术侧提前介入。

例如 “希望能更深入的了解,这个需求的目的是什么,不是纯……”这说明了产品经理并没有把需求讲清楚, 为什么做?很容易调动不了研发人员的主观能动性。另外,对需求的描述有数据支撑么?如果方向错了,停止就是进步。


问: 作为管理新兵,对自己的预期应该是如何?应该怎么设定自己成长的目标?怎么奖励或者惩罚自己?怎么样做到不断与时俱进,技术和管理都不落伍?

答:自己的预期要和团队的目标,甚至部门乃至公司的目标相匹配。成长的目标确定也要做到与组织目标的吻合, 另外就是 follow you heart。管理是一种实践,以结果为验证,是需要尝试和实践的,实践本身就是与时俱进的。

技术上的与时俱进好像只有勤奋二字了,像《卖油翁》中所说,“无他,惟手熟尔”。


问:公司虽然定期会有很多培训,设计模式的、各种框架的。但是刚工作两三年的员工往往只是根据业务需求堆砌代码,不注重代码整洁、封装复用扩展以及设计模式,每次代码review 时发现很多问题,很明显是不够主动,缺乏工匠精神。那么如何有效的培养中级初级工程师的工匠精神?

答:就代码整洁而言, 建议在git侧安装sonar 之类的插件,以代码规范在提交时做检查,不符合要求的,直接提交失败。至于封装复用等,可以参考文中个人敏捷的4种方式。需求是有约束的,产品经理给出的feature 理由要充分, 技术在设计的时候考虑要全面。如果以工匠精神作为一种价值观,并且在一定时间内无法得到某些员工的认同,可以考虑团队的新陈代谢。


问:不会码代码,如何管理研发?

答:可以不贡献代码,但最好懂技术。阿里的王坚博士好像也不码代码吧,同样可以做杰出的CTO。


问:静态代码插件无法覆盖到一些问题,比如可以写设计模式解决,但写了if else ,公司都有关于良构代码的培训,只是一些初级员工没有匠心精神,有什么好的办法培养吗?

答:树立标杆,优秀选能。在绩效,奖项和宣传方面都要提倡。设计模式,代码规范,checkstyle是一些范式。一个池塘的荷花,总有早开的,让早开的影响晚开的,最后一溏荷花。少数始终不开的,问题就出在他们自身了。解铃还需系铃人,对于浪费时间的人,考虑淘汰出团队。

Chat文章:《老曹眼中的研发管理二三事》


在此感谢华章出版社,为本场Chat的获奖读者提供了《卓有成效的管理者》一书。

enter image description here


enter image description here

enter image description here