你在找工作吗?初级开发者应该注意资深开发者David Eastman的以下面试建议。
译自 Job Interview Advice for Junior Developers,作者 David Eastman 一直是伦敦的专业软件开发人员,在甲骨文公司和英国电信工作,并且是一个咨询师,帮助团队以更敏捷的方式工作。他写了一本关于用户界面设计的书,并且一直在撰写技术文章......
我知道很多高级开发人员会随着当前一轮裁员而离开,但对于缺乏经验的开发人员来说,这也是进入被破坏空间的一个好时机。由于初级开发人员被视为风险更大,所以面试的时候会有略微更多的大象陷阱。高级开发人员可以依靠原始经验和口碑。初级人员最大的感知问题是他们无法对自己的经验建立情景,这种情况随着几年的时间自然会消失。所以这篇文章更多地关注初级人员在追逐软件工程和类似角色时应该寻找什么。
与大多数后期职业生涯的人一样,我也站在路线的两边,无论是横跨城市查找测试中缺失的分号,组织面试还是浏览简历。尽管目的没有改变,但该行业现在波动更大。我不打算谈论明显的事情。是的,如果你不定期按需编写代码,可以做一些代码段,当然,要对你要见的公司或创业公司做功课。找出面试过程有多少个阶段,并为行为和技术部分做准备。
获得面试的机会本身就会涉及时机上的运气——你可以通过花更多时间推销自己来提高这种运气。但请记住:随着公司现在的转型,具有基本功底的初级开发人员似乎比价格更高的高级开发人员(其技能可能到下一年不再是核心领域)更值得投资。如果你完全涉足另一个行业,那么你也可能会更有趣。使用你的简历来描绘一个吸引人的自我画像。
不要过度解读任何一次面试程序——它很可能是新的,而进行面试的人可能不太熟悉它。一般来说,面试官对你表达你所知道的感兴趣,而不是你不知道的。我确实遇到过这方面的硬性例外,但这已超出你的控制范围。有价值的是你将所做的与它提供的效用区分开来的能力。
对不起,如果这听起来像尼采,但自我认识是至关重要的。考虑一下你在整个开发领域获得的经验——从设计、计划会议、源代码、存储库使用、测试、构建脚本、部署和可观察性。你很可能会被邀请评论或质疑公司使用的流程。一方面,如果你认为自己接触过比他们使用的更详细的东西,那么就这么说。另一方面,对你不知道但想深入了解的领域表现出兴趣。
从根本上讲,每个人都意识到大多数编码测试过于人为,无法作为可靠的指导。但对于寻找人才的团队来说,它们确实起到了有价值的过滤作用。优秀的管理人员可以从你谈论问题的方式中捕捉到你的经验水平,而无需看到你编写代码。实际的热情总是受欢迎的;严肃的愤世嫉俗也可能是可以接受的——要知道你的受众。如果你必须在面试前完成编码练习,那么你应该期望讨论你是如何完成它的。你是追求简单还是效率?如果你再次被要求编写 Fizzbuzz,请不要烦躁——筛选就是筛选。遵守并继续前进。
我知道候选人确实会抱怨他们的开源工作经验常常被低估;这仅仅反映了每个人对工作的不同态度。将工作以外完成的编码视为你总体经验的一部分,而不是一个有价值的子部分,这可能更明智。
真实世界的数字和估计通常用于考察申请人。我记得一家咨询公司让每个人都做了一个完整的理解测试,部分是为了检查英语水平,但也部分是为了确保候选人对基本商业术语的理解。如果你阅读《经济学人》杂志之类的东西,你会掌握一种清晰的方式来理解和表达商业术语,而无需牺牲你的灵魂给Mammon。你受雇不是为了编写代码,你确实需要在任何层次的就业中将其与业务联系起来。关于“有多少棵树”之类的常见估算问题完全旨在确保你能够应用结构化推理并认识到自己答案的有效性。当然,问题很可能与工程问题更加相关。
类似地,尝试对你参与的项目所带来的财务收益有些了解。我知道对一些人来说这感觉很恶心,而且通常完全模糊。只要抛出一些坚实的事实和数据即可。
记住你正在与之交谈的受众。人力资源人员与开发人员的坐在他们旁边的面试官截然不同。你不会与任何人力资源部门的人一起工作,但他们是守门人。在小公司中,可能会有一个经理角色和一个开发人员。体恤他们的观点如何有所不同并无妨害。
确保你熟悉敏捷开发周期的所有部分,而不仅仅是你团队在最后一个项目中碰巧采用的那些部分。我从未使用过拉取请求,但在很多地方它们是必不可少的。同样的代码审查。回顾对你来说可能似乎毫无意义,但你还能怎么改进一个流程?不要认为你的团队所谓的 DevOps 或 Kanban 与其他每个人所做的完全相同。面试中最大的绊脚石之一(我认为是最常见的)是当面试者对面试官碰巧认为重要的某个开发方面缺乏热情时。你对主流流程的否定态度尖锐,尤其是在没有经验为你背书的情况下,很有可能被视为僵化的迹象。
较大的公司通常会使用一些它们认为比你更不可移动的较旧技术,或者它们可能认为转向更现代的东西不会产生影响。典型的情况是管理不善的关系数据库或生锈的微软解决方案。这可能会让你很烦躁,但它实际上可能是次要问题。
对单一语言的独特掌握通常被认为有点奇怪,特别是如果你对任何其他语言都显示出很少的热情。即使公司声明他们“只使用 Rust”,这并不意味着面试你的人只使用过 Rust,或者认为它很奇妙。至少要了解你首选工具的优缺点;尽管表明你是一个粉丝,但不要成为一个教徒。
当面试官询问你将如何解决一个问题时,不要忘记你将在一个团队中工作或与一个团队合作,并可能在一个公司矩阵中。所以“我会去做这个”的反应在理论上是可以的,这当然是星际迷航号上的情况。但在一个实际的公司中,你接受任务,与产品经理交谈,或者至少在 Slack 上发起一个线程。公司是否真的允许你立即访问那些你认为需要用来解决问题的工具?
面试官经常会认识你工作过的地方的某个人;不要害怕就共同的同事联系打个招呼。即使是关于人的最微小的细节也可以满足相当多的信任问题——这证明你曾在那里并意识到。提出一个略微尖锐的意见可能不明智,但它证明你可以变得脆弱,而且能分享一点。如果你对面试官的好朋友无礼,他们更有可能直接笑掉——假装你无法记住某人可能看起来很尊重,但也有点封闭。你真的在注意你周围的人吗?
面试是一个非常好的时机,可以检查公司的文化以及工作。请记住,项目是临时的,而文化可能不会改变。不要害怕提出像“我是穆斯林,我可以在哪里祈祷?”或做出“我注意到工作场所非常安静”这样的观察。是的,面试官喜欢雇佣与自己相似的人,但他们会感谢你向他们展示任何盲点。远程与办公室的辩论对大多数组织而言都是正在进行的,所以不要认为当前的策略在这个问题上有某种最后的话语权。
最后,把自己想象成一艘海盗船上的潜在船员;你做过一些升起主桅帆,开炮和检查索具的工作。如果你能够表现出你仍然对意外的战斗感兴趣,不晕船,并且与鹦鹉没有问题,那么你可能会有机会找到一些埋藏的宝藏。
准备进入初级开发人员职业生涯的下一阶段了吗?通过兼职初级开发人员的工作获得成长!