你好 [已编辑]!你询问了一位朋友的儿子,他最近毕业,正在寻找软件开发方面的工作,但遇到了困难。
我认为找工作有三个关键方面:1)知道在哪里申请,2)获得面试机会,以及 3)通过面试。
知道在哪里申请
我认为公司可以分为三种类型:1)本地(非风险投资支持、非金融)和上市的非科技公司;2)风险投资支持的初创公司和上市科技公司;3)大型科技公司和金融公司。
第三类公司薪酬最高(估计为前95%),申请人数也最多。人人都想得到这些工作。令人惊讶的是,这些公司在面试合格申请人方面非常公平。他们有能力也有需要面试大量求职者。然而,面试难度极高。
第二类公司薪资待遇非常优厚(估计在前80%的水平)。它们的申请人数比第三类公司少。面试难度不算太高,但很难脱颖而出。而且,公司也没有足够的面试机会来面面俱到地面试每一位合格的申请人。
第一类公司的薪资水平处于中位数。合格的应聘者寥寥无几。因此,脱颖而出并不难。
第三类公司是计算机科学系试图将毕业生输送到的目标企业。其中一部分学生会成功入职。
我认为第一类和第二类公司各占所有就业岗位的45%,而第三类公司占剩余的10%。也许我的想法不对。
我的路
我的职业生涯始于一些第一类公司,这些公司是我通过 Craigslist、Built In(纽约)或者 Hacker News 的每月招聘帖找到的。面试最多持续几个小时,内容也相当简单,比如展示一些知识或者我分享一些代码片段。
我最终转向了第二类公司,这才是让我感觉最自在的领域。我以前经常通过 Hacker News 的招聘板块了解这些公司。面试流程虽然有好几个阶段,但强度并不算特别高。你也不需要专门刷 LeetCode 才能通过面试。现在,我更喜欢自己关注那些感兴趣的公司,观察它们在博客和推特上发布的消息以及它们的招聘情况。
我从来没有耐心去应付三类公司冗长的面试,也没有毅力坚持刷 LeetCode,但我听说有些人能在 FANG 公司工作。对冲基金(三类公司的一部分)似乎不接受没有大学学位的人,除非他们真的非常优秀(而我显然不是),所以我从来没考虑过这些。
从某个地方开始
你想成为一名软件开发人员。但科技公司也一直在寻找合格的技术支持和质量保证人员。对很多人来说(至少对我来说是这样),早期最重要的是获得一份收入。一旦你有了收入,你就可以更挑剔,考虑更长远的未来。我经常看到公司在员工入职一年或几年后,将技术支持和质量保证人员调到开发岗位。这条路似乎被低估了,或者至少值得考虑。
获得面试机会
职业生涯初期,获得面试机会更像是一场概率游戏。在第一类公司,如果你能展现基本能力(例如,如果你是自学成才,可以提供实际使用的 GitHub 代码片段或计算机科学学位),你很可能就能获得面试机会。在第二类公司,你需要提交更多申请材料。奇怪的是,第三类公司似乎对每个人都更平等一些,会面试所有人。但这过程相当漫长。因此,如果你能通过多轮面试(而每一轮面试本身也需要大量的准备工作),那么你需要做好心理准备,在一家公司,整个面试过程可能需要几个月的时间。
一般来说,我估计即使是经验丰富、能力出众的开发人员,也应该做好最坏的打算,平均需要 6-12 个月才能找到新工作。
所以,在第一类公司,只要能力够强就行;在第三类公司,人人都有面试机会。只有在第二类公司,你才需要脱颖而出。那么,我们来谈谈哪些特质能让你脱颖而出。
你写博客文章
我认为写作本身就是一种享受(它能帮助你建立对概念的信心,也能帮助你提升沟通技巧)。说到面试,就我的经验而言,即使是写一篇热门博客文章,也很少会收到面试邀请。不过,一旦你开始撰写一些小众主题的文章(例如,Postgres 的开发原理),你可能会更频繁地收到面试邀请。但我认为这种情况相对罕见,通常只会发生在那些已经在业内摸爬滚打了一段时间的人身上。
但拥有一个活跃的博客无疑表明你充满热情。当有很多优秀的候选人时,如果其中一人拥有一个活跃的博客,这可能会脱颖而出。
你做了一些副业项目
做副业项目绝对有助于提升技能。我觉得它和写作类似,本身就是一件非常有益的事情。不过,因为做了副业项目就获得面试机会的情况并不常见。
然而,就像写作一样,拥有副业项目可能会使能力相近的开发者之间产生差异,因为它展现了你的热情。
你为开源软件做贡献。
如果是像 Linux、Postgres、Kubernetes、LLVM 等行业广泛使用的主流开源软件,即使贡献不大,只要持续贡献,就能脱颖而出。但如果贡献太小,比如只修改一两个项目的文档,我认为这不足以让你脱颖而出,也不会成为公司邀请你面试的理由。
然而,几乎每个开源项目背后都有一家或多家厂商,他们非常需要了解项目运作方式的开发者。如果你有为某个开源项目做贡献的习惯,那么你很可能会被邀请到那些依赖或销售项目支持的厂商那里面试。
但由于这涉及到某种模式,所以你必须这样做好几年,公司才会注意到。
你运营一个社区
如果你组织读书会或聚会小组,我认为这是一种相当不错的脱颖而出的方式,因为它展现了你的领导能力。但就像开源软件贡献一样,如果你能展示多年来的组织经验,影响力会更大。
你参与到一个社区中
我认为这是脱颖而出的好方法,因为持续参与社群活动能够展现你的热情。指望参加一次活动就能找到工作是不现实的。这是你建立人脉的机会,这些关系可能会对你未来的发展有所帮助。最好是在你不需要从对方那里得到任何好处的时候建立人脉。
你读书、看讲座、获得证书
我觉得这篇文章并不能让你脱颖而出。它太难理解其含义或你从中获得了什么。我认为每个人都应该为了阅读本身而阅读。它或许能帮助你建立自信,这当然很好。但我认为它不会在能力相近的候选人之间起到决定性作用。
你获得了硕士学位
我并不认为这能让你脱颖而出,但确实能让你有更多时间寻找实习机会。更多的行业经验通常对你在行业内的发展大有裨益。
通过面试
除了众多可以帮助你学习常见面试问题和模式的书籍和应用程序之外,我没有什么要补充的了。
话虽如此,我个人更喜欢用这种方式准备面试,而不是通过面试书籍或应用程序,而是不断地编写代码,不断提升自己对整个技术栈各个方面的信心。做你喜欢的事就好。
回顾
与社区建立良好关系有助于你未来的职业发展。在职业生涯初期,你需要考虑不同层级的公司和不同的职位。通常来说,在公司内部调换职位比同时面试和更换公司要容易得多。
有很多活动,包括业余项目和写作,都能迅速提升你的自信心。一旦获得面试机会,拥有丰富的知识和自信至关重要。有些活动或许能让你在某些方面脱颖而出。但更重要的是,你可以持之以恒地去做很多事情,从而在未来几年里提升自己的就业竞争力。
我的回答是基于个人经验的概括性总结。我所说的每一句话都有例外情况,但我希望这些概括性总结仍然具有一定的参考价值。
祝你朋友的儿子好运!
菲尔
我写了一篇博客文章来回答一位朋友的问题,他问我如何在职业生涯早期作为一名开发人员脱颖而出。
很想听听大家的想法。 pic.twitter.com/RV2jTkdbcX
——菲尔·伊顿(@eatonphil) 2026年1月4日
原文: http://notes.eatonphil.com/2026-01-03-distinguishing-yourself.html