我对另一个问题的回答感到困惑,即您不应该将代码组合带到编程工作面试中。
为什么不呢?其他人推荐这个;它甚至是Peopleware中的“经典”故事之一:
“在没有先看他表演的情况下考虑雇佣一个杂耍演员是很可笑的。这只是常识。然而,当你开始雇佣工程师、设计师、程序员或团队经理时,常识规则通常会被搁置。您不会要求查看设计或程序或任何东西。其实面试就是说说而已。”</p>
那么,什么给了?当你带着代码组合出现时,有什么“战争故事”吗?或者当你采访了一个有过的候选人时?
我对另一个问题的回答感到困惑,即您不应该将代码组合带到编程工作面试中。
为什么不呢?其他人推荐这个;它甚至是Peopleware中的“经典”故事之一:
“在没有先看他表演的情况下考虑雇佣一个杂耍演员是很可笑的。这只是常识。然而,当你开始雇佣工程师、设计师、程序员或团队经理时,常识规则通常会被搁置。您不会要求查看设计或程序或任何东西。其实面试就是说说而已。”</p>
那么,什么给了?当你带着代码组合出现时,有什么“战争故事”吗?或者当你采访了一个有过的候选人时?
这些年来我做了很多采访,但我从来没有要求或被展示过任何代码。这不是我要找的。首先,我正在尝试确定您是否可以在团队中合作。我也很想看看你是否了解如何处理就业所暗示的所有这些妥协。对于开发人员,我希望看到你处理问题的方式,以及你在挫折后坚持不懈的顽强。
显然,我想了解一下您对编程艺术的理解程度。如果你有一项特殊技能,我会问你一些技术问题。
我永远不想看到你写的代码。我怎么能确定它是你的,没有帮助?我怎么能在面试的时候给它足够的时间去审视和欣赏它的细枝末节呢?我怎么知道你写的时间?
在平静中编写程序与在团队中工作、在压力下、不得不做出妥协、合作并决定将资源集中在哪里的技能之间存在天壤之别。
我对这个问题的看法是,除非明确要求,否则您无需将代码组合带到面试中。它只是作为面试官可能计划的面试流程的中断。此外,你能提供什么证据证明你作品集中的代码确实是你自己的,而不是从互联网上下载的或从同事那里获取的?最后,如果您以前的代码都与新情况无关,那么投资组合有什么用处?
此外,许多公司将其员工的代码视为受合法版权保护。毕竟,您将分享您之前公司创建的软件的内部详细信息,即使您确实是自己编写的。
面试官通常喜欢强调潜在候选人在新公司环境中的适应能力以及他/她对他们所从事的技术的熟悉程度。许多面试官实际上可能会要求您编写一个简短的代码片段来展示您的逻辑思维以及您如何处理一般问题。
我从来没有带过代码去面试,也从来没有人在面试时带过代码。如果我想查看代码示例,我会要求候选人在面试前提交它,这样我就有足够的时间来检查它。如果亲自交给我一个代码示例,我将没有足够的时间去了解它的实质。
如果没有要求,您是否应该提供代码示例?我说不,原因如下:当我要求你提供代码示例时,这是一个测试,我想看看你是否失败。在查看代码示例后,我给出了两种可能的结果:
良好的代码示例:不确定(即,如果您是 HIRE,其他因素将决定 100%)
糟糕的代码示例:不雇用
所以,既然你知道了,如果我没有要求你自愿参加那个考试,你愿意吗?
请记住,您作为公司员工创建的代码很可能是该公司的财产 - 这是您去参加工作面试时不要将其放在口袋里的闪存驱动器上的一个非常充分的理由.
此外,如果我对你的编码方式感兴趣,我会要求你在面试时在我面前这样做,而不是审查一些罐头食品。
我在一次工作面试中被要求提供代码。最安全的做法可能是随身携带一些示例代码/组合,因此至少在出现提示时您可以展示一些东西。
在我的求职面试中,没有提到“为我编写代码”。更像,我们有这个问题,你会如何解决它。(通常例如使用设计模式)
tl;dr:我总是把代码带到面试中。那里有足够多有趣的问题,你可以快速写出一些有代表性的东西,然后把它塞进你的包里。
我的作品集包括我的简历、我的 CV(一种不同类型的文档)、重要的演示幻灯片(例如从 JavaOne 下载)、代码示例(在我自己的计算机上自行创建)、有趣的设计文档(例如,如果我必须重新做,我现在会怎么做),运行时图像(从发布站点下载)等。
永远不要在你的投资组合中放任何东西,甚至暗示你是以前雇主的财产或知识产权。
也就是说,进行公开演示的一大好处是您可以从发布网站下载屏幕截图。当然,您必须对出版实体给予适当的合理使用权。
综上所述,我采访了那些想在这里工作但没有随身携带代码示例的人。这主要是经验因素:他们中的许多人是应届毕业生。不过,我对经验丰富的专业人士的期望要高得多。我的过滤器也很厚:我们宁愿工作过度也不愿雇佣一个坏人。
工程师和程序员不必携带代码示例,因为他们已经面临技术面试。如果候选人知道他的东西,他就不会为这些问题而挣扎。没有机会伪造技术答案。候选人要么以前做过,要么没有做过。没有解释的余地。
我认为整个概念是优秀的管理者想看看你是否会思考。我被问到谜语,并被要求在面试中解决逻辑难题。我的代码可能被复制粘贴甚至被盗。
仅仅看到一个人所经历的步骤的过程,就会让你很好地了解他们解决问题的逻辑能力。
无论如何,只有当我喜欢这个人时,我才会要求提供代码。然后我希望它可以在公共存储库中的互联网某处可用。但是无论如何,到那时都会做出雇用/不雇用的决定。预先查看代码是没有用的,因为您永远无法确定它是由处理它的人编写的。
代码示例可能会让面试官“惊叹”,他们只是在寻找流行语和噱头,但受人尊敬的面试官会寻找解决问题的技能和即时推理的能力。大多数有趣的代码对于面试官来说太长而无法真正解释,并且可能会浪费掉。
也就是说,带上代码示例并不是一件坏事,只要你不把它们强加给面试官。将某些东西放在确实不能正确赞美您的好处的事情上只是一个糟糕的优先级。
任何重要的软件应用程序通常都是由整个团队制作的,乍一看还不够简单。第一次向局外人展示代码时,可能不容易查看整个解决方案/项目并清楚地区分其他人编写的代码。我怀疑面试官在实际面试期间没有时间慢慢阅读和研究你的代码,并试图理解你之前工作过的应用程序的低级架构和设计。如果您希望获得积分,请准备好进行耗时的演练。
在很多情况下,我们的工作让我们更有可能进入一个已经在运行的项目;维护/增强现有代码和应用程序,而不是从头开始编写“漂亮”的代码。我的编码贡献通常以部分形式交付,用于重构和修复既庞大又丑陋的现有代码库。这样的东西很难以闪闪发光的自豪感来展示。
此外,正如其他人所提到的,将以前组织的源代码公开会产生许多不良的法律影响。
当我希望了解受访者的编码风格时,面试可以包括一个课外开发练习。然后,受访者将提交练习内容以供日后阅读。但在面试环节本身,就是花时间去了解面试者的性格、热情、心理和思维模式、解决问题的能力等。
通过将代码带到面试中,您真的可以让自己和您的潜在雇主陷入困境。您工作的公司可能拥有您的部分/全部代码,如果他们发现他们将争取为他们的“损失”获得补偿。
另一次不好的是,如果新工作是与旧工作类似的角色或类似的公司。如果您跳槽并且曾经使用过您以前雇主的任何代码,那么以前的雇主可以有一个现场日,即使代码只是看了一眼然后收起来。
面试时你应该带的唯一类型的代码是 OSS 代码,即使这样,也只有当该代码实际上是在野外时。我有机会在我以前的所有雇主那里编写 GPL 代码(一些我最好的小型内部测试工具),但因为我们从未向任何人发布二进制文件,我们也没有义务发布源代码。在这种情况下,新雇主无权访问该来源,我无法向他们展示:(