20170425 程序员的成长和代码行数的关系

来源:互联网 发布:淘宝商品展示页面html 编辑:程序博客网 时间:2024/06/12 18:54

程序员的成长和代码行数的关系
http://www.techug.com/post/norris-numbers.html

Clift Norris发现了一个基本常数,我称之为Norris常数,

一个未经培训的程序员在他或她遇到瓶颈之前能写出的平均代码量。

Clift估计这个值是1500行。超过这个数以后,代码会变得如此混乱,

以至于本人都无法轻而易举的进行调试和修改。

在梦工厂我们有950个程序给动画师使用,行数统计显示多的一些基本在20,000 至25,000行。超过这个数的话即再多的努力也无法增加新特性了。

在1996年年中的时候我负责编写梦工厂的照明工具(和另外两个程序员),我知道这将远远超过20,000行代码。我改变了我的编程方法并且这个工具一年后以大约200,000行的代码量成功交付。 (这个工具计划于2013年退役,在16年时间里它被每天使用并用来拍摄了21部电影。)我因为写了好几个行数在10万到20万的程序,我很确定我遇到了下一个瓶颈,我已经能够能感觉到它。

特别难的部分是和一些没有像你一样打破了好几道瓶颈的人讨论技术。打破这些瓶颈意味着做出不同的取舍,特别是一些短期内看起来不合理但以后会有所帮助决定。这很难去争论,短期内的优点是显而易见的,但我无法说服任何人说从现在起一年内可能有人会做出一个看似无害但是会破坏现有代码的改动。

一个一岁多的孩子会以一定的速度匍匐前进,比如说每小时一英里。但每小时一千英里的速度就是一架超音速喷气机。就物体的移动能力而言这两者是没有可比性的,任何其中一个可以到的但是另一个不能做到,反之亦然。

一个Clift 所指的初级程序员,学会了爬行,接着蹒跚学步,然后行走,然后慢跑,然后再跑步,最后冲刺,他认为,“以这样加速度前进我可以赶上超音速喷气机的速度!“但他跑进了2,000行的极限,因为他的技能不会再按比例增加。他必须改变移动方式,比如开车去获得更快的速度。然后,他就学会了开车,开始很慢,然后越来越快,但有进入到了20000行极限。驾驶汽车的技术不会变成开喷气式飞机。

我的朋友Brad Grantham用新手程序员用“蛮力”解决问题来说明了这一点。我认为这是正确的:当代码是在2,000行以下,你可以写任何混乱肮脏的代码并依靠你的记忆拯救你。深思熟虑的类和包分解会让你的代规模达到20,000行。

作为一名技术领导我明白我主要的贡献是对那些同事觉得非常重要但不能证明其合理的需求说“不”。但真正的诀窍是知道什么需求增加了线性的复杂度(只和自身相关)和指数级复杂度(和别的需求有关联)。两者都因该去避免,但后者需要更令人信服的理由。

突破这个瓶颈的关键是什么?对我而言,就是让事情保持简单。除非现在就非常需要,否则完全拒绝添加任何新特性或者新代码。我已经在Every Line Is a Potential Bug中提高了这一点(在Simple is Good之前还是一知半解)。梦工厂的首席特效架构师是这么理解的:

这里写图片描述

http://www.techug.com/post/carton-inside-the-linux-kernel.html

周鸿祎:很多程序员一看就知道不会创业

中国的程序员大部分是盲目的:看看一些论坛就能够感觉到,要么有一群人自我感觉极端的良好,以专家自居,要么就是一群蓝领埋怨公司和社会环境不行,待遇不好。

应该说,中国程序员创业的成功率也是很低的。放眼望去,中国互联网成功的人士有几个是真正写过十年软件的。事实上,现状和我们所能听到的媒体宣传的故事很不一样。

很多程序员的最高理想就是写一个共享软件,一年可以挣几百万。但我希望谈的不是告诉程序员如何挣钱,挣钱很容易,而是要告诉程序员如何去创业。比如虽然 FlashGet 的作者收入很高,衣食无忧,但从创业的角度看,它并没有以商业公司的方式创业成功。

我这些年还看到很多这样的例子:程序员动不动就把目标定为比尔·盖茨。其实,比尔盖茨不应该成为程序员崇拜的目标对象,这会让程序员迷失方向,因为微软另外一个创始人保罗·艾伦才是真正的程序员。

再看其它一些例子,Google 的第 20 名程序员都可以获得五亿美元。Adobe 公司两个创始人也是一个精通技术,一个对商业精通,这样的搭配才能够更好的成功。因此,对于很多程序员来说,一定要找准真正的榜样,不要被外界的故事迷惑了头脑。

程序员在创业方面的欠缺

首先,我看到中国程序员的合作心态非常缺乏,我认为这是中国程序员最大的问题,当然这是有很多原因的。

大家经常说这句话:态度决定一切。但事实上好程序员基本上都比较傲气,因为程序员往往会觉得自己在做世界上一件十分伟大的事情,这就是驱动机器,修改一行代码,机器就能够工作,可以产生各种不同的行为。这很容易会让程序员产生一种错觉,认为自己可以 Control Everything。

程序员的自信在编程上是非常需要的,但不是适合一切场合。

如果我们不说这些,可能很多程序员到现在还不知道自己错在哪里,仍然认为自己是 King of the World。

很多程序员因为已经习惯了和机器打交道,不善于也不愿意其它的工作。很多程序员会内心认为“营销不是很简单嘛,市场很简单啊,管理也很简单啊,”我认为这种心态是非常害人的。

程序员还是一个很固执的人群,他觉得自己是机器的统帅,因此不会灵活,不会妥协。我当时也喜欢写程序,但我知道如果自己沉迷于写程序,肯定没戏,所以是逼着自己改变角色。

优秀的程序员不要自负

程序员应持开放心态,寻求团队合作

程序员首先要学会和别人合作。

程序员要明白,在自己不擅长的领域,找到一个可以弥补自己缺陷的合作团队才是出路。加入一个创业团队,可能个人占 10%,但因为更容易成功,而且团队可以做 100 分的事情。而如果只是一个人做,很可能就失败了。

我认为现在的很多程序员经验过于不足,他没有认真踏实做过很多工作就奢谈创业。如果一个程序员没有在编程方面深入过,没有积累,也就是半瓶子醋。这样的程序员我接触过很多,他们自己也不清楚问题出在哪里,让人感觉又爱又恨。我认为程序员既然要凭借自己的技术,那就一定要踏实,要能够实现任何创意。

但现在一些程序员自己没有商业意识,却又很自负,不相信别人,不理解的事情就不做。我遇到过很多程序员,他们对公司做什么方向都质疑。他们希望自己先想清楚,可是一想就浪费了很长时间。

很多程序员就可悲在这里,积累的不多,看不到方向,但他也不相信自己的公司和老板,这是一个悖论,需要程序员深刻反省。要知道,每个公司都有懂商业的人。

对程序员来说,现在要做的也很简单,这就是需要大量的实践,要慢慢培养对产品,对商业的感觉。

我的建议说出来可能有些忠言逆耳。对绝大多数程序员来说,自己一个人成功的机率是很小的,所以我认为加入一个创业的团队可能更为合适。

闲来麻将成立8月卖20亿,昆仑万维回应涉赌传闻

闲来成立8月卖20亿
天价游戏并购发生在了一家成立仅8个月的游戏公司身上,收购方是昆仑万维以及辰海资本创始人陈尘间接控制的有限合伙企业。
http://www.foxuc.cn/Consult_View.asp?id=3247

URI 转换
http://www.w3school.com.cn/jsref/jsref_encodeURIComponent.asp
https://segmentfault.com/q/1010000006731925?_ea=1112703

0 0
原创粉丝点击