知道吗,你和高级工程师差距巨大

作者:程序员小跃,前菊厂Android开发,现游戏公司Java主程,奔跑中的技术人!
Slogan:当你的才华还无法撑起你的野心时,那应该静下心来好好学习

很多人问我,跃哥,现在刚毕业的我,校招、社招机会都挺小的,这是为什么;跃哥,为什么你发的一些JD需要3年以上,我工作才两年多,难道就没机会了吗;跃哥,什么时候才能和一样有实力,知道这么多。。。

之前我在《一线编码6年,帮你总结出6条优越感》也透露过,我已经浸淫职场6年,从客户端开发到后端开发,从大厂螺丝钉到小厂主力,一步一个脚印。你说,你们刚毕业,你们工作两年多,和我肯定多多少少存在一些差距,那么,为什么他们会有这些要求呢?

这还得从职位说起。最近我也在看《如何成为专家》这本书,刚开始看,但是书中开头已经明确说明了,如何成为专家。工作多年,并不会肯定让你成为专家;但是,如果你仔细专研,认真学习,努力提升自己,多年工作经验,有多种经历,而不是一份工作经验做多年,那你肯定能从初级工程师进阶成高级工程师,再往后就是专家。

这也是为什么大厂有等级,比如华为的职级,腾讯的T级,阿里的P级,百度、头条、PDD都有自己的级别,这就是区分一个人能力的等级。你还别不服气,等级划分不是随便来的,接下来就带你看看,为什么高级工程师这么值钱;为什么一些厂的要求高。

来吧!!!

缺少高级工程师的领导你会发生什么

作者:Allan Wintersieck

时间:2020.2.25

我不认为存在单一的“完美”组织结构。每个公司都有不同的需求,并且对人才的要求也会有所不同。一些团队结构是平坦的,有些是有深度的。无论你如何建立一个技术团队,如果有共享你产品的过程,那你就成功了。

但是,每个公司/团队都应优先考虑一个职位:高级工程师。

无论你的行业,规模或者技术栈如何,你都需要高级工程师来指导你的软件开发产品以及内部交流。没有这个高级工程师的领导,可能会发生不幸的事情,其中一些破坏性更大。

这里罗列了一些缺少高级工程师的情况下可能会发生的最常见的情况。

陷入重写的陷阱

20年前,Joel Spolsky 写了一篇我今天仍然推荐的非常出色的文章。它强调了软件公司团队可能做出的最糟糕的决定之一:从头开始重写代码。

虽然我建议阅读全文,但我还是做了一个简短的概要。

高级工程师可以对此进行讨论,但是根据他们多年的经验,他们意识到这不是一个好主意。

他们知道代码库可能是“混乱的”。但是,当软件对世界进行准确建模时,它是最有用的,并且世界肯定是混乱的。某些代码可能丑陋,因为他们需要捕获域的基本复杂性。

用 Joel 的话来说,“新代码比旧代码更好的想法显然是荒谬的。旧代码已经被使用了,已经被测试过。很多 bug 已经被发现,并且做了修复。”

您的高级工程师可以理解这一概念,并且可以吸引那些虽然才华横溢但有时缺乏纪律的初级开发人员

你得到了你想找的,但是没得到你想要的

你还需要高级工程师领导才能在进行任何开发工作之前提出基本的业务问题。即使是最详尽的产品路线图也可能会有一些高级工程师需要填补的漏洞。缺乏经验和知识,这些漏洞无法填补。

换句话说,你得到的正是你想找的,但不是你想要的。

当我们的客户与离岸开发团队合作时,我经常看到这种情况发生。 开发人员从字面上看待一切,不考虑人为逻辑

一个典型的例子就是在线服装店。

产品负责人说,“我们的额用户应该能够按颜色选择衣服。”

很容易从数据库(“酒”,“珍珠”,“李子”)中获取所有已命名衣服的颜色列表,并将它们放入按字母顺序排列的下拉列表中,但这是一个复杂的功能!

高级工程师可能会花一些时间思考选择颜色的最佳方法,并实施“最接近的颜色”算法,以便当用户选择“蓝色”时,牛仔布,海军上将和青金石都出现。

对于任何复杂的产品,让高级领导者提出问题,阐明功能,与开发人员进行交流,然后持续检查他们的工作是必不可少的。

初级工程师(有时)更容易受到发展趋势的影响

您的初级工程师可能最近完成了编程新手训练营或学位授予。

他们接触了最新的趋势和编程语言,通俗来讲,就是很棒。但是,仅仅因为这门语言或工具很新,并不代表更好。

如今,新的语言和工具在市场营销方面表现出色。 初级开发人员可能认为这是自切面包以来最好的事情。 但是众所周知,营销活动并不总是与使用率和可靠性相关。

一个例子是MongoDB与PostgreSQL。 对于新手来说,MongoDB看起来很棒。这是一个新的数据库程序,被称为“现代应用程序中最受欢迎的数据库”。

这听起来很不错。也许我们应该开始在MongoDB中构建数据库。

这是高级工程师需要介入的时候。凭借他们在各种数据库程序中的丰富经验,他们将能够考虑产品的需求,预算和框架,然后选择实现产品业务目标的数据库。

工程师可以是非技术领导

奇怪的是,你的领导团队并非需要技术精湛。

同样有可能的是,你的开发人员与你的五年业务战略不符。

有时候,当事方在功能,优先级,时间表,框架方面意见不一,你可以自己命名。如果你的领导团队不讲开发,那么您很容易雪崩。

换句话说,开发人员可能会声称必须采用这种方式,故意使用专业术语让你让步。

为了避免开发人员被骗,需要具备技术领导才能进行筛选并翻译每个团队的基本需求。

最后说明

这篇文章不是针对初级开发人员的攻击。毕竟,你的初级开发人员将学习并很快地成长为高级工程师。相反,这是雇用具有技术能力的强大的高级工程领导的案例,但也可以:

  • 与非技术团队成员沟通
  • 帮助解决各类技术问题
  • 了解产品的业务方面
  • 将多年的实践经验带给团队成员

正确聘用此人将确保您的产品以最高水平进行计划,构建,发布和维护。

结语

这是一篇外文的翻译,但是从工程师能力的评判来看,和我们国内的区别不大。高级工程师,不仅仅是写代码,还需要有带团队的能力、做决策的能力、领导能力、沟通能力。

比如文中说的数据库选型,不是因为MongoDB成为趋势,就一定要使用它。而是需要根据经验,根据项目,考虑产品的需求,预算和框架,选一个最佳的方案。

在我开发的项目中,也遇到过选型问题。消息队列,用Kafka还是MQ,用什么MQ,都是需要按实际情况来选择的。还有Android开发中,图片加载框架等等,这些作为新手的你,和公司里,或者和交流群里的其他人交流,你能感受到差距吗?你平时的选择是如何呢?

所以,现在你知道为什么高级工程师值钱了吧。你知道如何成为一名优秀的高级工程师了吗?跃哥这有优秀的社群,丰富的资源,欢迎来撩!