2019-03-19

今天在 Reddit 上看到一篇有意思的文章,文章标题是《When is a senior engineer not a senior engineer?》,这篇文章在 Reddit 上引起了广泛讨论。我看了之后也感觉很有意思,国外大部分人的 Title 都是高级工程师(这一点和国内不同),所以他们对高级工程师的要求相比于国内更高。而在国内的一些创业公司,其实也有类似的情况,一个高级工程师需要做很多的工作,也要求他的能力能够像业务一样野蛮式增长。

那对于高级工程师应该做什么?具备哪些能力才是高级工程师?欢迎在评论去留言讨论。下面是文章正文。

我想在这个时代,“高级工程师”已经不是过去我们印象中的高级工程师。或者换句话说,“高级工程师”已经不再是真正意义上的高级工程师。

所谓“高级”的具体含义,取决于你所在组织的实际需求以及运营方式。我的大部分工作经验都源自小型企业,因此今天提到的相关职位可能更倾向于中小企业。不过根据我的经历,很多大企业中也存在类似的模式。下面,我将结合自己的认知,对“高级”一词作出更为详尽的解读。

专业知识:有时候,积累特定领域的专业知识往往需要耗费大量时间。如果你面对的是具有严格规范约束或相对复杂的领域,那么高级一词可能代表着“这里不适合新人”。这里,高级也就意味着专业。

技术深度:要求相关人士曾经使用过精确的技术堆栈。术语、库以及相关缺陷,这一切都在不断变化并持续提出新的要求。因此如果你希望成为一位高级技术人员,那么万不可有半点取巧之心。举例来说,如果你的应用使用 Django 编写而成,则你需要一位高级 Django 技术人员——无论候选人对 Rails 或 Laravel 多么熟悉,都将无法胜任这一职位。对于 PostgreSQL 也是如此(相对于 MySQL 而言)。我发现很多从业者都在职位申请当中体现出了这样严谨的态度,但却鲜有企业对此加以重视。总而言之,我们应当将这一点作为简历筛选当中的一项重要条件。

技术广度:这是指能够运用类似工具,并在类似情况之间加以类比以加快工作速度的能力。有时候,也许你找不到完全适应岗位需求的人选,这时候你可以扩大搜索范围。从宏观层面来讲,MySQL 与 PostgreSQL 之间其实存在很多相似的特征,因此将 PostgreSQL 的知识映射至 MySQL 身上(反之亦然)可能将带来奇效。这样的高级开发人员在与具有 “精确的技术层面技能储备”的人士进行协作时,效果最佳——因为双方将能够充分运用术语进行沟通并使用各类资源库。

实用类人才:这类高级开发人员能够填补团队当中的空白。他们能够注意到目前工作中的缺失部分,包括是否有必要构建系统、说明文档、项目管理、用户测试、设计乃至其它方案,并及时提出意见或倡议。这一点对于小型企业而言尤为重要。

领导力:对于高级开发人员而言,这种能力将引导团队最终实现业务目标。其中具体包括了解目标的重要性、关注目标方向、将目标传达给整个团队,以及在目标难以实现时继续保持团队团结稳定。

培训:这种能力有助于在组织之内培养出更多人才。无论是否建立有正式的导师计划,技能的转移与传授每时每刻都有可能发生(且并不一定是由更具经验的一方担任辅导者角色)。这要求相关人员具备同理心。另外,如果你所在的企业本身就缺乏经验丰富的开发人员,那么则应建立起更为正式的相互辅导制度。

谦卑心:高级开发人员之所以称得起“高级”,是因为他们曾经犯下过错误。这让他们有能力承认错误、从错误中学习,并努力思考如何避免犯下新的错误。

持续学习者:这类高级开发人员会不断研究新技术与新进展,并思考如何将其与现有问题空间联系起来。一般来讲,他们只会在自己的业余时间当中研究技术。而如果他们足够出色,他们也会乐于展示自己的成果,并提倡在不影响长期可维护性的前提下对新型技术(通过峰会以及黑客马拉松等形式)进行探索。

跨部门协作:这种能力将在企业之内建立起谁知道 / 谁拥有的内部知识模式。在招聘新任开发人员时,这些新人可能并不清楚现有结构,但也许曾在原本效力的企业内见到过类似的机制。具备这方面知识的人明确知晓该由谁发布任务要求,又该由谁对相关变化作出通知。这种方式能够避免为错误问题找寻正确解决方案时所带来的巨大投入与资源浪费。这一点在小型企业中往往更为重要。

项目管理:根据你所在团队或企业的实际规模,高级开发人员可能需要在客观上担任项目经理一职。他们可能并不喜欢这类工作,但又无法回避这份责任——因为他们会意识到,如果缺少管理那么事情最终会出现哪些问题(参见之前提到的‘谦卑心’)。

开发支持 / 运营 /DevOps:换句话说,高级开发者也需要干一些『杂活』,但这些工作却又反过来可以迅速提升团队的战斗力。比如规定编码风格、Debugging Jenkins 中执行失败的 job、维护 Docker 镜像、设置监控系统等。

关于现有应用程序的深度知识:对于这方面工作,你需要做的显然并非招聘专门的高层管理者,而是培养开发者并使其成长为领导者。这类高级人士了解应用程序代码发展道路上一切问题的答案。如果他们足够出色,还能够以书面资料的方式分享自己的知识。

因此,当你发布“高级”工程师这类职位描述时,请认真考虑之前提到的各项因素。如果找不到一位擅长这一切的人选,那么你显然应当作出自省——你到底需要什么?你的企业又需要什么?

今天文末推荐极客邦科技总裁池建强老师的微信公众号 MacTalk。MacTalk 开通于 2012 年末,内容起于 Mac 而不止 Mac,内容覆盖了技术、创业、产品和人文思考,文风有趣,又有一点力量。

比如上周朋友圈里广泛传播的这段话就是他说的,我看了以后深受启发。

在我们漫长的职业生涯,每个人都希望有个完美的职业规划,建立超高人气的个人影响力,维护良好的人际关系……如何做到呢?欲登高而穷目,勿筑台于浮沙,先把自己手头的事做好。做成一件事,然后再做成另一件事,让优秀成为习惯,让自己成为稀缺资源,自然会有优秀的人来找你一起做事。

成长最好的起点是什么?做出一款完整的产品,完成一项有价值的任务,并且得到你的用户和工作伙伴的认可。

如果你总觉得怀才不遇,想想自己,做成过一件事吗?

具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的可以加群。在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的可以加群。如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的可以加群。

--------------------- 欢迎大家之处不足之处,相互交流,勿喷!~!!~

你可能感兴趣的:(2019-03-19)