|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
一个在美国IBM工作过2年,在印度公司工作了4年的项目经理与我司资深软件开发经理有这样一段对话。 & t! H" D: m; T9 A: g: c; l
" P3 }& u, q0 |0 K( _7 i: V2 I/ Z8 }) A 印方经理问:"你们每月生产多少行代码?" ' \0 q9 u1 I, Y: M) D+ k) Q9 {9 L
我方经理掂量了很久,谦虚地说:"人均代码1万多行吧,不到2万行"。
3 y, z9 [) c- l7 U 印方经理听后,眼睛瞪得圆圆的:"喔!你们已经远远超过国际最高水平了。"
, P1 q! l; s0 v7 ~1 C4 s- A 我方经理惴惴不安地反问:"你们的呢?"
. e% r1 n9 B1 l7 f$ Y; x 印方经理很认真地回答:"我们公司目前的效率为每人每月300行。" $ V: _9 k3 K2 b% B. {, P% P2 k9 A
' {2 I% X1 L9 `, t1 c I
这是一个真实的故事,我想换了其他人(包括以前的我)也会给出同样的答案。
* K: f/ v( o! B" s+ _# h) G) O8 i& ?% M8 Z
为什么与软件大国有这么大的差距呢?! ~+ V7 P; Z" _' U
A- ]8 g/ y/ u$ P' z" z: z
首先我们没有生产率的概念。大多数人是这么算的,一天编400行-500行代码还不是小菜一碟。一个月有30天,这样每月1万多行还不是轻松搞掂?
' f/ _* R5 r y
! R. \6 q5 |) ?5 n6 ?, Z: `, }" E 殊不知,这个伟大的假设有两个致命的错误:第一、没有考虑需求分析、概要设计、详细设计、单元测试、集成测试、系统测试的时间,也没有考虑文档的时间,甚至都有可能不知道有这些过程。 4 l7 v7 o3 Z; M( l& O; N: n
8 C4 D7 \+ T4 D
这不是笑话,试问:我们有需求分析吗?我们有单元测试吗?我们有编程规范,但我们遵守了吗?
5 G& L3 `" p* n$ A/ [6 R [8 P0 @
/ v9 F. G4 L6 N5 T* ^) P& q) K 我们的代码花花绿绿,风格千奇百怪――
- D; @5 S' b' _4 i: j" Z8 ?) g7 e; u! ~! i; ]& K1 H4 i
我们不是有"开发完了,还没有设计文档的经历"吗?
" G, N: k3 e8 T. O2 C e. J 4 l, a# P: p" N7 ?, O* o
我们不是有"要转中试了,所有人才开始埋头苦干写文档"的经历吗?
* a# ^5 {# ~" H: s/ O. y! r- W6 M" }; a; t5 U: y7 D
我们不是有人在文档中写过,"该软件对人畜没有伤害"吗? 7 d) D1 W. u; \1 Q5 u2 P8 W) m' x. ~
* S8 {5 {8 c2 P6 s( U0 h0 Y9 I: q6 T 当然,我们更不可能想到有review的时间,根本考虑不到质量控制?
6 r) w' E& K8 g; q- ]% g- W3 K; T Q* f3 K- p& b5 a3 h' m4 _
我们最熟悉写程序、系统测试、维护,其他的都是多余。这是典型的小公司游击战的做法,一个人搞一个小软件,不需要任何流程,没有任何质量体系,除了写代码,测试以外,什么都不需要,非常自由,自以为"牛得不行",这很easy,那很容易,"管理是罗嗦,流程是麻烦",但实际的结果是什么样大家都知道。 2 F+ @, H+ [1 N, {# }) `
: e1 w) B T$ e: W 第二、一天能写400-500行代码,并不表示,你平均每个月能写12000-15000行代码,道理很简单,一个人100米速度是12秒,并不表示他的3000米速度是6分钟。我们不是机器人,写软件需要思考,写嵌入式软件尤其需要质量。
) L9 c6 C! C5 @: f6 J3 S$ K4 u
7 M5 g0 M6 g' Z* e8 r8 S( V 印度工程师是人,中国软件工程师也是人,我们的代码生产率与水平能高到哪里去呢?正如大家都是凡人,你突然说你比子弹还快,一蹦3层楼高。
$ S1 {2 F) D4 J- M
/ q) q, T. E7 [) | 这真是"无知"者"无畏"?
4 l/ v. {/ p* Z [1 X, G
, H C# G- r$ q! j. Z 其实我们的生产率很低,自己不觉得罢了,很多人并不相信我司的公开数字――月产代码才120行?如果算一算所有的人力,所有阶段的时间,我们就不会惊奇这个数据了。不信的话,我们拿一个产品算一算!或许我们的经理自己都不知道在这个产品投了多少人力。华为有职业化的软件开发管理人才吗?目前几乎没有,或许我们真的有月产2万行的编程高手,也有很多自以为能写2万行代码的"泡沫"高手,但我们没有真正专业的软件人才! ' V3 ?9 b# _0 |
# s) Y# r3 z% m5 _+ j% z
目前我们公司的销售情况很好,卖得很火。但这是项目开发成功了吗?不是,可能更多的是市场的成功,以及产品预研立项人员的成功。生命周期内还要花那么多维护费用,这怎么能算成功?如果我们造飞机,我们可能自己都不敢坐。衡量项目成功的标准与要素是什么?很多人并不知道。印度发展最快的Infosys公司告诉我们:衡量项目成功的标准是"质量、成本与进?quot;,达到这一目标的重要条件是"流程、技术、人"。
% y p% E% b7 N3 A; e3 e* T
7 C# I7 {8 r2 z6 L- ` 我们做计划时,只有进度,或许会考虑一下成本,但从来没有考虑过质量。我们知道项目开发的质量活动是什么吗?我们不知道;我们知道我们的质量目标吗?我们也没有;我们知道如何控制我们的质量吗?我们没有干过。
% p% _' o7 o* ? M% v- M5 I. f! G. y, @
所以我们才无所畏惧,百折不饶。但如果我们知道"折"一次要花100万,我们还会无所畏惧地"百折"吗?再回头看看一些业界标准:某印度合作公司通过了CMM5级,联合开发项目的生产率为每月400行。其中编码阶段,印度工程师每天可以写200至900行代码。 ' `8 W1 r- P7 G# P) D4 N d: U
在4个月的联合开发过程中―― ' a! a# A: a0 ]# x
5 s" Y2 O. D0 U. ]* M6 ]0 Y, E) w( C 在编码速度上,我方优秀工程师与对方差不多,但别人教会了我们如何保证代码规范以及编程风格的一致; , r( \ D0 s& ^5 O
在阅读协议标准方面,对方的速度是我们的4-5倍; - h) I7 Q* j7 N0 O _; ~7 h5 B$ I
在设计方面,对方有明显的优势;
. x/ S9 o4 A. @! Q 在质量控制,我们与他们就没有办法比较了; - i: K8 u& V- ]- p5 F
在预测方面,对方估计工作量为36人月,我方估计为22人月,实际数为35人月。 1 y" r! O3 k6 D9 t V- L, [
通过对比,我的结论是:我们富有,因为我们有很多bug;我们快速,因为我们没有质量体系。
- |" k5 E# z7 R# D6 ^) b 有些人还以为―― 7 l4 z4 f$ d6 V% q6 V4 j
会使用配置工具sourcesafe,就知道什么是配置管理;
. D3 X( e }1 ^ 会画CANTT图/PERT图,就知道项目计划是怎么回事了; : W# b( t& X; _) ?
填一下表格就是管理;
/ R5 ^$ Y' R* |! w; q 吃一顿饭就是沟通。
' C$ a# I+ a( `7 B o3 \4 r) L9 O# @- i) f, p
没有对质量整体的认识,不了解其为什么这么做,大家就根据自己的过去经验"理解"、"推测"、"认识"别人,有这么巨大的认识差距就不足为怪了。
1 ]* m# [' ^1 \. R
# j8 q8 A- g9 g7 S2 ` 目前,公司在质量体系方面的培训与推行力度的不断加强,印度所经验的不断推广,在很多方面,如流程建设、预测、质量控制、度量系统,我们已经初步了解该怎么做。但我们还要不断地宣传、不停地松土,让所有的人承认自己无知,只有这样,我们才能由"无知"变为"有识"。 & P& Q6 y, U, j1 ~, F! U$ t
% s6 V8 ?8 A2 @- T* _" T% Q
"艺低人胆大",今后,我再也不想听这种大胆的豪言壮语:“我们每月代码1万行"! 7 r, `9 K. z" W& Y! }# v2 D* f/ c
) L8 o- t. Z4 r3 c$ R! A |
|