【翻译】如果软件工程需求旺盛,但为什么找一份软件工程工作这么难?

在这里插入图片描述

哇,这个人有多个显示器。他们一定很忙。看,他们正在写代码,并在看 "开始 "页面。雇用他们吧。照片由Safar
Safarov在Unsplash上拍摄。

这篇文章的标题是一个流行的Quora问题,流行的回答归结为 “不是的,失业率是3.6%”,“有太多的开发人员,没有足够的工程师”,以及 “这是微观经济理论的自然结果”。对最后一个回答进行阐述可能是有用的,但我认为看看绝对最受欢迎的答案会更有趣。

“我失业了好几个月。等待着,希望有一天有人能雇用我,而不要求我接受白板编程。是的,这比水刑更糟糕。
7个月后,我意识到–没有其他选择。现在我可以在睡梦中白板编程。公司都在排队和我谈话。他们准备送花,甚至准备派司机来接我。 一切都没有改变”

  • Aravind Akshan,[未公开]的工程师经理

这个传说没有提供关于开发人员和工程师之间的区别的陈词滥调的回应,而是对整个面试过程进行了嘲笑。如果你展开这个帖子中的其他主题,你会看到一些关于软件工程师面试过程是否有缺陷的争论。

不过,严肃地说,关于经济学的回答是值得讨论的。工作薪酬在很大程度上受到供求关系的影响。虽然对软件工程师的需求非常大,但现在仅在美国就有440万软件开发人员[编辑,原句是 “440万软件工程师”]。换句话说,软件工程师并不是极其稀缺的,计算机科学学位也不是一些人所期望的金字招牌。我认为,计算机科学的普及和编码训练营的激增,证明了这一领域已被接受的程度。

一个可能发现很难找到软件工程工作的其他可能原因:

  • 在我面试过的大多数公司里,至少需要三次面试才能得到一份工作。这一点在BBC的一篇文章中得到了很好的阐述
  • 由于缺乏更好的描述,技术编码面试是 “他们自己的游戏”。你通常有30分钟到1小时的时间来解决编码问题,评估你对数据结构和算法的理解。无论你是否认为这是一个好的测试,支持者和批评者都会同意,这不是你在现场实际做的事情–这只是一个测试。
  • 软件是广泛的。你可以是一个前端开发人员,把线框变成一个网络应用程序。你可以是一个与硬件紧密合作的后端工程师。你可以在一家治疗癌症的公司工作。你也可以在一家导致癌症的公司工作。你可能拥有的领域和角色多得令人难以置信,因此我们面临着与约会时相同的情景。公司会寻找一个非常、非常具体的候选人,有一套确切的技能,有时事情就是不成功的。
  • 我可能是历史上第一个敢于抱怨的人,但在编码面试中,你通常可以选择语言。这样做的一个缺点是,面试你的工程师,如果他/她是人类,不会熟悉所有的语言。如果你用他们不熟悉的语言面试,并有任何问题,他们可能无法帮助你。

工作面试过程中要注意什么?

有很多 "开放策略 "你可以遵循。也许一家公司的人力资源部门首先在LinkedIn上联系你;也许你选择信任第三方招聘人员。你对第三方招聘人员(也被称为 “猎头”)的看法可能有所不同,但直截了当地说,他们有如此糟糕的声誉是有原因的。他们中的一些人真的非常非常糟糕。坏人会试图为你安排一个不合适的公司,他们会向任何人和每个人 "发射 "请求,而且他们不会把你的最佳利益放在心上。他们想从安排中得到的是钱。
…虽然,公平地说,这可能也是你想要的。
也许你决定找一个朋友代替。也许你直接与人力资源部门联系,或者你决定做其他无数人正在做的事情,只是尝试用你的方式来获得成功。

与HR的初次通话

现在有很多科技公司在努力做,其中一些是很随意的。有一家公司是通过小型无人机运送医疗用品。一家公司试图通过让客户每月支付数百美元看更多医生来颠覆医疗保健。我曾经接触过的最奇怪的公司是建立一个约会应用程序…好像人们会为一个你向右滑动以确定潜在匹配的应用程序付费一样。

我想知道他们发生了什么?

  • 他们会问 “现在是否还是个好时机”。如果不是好时机,那么你可能不应该接。我错过了一次初次面试,因为我不得不去疏通一个厕所
  • 他们会要求你谈谈自己的情况
  • 他们可能会问你在你的下一个角色中寻找什么。一个好的答案可能是 "像你的公司"的一些变换说话。我曾经这样回答,说我真正想做的是不在某个特定行业工作(为了举例,我们假设是汽车行业)。他们说,他们最近获得了一份与汽车行业的合同。这是我所经历的最尴尬的面试之一
  • 他们会非常努力地推销他们的公司
  • 他们可能会问一些非常有趣的问题,比如你最喜欢的项目是什么,或者你的价值观是什么,但我发现这很罕见

看起来最初的HR电话只是一种形式,但实际上它可能是第一道关卡。HR可以询问你的技能组合,记下一些笔记,然后决定你是否适合。

自动编码测试

这是我最不喜欢的面试环节。一些公司让你参加自动编码测试,以进入下一个步骤。我认为,如果公司让你在申请后立即做这个测试,然后如果你通过了,就把你转给人力资源部门,这就更合理了。他们可以让人力资源部门看一下你的简历,如果他们认为你符合条件,就给你发一个链接,如果你通过了,就和他们进行30分钟的谈话。

编程面试

  • 这确实是最重要的。关于这一步,他们已经写了整本书。
    选择一种你熟悉的编程语言。大多数公司给你一个选择,考虑到你可以使用公司里没人使用的晦涩语言,这对我来说有点疯狂…我从来没有,但在理论上,你可以
  • 是一个非常好的指南
  • 个资源比柯基犬玛克辛还要可爱
  • 在遇到问题时,你确实可以在脑海中循环使用常见的数据结构,而且哈希图通常是解决方案的一部分,但不要凭空拉出一个哈希图。我的第一次编码面试是这样的

面试官:我想让你写一个压缩的字符串算法。例如,你可以把aaaabbc变成a4b2c1。你可以把a变成a1
我:立即开始编码,我们使用哈希图。
面试官:呃…那你觉得你…。
我:好的,我们已经做了一个哈希图。现在我们来做一些打印语句

hashmap是一个有用的工具,特别是在这些方面,但这不是一个RPG。你不会立即召唤一个hashmap,然后应付所有的面试,直到你最终遇到可以对抗hashmap的老板(“哦不,我想我最好拿出我的终极招数:链接列表!”)。
在一些leetcode-esque问题中,你可以用一个数组来代替hashmap(你可以通过减去’a’来使用大小26)。不要什么都依赖这个。一些最简单的面试问题涉及到使用hashmap来计数,然后从那里开始…你不能只使用一个真正的大数组而不引起人们的注意。

  • 了解一些有用的调用,如std::sort或其他语言中的任何等同物,会有帮助。

  • 最好的面试经验就像结对编程一样,你们两个人似乎真的在互相交流想法。最糟糕的面试只是让对方默默地评判你。

终面

这是事情变得有点…硬核的部分。
你可能在同一天有四个面试。也许一个是行为面试,也许两个是技术面试,但比你以前见过的要难…也许还有一个是系统设计。

积极的态度

一个明智的、成熟的人,会把软件工程师的面试过程当作一种纯粹的学习经历。他或她会喜欢为了研究而了解外面的公司,与关键人物互动,并掌握白板的艺术。这将只是像一个有趣的游戏。
我不这么想,但一个成熟的人就会这么想。照我说的做,而不是照我做的做。

译者注:大部分翻译powered by DeepL

原文链接:https://betterprogramming.pub/if-software-engineering-is-in-demand-why-is-it-so-hard-to-get-a-software-engineering-job-c043a964e463

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值