关于技术主管和高级工程师之间的区别
技术主管和高级工程师之间的区别
当时,作为一名初级软件工程师,我和同事们对个人贡献者的职业发展道路感到好奇。有很多问题需要解答,但有些问题反复出现。其中包括——技术主管的意义是什么?它与一位经验丰富的团队成员有何不同?这位团队成员熟悉自己每天使用的语言、框架和领域的方方面面。
我听过各种各样的答案,比如——“高级工程师”指的是职位,而“技术主管”指的是团队角色。或者说,高级工程师是指拥有足够专业知识,能够领导技术任务(例如设计、工作量估算、代码审查、指导他人等)的工程师。另一方面,技术主管是团队中负责技术决策和方案的人,类似于软件架构师。此外,他还负责管理工作,例如激励、职业指导、协调和规划。啊哈,原来一个人可以同时担任这两个角色。
确实,要明确区分这两个职位并非易事。两者都具备一些共同的特质,但有一个显著的区别——资深员工只需展现这些技能,而技术主管则需要精通这些技能。
在接下来的段落中,我将着重阐述几个关键属性,在我看来,这些属性凸显了这两个角色之间的差异。
专业知识
你了解什么?你对它的了解程度如何?例如,以编程语言为例。一位资深人士会说:“我了解X语言,我已经使用它好几年了,所以我对它很熟悉”,但对于技术主管来说,期望值则有所不同:
- 技术主管能够迅速找到解决问题的最佳方案。无论是修复缺陷还是进行代码审查,他都会立即说:“你应该试试Y。”他的建议基于丰富的领域经验、项目时间表以及团队成员的技能水平(并考虑其成长路径)。
- 仅仅知道是不够的,获取知识的方式更为重要。经过深思熟虑,应该确保参加合适的技术会议,阅读有见地的书籍,开展一些业余项目,参与技术交流会,并找到适合自己的导师。这样才能提升自己理解任何概念、平台或其他有助于改进工作的内容的能力。
- 密切关注软件工程领域涌现的各种趋势(框架、平台、概念、语言等等)。你可以通过阅读各种资料、收听播客或其他任何适合你的方式来学习。此外,在某个软件工程博客上创建个人主页,回答有关这些趋势的问题,这不仅能帮助他人,还能拓展你的知识。你会成为一位乐于分享的专家,而这被公认为是最佳的学习方式。
- 创建一个在线开源代码库。简单来说,学习编程语言 X 时,开发一个示例项目,哪怕只是一个简单的“Hello World”程序,也能让你亲自动手实践,受益匪浅。将来,其他人也可以对项目进行评论、分享或贡献代码。
- 不断鞭策自己前进。你知道自己不知道什么,而且每天都在思考如何弥合这些差距,加深对它们的了解。
- 最后,这并不是说要成为世界知名的专家,而是说你欣赏你所在领域的领军人物,并效仿他们的步骤,努力成为其中一员。
根据我的经验,一名技术主管至少应该具备上述清单中的三项专业技能。
影响
作为资深员工,您的影响力毋庸置疑。您通过各种技术讨论以及与其他团队的协作来影响团队成员。而技术主管则需要兼具这两种能力,并能够影响客户、相关团队以及组织领导层。他应该懂得何时分享信息,何时倾听他人的意见。他的日常工作是通过指导和倾听(这是领导者的一项关键技能)来帮助他人提升技能。
影响
你创造的价值。例如,你发现了一个问题,并且想到了一个解决方案。你可能已经独立解决了这个问题,但更重要的是,你的解决方案最终达到了令人满意的完成度。此外,你的贡献可能包括提出一项前所未有的新举措,或者对现有代码进行重大重构,从而提升产品质量。这些行动(以及更多)最终都会转化为巨大的商业价值。
你可以将技术专长作为主要方向,成为你所在领域的顶尖软件工程师,以渊博的知识而闻名,但你并非技术主管。在上述三个领域之间取得平衡至关重要,而个人贡献者则需要确保自己在每个领域都得到成长。
文章来源:https://dev.to/dejavo/on-the-differences- Between-being-a-tech-lead-and-a-senior-engineer-1j3f
