在面试中要求查看雇主的代码/数据库

时间:2008-10-02 14:11:27

标签: database

我被要求在面试中编写代码/设计内容。有时甚至提供代码示例。非常合理也非常明智(当这不会发生时总是感到惊讶)

我有一年左右的工作回到那里代码非常糟糕我不会接受这份工作,如果我看到了我必须提前处理的混乱。而且我不能告诉你我有多少可怕的数据库。

我是不可能要求他们提供代码示例并查看他们的数据库设计?假设我很乐意签署保密协议,我觉得在没有检查我正在使用的代码库或数据库的情况下找工作会很疯狂。

有人这样做过吗?

更新

如果情况进展顺利,我会在采访过程中稍后问这个问题,我觉得即将提出要约。

这也是在小型商店或小型项目中工作的背景,因为我倾向于避免使用诸如“让开发人员离开地面”这样的短语的地方

15 个答案:

答案 0 :(得分:19)

你绝对可以问。答案可能是“不”,但没有人应该认为这是一个糟糕或不恰当的问题。

如果他们不会向您显示代码,那么在您决定是否接受优惠时,一定要考虑到这一点。我认为至少有以下一点是正确的:

  • 代码非常可怕,以至于他们知道你会疯狂地逃跑。
  • 公司有一种超级秘密的信任 - 没有人的文化(我讨厌)。
  • 该公司认为他们拥有如此惊人的代码,只需看一眼它就会让你成为超级巨星的竞争对手。 (换句话说,他们是自欺欺人的蠢货。)
  • 他们有明显的安全漏洞,希望保密。
  • 面试你的人不知道如何自己获取代码。 (在这种情况下,你不是在与合适的人交谈。)

答案 1 :(得分:16)

我更感兴趣的是看到公司的系统 - 即测试框架,发布过程,autobuild ......这些存在或不存在会告诉我超过几百行代码。

答案 2 :(得分:15)

我确实问过:“我能看到一些代码并与在这里工作的程序员交谈吗?”

雇主回答:“当然!来吧,您可以直接与我们信息系统的首席程序员交谈!”

多么荣幸!

  • 他们向我展示了概念文件
  • 我可以和首席程序员谈谈
  • 他们向我展示了一个非常新项目的一小部分:“这只是一个原型,direct3d非常粗略,这就是为什么这段代码太乱了”

事实证明:

  • 首席程序员离开我到达的那天
  • 他带头的软件是一团糟
  • 不知何故,我最终花费了50%的时间来对抗混乱

答案 3 :(得分:8)

我们采访过的候选人都没有问过这个问题;然而,他们中的许多人都是公司的合作社/实习生,所以他们熟悉我们的代码......

话虽如此,我们极不可能向任何候选人展示我们的代码,无论NDA如何。我很乐意回答有关我们使用什么技术,我们用于修订的系统,实践等等的问题。但实际的代码呢?否。

同样在一个足够大的系统中(就像我们的那样),有人可以向你展示“最好的”代码......你会在哪里开始:)至于数据库设计......我有两家公司曾经工作过的大型数据库(大学,企业公司)......所以这也无济于事。

答案 4 :(得分:7)

我在采访Xerox PARC(一家初创公司)和雅虎时已经问过这个问题。

在PARC,他们坐在一个工作站上,如果雇用了我接管的代码,超短暂地浏览了代码库的结构,让我一个人呆了大约20分钟。这足以让我知道我是否能够继续使用它,尽管我已经喜欢了更多的时间,比如一小时。后来我询问了一个看起来很可疑的设计决定,我们聊了一下设计和风格。这不只是告诉我有关这份工作的更多信息,而是告诉他们更多关于 me :我是自上而下或自下而上探索他们的代码,我选择了什么关于或询问等等。周围都很有价值。

在创业时,他们在另一天设立了一个单独的会议,引入了代码的作者(他不是雇员);我们坐在一台笔记本电脑上,一起过去。对他们来说这是一个不寻常的要求,我想我必须签署一份新的保密协议。这再一次是值得的:我之前的采访并没有真正理解这种花哨的人工智能语言是什么,或者他们希望我用它做些什么,并且坐下来用一些具体的代码吹走了大量的迷雾。 / p>

在雅虎,我没有看到任何东西;我不记得他们的反应是什么。如果我看到我最终处理的代码,我可能会有第二个想法(尽管最终可以解决)。 (我确实看到的上述两个代码库看起来都更好; PARC的代码库后来开源了。)

在所有这些情况下,我与他们共享了一些我自己的代码。

答案 5 :(得分:5)

如果您打算这样做,那么我认为您需要给他们一些警告,以便他们可以准备NDA并获得适当的环境设置,您可以在其中看到它。还要准备好花一点时间来理解为什么代码的形状。

如果你在第一次面试时出现并说,对,我可以看到代码,除了极少数人之外,所有人都会拒绝。并不一定是因为他们是邪恶的而且不想告诉你,但因为它并不像说“是”那么简单。

根据我作为大型软件公司的招聘人员的经验,我们需要花费大量时间来为任何候选人披露足够的代码细节和内部开发的框架 - 无论多么明亮 - 能够创造一个有意义的判断其利弊。如果我们认真雇用他们,我们只会考虑这样做。

如果我被问到这个问题我会说是的,请再来一次,我们会安排一些事情。我会让一个值得信赖的开发人员在场外让他们带一台笔记本电脑参加下一次面试并展示一些代码。

现实几乎是任何一个合理规模的软件项目,并且已存在多个版本,其中会有一些可怕的可怕垃圾。

答案 6 :(得分:4)

与其他一些回复相似,我从来没有让候选人要求查看我们的代码。即使他们这样做我也非常小心这样做,而且很可能不会这样做。正如Swati所提到的那样,几乎任何非平凡的系统都会有一些看起来很好的部分,所以即使看到这些代码也无济于事。

比查看实际代码更好的是Joel Test。基本上你可以向雇主询问是或否问题。答案越多,预计工作环境就越好。这显然不是一个硬性和快速的“规则”,但它似乎表明那些认真对待代码(和编码员)的公司。

答案 7 :(得分:3)

我无法想到没有展示某些课程或谈论他们正在使用的架构的原因。从我的角度来看,就像要求他们告诉你你要去哪里工作(房间,桌子,椅子,队友......)。 无论如何,要求它会告诉他们你对最佳实践感兴趣,而且你并不急于以任何代价找工作,也不知道这会如何伤害。

答案 8 :(得分:3)

转到开源项目。在那里,您无需要求查看代码的许可。

答案 9 :(得分:2)

提出这个问题并不会有什么坏处,这是一个非常好的主意,我将在我的问题清单中加入问问雇主。

答案 10 :(得分:2)

一个有趣的想法,但我不知道会有多少公司会这样做。我知道我现在工作的地方不能这样做。

我认为你将遇到的最大问题是我发现许多人对不喜欢他们的代码的人冒犯了。就像批评某人的治疗师一样,成为局外人并做这件事并不是一个好主意。看到代码然后没有接受这份工作可能会给你一个声名,说你傲慢或不够好,无法处理代码,这就是你没有接受这份工作的原因。它可能会让你免于获得你不想要的工作,但它可能会给你一个负面的声誉。我住在一个相当大的城市,但IT人员仍然彼此了解并传播信息。在我们这个领域的人有自我,而且更容易把别人的声誉贬低,而不是承认你写的代码不符合标准。

答案 11 :(得分:1)

即使他们向您展示了一些代码,您是否足以对您将花费时间的代码质量做出粗略的结论?例如,在我之前的地方,他们的一个产品是一个大型的电子银行中间件应用程序。该应用程序的核心是C ++,并以很好的方式设计和编写。然而,扩展(其中包括大部分应用程序及其各种不同的版本),也是C ++中的,大部分由经验不足且知识渊博的开发人员编写,是一堆蹩脚的代码(其中我不得不修理,一起工作或者从头开始写作)一起拍打以某种方式工作。如果我要求他们在访谈期间向我展示代码片段,他们向我展示了一些核心内容(扩展代码实际上主要包含客户端特定的业务逻辑,所以没有它就没有多大意义业务领域知识等),我认为代码的整体质量是好的(事情并非完全如此)。

答案 12 :(得分:1)

比起要求代码片段更重要的是要问他们使用哪种源代码控制产品(逃避回答“Visual SourceSafe”的公司)以及他们使用哪种方法:“敏捷”或“ Scrum“发出正面信号,CMMI通常意味着公司喜欢官僚程序,如果他们给你一个”嗯?“然后你被警告了;)

答案 13 :(得分:0)

我认为这是个好主意;然而,作为一个雇主,我会犹豫不决 - 即使有了NDA - 提供一份真实的工作代码的面试候选人样本,除非我非常确定我想雇用这个人。

答案 14 :(得分:0)

问题是他们会向你显示一点点代码,但他们的每个程序员都会以不同的方式编写代码。你不幸的是必须处理编写良好的代码库。

要求查看他们的编码标准及其执行方式更有可能被使用。