在面试中询问关于产品的设计决策是否明智?[关闭]


51

我最近一直在考虑面试问题,并且一直在反思过去的糟糕面试经历。特别要注意的一点是,我曾问过访员,为什么团队选择在产品中使用Spring而不是EJB 3。面试官几乎撕开了我的脸,大喊:“因为Spring不是Java软件开发的全部和全部,您是否想要这份工作?”。对此,我告诉他,这可能不是我的工作,因此我立即退出了面试。

在面试开始时,我被告知公司的人员流动率很高,他们使用的产品最初是在Modula-3中创建的,然后移植到Perl,最后移植到Java。我收到了10页的技术问题手册,内容涉及Java,EJB,SQL和JDBC,还被问到有关我使用过的技术堆栈的问题。当提示您提出问题时,我觉得向他们询问他们的技术栈并获得合理的答案是合理的,而不是让面试官发火。

问题: 探讨采访中选择的架构是个好主意吗?如果没有,为什么?

从我自己的角度来看,面试是一个双向过程。如果面试官正在测试我的技术技能,我有权向他们提出相同的问题,以:

1)弄清楚他们对开发软件的看法和态度。2)确定他们的方法是否符合我对此类问题的处理方式。

生气的面试官可能没有很强的面试技巧,却忘记了面试是双向交流。如果有人问我这个问题,我会给出一个合理的答案,但我当然不会试图让受访者处于温和的屈服状态,即头在不说话的情况下上下摆动。


22
我从来没有做过,但是面试官的这种行为会遇到“对不起,您没有通过面试”,然后我离开了。
Blrfl 2011年

15
我认为您已经解释了为什么最好探讨结构选择。最好在从事新工作之前先找到这些东西。但是,在离开面试之前,我会先与人力资源人员交谈,以便他们知道您离开的原因。
Lou的

6
我的面试经验非常有限,通常我会在候选人成功与人力资源人员打交道之后再见候选人。一位候选人在面试中发起了一次架构讨论,他实际上确定了一些我们可以改进的方面。当他拿到第一张薪水时,他惊讶地发现在面试的几个小时中还包括第二张薪水。可悲的是,如果他调查了人力资源人员,我可能永远也不会见到他。
yannis 2011年

3
我可能不会问“为什么要在那上面使用它”。你就是不知道 相反,您可能只想问,“使用x语言背后的决定是什么?”
Matt

2
我认为故事中我最喜欢的部分是“何时提示您提问”。因此,他问您是否有任何问题,然后再炸毁?
2011年

Answers:


53

就个人而言,我发现采访人几乎和被采访者一样疲劳和压力。但这是因为我同意您的看法,面试过程是双向交流。

我不在乎你有多好,如果你不愿意在那里工作,我不想雇用你。那是一个昂贵的游戏。因此,我想回答您可能遇到的任何问题,并向您展示团队和产品,以便您做出明智的决定。

当我寻找工作时,我想和有这种态度的人一起工作。而且,即使我怀疑我知道问题的答案,我也会要求他们只是为了看到反应。侵略绝不是一个人适应情况的迹象。

我不是在桌子两边的面试中说谎,因为那时他们认为自己正在聘请不同的人/打算去其他地方工作。我期望采访另一边的人也能提供同样的回报。

不幸的是,这意味着我偶尔会遇到您所描述的采访。他们是可怕的经历吗?是。我是从那里出来的,确切地知道采访出错了吗?是。

但我是肯定,每一个可怕的经历会是相当差如果我得到了那份工作雇错了人?当然好。


12
我完全同意这一点,尤其是在桌子两边说实话的时候。您要做的最后一件事是卖出一张货物清单以面试候选人,并在充满不满情绪的环境中结束。
荒凉星球

3
地狱。吓坏了。是。
Andres Jaan Tack的

1
如果太累了,您面试太多了。在我的公司中,我们有30多名面试官,所以我们只能每两周左右进行一次面试,而如果我们太忙则根本没有面试。我喜欢面试。这是例行公事。
配置器

1
@configurator:不,不是我进行了太多采访,而是我发现一次采访很累。虽然,我性格内向,但这可能是其中的一部分。
pdr

16

是的,可以问您是否真的很好奇,答案是否重要。我认为询问表明您了解做事的方法不止一种,并且表明您对软件的编写方式感兴趣。

话虽如此,您在表达问题的方式时必须非常小心,并在继续对话时要倍加小心。挑战他们的决定很容易。您想要的最后一件事是让面试官相信您认为自己比他们聪明。如果您真的好奇,请询问。如果您认为他们的选择不正确,请闭嘴。

如果我一直处于问题中所描述的情况,那么我可能会说“哦,是的,我同意弹簧绝对不是解决所有问题的正确方法。”我一直在寻找如何选择正确工具的见解”。(尽管,您的问题很奇怪-您问他们为什么选择春天,他们之所以选择春天,是因为这不是全部结束吗?)


“很容易遇到挑战他们的决定”-正是我在面试后的想法,但这是一个简单的技术问题,我以礼貌的方式表述。我只是很好奇,为什么他们选择技术x而不是技术y。技术面试(以我的经验)总是尝试向面试官展示您的分析能力以及您如何解决问题。为什么有人会认为这是一条单向街,让我质疑他的沟通技巧。
荒凉星球

3
您还需要考虑您的个性。如果您是一个对其他人的决定提出质疑/挑战的同事,那么最好在面试过程中找出您未来的同事对这种事情的反应。有些文化会鼓励意见分歧,而另一些文化不会鼓励意见分歧,作为受访者,我想知道这种动态如何产生作用。
史蒂夫·杰克逊

23
您应该能够问任何想要的问题,而不会使面试官大喊大叫并且不为所动。您真的要在这个人的领导下工作吗?走出去而不会动摇脑袋给我留下深刻的印象,但是走走是在这种情况下唯一的正确选择。
kirk.burleson 2011年

1
我想在那个人的领导下工作吗?除非我快要让我的孩子无家可归。但这一点无关紧要-问题不是“您如何处理一个混蛋的面试官?”,而是“询问设计决策是否明智?”。即使面试官是一个混蛋,也有一些方法可以处理这种情况。
布莱恩·奥克利

@BryanOakley-很高兴有人发现,这是问题中的错字。我已经改写了它,这样才有意义。大约在2006年,当时EJB 3仍处于起步阶段,大多数开发人员对规范驱动的EJB 2的问题颇为原谅,并选择保留社区驱动的Spring框架。这是问题背后的道理,这是我所面对的一家与现状不符的公司,我很好奇为什么。我希望在回答中能有一些智慧,不要让我的脸庞掉下来。
荒凉星球

15

作为经常面试人的人,我个人欢迎讨论为什么要做出特定的技术或设计选择,如果我们拥有丰富的资源或开始一个新项目,我们现在会做些不同的事情。通常,我会把它看作是一个在乎自己工艺的人的标志,除非他们的教条与我们的教条不兼容,否则我可能会比那些只熟练地回答技术问题的人给候选人更高的评价。

我目前正在为一个客户开展项目,该项目具有一些善意却执行不善的架构决策的遗产,并且那些表达对世界现状和我们前进道路的好奇心的候选人通常是我们想要与之合作的人的类型。我们希望能够对我们团队的设计和实施决策进行适当的尽职调查和确认的人员。我们通常珍视那些将我们没有或没有的东西带到餐桌上的人。

当我成为面试的候选人时,如果这些类型的讨论是一个不好的信号,我会表现出敌意或防御的迹象,因为一个不具备自我检查能力的组织通常也处于技术和过程的泥潭中,没有能力,也可能不愿意摆脱困境。如果我看不到现有团队不断进步的动力,那么我很可能不会在那里感到高兴。

他曾经与Oracle销售人员共眠,并决定所有将来的开发将使用Java 1.4 Web服务,Oracle ERP和Borland C ++前端(主要使用已停产的第三方GUI组件)完成,我们宁愿每月花费60,000美元堵塞漏洞以保持客户从跳船开始,而不是重新考虑任何决定并进行永久性改进,如果幸运的话,这些改进可能会带来新的收入。不要摇船,你怎么了?”

假设您身处其他技术工作领域,或者您愿意搬家,那么您可能会有很多选择。没有演出是完美的,但您想与想与您一起工作的人一起工作。(大多数情况下,我比特定的技术选择更关心此问题。)如果有些气味难闻,那可能是。

是的,请走开。对我们的业务,流程和设计的好奇心越强,我就越有可能成为候选人。但是我不在Blub商店工作,所以我不能说这是否可以帮助您获得Blub的工作。我只能说,如果您想与关心他们工艺的其他人一起工作,它将对您有用。


2
如何找到像您这样的公司?或者仅仅是运气?
Erica Xu

5
通常,您可以在职位描述中找到线索。他们的需求看起来像是技术字母汤的洗衣清单,越少,他们想要雇用的人的种类,他们的发展理念以及他们想要达到的目标就越多,他们对人的兴趣就越大他们足够聪明,可以制定并最终重新考虑决策。如果有运气,这可能是一个因素,但是您判断人的技巧和能力(以及对工作的绝望感)也会发挥作用。
JasonTrue 2011年

12

问题:探讨采访中选择的架构是个好主意吗?如果没有,为什么?

绝对很好,我认为这是积极的。

如果您的面试官不能解决这个问题,那就说明他们很多-不是您。

如果一个大三学生对设计决策不感兴趣,我会担心它会表现出对主题领域缺乏好奇心/兴趣,并且不希望自己提高自己。


这个答案不是太严格吗?我的意思是,如果该职位是担任高级或技术主管的职位,那是很好的选择。
user10326 2011年

2
@ user10326-正如您所指出的,受访者很可能没有经验,并且正在寻找见识以了解公司为何采用某些技术。在网页上阅读某项技术必须提供的内容是一回事,而聆听公司如何将其应用于其业务流程以及如何获得回报是另一回事。在面试结束时,当我问问题时,我喜欢听听开发人员对事物以及他们不同意的观点。
荒凉星球

1
@ user10326:我曾经面试过的最引人注目的候选人之一是初中(不到2年)。面试中途,他问了一个问题。我回答了。他说:“你介意我再遇到几个问题吗?” 然后拿出一张A4纸 一场赌博,但是,对我来说,仅仅通过提出正确的问题,他就对什么才是好的软件开发表现出了非常深刻的了解。对他来说,这一切都是理论性的,他知道这一点,但是他正在寻找一个可以实践的地方。
pdr

2
即使是大三学生,有时也会对事物有想法,并有权质疑完全疯狂的决定。
韦恩·莫利纳

1
@Wayne M或只是对该主题感兴趣,并想了解决定背后的原因。
NimChimpsky

3

我的想法是必不可少的。我从事过多的工作,做出了荒谬的设计决策,要么是因为没人知道更好,更不愿意学习,要么是管理层要求使用首席执行官在杂志上阅读的内容/在网上看到/有人告诉他是“下一件大事”,没有考虑其他选择。这些工作都是痛苦的工作场所。

除非是因常识而冒出的声音或听起来像是疯狂的谈话,否则您不必批评设计决策,但是通常会质疑似乎“不对劲”的事情,以找出是否有遗留原因或其他原因从而促进了使用非传统方法的需求。

提出这样的问题也可以影响公司对改进和能力的兴趣。正如上面的其他人所说,如果您得到这样的答案是一回事(我不懂Java,但使用.NET,所以将使用.NET示例)。当我们编写应用程序时,没有成熟的ORM,因此我们将存储过程与数据网关层。我们希望将来转到Entity Framework,而完全想得到另一个答案,例如“ 我们只是使用存储过程”。Entity Framework看起来很可怕,可能需要进行重构,而且我们无法重构任何东西,因为CEO有一份他希望我们使用的新功能的清单,如果我们花时间研究Entity Framework,他会解雇我们浪费时间。一个表示理解和渴望改进,另一个表示在最佳环境中的中等水平,每个人都尽力做到这一点。

一家冒犯您的人质疑他们的决定或想讨论为什么他们选择使用产品A而不是产品B的公司正在扮演他们的角色,并表明他们不想要自由思想家,而不是不会质疑的无人机,并且很有可能这不是任何有能力的开发商想要工作的公司。


3

答:询问架构决策是一个好主意。但是您需要小心如何问这样的问题。

简而言之:您应该问:“您如何选择技术X而不是技术Y? ”。

您想要用一种表达您对团队内部决策过程通常感兴趣的方式表达它。没有人愿意去审查公司曾经与候选人做出的每个遗留决定。

当您问“ 为什么选择技术X而不是技术Y? ”时,您可能会不同意他们的决定(可以...但是可以视为敌对态度),或者想夸耀自己有多少?尽管您有良好的意愿,但仍要了解有问题的技术(这对任何人来说都会很烦人)。


2
我同意你的解释。我会问“您如何选择技术X”
barjak

我对此部分同意。“如何”一词比“为什么”听起来更谦虚。即使这样,如果您在问题的开头使用“如何”,也可以在尝试将他们的想法心理化之后,选择使用一种技术而不是另一种。如果我在接受采访时发现有人问我很多“为什么”问题,通常我会再问几个“为什么”问题。从失去脾气的人的举动来看,无论问题多么谦虚,问题的任何改变可能都不会改变。
荒凉的星球

1
可能是这种情况。但是,我只是想说清楚这是一个不同的问题。“如何”的问题表明您想了解他们的方法(他们可能会回答他们的“为什么”)。也许他们对每种技术都进行了POC,然后决定哪种方法最适合他们的情况,或者只是掷硬币。“为什么”的问题似乎是在要求他们选择一个而不是另一个的实际原因。
smp7d

1

我很喜欢问一个面试官,告诉我他们做出的一个失败的设计决定,以及接下来要做的事情。这为您提供了一些有用的信息:

  1. 如果老板不能接受任何形式的错误或暂时的失败,那您可能就是不想工作的老板。
  2. 您可以说出公司如何应对压力很大的情况。

它可能并不流行,但是我始终对管理者怀有崇高的敬意,他们坚决地意识到一个项目将要失败并杀死它以停止浪费金钱,或者某些事情朝着错误的方向前进,需要被杀死或重新启动。 。

最终,如果您在谈论工作满意度,那么技术(语言/平台/编译器/其他)与所涉及的个性和工作环境无关紧要。


1

几年前,我在一次采访中,被问到关于编程语言的各种技术问题……我在(60/40正确/不正确)方面做得不好。讨论转移到他们手头的项目上,我开始询问有关设计的问题,然后指出了他们将引入的一些问题和限制。

第二天给了我这份工作。不幸的是,由于个人原因,我无法使用它。

询问有关设计的问题,如果它们是明智的问题,就不成问题,尤其是如果您可以将其与他们的业务联系起来的话。


1

我没有做太多的采访,但是根据您的经验,我会得出结论:

a)如果您想就是否想要这份工作做出明智的决定,那是可以的;

b)如果您已经决定要这份工作,那是不对的。

人们容易因选择的良性习惯而得罪。这是一个非常糟糕的特质,但很普遍。


-5

这是一些建议

  1. 询问他们为什么选择一些现有解决方案可能不是一个好问题,因为开发团队可能没有机会进行更改或选择。
  2. 此外,团队可能已经知道为什么该技术不是最佳选择
  3. 但是不幸的是,任何开发团队需要的最后一件事就是人们试图改变10年前做出的体系结构或质疑选择-它给人的印象是他们的技术已经是陈旧的东西,而这样的消息会在团队中四处传播,这会使开发人员感到不高兴。关于当前情况
  4. 因此,在面试中,您最后要做的就是给人一种印象,即您将一直抱怨团队无法控制的选择

5
好。那么,什么使面试官有权问我这些问题呢?
荒凉的星球

8
提出问题并不意味着您认为他们错了。即使他们错了,我也不会被一家诚实的公司吓到,他们为什么会犯错。事后看来,并非我所做的每个决定都是正确的。我可能会害怕一家不让技术人员做出技术决定的公司,但是那些公司不想要我,因为我会解决我认为是系统性的问题。没关系-每个人都能得到他们想要的东西。所以问仍然不明智吗?
pdr

@DesolatePlanet,tp1提供了一些很好的理由,这个问题可能是不明智的。这并不是说您无权提出要求,而是因为给出的原因,这可能不是最明智的举动。事实证明,在这种情况下,这是一个很大的问题-它揭示了没人愿意与之共处的个性。
Caleb

主要问题是质疑架构选择。决定架构后,将其固定10到20年。只是无法更改。好的开发人员知道什么时候做不到。将您的精力集中在改变有所作为的事情上。从一个旧平台跳到另一个旧平台是没有效果的。
tp1

4
他问的是选择体系结构的原因,而不是为什么他们后来不更改体系!
2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.