IT呓语
计算机发展的初期,不论硬件、软件,都出于个人的意向,其功能完全根据发展者
自我的认知而定。
现在,计算机软、硬件的技术迅速成长,社会上对它的要求越来越高,尤其是软件
的复杂程度,已非任何一个个人能够掌握。于是,个人英雄主义消逝了,集体合作、功
能强大的各种软件纷纷出笼,计算机的应用普及到社会上各行各业。
人的愿望是永远无法满足的,随着技术的日新月异,使用者开始期待着一种万能软
件,能一举解决他们所有的需求。然而,计算机虽然是一种商品,其涉及的技术层次甚
高,只有少数专家洞悉其中奥秘。
更进一步,我们把这个整合软件的各个模块,继续发展成为"整合系统模块",
提供给各系统、软件公司,作第二次开发之用。由于利用现成模块可以节省程序制作的
时间,借着大量应用软件的开发,以提升计算机的功能。
程序的积累价值。效率不高、功能不强的程序,很容易
就被扬弃掉。反之,则可以不断地重复利用,甚至累积起来,成为日后软件继续发展的
基石。像这样,程序的制作效率将会随着累积的程度而直线增加。当然,没有长远的眼
光和妥善的规划,是难以竟功的。
无意义的音符能编成美妙的音乐,无规律的色彩可幻化为缤纷的世界,为什么计算
机的机器指令,不能架构出信息的理性天地?
这就是艺术,作为艺术家,就必须奉献出自己的心血,以真、善、美为最高境界。
要达到这种目的,就要认真的作好准备动作,再一步一步地追求下去。
任何一种商业产品,当然是以利益为先,利己后而利人。如果是艺术品创造,则刚
刚相反,唯有能忽视己利,沥血泣心地探索,虔诚狂热地奉献,才会迸发出人性的光辉,
创造不朽的杰作。
艺术家之伟大,在于此,人性之可贵,在于此。
对组合程序语言,有人视为商品,将写作技巧当作专利,轻不示人。相信这也是迄
今尚无一本象样的参考书籍之根本原因,我买了不少这类书,但书中除了指令介绍以及
编程、侦错的手续外,完全没有技巧的说明,好象懂得指令就可以把程序写好一般。当
我自己下了不少功夫,得到了一些心得,再回过头来看那些参考书,才发现连作者本人
所举的例子,都是平铺直叙,毫无技巧可言。
我认为,既然语言是种艺术,我们不仅不应该藏私自珍,而且要相互探讨,交
流切磋,以期发扬光大。
不过,技术本身与利用该技术所创造的产品却不能混为一谈,产品是借以谋生的工
具,能够生存,大家才有研究发展的机会,也才能把成果贡献给社会。如果国人不尊重
别人的产品权利,只是互相抄袭盗用,或能受惠于一时,但影响所及,人人贪图现成,
不事发展,则观念停顿,技术落伍,其后果不堪设想。
效率的定义
在宇宙中,大至物种的演进、变化,小至个人的工作、运动等,都严格地遵守效率
法则。
效率的定义是:
┌─────────────────────────┐
│F=E/t,即特定的能量在特定的时、空中所作的「功」。 │
└─────────────────────────┘
由上式 F = E/t 可知,特定的「能量」在特定的「时空」中所作的「功」,是一
恒定值,既为恒定值,表示不可能有任何浪费。当能量不变时,时、空的延长往往会导
致「功率」的不足,从另一个角度看,可以说是能量不够,效率低。
对计算机而言,如果写作程序的「功率」能接近此一「恒定值」,而又具有长远的
使用价值,则我们可以假定,这种程序的效率最高。
由人类文明的演进,可以看出,因为技术日渐专业化,工作的难度不仅没有减低,
反而更加复杂。这种借着职业专家的投入,以节省一般应用者宝贵时间的方法,事实上
可以说就是效率的追求。
因为人的生命仅存在于有限的时间,所以其价值极高。每一个电脑程序,其最终目
的都是为了服务大多数的使用者,制作程序者仅仅是少数人,其制作时间的长短,永远
无法与大多数的使用者,在操作中所耗费的时间相提并论。
计算机的效率性
计算机的发明,是人类追求效率最具代表性的成就。
目前计算机的机能尚局限在数据处理以及自动控制上,人们利用计算机,所期望得
到的效率不外乎下述六点。
1,节省工作时间及工作成本。
2,取代繁琐、重复性高或具有危险性的作业。
3,追求精密无误的数据、讯息。
4,贮存或运算大量的数据或数据。
5,远距离的通讯或遥控作业。
6,自动化工业生产或一般性服务。
四大效率定律
兹以人类社会中,有关作业过程、生产成本及应用价值等三方面,分别假设定律如
下:
定律一:
在作业过程上,能以最少步骤产生最大功率者,效率最高。
定律二:
在生产成本上,时、空间及原料最节省者,其效率最高。
定律三:
在应用价值上,功能及成果能一再累积者,其效率最高。
定律四:
最佳的效率,是最符合实际需求的最大边际效应。
计算机的应用,纯粹是为了追求工作效率,据此,硬件、软件的设计,都应严格遵
守效率定律。可是事实却不然,由于计算机发展迄今,一直是「卖方市场」,美其名为
「高科技」,内行人高利、高酬,外行人则唯恐后人,亦步亦趋。
最重要的,是这种效率的达成,在于利用人的「智力」。我认为在宇宙进化的过程
中,到目前为止,「人智」就是最高效率的结晶。任何人若要追求效率,应自己先下手,
与其坐待硬件的改进,不如充实程序写作的方法及技巧,至少,这些都操纵在自己的手
里。
模块的效率
模块并不是一个新观念,在人类文明发展史上,人一直致力于了解自己身处的宇宙。
这种了解,实际上就是模块应用的观念,将宇宙大环境,分解成为人所能认知的小环境,
进而将小环境再分解成为个人的经验素材。
这样一层层地分解下去,便有了「概念、知识」。换句话说,概念及知识,就是一
个个代表人类对客观认知的模块。
基于模块的特性,人才能灵活地加以应用,因而产生了「人类文明」。同理,当计
算机的软件,也演化为模块方式,进一步大量推广运用时,计算机文明的时代,即将到
来。
模块的效率是结构性效率的最高表现,在我们处身的宇宙中,无处没有结构,无一
不受到结构的支配。
价值观念
不论什么程序,都应该以「正确、精简、效率」为基本原则。但在目前,除了系统
程序比较重视精简及效率外,其它的程序多半只重视正确性而已。
人们往往以为只有硬件才具有价值,其实大谬不然。硬件的变化有限,软件则永无
止境;硬件的价值容易衡量,软件却只有行家才能判断其良窳。在商业利益挂帅的今天,
所谓的「行家」,经常就是「既得利益者」。消费大众是盲目的,也是无辜的,行家为
了自身的利益,很少愿意道破其中原委。
此外还有另一层原因,硬件生产需要技术、材料、资金及设备环境,而软件则人人
都可以随手盗用。对一个从事软件设计的程序员,尽管有心将工作做得尽善尽美,但一
想到其呕心沥血发展出来的精品,很可能剎时之间就被不尊重软件价值的消费者偷抄盗
卖,哪里还有兴致去精雕细琢?
如果我们能先将软件的价值观建立起来,且人人尊重软件应有的价值,如此真正受
惠的,将是广大的消费大众。否则,这样恶性循环下去,计算机只能靠硬件的改进,来
达到效率的追求,软件不过是一种「快餐」性的消费品,永远没有价值。
从过去的经验中可以推出,硬件效率的改进,大约每年一次,而软件则完全建立在
其「价值观」之上。如果值得,设计者愿意投入,软件可以在很短的周期中,或因观念
的突破,或因工具的特性,功能及效率立即提高了十百倍!问题在于,连从事程序设计
的程序员,对软件的认识都不够充分,所制作的软件尚无法满足使用者的需求,充其量
只是速成品罢。故不论是程序员或使用者,对软件的价值观都难以建立。
基于人性,理想永远只属于少数人。可是,少数人的理想经常会推动时代,
为多数人谋取福利。
创造价值
信息时代方兴未艾,可以预期到只要有人类存在,计算机将是不可或缺的伴侣,永
远伴着人类不断朝向超高效率的境地迈进。且不论硬件技术如何改进、变化,应用软件
才是计算机生命的灵魂。一个有价值的软件,在千锤百炼之下,经过人智的洗礼,其意
义绝不是物质报酬可以比拟的。
再换一个角度来看,计算机的硬件技术日新月异,体积日趋轻巧。虽然记忆量也在
不断增加,但是软件却刚刚相反,由于对高级语言的依赖,程序占用系统的空间越来越
大,以致于抵消了硬件演进所创造的价值。
当然这都是软件工程师的责任,如果从事软件开发者,不立时觉悟,计算机将不过
是「金玉其表,败絮其内」。同理,从事软件开发者,如果仅顾眼前的方便、急功近利,
能抄就抄,能偷就偷,长此以往,计算机永远不能形成气候。
对程序员而言,仅把程序当作一种工作,而不追求效率价值,则其技术及境界将止
于此,其成就亦可想而知。唯有殚精竭虑,不断追求完美的人,无论观念和技术都将逐
步提升,则在未来的信息时代中,将会占有一席之地。
在现实世界里,人所从事的工作,有抽象的精神或心理代价,也有金钱或
物质代价,甚至两者兼而有之。不论如何,也不论成本为何,其价值高者,经常是人所
追求的目标。在这种基础上投入的成本,其价值的高低,将视人所追求的目标而定。
由于「理想」很有可能只是某种特殊的目标或影响,其利益经常远大于经
济上的获利。因此,要提高成本价值,绝非仅仅降低成本而已,而是如何提高其影响力。
再若经济上的获利高于理想,以现实的角度而来看,人不可能轻易放弃利
益,而去追求价值不足的「理想」。
附带的产生了一个话题,若矢志追求理想的人又想兼顾金钱利益,一旦金
钱利益的成本价值超过了理想时,根据前述理论,此人随时可能变节。至少,在我个人
的见闻中,还没有例外的。
硬件是消耗品,用到一定的时限后,就失去了再利用的价值。而软件则永
远没有损耗,除非应用观念的改变,其实用的价值如常。
不仅如此,应用观念虽然会改变,只要软件是由模块结合而成,其中的共
享模块永远不变。略作适当的修改,或再增加功能后,又面貌一新。
这种共享模块就具有累进价值,也就是说,用模块方式制作的软件,只要
分割适当,就应具有累进价值。凡是有累进价值的程序,其边际效益最高。因此品质的
要求也相对加高。
程序员应有的态度:
自动自发,谦虚学习,掌握重点,认真负责,追求完美
自动自发是指发自内心的原动力,且不论是基于名、利、个人成就感或是好
奇、赌气、逞强,只要有了这种动力,问题没解决,就会形成悬疑,不断地萦绕脑际,
难以休息,直到解决为止。
在解决问题
时,集思广益,虚怀若谷,必然是最有效、最正确的态度。
问题在于,越是执着、好强,或者自卑自傲的人,其自我观念越重。遇事即采
惯性行事,而且坚持不变,这种人不可能谦虚,更无法学习。
就像艺术家一样,不参考他人的作品,不学习新的技巧及观念,固步自封,则
难成大师。如果程序员不能谦虚学习,不随着时代的变化成长,创作出来的程序,其价
值可想而知的。
天下英才比比皆是,然而出类拔萃的人却不多。究其因,在学习、思考时,当
是原则重于细节,然而在执行的过程中,却是细节重于原则。此外,事物变化的组合无
穷无尽,主事者必须能针对目标,随时根据实际状况,逐步处理。
在各种状况中,如若程序员不能掌握当前的重点,则凡事皆如有千头万绪,难
以下手。事实上,从成事败事的观点来看,人只有两种,有能力者,是把复杂的事简化;
无能力者,经常把简单的事变得复杂无比。而这种能力的差异,就在于能否掌握当前的
重点。
观念清楚了,就看当事人是否能认真负责,坚持贯彻到底。人间世事成败,完
全基于这种态度。不认真,工作时草草了事,不可能有好的成绩;不负责更糟,没有问
题也会产生问题,发生问题后,更是无人解决;若参与工作的人多,彼此推卸责任,这
样做人处世必将失败,程序制作亦然。
所谓认真负责,具体说来,即是在事先要彻底了解该做什么?要做什么?以及
如何去做?工作时要考虑怎样做最有效率?每一步骤会产生什么结果?而工作完成后要
彻底检查,目标是否已达成?能否再加以改进?
最后,是对程序的品质及技巧的完美性,应锲而不舍地追求。一般人常把完美
当作不必要的奢侈,其实不然,完美是一种永远无法达到的理想。重要的观点是,人只
有在追求完美的过程中,才能不断地进步、升华。一个人若没有理想,就与动物无异,
一个程序员若没有理想,套句爱因斯坦的名言,不过是只「训练有素」的小狗罢了。
态度来自习惯,习惯则来自于学习及锻炼,有志向上者,应该自我要求,努力
学习。等到锻炼久了,习惯成自然,有了良好的态度,终有成为大师的一天。
软件开发的原则:
分工合作,量材施用,慎重计划,严格执行,市场导向
此处所说的软件开发,是指具有相当规模的程序,需要多数人员共同工作者。
人多固然力量大,但是人与人的相处和沟通,问题也特别多。若处理得好,力量是正值,
反之,则为负值。不仅彼此的力量相互抵消,有时还有不良的后果。
软件开发,应该有一个主事的重心人物,如果要谈民主,不妨去搞政治。负责
人首先要对工作内容详加分判,然后根据性质分配工作。分配时应注意工作量、时间要
求、个人特性及相互的配合等因素,责任要划清,交待要明确,俾能集中众人力量,分
工合作。
成事在人,如果用对了人,则成功在望。每个人都有其独特的个性、能力及态
度,适合于不同性质的工作和方法。所以应事先了解每个程序员的个性、能力及缺点,
再行分配适合的工作。
不仅分配工作时要度量才干,管理时亦然,人不是机器,不可能绝对适应同一
种工作方式。但是,若每个人以他自己适应的方式工作,对整体而言,又有步骤不一、
难以相互配合的弊病。
比较理想的解决方式,是对参与工作的人员,施以再教育,使之习惯于一种统
一的方式,借着训练的过程,也可增进对每个工作人员的认识了解。
再就是工作计划,将工作分成几个阶段,并配合人员的分工及设备器材的条件,
逐步实施之。
工作计划相当于建筑蓝图,一旦确定了就难以修改。一个完整周详的计划,应
包括了工作目标,人员分配,时间进度,执行细则,沟通方式,解决问题的程序等。
有了计划,还要有监督执行的专责人员。这种人才必须有足够的经验,对全部
计划能了解透彻,有敏锐的判断力,并敢于担当。工作时执行要严格,待人要宽厚,处
理事务要果断。
最后一项原则,才是真正的成败关键,那就是,产品要以市场需求为导向。不
能符合使用者需求的产品,一定「没有用」,没有用的产品,则不具备任何价值。
要测试产品是否「有用」,其实很简单,以程序员为例,如果自己都不愿采用,
显然是用处不大。有人会说,程序员又不是使用者,在没有必要时,再好的产品都不肯
用。这话并不尽然,人喜爱美好的、尤其是与自我有关的事物。如果程序真有用,制作
的程序员一定会想尽方法去 玩赏、测试,而且乐此不疲。
同理,程序员只有当自己不断的试用后,才会发现实际应用上,所可能面临的
问题。而当问题解决以后,用得方便,有了实际效益,市场才有可能接受。
工作环境的建立:
环境安静,数据齐全,消息流通,压力合宜
从事软件工作的人,可以说就是一个艺术家,艺术需要注入心智,需要个人无
保留地投入。在这种情形下,环境相当重要,必须事先安排妥当。
环境的物质条件并不重要,但是安静、卫生,却关系着艺术家心理及生理上的
平衡。喧哗、吵闹会令人心烦意乱,难以专心。对艺术家而言,不能专心,就毫无创造
佳作的可能性。当然,若只把软件开发视作生产线上的生产工作,那就不在话下了。
程序是运用数据、处理数据的工具,写程序最怕的是数据不全,因为缺乏一点
必须具备的数据,而使得整个计划受阻,是最可惜的事。同时,程序本身也是一种广义
的数据,尤其是一些软件开发所必须的工具,都应事先准备齐全。
由于计算机发展日新月异,新观念、技术层出不穷,数据永远难以收集完整。
所以消息的流通性非常重要,在一个闭塞的环境里,埋头苦干的结果往往会落在别人的
后面而尚不自觉。更何况世界各国从事计算机工作者多不胜数,他山之石可以攻错,消
息的流通常可使软件工作者节省大量的心力。
最后是工作的压力,为了效率,压力要大;但站在人的立场,不论身、心,实
在是经不住长期或太大的压力。所以,如何求取一个合宜的折衷点,是不容忽视的。
以我的经验,一般人受年龄、经验、动机及意志力等的影响,承受压力的能力,
不一而同。大概说来,年轻、初学者,在适当的动机下,能够承担长达三至五年、持续
性的重大压力;有经验、年龄稍长,除非有极强的动机,再加上坚定的意志,才能维持
下去。
软件开发需要劳心劳力,艺术创作则更需要坚持执着的毅力,技术有方法、有
步骤,一定可以实现。艺术则要有观念、有创意,加上心智的投注。两者融合,观念由
大处着眼,技术由细部着手,是则,理想终将成为事实。
自我的认知而定。
现在,计算机软、硬件的技术迅速成长,社会上对它的要求越来越高,尤其是软件
的复杂程度,已非任何一个个人能够掌握。于是,个人英雄主义消逝了,集体合作、功
能强大的各种软件纷纷出笼,计算机的应用普及到社会上各行各业。
人的愿望是永远无法满足的,随着技术的日新月异,使用者开始期待着一种万能软
件,能一举解决他们所有的需求。然而,计算机虽然是一种商品,其涉及的技术层次甚
高,只有少数专家洞悉其中奥秘。
更进一步,我们把这个整合软件的各个模块,继续发展成为"整合系统模块",
提供给各系统、软件公司,作第二次开发之用。由于利用现成模块可以节省程序制作的
时间,借着大量应用软件的开发,以提升计算机的功能。
程序的积累价值。效率不高、功能不强的程序,很容易
就被扬弃掉。反之,则可以不断地重复利用,甚至累积起来,成为日后软件继续发展的
基石。像这样,程序的制作效率将会随着累积的程度而直线增加。当然,没有长远的眼
光和妥善的规划,是难以竟功的。
无意义的音符能编成美妙的音乐,无规律的色彩可幻化为缤纷的世界,为什么计算
机的机器指令,不能架构出信息的理性天地?
这就是艺术,作为艺术家,就必须奉献出自己的心血,以真、善、美为最高境界。
要达到这种目的,就要认真的作好准备动作,再一步一步地追求下去。
任何一种商业产品,当然是以利益为先,利己后而利人。如果是艺术品创造,则刚
刚相反,唯有能忽视己利,沥血泣心地探索,虔诚狂热地奉献,才会迸发出人性的光辉,
创造不朽的杰作。
艺术家之伟大,在于此,人性之可贵,在于此。
对组合程序语言,有人视为商品,将写作技巧当作专利,轻不示人。相信这也是迄
今尚无一本象样的参考书籍之根本原因,我买了不少这类书,但书中除了指令介绍以及
编程、侦错的手续外,完全没有技巧的说明,好象懂得指令就可以把程序写好一般。当
我自己下了不少功夫,得到了一些心得,再回过头来看那些参考书,才发现连作者本人
所举的例子,都是平铺直叙,毫无技巧可言。
我认为,既然语言是种艺术,我们不仅不应该藏私自珍,而且要相互探讨,交
流切磋,以期发扬光大。
不过,技术本身与利用该技术所创造的产品却不能混为一谈,产品是借以谋生的工
具,能够生存,大家才有研究发展的机会,也才能把成果贡献给社会。如果国人不尊重
别人的产品权利,只是互相抄袭盗用,或能受惠于一时,但影响所及,人人贪图现成,
不事发展,则观念停顿,技术落伍,其后果不堪设想。
效率的定义
在宇宙中,大至物种的演进、变化,小至个人的工作、运动等,都严格地遵守效率
法则。
效率的定义是:
┌─────────────────────────┐
│F=E/t,即特定的能量在特定的时、空中所作的「功」。 │
└─────────────────────────┘
由上式 F = E/t 可知,特定的「能量」在特定的「时空」中所作的「功」,是一
恒定值,既为恒定值,表示不可能有任何浪费。当能量不变时,时、空的延长往往会导
致「功率」的不足,从另一个角度看,可以说是能量不够,效率低。
对计算机而言,如果写作程序的「功率」能接近此一「恒定值」,而又具有长远的
使用价值,则我们可以假定,这种程序的效率最高。
由人类文明的演进,可以看出,因为技术日渐专业化,工作的难度不仅没有减低,
反而更加复杂。这种借着职业专家的投入,以节省一般应用者宝贵时间的方法,事实上
可以说就是效率的追求。
因为人的生命仅存在于有限的时间,所以其价值极高。每一个电脑程序,其最终目
的都是为了服务大多数的使用者,制作程序者仅仅是少数人,其制作时间的长短,永远
无法与大多数的使用者,在操作中所耗费的时间相提并论。
计算机的效率性
计算机的发明,是人类追求效率最具代表性的成就。
目前计算机的机能尚局限在数据处理以及自动控制上,人们利用计算机,所期望得
到的效率不外乎下述六点。
1,节省工作时间及工作成本。
2,取代繁琐、重复性高或具有危险性的作业。
3,追求精密无误的数据、讯息。
4,贮存或运算大量的数据或数据。
5,远距离的通讯或遥控作业。
6,自动化工业生产或一般性服务。
四大效率定律
兹以人类社会中,有关作业过程、生产成本及应用价值等三方面,分别假设定律如
下:
定律一:
在作业过程上,能以最少步骤产生最大功率者,效率最高。
定律二:
在生产成本上,时、空间及原料最节省者,其效率最高。
定律三:
在应用价值上,功能及成果能一再累积者,其效率最高。
定律四:
最佳的效率,是最符合实际需求的最大边际效应。
计算机的应用,纯粹是为了追求工作效率,据此,硬件、软件的设计,都应严格遵
守效率定律。可是事实却不然,由于计算机发展迄今,一直是「卖方市场」,美其名为
「高科技」,内行人高利、高酬,外行人则唯恐后人,亦步亦趋。
最重要的,是这种效率的达成,在于利用人的「智力」。我认为在宇宙进化的过程
中,到目前为止,「人智」就是最高效率的结晶。任何人若要追求效率,应自己先下手,
与其坐待硬件的改进,不如充实程序写作的方法及技巧,至少,这些都操纵在自己的手
里。
模块的效率
模块并不是一个新观念,在人类文明发展史上,人一直致力于了解自己身处的宇宙。
这种了解,实际上就是模块应用的观念,将宇宙大环境,分解成为人所能认知的小环境,
进而将小环境再分解成为个人的经验素材。
这样一层层地分解下去,便有了「概念、知识」。换句话说,概念及知识,就是一
个个代表人类对客观认知的模块。
基于模块的特性,人才能灵活地加以应用,因而产生了「人类文明」。同理,当计
算机的软件,也演化为模块方式,进一步大量推广运用时,计算机文明的时代,即将到
来。
模块的效率是结构性效率的最高表现,在我们处身的宇宙中,无处没有结构,无一
不受到结构的支配。
价值观念
不论什么程序,都应该以「正确、精简、效率」为基本原则。但在目前,除了系统
程序比较重视精简及效率外,其它的程序多半只重视正确性而已。
人们往往以为只有硬件才具有价值,其实大谬不然。硬件的变化有限,软件则永无
止境;硬件的价值容易衡量,软件却只有行家才能判断其良窳。在商业利益挂帅的今天,
所谓的「行家」,经常就是「既得利益者」。消费大众是盲目的,也是无辜的,行家为
了自身的利益,很少愿意道破其中原委。
此外还有另一层原因,硬件生产需要技术、材料、资金及设备环境,而软件则人人
都可以随手盗用。对一个从事软件设计的程序员,尽管有心将工作做得尽善尽美,但一
想到其呕心沥血发展出来的精品,很可能剎时之间就被不尊重软件价值的消费者偷抄盗
卖,哪里还有兴致去精雕细琢?
如果我们能先将软件的价值观建立起来,且人人尊重软件应有的价值,如此真正受
惠的,将是广大的消费大众。否则,这样恶性循环下去,计算机只能靠硬件的改进,来
达到效率的追求,软件不过是一种「快餐」性的消费品,永远没有价值。
从过去的经验中可以推出,硬件效率的改进,大约每年一次,而软件则完全建立在
其「价值观」之上。如果值得,设计者愿意投入,软件可以在很短的周期中,或因观念
的突破,或因工具的特性,功能及效率立即提高了十百倍!问题在于,连从事程序设计
的程序员,对软件的认识都不够充分,所制作的软件尚无法满足使用者的需求,充其量
只是速成品罢。故不论是程序员或使用者,对软件的价值观都难以建立。
基于人性,理想永远只属于少数人。可是,少数人的理想经常会推动时代,
为多数人谋取福利。
创造价值
信息时代方兴未艾,可以预期到只要有人类存在,计算机将是不可或缺的伴侣,永
远伴着人类不断朝向超高效率的境地迈进。且不论硬件技术如何改进、变化,应用软件
才是计算机生命的灵魂。一个有价值的软件,在千锤百炼之下,经过人智的洗礼,其意
义绝不是物质报酬可以比拟的。
再换一个角度来看,计算机的硬件技术日新月异,体积日趋轻巧。虽然记忆量也在
不断增加,但是软件却刚刚相反,由于对高级语言的依赖,程序占用系统的空间越来越
大,以致于抵消了硬件演进所创造的价值。
当然这都是软件工程师的责任,如果从事软件开发者,不立时觉悟,计算机将不过
是「金玉其表,败絮其内」。同理,从事软件开发者,如果仅顾眼前的方便、急功近利,
能抄就抄,能偷就偷,长此以往,计算机永远不能形成气候。
对程序员而言,仅把程序当作一种工作,而不追求效率价值,则其技术及境界将止
于此,其成就亦可想而知。唯有殚精竭虑,不断追求完美的人,无论观念和技术都将逐
步提升,则在未来的信息时代中,将会占有一席之地。
在现实世界里,人所从事的工作,有抽象的精神或心理代价,也有金钱或
物质代价,甚至两者兼而有之。不论如何,也不论成本为何,其价值高者,经常是人所
追求的目标。在这种基础上投入的成本,其价值的高低,将视人所追求的目标而定。
由于「理想」很有可能只是某种特殊的目标或影响,其利益经常远大于经
济上的获利。因此,要提高成本价值,绝非仅仅降低成本而已,而是如何提高其影响力。
再若经济上的获利高于理想,以现实的角度而来看,人不可能轻易放弃利
益,而去追求价值不足的「理想」。
附带的产生了一个话题,若矢志追求理想的人又想兼顾金钱利益,一旦金
钱利益的成本价值超过了理想时,根据前述理论,此人随时可能变节。至少,在我个人
的见闻中,还没有例外的。
硬件是消耗品,用到一定的时限后,就失去了再利用的价值。而软件则永
远没有损耗,除非应用观念的改变,其实用的价值如常。
不仅如此,应用观念虽然会改变,只要软件是由模块结合而成,其中的共
享模块永远不变。略作适当的修改,或再增加功能后,又面貌一新。
这种共享模块就具有累进价值,也就是说,用模块方式制作的软件,只要
分割适当,就应具有累进价值。凡是有累进价值的程序,其边际效益最高。因此品质的
要求也相对加高。
程序员应有的态度:
自动自发,谦虚学习,掌握重点,认真负责,追求完美
自动自发是指发自内心的原动力,且不论是基于名、利、个人成就感或是好
奇、赌气、逞强,只要有了这种动力,问题没解决,就会形成悬疑,不断地萦绕脑际,
难以休息,直到解决为止。
在解决问题
时,集思广益,虚怀若谷,必然是最有效、最正确的态度。
问题在于,越是执着、好强,或者自卑自傲的人,其自我观念越重。遇事即采
惯性行事,而且坚持不变,这种人不可能谦虚,更无法学习。
就像艺术家一样,不参考他人的作品,不学习新的技巧及观念,固步自封,则
难成大师。如果程序员不能谦虚学习,不随着时代的变化成长,创作出来的程序,其价
值可想而知的。
天下英才比比皆是,然而出类拔萃的人却不多。究其因,在学习、思考时,当
是原则重于细节,然而在执行的过程中,却是细节重于原则。此外,事物变化的组合无
穷无尽,主事者必须能针对目标,随时根据实际状况,逐步处理。
在各种状况中,如若程序员不能掌握当前的重点,则凡事皆如有千头万绪,难
以下手。事实上,从成事败事的观点来看,人只有两种,有能力者,是把复杂的事简化;
无能力者,经常把简单的事变得复杂无比。而这种能力的差异,就在于能否掌握当前的
重点。
观念清楚了,就看当事人是否能认真负责,坚持贯彻到底。人间世事成败,完
全基于这种态度。不认真,工作时草草了事,不可能有好的成绩;不负责更糟,没有问
题也会产生问题,发生问题后,更是无人解决;若参与工作的人多,彼此推卸责任,这
样做人处世必将失败,程序制作亦然。
所谓认真负责,具体说来,即是在事先要彻底了解该做什么?要做什么?以及
如何去做?工作时要考虑怎样做最有效率?每一步骤会产生什么结果?而工作完成后要
彻底检查,目标是否已达成?能否再加以改进?
最后,是对程序的品质及技巧的完美性,应锲而不舍地追求。一般人常把完美
当作不必要的奢侈,其实不然,完美是一种永远无法达到的理想。重要的观点是,人只
有在追求完美的过程中,才能不断地进步、升华。一个人若没有理想,就与动物无异,
一个程序员若没有理想,套句爱因斯坦的名言,不过是只「训练有素」的小狗罢了。
态度来自习惯,习惯则来自于学习及锻炼,有志向上者,应该自我要求,努力
学习。等到锻炼久了,习惯成自然,有了良好的态度,终有成为大师的一天。
软件开发的原则:
分工合作,量材施用,慎重计划,严格执行,市场导向
此处所说的软件开发,是指具有相当规模的程序,需要多数人员共同工作者。
人多固然力量大,但是人与人的相处和沟通,问题也特别多。若处理得好,力量是正值,
反之,则为负值。不仅彼此的力量相互抵消,有时还有不良的后果。
软件开发,应该有一个主事的重心人物,如果要谈民主,不妨去搞政治。负责
人首先要对工作内容详加分判,然后根据性质分配工作。分配时应注意工作量、时间要
求、个人特性及相互的配合等因素,责任要划清,交待要明确,俾能集中众人力量,分
工合作。
成事在人,如果用对了人,则成功在望。每个人都有其独特的个性、能力及态
度,适合于不同性质的工作和方法。所以应事先了解每个程序员的个性、能力及缺点,
再行分配适合的工作。
不仅分配工作时要度量才干,管理时亦然,人不是机器,不可能绝对适应同一
种工作方式。但是,若每个人以他自己适应的方式工作,对整体而言,又有步骤不一、
难以相互配合的弊病。
比较理想的解决方式,是对参与工作的人员,施以再教育,使之习惯于一种统
一的方式,借着训练的过程,也可增进对每个工作人员的认识了解。
再就是工作计划,将工作分成几个阶段,并配合人员的分工及设备器材的条件,
逐步实施之。
工作计划相当于建筑蓝图,一旦确定了就难以修改。一个完整周详的计划,应
包括了工作目标,人员分配,时间进度,执行细则,沟通方式,解决问题的程序等。
有了计划,还要有监督执行的专责人员。这种人才必须有足够的经验,对全部
计划能了解透彻,有敏锐的判断力,并敢于担当。工作时执行要严格,待人要宽厚,处
理事务要果断。
最后一项原则,才是真正的成败关键,那就是,产品要以市场需求为导向。不
能符合使用者需求的产品,一定「没有用」,没有用的产品,则不具备任何价值。
要测试产品是否「有用」,其实很简单,以程序员为例,如果自己都不愿采用,
显然是用处不大。有人会说,程序员又不是使用者,在没有必要时,再好的产品都不肯
用。这话并不尽然,人喜爱美好的、尤其是与自我有关的事物。如果程序真有用,制作
的程序员一定会想尽方法去 玩赏、测试,而且乐此不疲。
同理,程序员只有当自己不断的试用后,才会发现实际应用上,所可能面临的
问题。而当问题解决以后,用得方便,有了实际效益,市场才有可能接受。
工作环境的建立:
环境安静,数据齐全,消息流通,压力合宜
从事软件工作的人,可以说就是一个艺术家,艺术需要注入心智,需要个人无
保留地投入。在这种情形下,环境相当重要,必须事先安排妥当。
环境的物质条件并不重要,但是安静、卫生,却关系着艺术家心理及生理上的
平衡。喧哗、吵闹会令人心烦意乱,难以专心。对艺术家而言,不能专心,就毫无创造
佳作的可能性。当然,若只把软件开发视作生产线上的生产工作,那就不在话下了。
程序是运用数据、处理数据的工具,写程序最怕的是数据不全,因为缺乏一点
必须具备的数据,而使得整个计划受阻,是最可惜的事。同时,程序本身也是一种广义
的数据,尤其是一些软件开发所必须的工具,都应事先准备齐全。
由于计算机发展日新月异,新观念、技术层出不穷,数据永远难以收集完整。
所以消息的流通性非常重要,在一个闭塞的环境里,埋头苦干的结果往往会落在别人的
后面而尚不自觉。更何况世界各国从事计算机工作者多不胜数,他山之石可以攻错,消
息的流通常可使软件工作者节省大量的心力。
最后是工作的压力,为了效率,压力要大;但站在人的立场,不论身、心,实
在是经不住长期或太大的压力。所以,如何求取一个合宜的折衷点,是不容忽视的。
以我的经验,一般人受年龄、经验、动机及意志力等的影响,承受压力的能力,
不一而同。大概说来,年轻、初学者,在适当的动机下,能够承担长达三至五年、持续
性的重大压力;有经验、年龄稍长,除非有极强的动机,再加上坚定的意志,才能维持
下去。
软件开发需要劳心劳力,艺术创作则更需要坚持执着的毅力,技术有方法、有
步骤,一定可以实现。艺术则要有观念、有创意,加上心智的投注。两者融合,观念由
大处着眼,技术由细部着手,是则,理想终将成为事实。
本文来自博客园,作者:{咏南中间件},转载请注明原文链接:https://www.cnblogs.com/hnxxcxg/archive/2008/09/25/2940820.html