
点击上方蓝字关注灸哥聊管理

点击上方蓝字关注灸哥聊管理

今天我们俩聊程序员走向技术管理之路的第三个阶段,那就是如何做好一名称职的技术组长。
如何做好称职的技术组长?
我第一次成为技术组长,已经是很多年以前的事情了,当时我作为 P6,而组内也有其他几个 P6,还有两个 P7,对我来说,当时组内我并不是技术能力最强,职级最高的,但现在回头想想,我当时能成为技术组长,主要是我有他人没有的优势:
我很注重日常的技术技能工作以外的其他工作,比如项目管理、产品业务的沟通等
我与其他各个角色成员的沟通非常顺畅
我写的各个文档清晰易懂,不同角色的人我都能让他们懂我们做的事情
我能安排好工作任务的优先级,能提前规避风险,还稳定地推进项目进度
我还做了很多为了加快项目进度和拿到更好地结果的一些脏活累活
这里要说明,技术组长只是一个虚拟的职位,并不是一个真正的管理岗位,但却已经可以考验一个人的领导力了。这么多年的经历中,也见过很多不行的技术组长。我当年有一位很好的朋友,他是 P7,很优秀的技术专家,但是他却很难与其他成员顺畅沟通,他和业务人员、产品经理、内部技术沟通的时候,总是专注于一些技术细节。当时他也是一名技术组长,他每天都忙于处理各种技术问题,不停地在挖坑和填坑的循环工作中,对沟通、项目进度忽视太多,最终他复杂的项目的一团糟,导致业务团队、产品团队投诉,丧失了技术组长的职位。
从我和我朋友的例子中,你是否已经存在疑问了?作为技术组长,他的职责究竟是什么?应该怎么做呢?接下来,灸哥按照自己的理解和你慢慢聊聊。
我认为作为一名技术组长,
他不仅需要继续完成高质量的代码,还需要承担起作为技术接口人与管理层合作的职责
他不仅需要参与项目交付的过程,还要承担项目管理的职责
他不仅需要参与需求分析和评审的过程,还要承担和各种角色的人进行沟通,解决一切对项目有可能存在影响的问题的职责
当前一般互联网公司几乎是不存在技术组长的职责的,一般都是你符合了这些条件之后,你的领导会委以重任。任何一个资深的程序员都可能成为技术组长,但是并不是任何一个资深的程序员都可以做好技术组长。在你承担技术组长职责期间,我建议你:
定期和你组内的成员进行一对一的沟通,比如每周、每月
每天都要跟进你复杂项目的进度,尤其是识别风险、规避风险
要认可组员取得的成绩,并及时对组员的问题给于反馈和支持
帮助大家确定要提升的领域能力,尽可能提供辅导、培训等机会

优秀的技术组长:责任 & 挑战 & 成就

成为一名技术组长远非只是领导团队推动项目进展,更要善用自身技术优势,提升整个团队的工作效率。技术组长具有一定的独立决策权,并需代表团队与公司其他非研发团队合作。然而,这一职位并非应由团队内最资深、技术能力最强的工程师担任,因为除了技术能力外,管理能力和人际沟通能力同样至关重要。
在担任技术小组长的过程中,我经历了种种挑战和成就。
首先,我需要不断提升自己对团队的影响力,即使我并没有直接的人事权。与上级技术经理协调一致,确保团队的行动一致,是我不可忽视的任务。我当年所负责的第一个项目是解决团队的技术债务问题。团队之前积累了大量的技术债务,导致每次发布新版本都非常痛苦,线上系统的维护成本极高。为了解决这一问题,我需要说服团队成员暂停新功能的开发,专注于解决技术债务问题。然而,并非每个团队成员都认同这一计划,而我与团队经理的看法也不完全一致。为了让计划得到理解和支持,我不断强调重构代码的好处,具体针对每个团队成员的需求和关切进行解释。
其次,成为技术组长意味着改变自己的工作重心。我不再只关注个人工作和技术探索,而是将重心放在整个团队上。我需要思考如何提高团队的效率,排除项目中的障碍。虽然重写模块或专注于新功能更符合我的口味,但我需要更关注现有系统的运维和解决技术债务问题。最终,我制定的计划得到了实施,并取得了显著的成效。团队的生产事故率降低了 50% 以上,部署能力提高了 1 倍以上。
成为一名优秀的技术组长需要不断学习和提升,挑战与成就并存,但只要坚持不懈,定能实现更大的成功。

优秀技术组长的独门秘方

那怎么做才能成为一名优秀的技术组长呢?灸哥认为至少要做到以下这些,这些也被我成为成为优秀的技术组长的秘方,分享给大家。
第一,作为技术组长的你,要学会平衡你个人代码开发和团队的需要,这里我建议代码开发的时间不要低于 60%。在整个过程中,你要时刻来进行这个权衡,经常是需要你放弃个人的代码喜好和熟悉的任务,去执行团队的需要,这些需要很多都是你不熟悉的,有更大挑战的。
第二,作为技术组长的你,要学会管理自己和团队的时间,至少做到工作任务的分配合力。你要学会设定清晰的优先级,规划好每天、每周、每月的工作流程,要确保能够兼顾团队管理和代码开发两方面的工作。
第三,作为技术组长的你,要学会面对新的工作挑战,不仅仅是擅长的领域,还有不那么熟悉的工作。这需要一种勇气和毅力,愿意在不熟悉的领域里学习和成长。
第四,作为技术组长的你,要学会将工作分解成小块,避免出现需要连续几天才能解决的技术难题。同时,要给团队成员提供连续的工作时间,以便他们能够深入地解决技术问题。
第五,作为技术组长的你,要学会构建自我的有效的技术领导力,你需要代表团队与公司其他部门顺畅合作。这需要善于沟通协调,确保团队的需求得到满足,同时与其他部门保持良好的合作关系。
第六,作为技术组长的你,要学会灵活调整工作方式的能力,在不同的工作日中,你需要根据工作的性质和需求,灵活地调整自己的工作方式。有时需要像创造者一样投入到代码开发中,有时需要像管理者一样处理团队的事务和会议安排。

技术组长的基础要求

作为技术组长,首先你要是一个优秀的项目推动者, 你的主要职责是推动整个项目的进展,这里包括了团队成员的工作任务安排、解决项目中的技术难题、确保项目的按时保证质量的交付。
作为技术组长,你需要扮演系统分析和业务分析的角色,找出项目的关键需求,并分析需要对系统进行哪些修改才能满足这些需求。你需要了解系统的整体架构,并且能够把业务需求转化为软件开发的技术需求,这里切记不要遗漏非功能性的需求。
作为技术组长,你要承担项目经理的职责,负责项目的规划和安排,你需要把项目整体的工作华为为小的任务、小的交付物,确保团队能够稳定快速奔跑。包括任务拆解、协调团队成员的时间、安排优先级等。
作为技术组长,你要兼任软件开发工程师和团队 Leader 的双重职责,除了编写代码和解决技术问题外,你还要和团队成员沟通工作难点,分配任务给团队成员,并且要与产品团队、业务团队等跨部门的合作,确保项目的顺利交付。
作为技术组长,你要持续不断地学习和实践,因为这一职位对你来说还是有很大的挑战的,往往挑战和机会并存,这同样也是你的一个成长的机会,所以你要持续不断学习实践,逐步提升管理能力、技术能力等。
尽管技术组长是一个虚拟职位,不会涨薪,对应的回报也不会马上看到,但你依旧要坚持不懈提升自己,这会为你自己的职业发展打下坚实的基础。技术组长一般是下一个职级晋升的前提条件,在一个合力的公司里面,努力工作一定会得到认可和奖励。

技术组长如何管理项目

所谓项目管理,就是把一个复杂的目标拆分成一个个小目标,同时对这些小目标进行排序,识别出可以并行的工作任务,以及前后的依赖关系,同时还要找到可能导致延期或者失败的风险点,并制定风险应对策略。项目管理的过程,就是要把不确定转变为确定,把不可知转变为可知的过程。
作为技术组长,在项目管理方面,可以采取以下步骤:
第一,将整个项目目标拆分成小目标,并将其以最高效的方式进行排序。使用表格、甘特图等形式,将大目标细分为具体的小目标,并逐步迭代优化。这个过程不一定需要由你独自完成,可以借助团队成员的帮助。
第二,项目管理是一个持续不断的过程,做好项目管理的秘诀就是迎难而上,永不停止。尽管这可能是一项繁琐和无聊的工作,但你应该坚持下去。与上级领导一起完成这项工作,并不断寻求反馈和改进。在整个过程中,你要持续关注细节部分、未知部分、风险部分。
第三,落实项目计划并时刻进行动态调整。制定的项目计划不仅仅是一张纸上的计划,而是一个实际执行的指南。随着项目进展,及时调整计划,并向团队通报信息,保持透明度和沟通畅通。
第四,利用项目计划执行过程中获得的知识来管理需求变更,在拆分任务和制定计划的过程中,你对项目有了更深入的了解。如果出现需求变更,利用这些知识来更好地应对变化,评估成本和风险,并调整计划。
第五,随着项目的推进不断完善细节信息。在项目即将结束时,需要落实每个细节,确保所有任务都完成,并进行一次复盘模拟,预演可能出现的问题场景。制定发布和回滚计划,并确保团队全员参与,以确保项目的成功交付。



到底要不要担任技术组长?
有些人在领导找到你,需要你担任技术组长的时候,会产生疑问:我到底要不要担任技术组长?
至于你对担任技术组长一职的犹豫,灸哥建议你评估自己的技术成长空间和管理能力,结合当前项目的情况和团队的需要,做出合适的决定。
如果你觉得自己还有很多技术方面的成长空间,并且可以接受其他人来主导项目,那么推掉这个职位也是可以的。
如果你觉得已经不再对独立工作感到满足,而且想要学习一些管理方面的技能,那么接受这个职位可能是一个很好的机会。
最终的决定应该根据你个人的职业发展目标和团队的需求来做出。

职业拐点:技术路线 VS 管理路线

按照我的 1-3-5-7-10 的程序员成长理论来说,到了 3/5 年的程序员就会面临自己的第一个职业拐点,那就是成为一名技术管理者还是持续走技术路线,一般来说,是很难抉择的。
这个问题因人而异,我的经历不代表每个人都可以如此选择。但是,作为曾经做过这个选择的我,也同时承担过这两种角色的人,我可以和大家分享下我对这两个角色的理解,仅供你参考。
期望中的技术路线
作为团队的资深技术成员,你期望有充足的时间和其他资深成员合作,深入思考并攻克那些具有挑战性并且有趣的技术难题。尽管在软件开发过程中会遇到一些杂活和低级劳动,但你可以将大部分时间专注于技术性难题上。你有时间做自己喜欢的事情,如编写代码、修订问题以及尝试新技术。
在项目初期,管理层会依赖你的丰富经验制定项目计划,你可以掌控全局,无需过多关注细节。重要的会议少不了你,但你可以避免参加那些无意义的会议。团队中的新人尊重你的意见,但也不会占用太多你的时间。
你的工作效率高,不需要经常加班。你的影响力日益增长,但你也明白真正的深思熟虑不是加班能够达到的。如果你确实需要加班,那也是出于对工作的热情和灵感爆发。
此外,你还有时间进行知识分享,如写书、演讲、发布开源项目等,从而在业界获得一定的知名度。人际交往能力并不是关键,团队中的每个人都了解你的价值,并尊重你的意见。
优秀的你在工作和技术探索中找到了平衡,成为了组织内不可或缺的人才,获得了丰厚的回报。
现实中的技术路线
上面说的很美好,但是请停下来,我们一起看看在实际工作中是什么样子的。
尽管你有机会学习新东西,但很快你就会发现,要让团队按照你的想法行事并不容易。大部分时间你都在开会,而且随着团队规模的扩大,你已经没有时间再编写代码了。你知道自己想要做技术工作,但时间不允许。每次你抽出几个小时写代码,你都觉得是不负责任的行为,因为质量可能不高。你只能做一些简单的技术工作,而大型系统的问题已经超出了你的能力范围。
虽然你有一定的决策权,但你很快意识到,要让团队达成共识并不容易。你的上级领导有时会改变你的任务,而你必须向团队解释这些变化。你无法完全掌控团队,而是在帮助团队达成共识。
你的团队不会自觉地尊重你的意见,你需要花费很多时间激励团队。有时,你不知道团队成员为什么选择离职,而这让你感到困惑。你的上级领导可能不会给予你充分的支持和辅导,甚至可能阻碍你的发展。
在这种情况下,你的工作效率不高,且职业晋升缓慢。你发现自己无法影响公司的决策,甚至可能会被其他经理排斥。虽然你有一定的决策权,但你无法完全控制团队文化,而且无法平衡好与上级和同级的关系。
期望中的管理路线
作为一个团队的管理者,你享有很强的控制权,能够自主决策,塑造团队的文化。你期待团队成员对你的决策表示尊重,认可你的善意和真诚。你希望能够直接影响团队的行为。你期待团队成员能够理解你的意图,即使意见相左,也能够给予坦诚的反馈,共同促进团队的成长。
你渴望和其他同级经理交流,分享经验,互相提供建议,以推动整个组织的发展。
你希望上级领导能够给予你充分的支持和授权,以便你能够更好地领导团队,实现明确的目标。
现实中的管理路线
作为一个团队的管理者,你发现自己并没有想象中的那么多的控制权。大部分时间都被会议所占据,让你几乎没有时间去处理技术工作。
你虽然有一定的决策权,但实际上更多的是协助团队达成共识。你必须适应上级领导在任务和目标上的变化,同时向团队成员解释这些变化的原因。
团队的文化并不总是能够如你所愿地被塑造,而是受到各种因素的影响。
你发现团队成员对你的意见和建议并不总是能够完全接受,有时甚至会产生抵触情绪。
在困难时期,你需要花费更多的精力来激励团队,而且开除团队成员也是一个繁琐而不愉快的过程。
你发现其他经理可能并不总是愿意与你合作,他们可能会对你的行为持怀疑态度,甚至视为威胁。
你的上级领导也可能不会给予你足够的支持和鼓励,导致你在团队管理中感到孤立。虽然你希望团队规模扩大以提升自己的职位,但实际上这并不总是那么容易实现的。
我最后能给到你们的建议就是:无论是技术路线还是管理路线,开始的时候,你都是可以选择的。在职业生涯中,不乏选择走上管理路线的程序员们,发现自己不喜欢之后再换回技术路线也是很正常的。这不是不能改变的选择和决定,但是依旧希望你可以慎重考虑。路线本身没有好坏,但是不同路线对你来说是肯定存在优缺点的,至于要走哪一条路线,是需要你自己用心选择的。

如何成为优秀的技术组长

通过上面内容的讲解,我想你对如何成为技术组长以及技术组长如何做已经有了一个很深刻的印象的,那这部分我们再次和大家一起总结下,作为技术组长的你,应该如何做,才能成为优秀的技术组长呢?
理解系统架构
如果你不熟悉系统的整体架构,那么作为技术组长的你就一定要花时间尽快了解掌握透彻。熟记于心,画成图,理解每一个组件之间的关系,搞清楚数据的位置以及在系统内部的流动方式。同时要深度理解系统的架构和产品需求之间的关系,要能判断什么是产品的关键需求。如果你不了解系统架构,你是不太可能做好技术组长这个角色的。只有理解了架构,你才能更好地帮助和引领团队,制定对应的技术方向和应对策略。
维持团队关系
技术组长不仅要关注技术挑战,还要注意团队关系的维护。在面对烦琐、无聊或挑战性较低的任务时,应该主动承担,以了解项目中的问题,并鼓励团队成员提升自己解决问题的能力。同时,要确保团队内部的交流与合作,建立良好的工作氛围。
主导技术决策过程
作为技术组长,你需要参与团队的技术决策过程,但不一定要独自做出所有决策。如果事事都是你自己独立决策,而不咨询团队成员的意见,出了问题他们就会怪罪到你的头上。但是如果你完全不做任何决策,一切又让团队决策,就会导致决策被拖来拖去。所以你要根据情况决定哪些决策由自己负责,哪些可以授权给团队内的专家,并确保决策的透明和沟通。
良好的内外沟通
技术组长需要具备出色的沟通能力,能够有效地与团队成员、上级领导以及其他部门进行沟通。这包括书面沟通、口头表达以及在会议中的表现。同时,要善于倾听团队成员的意见,并给予积极的反馈和支持。你要明白,作为技术组长,你个人的代码生产效率与全组人的共同效率相比,没那么重要了。你要牺牲个人的时间去和各种不同的角色进行沟通。
持续学习和分享
优秀的技术组长应该不断学习新知识,拓展自己和团队的技术边界。可以通过撰写设计文档、技术博客、参加技术聚会等方式来分享自己的经验和见解,从而提升团队整体的技术水平。
通过不断地提升自己的技术能力、团队管理能力和沟通能力,以及积极地与团队成员合作和分享,你就能够成为一名优秀的技术组长,引领团队不断前行。
互
动
读者兄弟姐妹们,留几个问题给你们:
你现在的团队是否有技术组长的人选?如果有,他们的工作内容是什么?
你是否愿意在写代码之余还要花时间做非技术类的工作吗?
你是否对你现在的系统架构和代码足够了解?你能否从技术上领导别人?
你有考虑去做技术组长吗?你做好成为技术组长的准备了吗?
你的职业生涯中,你合作过的最优秀的技术组长是谁?他们的优势是什么?
你的职业生涯中,你合作过的最差的技术组长是谁?他们的缺点是什么?