读《只有10%的程序员能把这个小程序写对》--------- 漫谈开发进度
在CSDN上读过这样一篇文章,“仅有10%的专业程序员能把这个小程序写的完全正确”,这里的小程序,其实指的是一个二分查找。
书中的一段原话:
例3.4 Bently【1986】要求超过100个专业程序员把下面这段有关二分法的简要描述“写成一个程序,语言由他们自己选择.............
他报告说,“我感到非常惊讶,给了他们充足的时间,仅有10%的专业程序员能把这个小程序写的完全正确”。
我们要确定在一个已经排好序的数组X[1...N]中是否包含元素T。二分法解决问题的方法是维持数组中可能包含T的区域的踪迹(如果元素T确实在数组中的某处)。在开始的区域就是整个数组,通过将元素T与数组的中间元素比较可以缩小范围,丢掉数组的一半。这个过程一直继续T被找到,或者是T可能存在的范围变空。
Berntley提出了如下建议:“绝大多数程序员都认为,只要手头上有了上面这段有
关二分法的描述,写出代码是一件很容易得事。然而他们错了。如果你现在就把这篇文章放在一边,亲自动手写代码试一试。你就会相信这一点。”
我也觉得有些不可思议,于是动手尝试了一下,C# 控制台程序,有一个输入数据源的过程,3个小时(文中提到的是两个小时的时间),我才把这个程序写的完全正确。:(。本以为自己是可以在两个小时内完成的。唉....
自我解嘲一下,如果我能够再集中些注意力,或者在精神状态好的情况下或许是能够在规定时间内完成的,但想更快,自问也是困难的。
不过这让我想起了另外一些事情,程序员究竟能干多少事情?
在一个系统里有很多的算法,二叉查找这样的算法,代码难度和数量恐怕都是比较低的。(周末晚上尝试写的程序大概100多行的样子)对比这个,2个小时完成一个二叉查找,那么6个小时完成一个其他算法。大概完成200多行代码。如果再用两个小时进行测试,和系统整合。(或许这个工作2个小时是远远不够的,正常我觉得应该是4个小时,就算是加班了吧)一个很专业的程序员,一天的工作量也就是200行。20天 × 200行 = 4000行代码。我不知道在这个上面应该打多少折扣,但我知道这个工作效率算是太高了。
我也不知道大家的系统最后的代码量有多少。我做游戏,大概一个成品的代码也就是5千行~3万行之间。一个团队,4-8个月(或许更长时间)才能够出一个测试版本。开发的情况各异,团队各异,可能也不好说。不过我还是觉得能有一个可比性,我们仍然按6个小时完成一个算法。在做开发的时候,大致会构建一个架构,或许更多的架构复合,但总之不会太复杂,我想不会多于3个架构复合,在架构的基础上划分若干模块,这也不会太复杂,应该也不会超过10个模块,在每个模块下会继续划分功能,这里或许多些,算20个吧,功能下继续划分....
如果这样算 1× 10 × 20 × 5 = 1000个算法,当然这里面的算法会有的简单,有的复杂。这个时候,就可以参考上面的小时数来大致考虑开发进度了,也可以给程序员分配任务了。
当然,所有的一切,都建立在你的团队都是那 10%的专业程序员的基础上的。我知道你想笑了。引用一句话:运用之妙,存乎一心。