程序员的明天

这是我的自然辩证法假期作业,如若诸位看官觉得不爽还请包涵~

程序员的明天
——从辩证法的高度看软件产业发展趋势

wizzSoft.com

摘要:科学技术发展的一般规律是自然辩证法的三大研究对象之一。本文运用自然辩证法的基本观点和方法,结合其他产业的发展历程,分析了软件行业的总体发展趋势。指出当前的软件产业面临一次大分工,现在的程序员队伍将分化为软件设计师和专业代码员。

 

关键词:自然辩证法,软件,程序员,发展趋势

一、      前言

自然辩证法是关于自然界和科学技术发展一般规律以及人类认识和改造自然的一般方法的科学。以马克思主义的观点,从人和自然的关系来分析作为实体的自然界、作为主体的人和作为介质的科学技术,便构成了自然辩证法的三个研究对象。具体而言,这就是自然界的一般规律,即自然界的辩证法;人类认识自然和改造自然的一般规律,即科学技术研究的辩证法;科学技术发展的一般规律,即科学技术发展的辩证法。

本文试用科学技术发展的辩证法,比对其他产业的发展历程,分析软件产业的发展趋势,以及作为软件业基础力量的程序员的职业前景。

二、      软件业的现状

每当我们回顾20世纪的技术进展,都会一致认同信息技术是发展最为迅速的技术之一。特别是信息技术应用的渗透性,几乎在生产生活各个领域都可以看到她的身影。软件作为信息技术的灵魂,更是扮演了极其重要的角色。现代社会中已经很难想象没有软件会是怎样。

同时,我们看到从第一台计算机诞生开始,硬件成本每隔2-3年降低一半,性能价格比每十年提高一个数量级。而软件的发展相对来讲却显得滞后了。软件开发往往是在一种无序的、崇尚个人技巧的状态中完成的。编程缺乏规范,工作好的程序员与差的生产效率比例是101,而产品质量比是51。对项目的开发进程难以控制,开发完成后的修改维护极其困难。特别是大型软件系统,其技术复杂性和管理复杂性指数地上升。使得软件可靠性没有保障、软件维护费用不断上升、进度无法预测、成本增长无法控制、程序人员无限制增加。这就是20世纪60年代后期爆发的所谓的软件危机。当时IBMOS/360系统和美国空军某后勤系统都花费了几千人年的劳动,历尽艰辛,然而结果令人失望。

1968年北约在德国Garmish举行的学术会议上正式提出“软件工程”(software engineering)这一术语,从此软件工程化的理念深入人心。软件业开始系统地借鉴传统工程的原理、方法来组织生产。如今软件工程已经成为信息产业的核心。作为一门新兴的交叉性学科,虽然还有很多理论有待发展,但是它已经被广泛的应用于生产实践,为软件生产水平的提高做出了重大的贡献。

三、      软件业与建筑业的对比

在软件工程的发展中,我们时常能够看到来自建筑业的影响。建筑是一个非常古老的行业,从金字塔开始,已经经历了几千年的漫长发展历程。其中工程项目的管理方法,工程人员的分工合作,工程进度的分段,工程设计的理念方法,都是人类文明的宝贵财富,蕴含了许多普遍原理,值得我们深刻体会。

 

根据马克思主义自然辩证法的原理,我们看到现代科学技术的发展趋势呈现整体化、数学化、一体化等特征。这一原理也指导我们从跨学科的高度来分析软件业的发展方向。

比如当今软件工程界如火如荼的软件设计模式的概念,从某种意义上说,也是来自于建筑业的灵感。建筑中的模式可谓由来已久,俯拾即是。中国的皇家建筑就是杰出的代表:每个建筑都有其共同的特质,但是又各有变化,共同形成一个自由,完备,舒适,和谐,开放的整体。如果没有模式的应用,规模如此宏大、结构如此复杂的建筑工程也是不可能各自完全从头设计的。

关于模式的理论直到79年才由美国建筑大师Christopher Alexander在他的《The Timeless Way of Building》中进行了全面的系统总结。人们将这本书喻为一本“使用建筑学的例子讲解哲学”的书。当时正被软件危机所困扰的软件业仿佛从中看到了希望的曙光。1991年,Erich Gamma在他的论文中将Alexander的理论应用于软件领域,第一次提出了设计模式的概念,指出可以通过设计模式对设计经验进行复用。从那以后,参加模式研究的人数呈爆炸性增长,模式也不断被应用到软件工程的各个方面。

 

我认为软件业要想像建筑业那样步入成熟,最大的问题在于必须细化分工。分工越来越细致是人类社会发展的必然规律。人类历史上第一次社会大分工带来了农业的大发展;第二次社会大分工产生了手工业的兴起;第三次社会大分工为商品经济的崛起铺平了道路。恩格斯也曾指出,分工是“大工业建立以前的最强有力的生产杠杆”。

一个行业内部的分工同样如此。分工也就是专业化,有助于提高劳动者的熟练程度,改进技术和提高劳动生产率。拿建筑业来说,至少涉及这么几种不同的职业角色:建筑师,结构、水电、机械等专业设计工程师,工程预决算人员,监理人员,项目管理人员,项目施工人员。可以说没有细密合理的分工就没有建筑帝国今日的强盛。而我们的软件却远远没有这样的体系。虽然目前在软件工程的推动下,已经产生出了软件构架师,系统分析员这样的职位。但是就整个产业来讲还不成气候。现在个别大企业中的软件构架师或者系统分析员都是由具体编写代码的程序员,靠个人的悟性,机缘和经验成长而来。这种现象,就好比古代的建筑师都是从当学徒工开始慢慢领悟。但是发展到现在,如果要所有的建筑设计师都从建筑工人里培养就是不可思议的事情了。现在软件产业的历史也不过几十年,可以说还处在婴儿时期。我们现在学校里只笼统地设置一个软件专业。毕业后大多数人从事的工作都是从需求分析到代码实现的全程工作。这就好比一幢大楼,由同一队人来进行从设计到施工全部过程一样。一方面工作人员万分辛苦,另一方面工程质量还没有保证。相信未来的软件业必然会产生一次设计和实现之间的大分工,并且因此而达成自己发展历史上的一次飞跃。

 

说到这里,你可能要质疑,分工以后设计人员的意图如何传达给实现人员呢?在建筑工程里是靠设计图纸来实现交流的。可是软件工程有图纸么?还没有,但一定会有的。现在看来,最佳候选人就是1994年由BoochRumbaugh首先提出的UMLUnified Modeling Language 统一建模语言)。它规定了一系列形式化的语言,通过图形与文字相结合的方式,力图尽可能简洁、直观、明确地描述软件的行为、结构、关系等各个方面的特性。经过数年的发展完善,UML已经获得工业界和学术界的广泛支持。虽然目前还不能单靠UML文件就描述清楚所有特性,达到按图施工的境界,但是UML的出现已经是向此目标迈出了坚实的一步。

 

四、      软件产业的发展趋势

《波士顿环球报》2003120日发表了题为《软件工业的印度之旅》的文章,认为软件编程已经开始遵从美国纺织工业的发展模式,成为可以在海外完成编码的低级手工工业。Forrester估计,到2015年,美国大约有50万个计算机相关的就业岗位转移到海外,大多数是到印度。显然这种趋势正是前面所述分工过程的另一种体现。跨国公司为了追求利润的最大化,正努力把相对简单的编码工作转移到海外,由廉价的劳动力来完成。而系统设计等核心部分仍然牢牢的控制在自己手中。

 

这就是软件业的未来吗?我认为也对,也不对。

软件产业细化分工的趋势是不可阻挡的。现在的程序员一部分会上升为系统分析员,软件构架师,另一部分则会进行更纯粹的编码工作。单纯的编码工作将会比现在程序员进行的编程简单,因为编码时只需要按照系统设计完成局部的功能就行了。很可能代码员到项目完成都不知道整日忙碌的工程用来做什么。功能简化后的代码员岗位使得通过较少的培训就能拥有合格的代码员,降低了生产成本,扩大了劳动力来源。到那时“软件工厂”的生产模式就会真正出现。软件生产由此才能走出手工作坊的模式,向高效率的工业化生产迈进。

 

我们看到,就在2002年全美的最后一家衬衣厂在缅因州倒闭。这片曾经挤满忙碌的羊毛工人的土地上现在一个羊毛工人也没有了。当然美国的服装业并没有因此而消失。现在美国人身上穿的衣服来自中国,来自马来西亚,但是他们的设计都是在美国完成的。美国人牢牢控制了服装的设计环节,从而攫取了整个价值链中最丰厚的利润。

显然,这种以我国提供廉价劳动力为基础的国际分工也绝对是我们不希望看到的。这就要求我们努力学习国外先进技术的同时,注重创新,注重掌握其设计理念,培养自己的设计队伍,形成自己的研发、设计能力,核心技术和自主知识产权。相信现在的软件产业正处在迅速变化和发展的前夜,而中国的软件产业也一定会抓住机遇,在世界分工的进程中确立自己的地位。

 

参考文献:

[1]胡良贵,刘宁《科学观与科学方法论》四川大学出版社2000

[2]薛晓东《自然辩证法概论》电子科技大学出版社1998

[3]朱三元,钱乐秋,等《软件工程技术概论》科学出版社2002

[4]Christopher Alexander著,赵冰 译《建筑的永恒之道》知识产权出版社2002

[5] Frederick P. Brooks, Jr.著,UMLChina翻译组汪颖译《人月神话》清华大学出版社2002

[6] Scott KirsnerIn software industry, a passage to India》波士顿环球报2003120
http://digitalmass.boston.com/news/globe_tech/at_large/2003/0120.html

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值