同步自:http://www.blogjava.net/AndersLin/archive/2006/06/18/53660.html
引子:今天上csdn看一则新闻是关于微软Vista的,地址:http://news.csdn.net/n/20060616/91704.html。原文载如下:
微软经理曝Vista延迟内幕 原定日期不实际
6月16日消息,据外电报道,微软程序经理Philip Su本周四一篇博客中称,新一代操作系统Windows Vista之所以一再延迟,主要是因为两方面原因:一是系统代码过于复杂,二是微软的企业文化所致。
据Techweb报道,Philip Su已经在Windows部门任职五年,他在博客中写道,Vista系统代码本来就很复杂,而因为企业文化的原因,公司所制定的Vista上市日期根本不切合实际,因此Vista的再三延迟是不可避免的。
Su称,Vista至少有50个独立的“层”,而他在这五年期间,只弄懂了其中的2层。据悉,Vista有5000万行代码。一般情况下,一名Windows开发人员每年可以写1000行。而微软目前虽然有9000名开发人员在围着Vista转。但可以计算出,要完成5000万行代码还是有难度的。
按照原计划,Windows Vista本应于今年11月上市。但微软今年3月宣布,Vista企业版将于今年11月上市,而个人版要到明年1月才能推出。6月7日,Windows Vista Beta 2已进入公测阶段。
以上这则新闻最让我关心的是:“一般情况下,一名Windows开发人员每年可以写1000行”
咋一看吓了一跳,咋微软的员工工作就这么悠闲呢。一年写1000行。觉的有疑问,赶快上google的blogsearch,找到原文一看,发现不是那么回事,原文blog地址:http://blogs.msdn.com/philipsu/archive/2006/06/14/631438.aspx
Let's see if, quantitatively, there's any truth to the perception that the code velocity (net lines shipped per developer-year) of Windows has slowed, or is slow relative to the industry. Vista is said to have over 50 million lines of code, whereas XP was said to have around 40 million. There are about two thousand software developers in Windows today. Assuming there are 5 years between when XP shipped and when Vista ships, those quick on the draw with calculators will discover that, on average, the typical Windows developer has produced one thousand new lines of shipped code per year during Vista. Only a thousand lines a year. (Yes, developers don't just write new code, they also fix old code. Yes, some of those Windows developers were partly busy shipping 64-bit XP. Yes, many of them also worked on hotfixes. Work with me here.)
Lest those of you who wrote 5,000 lines of code last weekend pass a kidney stone at the thought of Windows developers writing only a thousand lines of code a year, realize that the average software developer in the US only produces around (brace yourself) 6200 lines a year. So Windows is in bad shape -- but only by a constant, not by an order of magnitude. And if it makes you feel any better, realize that the average US developer has fallen in KLOC productivity since 1999, when they produced about 9000 lines a year. So Windows isn't alone in this.
才知道人家的blog说的清清楚楚,只是新闻的编辑为了吸引眼球改的。
不过让我想起软件公司的内部管理的东东。
1. 软件人员的绩效管理。
我不知道现在还有多少公司还用代码行数来算生产力的,我以为采用如此办法考评的只能说明一点:公司没有办法组织起有效的绩效管理。绩效考核应该以:所实现的技术复杂度+所花费的时间(OT时间一定要算)+加权调整,3个来评定。
业务的复杂性往往导致技术实现上复杂,A和B两个工程师在相同时间内完成不同的项目,A的复杂性高于B的复杂性,那么A的绩效应该高于B。不过,实际的情况往往不是这样,复杂性越高的项目需要的时间也会越多(当然如果有人能很快完成,说明之前他积累的相当的经验能快速分析或者是对这个业务本身很熟悉),无论如何完成工作所需的时间是需要做合理的评估的:10天,1个月或者更多,一个需要1个月可以完成的项目用了1.5个月,那么考核绩效就需要降低。
有看客说了:你这是坐着说话不腰疼。技术复杂度和时间的评估是那么容易做的,这里面的人为因素就可以让整个绩效管理全部跨掉。
这位看官还真让你说对了:
技术复杂度确实不好估计,一名优秀的架构师可能觉的是B的复杂度的项目,在一名普通工程师眼里可能是A。
时间评估也不好做,老员工凭着对业务和系统的熟悉,以及对公司内部资源的了解,可以很快的理解需求(自学或者找有做过类似的同事学习)认为只需要2周的任务,对于一名新员工来说可能需要1个月。
这样的情况将使实际的绩效管理一团糟。
我们需要尽可能的减少两者评估在不同团队成员间的差异性,而这个手段是用统计方法+案例法:把所有的做过的任务翻出来重新评估统计。参与统计的成员尽可能覆盖广,这样就可以得到一个相对合理的评估值,对与新的任务,就类似英国的案例法,参照旧的以做过的项目给出的评估值。(当然这个值合理与否在于统计的任务数)此外还有个统计覆盖时间取舍,软件技术更新很快,通常采用新的技术框架往往会改进工作(举例:在使用webwork+spring+hibernate和前webwork+spring+hibernate年代做同样的时间,花的时间是不一样的)。对于复杂度来说,用新的技术框架+公司不断改进私有的平台是可以在一定程度上降低复杂度的。这是我不用“业务复杂度”而用“技术复杂度”的原因。
在这个基础上加上一个加权调整,理论上可以比较好的做绩效管理了(实际情况很难讲,具体大家都知道怎么回事)。
实际工作,由于这样的成本比较高,对于小企业和项目导向型的企业来说不太实际,或者没有,或者草草完成。
2. 软件公司的内部消耗
因为是团队合作,每个开发人员的工作需要其它同事协助。这里的内部消耗就是这个,包括了知识传递,工作传递和工作委派。对于公司来讲,希望努力控制内部消耗就来提高竞争力。不过这种事往往吃力不讨好!
知识传递。最传统的是靠文档,同样最靠不住的也是文档。写文档的人费力,看的人也费力。写文档人往往假定读的人对文档的需求背景有一定了解,有意无意的省略一些东西(例如:写的文档人由于对需求背景很熟,觉的有些东西司空见惯,就不写),但对于读的人来说却未必。
工作传递。最常见的新来的觉的老代码都有问题,来一批人就重新写一次代码。还有比较常见的是一些任务大处了讲没什么,细节却很多很琐碎(意味着陷阱很多),传递的人不知道从何处讲,接手的人不知道有陷阱,往往做到后来还是给不停的问。
工作委派。这个就更容易耗时间了。一件不大的事,请人帮忙,那人手里不忙还好,如果忙事情的优先级又不高就不知道什么时候能做好了,尤其是跨部门的时候。
XP的开发方法试图解决这样的问题,似乎蛮有效!可惜还没有机会尝试,如路过的看官有心得体会还请赐教。
BTW,在对任务做时间评估的时候,一定要考虑这样的内部消耗,不然。。。。。嘿嘿!