技术管理者如何发掘写代码之外的能力?
21 天《技术实战领导力笔记》的分享计划已经进行到了 15 天,今天分享爱回收研发负责人应紫门老师关于技术管理者代码之外能力的经验与思考。
很多技术人员在刚刚承担管理职责的时候会比较焦虑和迷茫,担心自己不会管理,担心自己在管理上花的时间太多,从而导致自己不能像之前做工程师一样去编写代码、去学习新技术,然后逐渐丧失自己在技术上的优势。
但实际上,技术和管理并不冲突,成为管理者之后,你接触的代码可能会比之前更多、更复杂。我们的重心应该在如何管理好团队上,因为个体的能力永远有限,技术管理者不仅要具备写代码的能力,还要发掘更多能力来做好管理工作。
抵制自己写代码的冲动
成为管理者的首要任务就是抵制自己写代码的冲动。当项目要延期的时候,有些管理者容易陷入具体的问题当中。相比于协调资源、激励团队等管理动作来说,自己做,熬夜加班解决问题效率更高。但是,团队不可能永远依赖你,你的精力也是有限的。最终还是会出现问题。
而这个困境其实正是你学习有效管理的机会。很多创新都是问题逼出来的。这种自己解决的行为短期看是解决了问题,长期看对团队成员的成长非常不利。克服这个问题是一个工程师成长为一个优秀管理者的关键。
写一写特定的代码
管理者并不是说不写代码,而是尽量少写业务代码。而对于一些不能直接带来项目产出但技术管理者应该关注的领域,是可以写代码的。比如:
提升效率的工具:开发一些自动化流程的工具,减少团队的重复劳动。这类项目在技术选型上比较自由,可以应用一些复杂和前沿的技术,而且对时间要求不高,非常适合管理者去实践自己的技术追求与编码。
最佳实践代码案例:管理者可以从团队代码中总结出一些适合团队的最佳实践代码库,通过写一些这样的代码,建立代码规范,保证团队能力拉齐到一个统一的水平,整体提升项目质量。
为团队做一些基础架构相关的开发工作。这些开发工作非常通用,因为你应该是最了解该需求的人,所以会做出比基础架构团队更有用的东西。
这些项目都是技术管理者可以涉足的开发领域,虽然它并不是一个具体的业务项目,但技术管理者确实可以通过这些项目来保持技术水平,并提升团队的效率。
除了写代码之外,技术管理者的工作重点还有很多。比如,如何参与产品的设计、如何做技术规划、如何和领导汇报、如何激励团队等等。与这些内容相比,写代码可能是其中优先级最低的一个。
参与产品设计
深度参与产品设计是技术管理者扩展能力的良好途径。一个优秀的互联网产品,离不开产品、研发、设计、测试等成员的共同努力。在传统的认知里,技术是下游角色,不负责产品的规划,也不为结果负责,只负责需求实现和 bug 的修复。这样的技术团队是得不到成长的。
从下游到上游
技术管理者要给产品团队做一些改变,从一个下游承接需求的支持者转为上游的协作者,帮助产品和业务部门共同识别问题。
技术主导,勇于担责
除了日常给产品、业务提供有效的建议外,有些适合技术主导的项目,我们也应该勇于承担责任,并使用技术手段来解决。现在越来越多的案例证明,有些项目技术人员成为核心后,会释放出惊人的潜力。
另外,在一些工具性的产品里,技术主导设计往往也会取得更好的效果,比如我们在做的一个手机质检的工具,如何把一些非标准的检测验准是项目的核心,这类问题需要技术先出方案,产品才知道应该怎么做,这个时候技术方案的可行性是前置条件,技术和产品配合才能做出一个好产品。
通过主导参与或主导产品设计,我们可以进一步了解技术的上下游,从业务的角度、产品的链路、技术调优等角度切入,开拓自己的视野,转变技术思路。
技术规划不要脱离业务
技术管理者在制定 OKR 时候经常会设置一些技术目标,比如服务性能 TP99 要达到多少,Slow Query 要降到多少,系统可用性指标等等。这些是非常重要且基础的指标,的确是技术管理者需要关注的。
但你也会发现,这些目标今天可以写,明年也可以写,一直用下去都没问题,但作为技术管理者,你有没有考虑过这些技术指标和今年的业务线的目标以及公司的战略目标的关系呢?对于技术管理者来说,技术规划需要考虑业务的实际问题,需要往解决业务问题的方向做规划。这样才能得到其他部门的支持,更直观展现技术部门的价值。
向上管理
除了参与产品设计、技术目标与业务目标相结合这些横向能力扩展之外,我们还应该在纵向扩展自己的沟通能力。其中最关键的就是向上管理。这是技术管理者为个人和团队争取资源和机会的天然路径。向上管理并不是邀功,而是如何让自己跟上级更有效地沟通。
沟通的目标是为了相互认可,达成一致的目标。你需要先了解你的 leader 的阶段性目标是什么,他在考虑的问题有哪些。这些事情不要去猜,要主动去了解诶,有些信息可以通过开放的 OKR 或者 1v1 的沟通交流获得。同时,你也要把自己的目标和问题传达给 leader,把和 leader 的沟通当做研发项目来管理,抓住几个关键节点:
项目立项阶段:在方向层面需要和 leader 达成一致
技术设计阶段:把自己做事情的思路方案和 leader 交流一下,获取更高维度的建议。
研发测试阶段:如果事情有风险,需要及时暴露问题,不用害怕因为存在问题而受批评。
项目上线阶段:这个阶段的沟通重点是对一件事情的最终价值做复盘,哪些做得好,哪些做得不好,未来如何改进等。
我的心得
技术管理者可以不写代码,但一定要具备写代码的能力。如果你是一个小公司的技术管理者但不会写代码,万一需要找工作怎么办?你是找技术岗还是管理岗?小公司的管理岗比较少,且大部分都是从自己的部门里提升,大公司岗位多,但对管理人员的要求也更高。所以,还是建议技术管理者不要完全脱离技术,也不要完全不写代码。除非你对未来的规划是往 CEO 发展,那么确实不用花太多时间在技术上。
关于管理上级,我的理解就是要赢得上级信任并对上级具有影响力。而这中间最重要的是沟通能力。我的经验是,与上级沟通,最忌讳避重就轻,含糊其辞,推卸责任。在沟通时候也千万不要他问一句你答一句,你得理解他为什么提问,他要解决什么问题。明确了这些关键点,你就可以一次性把他关心的问题解决掉。
文章链接:技术管理者如何发掘写代码之外的能力?
课程链接:
版权声明: 本文为 InfoQ 作者【石云升】的原创文章。
原文链接:【http://xie.infoq.cn/article/41da33a9d6ed773fb4d4efd48】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论