软件行业规范化势在必行

http://blog.csai.cn/user1/21567/archives/2009/36751.html

作者简介:沈东海,和谐软件过程创始人和实践者,中国系统分析顾问团专业顾问(csai),高级工程师,国家系统分析师、高级程序员、网络安全工程师;

也许N多年前就有人提出过软件行业需要规范化,或许有许多人会把软件比做建筑、会计等,同样也有更多的人(“更多”两字一点都不夸张),却强烈反对软件规范化,认为软件行业有自身的特殊性,每个项目也有特殊性,怎么可能要求每个公司、每个人都按照同样的标准来执行呢?再说建筑、会计等和软件差别甚大,根本不能相提并论。
  作者虽然只在软件行业打滚7年,但是却深深地感受各公司规范的差异性实在太大,甚至连公司内部都无法统一,要说要让全体软件人都统一执行同样的规范,确实是非常困难的事。但是,从软件行业进一步发展的需要看,从软件人自身的发展需要来说(这点或许更重要),规范的实行已经破在眉睫。很多行业,往往会越做越吃香,而软件行业的人,男的35女的30后,如果走不上管理类岗位,大部分得考虑转型甚至转行,近几年因为转型转行不成而自杀的例子也不少见。因此,作者认为,要执行软件行业规范虽然十分艰难,甚至会有很强大的阻力,但是必须坚决执行、深彻执行。
  下面再根据行业的共性和个性来谈谈,软件行业执行行业规范的必要性与可行性。
软件行业确实和其他行业有较大差异。但是透过表面现象来看更深层次的东西,却存在着很多相似性。会计、建筑、医疗、机械制造业等经过上百年至几百年的发展,都已经是非常成熟的产业了,她们的每一个步骤、每一道工序都有非常明细和严格的标准,软件业相比于这些行业来说还是一个处于发展起步阶段的行业,尤其是在中国。软件工程的出现就是为了将软件开发工程化,并确保软件过程正确执行。规范软件过程的目的就是提高产品的质量,降低个体的不确定因素对软件质量的影响,将软件开发置于受控状态下。总之,规范化的目的是提高效率、确保质量、长期发展。
    很多人或许会认为“软件开发是一项智力密集、创造性成分较高的劳动”,因此会产生许多非受控的因素,造成软件开发标准规范在实际中难以贯彻执行的错误观念。作者认为软件开发和其他行业一样,有着许多共性,对质量的保证都其实都可以归结为一个管理问题,从这一角度讲,需要遵循的基本原则和面向对象没有什么不同,过分强调软件开发的特殊性其实是软件行业尚不成熟的表现、是对软件过程没有信心的表现。
我们可以借鉴其他成熟行业的质量管理体系,来反思一下软件开发过程的问题。其他很多行业已经拥有长久的历史,形成了一套行之有效的管理模式、规范以及质量管理体系,更重要的是这种观念和意识已经深植于其行业从业人员心中。不论是大型的企业还是只有一二百人的小厂,都会有自己的详细流程、制度,并良好运转且大家习以为常。例如会计、建筑等行业甚至已经以立法的形式明确固定下来了。
再例如,一个机械制造企业需要开发一个新产品时-这个产品可能是一种新型步枪,也可能是新一代的运载火箭,其研发大致可以分为这样几个步骤:
  1、首先,是对新产品的功能、技术性能(指标)等的定义;
  2、其次进行产品的总体设计、分系统或模块的划分,设计各接口之间的关系或依赖条件等等,还包括部分的尺寸、重量等等具体的技术指标,完成总体蓝图以及设计计算说明书;
  3、然后进行的是分系统的设计-产生分系统的蓝图、设计计算说明书,完成具体的零件图;
  4、组织加工,这个阶段完成零件工艺线路、工卡量夹具的设计,零件的加工,产品的装配;
  5、系统的联调。
  6、产品的定型或提交;
  整个的阶段过程大致如此,我们可以和软件研发过程作一下比较,与软件开发的步骤非常相似,完全可以将这些步骤分别对应到需求分析、概要设计、详细设计、编码与实现、测试、发布。在一个机械产品开发过程中,同样有与软件开发过程相对应的职责与角色,大家可以自己去比较分析。
  制造业不是一个“智力密集、创造性成分较高的劳动”吗?如果我们了解了一个产品的开发过程,恐怕会说"Yes",只不过我们经常在流水线的轰鸣声中忘记了一个背后的事实----任何产品,包括生产线本身,都是人类创造性的结果。其实不止是制造业,电子行业、建筑行业、医疗、会计、航天行业等等,都是这样的情况。
   这里要问的是,机械制造业的产品差异、变化并不比软件少,而机械行业能够规范化,为什么软件行业就不能规范化呢?
   说了这么多,只想说明一点,对于质量的管理、控制(或者以软件行业的术语说成时间、成本、范围等),都不是哪一个行业或哪一些人面临的孤立问题,而是万变不离其中的。正如上面所举的例子中,制造业有6个步骤,而在不同行业中,步骤可能有多少,措施或许有不同,但是抽去了具体业务后,却是相同、相通的。

下面来总结一下软件行业无规范情形的主要危害:
1,软件人跳槽频繁,结果对公司对自己都不好,最根本的原因在于没有相关法律法规、道德规范的约束。
2,黑客、破坏性恶意代码泛滥,原因在于没有执业资格管理制度,法律法规的禁止、惩罚制度。
3,从业人员水平参差不齐,大家的标准都不统一却又各自以自己的标准出发去做事;有的公司自己或许有规范,然而却也往往缺少对员工的强制作用,或者即便有强制作用,然而在和别的公司合作时,却又因为公司间的标准不一致而导致各类问题。结果往往把问题归责与沟通问题。
4,软件行业技术路线随心所欲,往往取决个别权威人士的技术偏好;而软件行业的新技术层出不穷,即便你整天学习,也学不完所有的技术,而新技术的出现必然淘汰旧技术,因此一般如果2年不学新技术就已经不是IT人士了,所以软件人必须不断学习,但是人的精力毕竟有限,特别是成家后,因此也就出现目前男35女30后转型转行的问题;另外,跳槽后,也会出现像从新进入软件行业一样,因为技术、业务的不同,很多东西又得从头做起。
5,由于软件人大多比较聪明(或者自认为比较聪明),不愿意服谁或者受制于谁,对别人的软件成果也往往不屑一顾。在其他行业叫做同业相妒。因此在团队合作方面也往往比较差。
6,即便公司有规范,软件人也往往不愿意遵守。
7,加班不断,却又得不得应有的补偿,甚至加班赶工都会被说成因为个人能力差所以才必须加班。
8,不可控性太高,风险太大。
9,软件人员没有安全感、归属感,只想赚快钱,而不顾公司利益。
总之,软件行业不执行统一规范,受害的是公司、是个人。


我们再来看看其他行业中规范的执行情况。
1、从规范的产生看
  建筑行业的规范和标准由来以久,这也是建筑行业成熟的重要标志。标准约束的不仅仅是内容的表示方法,而且包括表示的格式,在一张设计图中绝对不会出现别人看不懂的符号,而且这些符号的写法、位置甚至字体都是相同的(本人大学里选修过机械制图,深有体会),而程序员的代码格式、命名规范、文档写法不也是这样的吗,为什么就不能全行业统一?
2、从规范的执行看
  没有那一个会计师会认为会计行业规范没有必要,每个人都会认真的执行,严格按照国家统一的会计法律制度执行。如果违反,很可能被吊销会计从业资格,严重的将受到刑法的严厉制裁。但是在国内的软件行业,却并不是这样。不但没有统一的规范,更谈不上吊销软件从业资格一说。
3、从过程监督看
  规范的执行仅仅有执行的自觉自愿是不够的,在软件行业态度好并不把软件做好,严格的审计、监理等相互监督制约的方法措施同样必不可少。在法律行业有检察院和上级法院的审判监督制度,在会计行业有稽核、审计等监督制度。而软件行业的出错率比这些行业更高,为什么就不需要相关的监督制度呢?


其实很多问题不是大家看不到、看不懂,而是涉及到大家的利益问题。例如,如果真正严格执行软件规范制度,那么人的权威性就会降低(这个问题其实在其他行业也是存在的),大家的工资水平差异就会缩小,要想正真在软件行业做出惩成绩就会更加困难等等。
《庄子》曾经说过“大仁不仁”,在软件行业只有实现了行业法治(目前是行业人制治),真正做了到规范,从业人员才有可能真正得到发展、工作效率才能提高、软件质量才能得到保证、大家的利益才能得到保障。只保障少部分人利益的游戏规则,迟早会被打破!
    最后,借用司法界的一句话,“实体公正的关键在于程序公正”,同样软件行业要维护大家的利益、要想长久发展还是得靠行业规范、行业法治!

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页