跳到主要内容

保存的文章

嘶嘶声,嗡嗡声和丑陋

Dave Nicolette |领导敏捷
Dave Nicolette 高级顾问
阅读: 嘶嘶声,嗡嗡声和丑陋

fizzbuzz.是一个简单的编程问题,通常用于面试背景或作为探索测试驱动发展的细微差别的基础。它可能对那些类似的目的有用,因为它本身并不是那么复杂,即它妨碍了目标;无论是否则非常基本的编程技能还是提供辩论编码技术的借口。

在任何一种情况下,由此产生的FIZZBUZZ解决方案不是锻炼的点。当用作面试工具时,该目的是找出候选人是否具有最基本的编程技巧。许多人擅长说话,不太擅长编码。FizzBu​​zz可以是杂草营造候选人的节省时间的候选人,他们不符合工作挑战。

当用作代码dojo或其他个人或团体练习会话的编程练习时,FizzBuzz至少提供了足够的功能来驱动一些设计决策,同时也不感兴趣,以至于人们不会因重点编码分散注意力技术,这是练习的目的。

让我们考虑一下FizzBuzz作为一种面试工具的实用性。

它一次又一次地成为博客、维基和社交媒体上一波又一波帖子的主题。一遍又一遍,模式是有人提到FizzBuzz,就会有数十或数百人将其视为提交解决方案的邀请。

他们提交的解决方案提出了一个关于FIZZBUZZ的有趣点,并且在采访环境中使用时可能是类似难度的其他问题。为了说明,让我们来看看人们提交的一些解决方案。

这是一个发布的c2维基亚历克斯北:

public class fizzbuzz {public static void main(String[] args) {for(int i = 0;我< 100;我+ +,system . out。Println (i % 3 == 0 || i % 5 == 0 ?)(i % 3) == 0 ?"fizz": "") + ((i % 5) == 0 ?“buzz”:“”):i));}}

这是Reginald Braithwaite的另一个,发表了他的文章,“不要过度思考fizzbuzz”

Def compose *lambdas if lambdas.empty?Lambda {nil} elsif。Size == 1。首先else else lambda do |n| lambdas. First .call(compose(*lambdas[1..-1]).call(n)) end end end def carbonation(模,printable_form) I = 0 && printable_form || n end end print(((1..100)。map &compose(carbonation(15, FizzBuzz), carbonation(5, Buzz), carbonation(3, Fizz)))。加入(' '))

现在,将这些解决方案与许多人关于拥有任何编程技能的求职者的低比例的评论进行对比。这里有一个典型的评论的例子StackOverflow。这是杰夫阿特伍德的另一个例子,对他诉诸于大多数求职者的糟糕技能水平的洪水造成了对随访的文章,“fizzbuzz:程序员到天堂的楼梯”。摘录:

FizzBuzz被认为是说明充分性所需的最低理解水平。编写建立最低能力水平的代码并没有什么光荣可言。即使你可以用5种不同的语言或者50个字节的代码来编写它。

这篇原始文章的重点是思考我们为什么要让人们去写FizzBuzz。编写和解决《FizzBuzz》的机械部分,无论多么巧妙,都是无关紧要的。任何关心阅读编程博客的程序员已经远远超出了这样一个简单的问题。FizzBuzz不是为我们设计的。那些我们接触不到的人——那些程序员,他们什么也不读——我们被迫给他们FizzBuzz测试。

这告诉我们什么?我们需要一种快速的方法来杂草声称具有基本的编程技巧的人,但不要。当我们要求他们在求职面试期间勾勒出一种解决方案时,他们常常无法开始。

相比之下,任何关注他们的工作的程序员都会发现Fignbuzz如此琐碎,以至于他们无法抗拒与它带走。看看好程序员提交的两个例子。看起来好像他们玩得开心!但是,您希望您的员工必须与生产系统中的代码一起生活吗?可能不会。

亚历克斯和雷金纳德把FizzBuzz当作玩具。这是件好事,但不是在工作面试中,除非你面试的是喜欢玩游戏的程序员(也许你是,这取决于你的公司)。

在互联网上FizzBu​​zz有数百个“巧妙”解决方案的例子。那c2 wiki页面非常长。有一页在Rosettacode Wiki.这与234种语言有234种语言,截至我检查的日期,包括一些相当不寻常的AutoHotkey,这可能不是面试官感兴趣的。

如果求职者倾向于过度思考这个问题,并提供对日常工作过于聪明的解决方案,那么面试官往往会错过在筛选过程中包括编程练习的要点。在“使用FizzBu​​zz来查找Grok编码的开发人员”, Imran Ghory写道:

大多数优秀的程序员应该能够在纸上写出一个程序,在几分钟内完成这些。

想知道一些可怕的东西吗?- 大多数Comp SCI毕业生都不能。我也看到了自己宣称的高级程序员超过10-15分钟来写一个解决方案。

这显示了对在筛选过程中要求候选人进行真实编码的目的的根本误解。没有人能够在两分钟内将代码写在纸上。这不是在商业环境中构建产品代码的方式。我们感兴趣的是候选人的逐步思考过程当他们建立代码时。你没有看到,通过观看某人在一张纸上绘制一个快速而肮脏的解决方案。

伊姆兰将能够淘汰那些不知道自己在做什么的人,但他几乎没有机会找到懂编码的程序员。他只能通过这种方式获得消极结果,包括真正的消极(根本不会编程的人)和错误的消极(知道太多解决方法的人,但在伊姆兰认为他们“慢”之前却无法决定写下哪一种)。

这是一个好消息,坏消息。对于懒惰的采访者来说,坏消息是没有替代坐下来与候选人配对。对于喜欢编码的面试官,好消息是坐下来坐下来替代候选人。

下一个;与分布式团队合作 - Jann Thomas和Adam Asch

留下你的评论

您的电子邮件地址不会被公开。必需的地方已做标记*