一位行业高管和敏捷团队负责人讨论了在学校没有教授的四个技能工程师,他们将好的和好的全栈开发者分开。
作为过去7年中几个敏捷团队的经理,我有机会为我们的开发团队雇用20多名员工。要做到这一点,我必须进行多次面试才能找到最佳候选人。
我整理了数以千计的简历。
以下是我学到的内容,以及您需要了解的招聘经理希望如何发展团队。
首先,我对雇用优秀的全栈开发人员的过程进行了思考。在招聘时,我总是发布职位描述,其中包含团队正在使用的技术列表以及候选人必须熟练掌握的技术。例如:
后端:Java
前端:AngularJS,ES6,Bootstrap
所以在这里,当我谈论一个完整的堆栈开发人员时,我正在寻找能够使用Java后端来改进业务逻辑以及在前端添加新网页的开发人员。但老实说,技术的名称并不重要。
以下内容可应用于团队可能在项目中使用的任何技术。
我一直在寻找一个完整的堆栈开发人员候选人的四项技术技能:
精通调试器。有反射写相关的自动化测试。考虑可能的错误用例来帮助用户恢复。向用户(而不是开发人员)提供有用的日志信息。从这个列表中可以看出,这些技能并不依赖于任何特定的语言,而是围绕着软件工艺。这就是我想要在良好的全栈开发人员资料中看到的:将这些技能应用于前端和后端开发。
当然,有一个问题-这些技能通常不在学校教授!作为开发人员,您有责任自己学习它们。如果你足够幸运,你会找到一份工作,团队已经掌握了这些技能,并会教给你。我相信只有那些已经学习并擅长这些技能的开发人员才能获得真正出色的工作并得到同行的尊重。
为了确定候选人是否是一名优秀的全栈开发人员,我通过要求他们实施一个小型应用程序来挑战他们的技能。代码是真理!通过技术挑战来理解候选人的习惯要容易得多。让我举几个例子,说明触发我的内部警报系统的前四个标准:
调试器:在代码审查挑战期间,我添加了一个小的实时编码会话。如果候选者添加了一堆临时日志,然后启动应用程序以找出运行时发生的情况,那么添加更多日志以获取特定变量的值并重新启动应用程序,等等......交易破坏者!真是浪费时间。使用调试器将为您提供一种更有效的方式来了解正在发生的事情,并且不会弄乱您的生产代码。这个调试器测试通常应用于前端开发,我对候选人的调试技术有太多不好的意外。
自动化测试:如果候选人提供的代码没有附加自动化测试,我会问为什么。在最糟糕的情况下(受真实故事启发),候选人告诉我,在他/她过去的团队中,他/她没有添加自动化测试(出于任何“好”的原因)并且它不是他们最佳实践的一部分。我只是停止倾听并对候选人失去兴趣。打破交易!
错误管理:我喜欢挑战具有错误管理的候选人。如果出现错误,应用程序的行为如何?如果答案听起来像是:“我只是向屏幕显示技术错误消息。”什么!?任何应用程序的目的都是帮助用户自动完成任务。它必须帮助用户实现他们的目标。在出现错误的情况下,为用户提供有用的,可操作的信息尤为重要:
描述问题和系统状态。
宣布原因,并建议如何解决问题。
日志:我想问候选人何时记录信息和目的。如果答案听起来像:“我主要记录信息以帮助我在发生错误时调试我的代码,以了解发生了什么。”哦不!虽然调试日志很有用,但这不是记录的唯一目的。拥有良好的日志信息对管理员来说非常宝贵。例如,他们可以使用日志来监控应用程序运行状况或检测安全漏洞。优秀的开发人员永远不应忘记他们开发的应用程序不仅适用于他们,而且主要面向那些依赖格式良好且信息良好的最终用户。
如果你不熟悉我的团队和我在全栈开发人员中寻找的四项技能,我强烈建议你花一点时间来获得这些技能。它只会提高您的专业知识,并在寻找新职位时为您提供更多机会。
如果您已经-或者当您获得-这些技能在您的工具包中,那么我相信您/将成为一个有价值的团队伙伴,您的团队会感到很幸运!