现在不少技术牛人的技术能力无论广度还是深度都达到一定的程度,任何技术需求都可以轻松解决。
但是,在技术和管理两方面同时都很出色的大牛缺非常少见。我之前也问过身边技术大牛为什么不转去管理方向,他们普遍觉得不是特别喜欢做管理方面,因为管理
那些烦琐事没有非常大的意义而且浪费时间,管理岗位无法实实在在的体现他们对公司的价值,所以他们偏向于喜欢在技术方面继续学习挖深。
实际上,技术和管理并不能完全分离出来做分析,管理其实也融入在技术开发的每一个阶段,比如一个技术项目开始操作,技术人员就要考虑如何分工和团队协调,如何规范代码,打包和管理,这些都需要技术人员而不是项目经理来管理和协调,毕竟技术人员了解技术难点,知道如何分配才能实现工作时效最大化,而项目经理因缺少技术背景,往往很难把控。因此,技术人员发展到一定级别,或多或少都会需要管理的技能。
我大概归纳下一个技术人的职业发展几个阶段:
1.实习期
之前没有参加过大型的工程项目,所以在实习期内会大量阅读项目代码,通过调bug等进行学习
2.应届毕业以及工作两年以内
工作经验不多,根据项目其他模块代码,自己可以独立实现部分小功能,小模块开发以及项目运维
3.工作2-5年
能够独立开发任何模块,并且接到项目和需求后,能做系统和模块设计,设计出来的东西不仅自己可以用,别人也可以用。
4.工作5年以上
能够独立负责整个项目的架构设计,无论项目的基础还是核心部件都可以自行实现。
前面三个阶段,既工作5年以内,工作思维大部分都是考虑自己如何做,如何实现需求和模块,如何完成项目。而到了最后一个阶段,就要开始有管理方面的工作,因为,你设计出来的东西不再是你自己一个用,需要跟其他人(组内同事,业务方以及上头)沟通和讲解;另外,当架构和核心模块被你设计出来后,你需要把剩下的工作分配给其他人,这就考验你如何分配工作实现时效最大化的能力(不过以上也不能完全一概而论,要看每个人的情况,作者我工作一年半后就开始要带团队和做架构设计)。因此我觉得技术岗位后期转型去管理方向,更多的不是能力改变,而是心态和思维方式的变化。
技术管理其实也属于管理的一个方向。
管理岗位三大核心能力:
1.确立好团队目标
无论项目大小,一定要确立目标,目标能给予团队所有人一个明确的方向,明白每个工作的意义,以及知道这些工作能够推动项目发展,离目标越来越近。这时技术管理人应该从执行者的思维应该往项目整体宏观思维变化,这时不再是关乎一个人是否成功,而是整个团队是否成功,现在最需要考虑的是如何让团队做出高绩效
2.离完成目标还缺少什么资源
这个主要考验你的统筹规划能力。在项目开始阶段,你就需要非常清楚明确地知道目前团队的能力以及你能调配的资源,这样才能保证后期不会因为资源不足导致目标无法达成。
3.我们如何朝着目标迈进
技术管理者要做的,就是尽量降低协作成本,包括以下方面:
1.任务分配
之前你一个人能把事情做得很好,现在怎么保证团队一群人把它做好?任务分配包括如何把任务合理地分配给适合的人,能达到最好的结果,即人的价值得以体现,产出质量也高。这就要求管理者对任务的了解要全面深入,对团队每个人的能力了解也要准确。
2.全局观
技术人员工作时都需要专注,反过来,作为技术管理人员,要防止过度专注。多去了解项目各方面的进展和存在的问题, 对项目和团队的任何细节了如指掌,出现任何大大小小的问题都能迅速定位和分析解决,不会因为专注于技术细节而失去对全局控制。
3.沟通能力
以前每天和机器沟通,现在切换为和人沟通。以前的桀骜不驯和不屑是因为技术能力强,现在应该切换为更耐心,更注意语气和用词的沟通。另外,更多的去主动发现问题,然后通过沟通技巧来解决问题。
4.协调调度能力
项目过程中一定会遇到一些无法预期的技术问题导致项目被block,如果问题已经持续未被解决,这时需要及时调度有能力的人来参与解决,防止项目一直处于不确定状态。当多个功能或者项目并行进行时,由于人力资源有限,可能需要不断地根据项目进展来动态调整各项目优先级来保证整体的进度。优先级调度和调整是一个很复杂的过程,但记住一点,我们永远只做优先级最高的事情,最高优先级事情完成以后,优先级第二的事情自然会升级为优先级最高的事情,在这个升级的过程中,我们也许还需要和产品等相关部门进行一次优先级动态调整或者评估。这也涉及到项目管理的负反馈,让每一个阶段的结果反馈给新的阶段,保证最后的结果更接近我们的目标。
5.时间管理能力
时间管理是每个团队都头疼的事情,直接体现在项目进度上。时间管理看起来很难,实际很简单。每个任务拆分一定要足够细可量化,2天以上的任务都是不合理的。而且过程中需要严格控制好每一个量化好的时间节点或里程碑,保证每个节点的质量和时间点无误是保证最终结果的最好方式,出现任何一处delay都需要强制想办法及时补救,避免积少成多,这样才能防止项目最后出现不可能预期的延期。
6.放权和培养
亲自去解决具体的技术问题,做代码审核看代码哪些地方存在不规范,和测试人员讨论具体的测试用例是否合理,这些工作现在需要做,但是,它们已经不再是你关注的重点,你应该更多的放权让其他人去做,在这个过程中一定不需事事亲为,在这基础上,你应该更加注重对成员的培养,培养他们的学习能力,思考能力和解决问题的能力(这三个能力是我对技术人员的基本要求),让成员快速进步和成长,独当一面。
7.倾听
不管以前技术多牛,多恃才放旷和桀骜不驯,作为管理者,需要背负团队的使命和绩效,所以应该在任何时候主动听取团队核心成员的意见,做一个好的倾听者。倾听一定要做到多维度听取,然后再分析和做决定。
能做到并实践好上面这些点,恭喜你,你离优秀的技术管理者已经不远了。