【转From CSDN】http://news.csdn.net/n/20061117/97697.html
一个在美国IBM工作过2年,在印度公司工作了4年的项目经理与我司资深软件开发经理有这样一段对话。
印方经理问:"你们每月生产多少行代码?"
我方经理掂量了很久,谦虚地说:"人均代码1万多行吧,不到2万行"。
印方经理听后,眼睛瞪得圆圆的:"喔!你们已经远远超过国际最高水平了。"
我方经理惴惴不安地反问:"你们的呢?"
印方经理很认真地回答:"我们公司目前的效率为每人每月300行。"
这是一个真实的故事,我想换了其他人(包括以前的我)也会给出同样的答案。
为什么与软件大国有这么大的差距呢?
首先我们没有生产率的概念。大多数人是这么算的,一天编400行-500行代码还不是小菜一碟。一个月有30天,这样每月1万多行还不是轻松搞掂?
殊不知,这个伟大的假设有两个致命的错误:第一、没有考虑需求分析、概要设计、详细设计、单元测试、集成测试、系统测试的时间,也没有考虑文档的时间,甚至都有可能不知道有这些过程。
这不是笑话,试问:我们有需求分析吗?我们有单元测试吗?我们有编程规范,但我们遵守了吗?
我们的代码花花绿绿,风格千奇百怪――
我们不是有"开发完了,还没有设计文档的经历"吗?
我们不是有"要转中试了,所有人才开始埋头苦干写文档"的经历吗?
我们不是有人在文档中写过,"该软件对人畜没有伤害"吗?
当然,我们更不可能想到有review的时间,根本考虑不到质量控制?
我们最熟悉写程序、系统测试、维护,其他的都是多余。这是典型的小公司游击战的做法,一个人搞一个小软件,不需要任何流程,没有任何质量体系,除了写代码,测试以外,什么都不需要,非常自由,自以为"牛得不行",这很easy,那很容易,"管理是罗嗦,流程是麻烦",但实际的结果是什么样大家都知道。
第二、一天能写400-500行代码,并不表示,你平均每个月能写12000-15000行代码,道理很简单,一个人100米速度是12秒,并不表示他的3000米速度是6分钟。我们不是机器人,写软件需要思考,写嵌入式软件尤其需要质量。
印度工程师是人,中国软件工程师也是人,我们的代码生产率与水平能高到哪里去呢?正如大家都是凡人,你突然说你比子弹还快,一蹦3层楼高。
这真是"无知"者"无畏"?
其实我们的生产率很低,自己不觉得罢了,很多人并不相信我司的公开数字――月产代码才120行?如果算一算所有的人力,所有阶段的时间,我们就不会惊奇这个数据了。不信的话,我们拿一个产品算一算!或许我们的经理自己都不知道在这个产品投了多少人力。华为有职业化的软件开发管理人才吗?目前几乎没有,或许我们真的有月产2万行的编程高手,也有很多自以为能写2万行代码的"泡沫"高手,但我们没有真正专业的软件人才!
目前我们公司的销售情况很好,卖得很火。但这是项目开发成功了吗?不是,可能更多的是市场的成功,以及产品预研立项人员的成功。生命周期内还要花那么多维护费用,这怎么能算成功?如果我们造飞机,我们可能自己都不敢坐。衡量项目成功的标准与要素是什么?很多人并不知道。印度发展最快的Infosys公司告诉我们:衡量项目成功的标准是"质量、成本与进?quot;,达到这一目标的重要条件是"流程、技术、人"。
我们做计划时,只有进度,或许会考虑一下成本,但从来没有考虑过质量。我们知道项目开发的质量活动是什么吗?我们不知道;我们知道我们的质量目标吗?我们也没有;我们知道如何控制我们的质量吗?我们没有干过。
所以我们才无所畏惧,百折不饶。但如果我们知道"折"一次要花100万,我们还会无所畏惧地"百折"吗?再回头看看一些业界标准:某印度合作公司通过了CMM5级,联合开发项目的生产率为每月400行。其中编码阶段,印度工程师每天可以写200至900行代码。
在4个月的联合开发过程中――
在编码速度上,我方优秀工程师与对方差不多,但别人教会了我们如何保证代码规范以及编程风格的一致;
在阅读协议标准方面,对方的速度是我们的4-5倍;
在设计方面,对方有明显的优势;
在质量控制,我们与他们就没有办法比较了;
在预测方面,对方估计工作量为36人月,我方估计为22人月,实际数为35人月。
通过对比,我的结论是:我们富有,因为我们有很多bug;我们快速,因为我们没有质量体系。
有些人还以为――
会使用配置工具sourcesafe,就知道什么是配置管理;
会画CANTT图/PERT图,就知道项目计划是怎么回事了;
填一下表格就是管理;
吃一顿饭就是沟通。
没有对质量整体的认识,不了解其为什么这么做,大家就根据自己的过去经验"理解"、"推测"、"认识"别人,有这么巨大的认识差距就不足为怪了。
目前,公司在质量体系方面的培训与推行力度的不断加强,印度所经验的不断推广,在很多方面,如流程建设、预测、质量控制、度量系统,我们已经初步了解该怎么做。但我们还要不断地宣传、不停地松土,让所有的人承认自己无知,只有这样,我们才能由"无知"变为"有识"。
"艺低人胆大",今后,我再也不想听这种大胆的豪言壮语:“我们每月代码1万行"!
CSDN声明:CSDN登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述
分享到:
相关推荐
【《无知才能无畏》阅读训练题及答案】心存敬畏才能无畏.docx
2. **沟通与理解**:“无知者无痛无畏无忧伤”这句话暗示了沟通的重要性。在IT项目中,有效的沟通能避免误解,确保团队成员对目标和任务有清晰的理解。 3. **承诺与信任**:“我愿用我仅有的青春等待那最美的未来”...
背景音乐播放器,下了很大一番功夫,弄到了DJ235网站的背景音乐播放器。包括djwma(前一个版本)两款。你想要的话可以先去www.djwma.com去看一下。如果自己也能轻松搞到手的话,就不用给我10积分了。
curl 'http://localhost:5000/predict/?content=无知者无畏' 优缺点 速度 - 数据转化成查询向量,并且缓存起来不用每次从资料库计算,应该比较快 注意 - 除了垃圾要学,非垃圾的也要学,若不学非垃圾数据,分类器...
同时,符合特定条件的人员可免试,如计算机专业中专毕业及以上学历者、获得硕士或博士学位者、1954年12月31日前出生者等。 考试时间由各地自行组织,各省份的报名时间和考试安排可能有所不同。考生需要关注当地的...
谈起电脑病毒,广大的读者恐怕都有谈虎色变的感觉,不知道这东西到底躲在什么地方,也不知道它们会对自己...不知道有谁说过这样一句话“无知者无畏”,我觉得真实情况恰恰相反,真正无畏的人只能是拥有了足够知识的人。
1. **初始化与设置**:这部分代码负责配置硬件接口,如电机驱动、传感器初始化,以及通信协议的设定。 2. **传感器处理**:智能车通常使用多种传感器,如光电传感器、超声波传感器或电磁传感器,来感知环境。这部分...
【电脑主板诊断卡代码查询器】是一款专门针对电脑硬件故障诊断的工具,它能够帮助用户解读主板BIOS在启动过程中显示的各种代码,从而快速定位电脑可能出现的问题。在计算机硬件维护和修理过程中,诊断卡是一种非常...
此外,克服常见的认知误区,如“无知者无畏”和“下一个倒霉蛋不是我”的心态,也是构建信息安全体系不可或缺的一部分。通过持续的教育和培训,加强员工的安全意识,可以使组织在面对日益复杂的安全挑战时更加...
因此,企业应确保每个员工都接受必要的安全培训,使他们成为"科学无畏者",而不是盲目自信的无知者。 同时,强化安全规章制度和操作规程的培训,能帮助员工养成良好的安全习惯,"不以规矩,不成方圆"。当遵守规则...
- **克服方法:** “无知者无畏”的态度和将自己置于“无法回头”的境地。 **深入分析:** 在创业初期,许多创业者都会经历类似的恐惧感,担心自己的想法是否可行,产品是否足够优秀,以及能否吸引足够的用户。这种...
《.NET网上书店源代码深度解析》 在当今数字化的时代,网上书店已成为图书销售的重要渠道。本项目基于.NET框架,采用ASP.NET技术和C#编程语言,构建了一个完整的网上书店系统,实现了图书展示、购买、销售等功能,...
STM32CubeIDE是一款专为STM32微控制器开发设计的集成开发环境,它提供了全面的工具链,包括代码编辑、编译、调试以及配置功能。在编程过程中,代码提示功能对于提高开发效率至关重要,因为它可以帮助程序员快速找到...
WinForm入门DEMO代码是为初学者准备的一个实践项目,主要涵盖了Windows Forms应用程序的基本构建和交互操作。Windows Forms,简称WinForms,是.NET框架的一部分,用于创建桌面应用程序。这个DEMO将帮助新手理解如何...
恶意代码设计者通常会利用Android系统的权限管理缺陷,或者利用用户对应用权限的无知,来获取设备的控制权。 为了防止恶意代码的侵害,需要从以下几个方面着手:首先,用户应当谨慎安装应用,尽量从官方市场下载,...
法律知识的匮乏可能导致无知者无畏,无视法律的存在,从而走向违法乱纪的道路。 【知法、懂法、守法、用法、护法】 知法、懂法是遵纪守法的前提,只有了解法律,才能在日常生活中遵守法律,避免触碰法律红线。演讲...
之前一段时间,有听部门架构说起接下来公司要使用微服务架构来研发系统,当时没怎么在意,因为是第一次听说微服务这个名词(果然无知者无畏啊);正好赶上五一假,我自告奋勇的,接了编写微服务架构培训文档这个任务...
这则故事揭示了面对未知恐惧时,无知者无畏的道理,同时也暗示,过分的恐惧可能会导致不必要的逃避。 1. 粗点字含义解释: - 惩山北之塞:苦于山北的阻塞。 - 固不行彻:顽固得无法通达。 - 甚矣,汝之不惠:你...