当前位置: 首页 > 科技观察

为什么程序员不输出最简单的100比1?

时间:2023-03-12 21:44:22 科技观察

我最近写了一本书,内容是关于我们作为程序员应该如何停止抱怨并专注于发展我们的技能。其中一个数据点基于我在两个月的时间里为我的一位客户进行的22次程序员工作面试。虽然这很难被认为是一个可取的样本量,但它确实揭示了一些关于程序员的有趣事实。以下两个看似完全无关的问题,在面试的不同时间被问到:谈谈你对当前单位或管理层不喜欢/不满意的地方。解决一个简单的编程问题(绝对比著名的FizzBuzz问题更容易)。我们的目的是检查抱怨和编码能力之间的相关性。这是我们收集的一组数据(当然我已经四舍五入到最接近的秒,因为我没有带秒表):虽然曲线不是很一致,但总体趋势很明显——抱怨和解决简单问题的能力编程问题之间有着很强的联系。很有趣,不是吗?而且更有趣的是,这个要求考生解决的编程问题其实难倒了很多人,我可以保证这个问题绝对比FizzBuzz问题简单得多:大约14%的人无法解决它不到10分钟--此时我们需要问下一个问题。大约40%的人花了超过5分钟来解决问题,和/或不止一次修改。只有大约14%的人可以在2分钟或更短时间内解决这个问题。大约82%的人在解决问题之前至少要修改一次。(这意味着他们第一次实际编写的代码是错误的!)那么他们试图解决什么问题?输出100比1。这就是问题所在。关键点是什么?一开始你需要写“for(inti=0;”然后继续-在“for(inti=0;”之前你不能写任何东西,你不能使用两个循环。按照这个方向试试看.最多两分钟,最多4行代码,包括花括号——但是如果方向错了,就会衍生出很多很多行代码。如果你能在合理的时间内输出正确的结果而不出错,那么我们认为你的回答是正确的。但是特别不能理解的是,无数的程序员面对这个问题——挠头,绞尽脑汁,最后不得不放弃。不信?那我告诉你,我遇到过两个程序员,攻了10分钟不成功,居然说这个问题太复杂了,做不出来。虽然这个小实验显示了抱怨和技能之间的相关性,但它并没有建立任何因果关系。换句话说,我们从数据中看不到的是,程序员是因为没有足够的技能来完成工作而抱怨,还是因为没有足够的技能来完成工作而抱怨,这是不定。也许程序员不熟练是因为他们喜欢抱怨没完没了,又或者是因为他们总是在抱怨,降低了我们对他们的期望值,没有对他们提出太多的要求,所以他们自己就懈怠了,连最基本的编程功底都荒废了。不管是什么原因,现在IT生活中一个非常可悲的事实是您甚至不需要使用FizzBuzz问题来测试程序员-只需要求他们输出100比1就足够了。