编者按:本文来自聚会玩创始人、前百度工程师李攀的投稿。他的我的博客请点此。架构
全部互联网公司,包括创业公司,都有很多技术牛人,这些技术牛人的技术栈深度广度已经达到必定程度,在他们的世界里,没有实现不了的需求,也没有解决不了的问题。学习
可是,咱们却不多看到在技术和管理两方面都很出众的人才。测试
直接点,技术牛人如何培养本身的管理能力,蜕变为合格的技术管理呢?spa
也许你们会说这是一个伪命题,由于大部分技术牛人根本不屑去作管理,他们认为管理那些杂事浪费时间而没有意义,管理职位是一个没法体现他们价值的职位,他们只想在技术上钻得更深更广。架构设计
实际上,技术管理并非一个独立的职位,技术管理融入在技术研发的每个阶段,例如,任何团队协做都涉及到任务分工,任何技术团队都涉及到代码规范、合并和管理,这些点滴,都须要有由技术人员而不是项目经理来管理。因此,即时不肯意作管理的技术人员,发展到必定阶段,多多少少都会涉及到管理的相关内容。设计
一个技术人员的职业发展过程大体是这样的:代码规范
还在学校学习,以前从未涉及过真实工程或项目,实习期间经过阅读项目代码,修复 bug 等开始积累经验,天天都会以为本身收获很大,时间不够;图片
经验很少,参考项目其余模块代码后,能独立完成小功能需求,能胜任小模块开发,也能维护项目代;ip
能胜任任何功能模块开发,并开始作模块设计和系统设计,设计的东西本身能用,作得好也许还能给别人;
负责整个项目的架构设计,实现项目的基础和核心模块。
前三个阶段的思惟方式都是考虑本身怎么作,怎么实现功能,怎么完成任务。到第四个阶段,就会开始涉及到管理相关的工做,由于,首先,你的东西不再是你一我的用的,你须要跟别人讲解和沟通;其次,你的架构和核心模块出来之后,你须要把剩下的任务合理分配给合适的成员来开发。
-----------
我认为,从技术岗位转型为管理岗位,更多的不是能力的变化,而是思惟方式和心态的改变。技术管理者是管理者的一类,管理者三大核心职责以下:
确立团队目标
不论项目大小,必定要有目标,有目标才能让全部人明确方向,知道天天工做的意义在哪儿,工做是否是朝着团队的目标在一步步靠近。 纯技术人员的执行者思惟应该切换为宏观思惟,由于如今我的的成功已经不叫成功,团队成功才是成功,如何让团队产出高的绩效才是你应该思考的问题。
离达成这个目标咱们还缺哪些资源
这点主要涉及到统筹规划能力。在项目初期,你就须要很是清楚明确地知道目前团队的能力以及你能调配的资源,这样才能保证后期不会由于资源不足致使目标没法达成。
咱们如何朝着目标迈进
这一点穿插在整个过程当中,是最重要,也是我这两年在聚会玩的团队管理中看到和亲身体会最深的,它囊括了技术管理的方方面面。
----------
若是某件事一我的作须要 m 个工时来完成,那么 n(n>1)我的来作,理论所需工时是 m/n,可是实际的时间必定比这个多,结果是(m/n)*α(α>1),α就是协做成本。技术管理者要作的,就是尽可能下降协做成本,包括如下方面:
以前你一我的能把事情作得很好,如今怎么保证团队一群人把它作好?任务分配包括如何把任务合理地分配给适合的人,能达到最好的结果,即人的价值得以体现,产出质量也高。这就要求管理者对任务的了解要全面深刻,对团队每一个人的能力了解也要准确。
技术人员工做时都须要专一,反过来,做为技术管理人员,要防止过分专一。多去了解项目各方面的进展和存在的问题, 对项目和团队的任何细节了如指掌,出现任何大大小小的问题都能迅速定位和分析解决,不会由于专一于技术细节而失去对全局控制。
之前天天和机器沟通,如今切换为和人沟通。之前的桀骜不驯和不屑是由于技术能力强,如今应该切换为更耐心,更注意语气和用词的沟通。另外,更多的去主动发现问题,而后经过沟通技巧来解决问题。
项目过程当中必定会遇到一些没法预期的技术问题致使项目被 block,若是问题已经持续未被解决,这时须要及时调度有能力的人来参与解决,防止项目一直处于不肯定状态。当多个功能或者项目并行进行时,因为人力资源有限,可能须要不断地根据项目进展来动态调整各项目优先级来保证总体的进度。优先级调度和调整是一个很复杂的过程,但记住一点,咱们永远只作优先级最高的事情,最高优先级事情完成之后,优先级第二的事情天然会升级为优先级最高的事情,在这个升级的过程当中,咱们也许还须要和产品等相关部门进行一次优先级动态调整或者评估。这也涉及到项目管理的负反馈,让每个阶段的结果反馈给新的阶段,保证最后的结果更接近咱们的目标。
时间管理是每一个团队都头疼的事情,直接体如今项目进度上。时间管理看起来很难,实际很简单。每一个任务拆分必定要足够细可量化,2 天以上的任务都是不合理的。并且过程当中须要严格控制好每个量化好的时间节点或里程碑,保证每一个节点的质量和时间点无误是保证最终结果的最好方式,出现任何一处 delay 都须要强制想办法及时补救,避免聚沙成塔,这样才能防止项目最后出现不可能预期的延期。
亲自去解决具体的技术问题,作代码审核看代码哪些地方存在不规范,和测试人员讨论具体的测试用例是否合理,这些工做如今须要作,可是,它们已经再也不是你关注的重点,你应该更多的放权让其余人去作,在这个过程当中必定不需事事亲为,在这基础上,你应该更加注重对成员的培养,培养他们的学习能力,思考能力和解决问题的能力(这三个能力是我对技术人员的基本要求),让成员快速进步和成长,独当一面。
无论之前技术多牛,多恃才放旷和桀骜不驯,做为管理者,须要背负团队的使命和绩效,因此应该在任什么时候候主动听取团队核心成员的意见,作一个好的倾听者。倾听必定要作到多维度听取,而后再分析和作决定。
能作到并实践好上面这些点,恭喜你已经蜕变成为了一个优秀的技术管理人员。