在我的工作中,完全没有代码审查、测试、版本控制、软件架构组织、测试服务器和生产服务器的概念,也没有代码注释。事实上,所有这些都是明令禁止的,我经常会因为写注释或使用小模块函数而惹上麻烦--我的项目经理说这不值得占用磁盘空间。
每当我去其他地方面试时,通常都会被问到我是如何工作的,以及我是如何进行测试或验证/确认的。我觉得如果我是面试官,而应聘者说没有这些事情发生,那就会引起很大的反感,我就会扔掉他们的申请。我应该如何在面试中讨论这个问题?
至于如何为面试做准备,最好的办法就是自己研究这些主题,并在个人项目中使用这些主题。
例如,我的第一份软件工作就是类似的情况,我们没有采用任何好的做法,而且很难实施。因此,我在私人项目上工作,在那里我可以做自己想做的事,而且有时间。在那些**项目中,我会适当地计划事情,适当地设置 src 控制,测试我的所有代码,注释代码,并努力使其易于理解、可重复使用和可扩展,等等。因此,当我在面试中谈到这些最佳实践时,即使我没有在实际工作中接触过,我也有一些相关的知识和经验。
我倾向于认为,面试官并不希望从你目前的工作中获得这些做法的具体实例,他们只想知道你是否了解这些做法以及它们涉及的内容。在工作中,您可能无法接触到它们,但在工作之余,没有什么能阻止您研究和使用它们。从职业生涯的角度来看,这绝对是值得花时间的。展示这些最佳实践的个人项目对你的作品集来说也是很好的选择,即使是小项目也不例外。
如果他们极力要求你提供当前的工作实例,那么我个人会说,你当前的工作并没有真正做到这一点,所以你自己花了很多精力去学习/实践。这显示了你的主动性,并可能为他们提供额外的背景信息,让他们了解你为什么要去其他地方找工作。
我最近遇到了这种情况。在我之前的工作中,我们处理的是一个非常老的代码库(一些符合 java 1.2/1.3 的代码);代码中充满了神奇的数字和神奇的字符串,这些数字和字符串被用来从 Vector
's 访问 Object
引用,然后再将这些引用转换为 Vector
's ;没有单元测试,几乎没有集成测试,没有一个测试是自动化的;几乎没有分配时间来重构老代码;没有代码审查;评论本质上是深奥的......
当我觉得是时候换个更好的工作环境时,有人问了我这个问题,我继续讲述了我希望如何工作,以及我个人的工作道德如何缺乏满足感,这也是我另谋高就的部分原因。
我解释了我认为代码质量最重要的特征(全面自动化测试带来的健壮性、变量和函数命名带来的易读性、将代码划分为尽可能小的函数而不是长达 1000 行的重复代码块等),然后我找到了现在的工作。
正如 @Sascha 在他们的回答中所指出的,没有必要责怪你现在/以前的雇主。这是由于对最佳实践的认知存在冲突,导致你无法在工作中找到满足感。
回答 "为什么我认为我面试的公司很棒,比我现在的工作单位更好"。
>;每当我去其他地方面试时,我通常会被问到我是如何工作的,以及我是如何进行测试或验证/确认的。
不要回答"我是怎么做的",而是回答"我打算怎么做"。说明生产合理质量的软件显然需要时间和培训方面的投资,有时由于公司背景和项目类型的原因,这种投资被认为是不合理的,但您更愿意在专业软件相关的环境和项目中工作。如果情况属实,请说明这是您面试公司的声誉。
我觉得如果我是面试官,而应聘者说没有这些事情发生,那就会引起很大的反感,我就会放弃他们的申请。我应该如何在面试中讨论这个问题?