技术领导力于很多人而言都是谜一般的存在。有观点认为,实战经验丰富的资深开发最终只有成为技术管理者才能继续成长。从某些方面来看,这可能是对的,但考虑到公司结构和规章制度等,想要完成从「个人贡献者」到「技术管理者」的跨越并不轻松。毕竟技术专家和技术管理者虽在能力画像上有所交叠,但各自需依赖不同技能,才能完成工作。
在我的职业生涯中,从管理开发团队到管理外包服务商的自由项目,我一直是某种意义上的「技术主管」。但直到近两年,我才正式地成为一名技术负责人。身份和能力的转变带来了很多挑战,我也总结了很多成长心得。
本文将分享探索技术领导力必须了解的 5 件事。
01 领导力与控制无关
首先,技术领导力(以及任何一种的领导力)的核心不在于你对项目和团队的控制。 成为技术管理者不是为了当一个发号施令的人。
技术领导力需要为未来状态描绘愿景(比如项目的完成或者产品的发布),并帮助技术团队实现这一目标。 这不是对细节的微观管理或者让你亲力亲为,而是指导他人的实现过程,以便他们能达到你的效果。
作为技术专家(或个人贡献者),你对团队的贡献无法覆盖很大范围。即便你可以持续精进自己的能力和工作流程,但最终还是会因种种限制而无法快速提高技术领导力。而当累积了足够丰富的经验后,成为技术管理者或许能让你以帮助他人提高效率的方式,增强自己的影响力并提高产出。
02 不惜一切代价清除障碍
任何做过大量编程工作的人都知道,我们很容易会迷失在问题中,花费大量宝贵的时间进行调试。如果不给自己换换脑子、透透气,就容易陷入沮丧或士气低落,最终浪费更多时间。
受阻的开发者是项目中最大的风险之一,而作为技术管理者,你的职责就是向他们提供帮助。
首先,识别出开发者受阻或停滞不前的信号很重要。 他们是否提出了很多看上去互不关联或毫无推进的问题?他们有否表现出沮丧的迹象?他们的状态更新或代码提交消息是否含糊不清并且似乎没有进展?如果你发现有这些症状,那么你的成员很有可能已经陷入困境。
是时候该出手了!但请牢记,你是来清理障碍的,不是来解决问题的。 我的常用做法是提出一系列问题,引导成员突破困境。即使我很快能知道解决方案是什么,我也倾向于指导开发者以我诊断问题的逻辑为参考来解决问题。我希望不只要帮助他们解决当下的问题,还要能为未来吸取经验教训。
即便你不知道如何解决问题,引导式提问和与开发者讨论方案也能帮助他们摆脱并找到解决办法。不要害怕向开发人员提供其他资源,无论是代码片段、文档,还是其他有能力提供支持的成员。
03 传递信心
技术管理者的工作重心不仅是与开发团队合作,还要代表开发团队与项目经理和客户进行沟通。
我非常乐意承认,有好几次当我和别人交流时,我对所谈论的内容和主题并没有太多了解。作为技术管理者,我的工作是成为一名「全才」,不求上知天文,下晓地理,但起码也要略知一二。
而现实是,我们不可能对所有事情都有所涉猎,因此技术管理者必须善于提出正确的问题(或进行一些有效的信息检索),以便快速掌握相关知识,并立即就某个主题展开专业讨论。
你可能会担心「在不了解的领域说错话该怎么办?」别担心,因为很有可能 ,你在谈论项目时所散发的自信要比说话的内容重要得多。
你的团队被视为行业专家,而你的职责就是维护利益相关者对团队的信心,向他们保证你和团队能够掌控一切。有些时候,你可能完全不知道该说什么;此时,你必须训练自己的反应能力,不要惊慌。另外,我建议先与团队协商,晚点再给利益相关者答复。
04 管理好项目预算和时间表
刚开始担任技术管理者时,很多人可能会认为管理项目预算和项目时间表完全是项目经理的责任。项目经理当然需要为此负责,但对非技术人员来说,如果没有一个有开发经验的人提供意见,那他们也不知道如何有效地管理项目预算和时间。
开发者会在约束中成长。因此,当拿到一个大预算和一个大时间表时,他们往往会迷失在细节里,或忘记时间,或在最开始就过度设计,并在项目结束时耗尽时间和预算。
你可以通过将项目分解成小块,辅助解决这个问题。根据经验,技术管理者会查看需求,将项目拆分成若干个可行的小模块,并将它们按照功能或其他更容易分析的方式进行分组。
尽早分解项目有助于开发者了解你的预期,以及你希望他们在哪些方面投入精力。如果你的拆解结果和开发者认为的工作量不匹配,那么就需要进行讨论,以确保双方都了解项目的范围和实现方案。
05 不要成为英雄
每个人都想成为那个让项目顺利进行,或者把项目从困境中拯救出来的英雄;但这不是技术管理者存在的意义。
无论你有多少经验,你都不必(也可能不会)知道所有问题的答案。有时,即使知道答案,也不该为了让研发团队完成项目而直接说出来。
技术管理者最重要的工作,是成为一名推动者 ------ 帮助开发者完成他们的工作。对那些程序员出身的技术管理者来说,这是一个非常大的挑战,但这种转变会让他们受益匪浅。
你终将获得属于自己的荣耀与荣光;它源自亲眼见证团队走向成功。
最后,介绍一个最近很火的开源技术,低代码。
作为一种软件开发技术逐渐进入了人们的视角里,它利用自身独特的优势占领市场一角------让使用者可以通过可视化的方式,以更少的编码,更快速地构建和交付应用软件,极大程度地降低了软件的开发、配置、部署和培训成本,让你把更多精力放在管理上,事半功倍!
开发语言:Java/.net
这是一个基于 Java Boot/.Net Core 构建的简单、跨平台快速开发框架。前后端封装了上千个常用类,方便扩展;采用微服务、前后端分离架构,集成了代码生成器,支持前后端业务代码生成,满足快速开发;框架集成了表单、报表、图表、大屏等各种常用的 Demo 方便直接使用;后端框架支持 Vue2、Vue3,平台即可私有化部署,也支持 K8S 部署。