Line Of Code通常指净代码行,即去除空行和注释,扣除生动生成的代码。实际项目中往往还要进一步区分Changed LOC和New LOC。对于系统相对稳定,有持续的版本升级,具有较多重用基础的项目,还是比较适用的一种规模描述手段。
如果用于生产力描述,通常是指从系统设计到内部测试完成这段时间内的平均代码行产量,按这个定义,如果开发团队超过10人,有相对严格的过程管理,能到50行/人天就很不错了。
菜鸟何以菜,大牛何以牛
本章一直在介绍如何让一个初窥门径的菜鸟快速健康地成长为一个技术大牛,那么菜鸟到底菜在哪里?大牛又牛在哪里?从菜鸟成长为一个技术大牛需要有什么必经之路吗?本节将会从几个方面说明菜鸟和大牛的主要差距。
代码量的问题
农民伯伯比谁是种田能手的时候都是比收成,这是最有说服力的指标。IT界的开发人员也是这样,代码量也算是开发人员的收成之一了,在一定程度上也说明了一个开发人员的经验和技能水平。因此在通往技术大牛的路上,代码量也是一个必不可少的衡量目标。
"师兄啊,我们谈了很多菜鸟成长的问题,那么菜鸟和大牛之间的差别到底在哪里呢?"
"好吧,今天我们就来说说菜鸟和大牛之间的距离。我先问你个问题,你从学习编程到现在的代码量有多少了?"
"这个嘛,我还没有算过,代码量是不是成为高手首先要完成的指标啊?"
"这是必需的,下面我们就来看看不同的代码量对应的不同发展阶段。"
1.1500行~1万行--天高任我飞
"首先,我们把代码量的起始点定在1500行以上,因为如果只有几百行代码的光辉历史是不足以与开发人员沾边的。"
"是啊,几百行的代码写个完整的五子棋都不一定够呢。"
"从这个起点出发,到1万行以内,这个阶段可以用'天高任我飞'来概括,处于这个阶段的时候多半还在学校,对于软件开发的一些内幕并没有一个很深刻透彻的了解。因此对于自己洋洋洒洒几千行的代码很有成就感,认为已经灵活驾驭了一门编程语言,什么都可以编出来。"
"呵呵,很像我在大学的时候呢。写了个坦克大战就以为自己了不得了。"
身为尚未入行的准菜鸟,有这种想法也很正常,毕竟做学问是个由浅入深的过程,在初期难免会由于对行业认识不全而产生一些轻浮傲慢的想法。这种想法从一定程度上也增强了初学者的自信心,促使其再接再厉,向着下一个阶段进发。
就像故事中说的那样,这个阶段最好在学校中度过,而且是越早越好,因为初入职场的时候,最合适的定位是在第二个和第三个阶段之间。
2.3万行左右--我还很笨
"'天高任我飞'这个阶段很正常,我在初学Java的时候也是经常为自己小成果窃喜不已,不过这些小成果现在看来的确是很幼稚。"
"师兄,那经过过了'天高任我飞'的阶段之后呢?"
"往往有人跟你讲道理,不管讲的有多正确,也不会完全信服,直到自己切身体会到了,才会明白。随着代码量的增长,达到3万行的时候,随着接触的技术和知识越来越多,慢慢地也就发觉自己之前的不自量力了。"
"是啊,知道的越多,未知的也就越多。"
代码量从1500行成长到3万行,不仅是技术能力和经验得到了很大的提高和丰富,对于整个行业和自己在其中的位置也有了比较正确的认知。一开始是觉得自己什么都能做,到这个阶段是觉得自己还真有很多做不了的事情。就会自然地产生"寄蜉蝣于天地,渺沧海之一粟"的感慨了。
代码量达到3万行这个阶段越早到来越好,因为这个时候一个人的心态和工作模式已经基本成熟,唯一要注意的就是不要灰心,而要迎难而上,继续攀登。
3.10万行左右--登堂入室
"经过了3万行的阶段,算是进入到软件开发的正轨了。之后随着编程经历的丰富,当代码达到10万行左右的时候,算是个登堂入室的阶段了。"
"10万行啊!那该是多么漫长的征途啊!"
"我可以这么跟你说,只要用心去努力,比较优秀的人在一年半到两年之间就可以达到这种高度的,就算是比较中等的人,三四年内达到这个阶段也是可行的。所以对于不同的人,这个指标的完成日期也是不固定的。"
"那登堂入室这个阶段是个什么境界呢?"
"一个人登堂入室之后,技术能力已经达到了较高水平,可以被初步称为高手,这个阶段应对一些中小型应用是不成问题的。"
代码量达到10万行标志着一个开发人员的初步成熟。作为一个立志在软件开发行业创出一番天地的读者朋友来说,这个指标还是非常有必要去完成的。虽然完成这个指标所用的时间因人而异,但最好不要让其超过三年。
当代码量达到10万行时,在自己从事的技术领域,已经勉强可以独当一面了,而想要成为真正的专家牛人,所缺少的能力应该是对于软件项目整体上的把握和统筹了。
4.100万行--万剑归宗
"最后,我们来说说代码量达到100万行的境界。"
"100万行啊,那可得登堂入室十次才行啊!"
"100万行算是软件开发人员的极限了。达到100万行的阶段叫做'万剑归宗',这在武侠小说中算是剑术的最高境界了。达到这个阶段,代码量算是完成了它衡量价值的使命,因为再提升代码量已经毫无意义,就像营养过剩后再摄入也不会有用。
"那到了这个阶段应该研究些什么呢?"
"这个时候需要研究的,应该是类似于内功心法之类的了,比如专注于新技术方向拓展性的探索,或者是进行面向服务的底层平台的研发等。"
代码量达到100万行所需要的时间就更难估计了,这个指标只是编写代码的终极指标,能够达到这个目标的人不会很多,但是并不妨碍其进行那些"万剑归宗"的修炼。
这个时候一般不会再做具体的客户项目,更多的会去研究平台或中间件,力求能在领域内有所创新。比如进行下一代Java EE中间件的研发、下一代SOA平台的研发等。进行这种研发对项目经验有相当高的要求,否则开发出来的平台可用性将会很差,这也是为什么代码量需要达到一定标准的原因。
对代码量的衡量并不是局限于其本身,还包括一个人在开发过程中不断积累的编程经验和领域知识。编写代码只是修炼的一种形式,就像学习剑法,首先手中要有剑,然后随着内功的深厚,渐渐达到了"人剑合一",最终达到"无剑胜有剑"的境界。
我们这里说的代码量是指有效代码量,如果每天只是敲"System.out.println("Hello World!!!");"之类的代码就算1000万行也是没有价值的。