四、追求价值
那么,究竟应该如何去追求最高的价值呢?我们不妨从几个不同的角度来分析。
1,程式价值的定义:
前面说过,组合语言是一种艺术工具,用组合语言所写的程式则是艺术品。而艺术品的价值是很难加以衡量。可是,程式又是一种工具,对工具而言,它是客观存在,必然具有客观的价值。
因此,我们可以站在客观的立场,将用组合语言所制作的程式、以及其应有的价值,分门别类予以定义。在此我们不考虑其他程式语言所制作的软件,并不表示这些价值定义不适用,而是认为这种比较不公平。因为以下的定义,都是根据组合语言的特性而考虑的。
1-1 成本价值=目标1×目标2/成本
「成本价值」是一种人人都知其然而不知其所以然的观念,是指以某一固定成本,在目标1与2两者之间,根据效率定义,何者价值高,即为其成本之代价。
在现实世界里,人所从事的工作,有抽象的精神或心理代价,也有金钱或物质代价,甚至两者兼而有之。不论如何,也不论成本为何,其价值高者,经常是人所追求的目标。在这种基础上投入的成本,其价值的高低,将视人所追求的目标而定。
由于「理想」很有可能只是某种特殊的目标或影响,其利益经常远大于经济上的获利。因此,要提高成本价值,绝非仅仅降低成本而已,而是如何提高其影响力。
再若经济上的获利高于理想,以现实的角度而来看,人不可能轻易放弃利益,而去追求价值不足的「理想」。
在这种理论下,人的发展方向,是从事理想的追寻抑或物质利益的满足,端视理想与获利两者,对个人的成本价值而定。同理,人工作的方式及对工作的要求,亦因成本价值而有所取舍。
采用组合语言制作程式,就是明显的成本价值观念。因为组合语言的效率高,追求效率的实现就是一种理想,为此,投下时间及各种难以估计的成本,对那些有能力牟利者说来,当然是不值得。可是在不知「阿堵物」为何者,除了理想的追求,还待何为?
以上面的公式来看,降低成本仍可提高其价值,获利的增加亦然,这是必然的,即所谓的「附加价值」。关键在于如果「理想」的价值低于获利,自然而然,其目标将转移为获利。反之,为了牟利,也可能在发现了理想价值后而改途转向。
附带的产生了一个话题,若矢志追求理想的人又想兼顾金钱利益,一旦金钱利益的成本价值超过了理想时,根据前述理论,此人随时可能变节。至少,在我个人的见闻中,还没有例外的。
1-2 功能价值
绝对价值=采用后效益/未采用前效益
相对价值=各软件间绝对价值比
任何软件,如果没有实用的功能,就不可能有真正的价值。至于软件的功能价值如何测定,多多少少要看使用者的主观条件而定。
在这里,我们提出一个简单的方法,先要知道在采用软件的前后,是否真具有效益?这种效益,是绝对的,没有大、小的比较。
然而,如果一个软件没有效益,就不可能成为商品。所以,任何软件的功能价值,应该是比较性的,在类似软件中,取其绝对价值之比值即可。
1-3 效率价值=程式功能价值/占用空间×执行时间
效率是可以精确衡量的,只要得到前述的功能价值,其它诸如程式占用的系统空间、执行所需要的时间等参数,都可以透过测试得到。
当程式的功能价值极高时,相对的看来,其空间及速度的影响不大,但这种程式迄今尚未诞生。尤其是目前电脑硬体的机能还在启蒙阶段,一般说来,现有的软件占有的空间太大,而且速度太慢,故效率不高。正当这个关头,软件所扮演的角色,可以说是举足轻重,效率自然不能忽视了。
由于软件界还没有注意到这一点,有识之士可以想见,只要能掌握住效率价值,就可以出人头地。
1-4 累进价值=效率价值×使用频率×软件生命期
硬体是消耗品,用到一定的时限后,就失去了再利用的价值。而软体则永远没有损耗,除非应用观念的改变,其实用的价值如常。
不仅如此,应用观念虽然会改变,只要软件是由模组结合而成,其中的共用模组永远不变。略作适当的修改,或再增加功能后,又面貌一新。
这种共用模组就具有累进价值,也就是说,用模组方式制作的软件,只要分割适当,就应具有累进价值。凡是有累进价值的程式,其边际效益最高。因此品质的要求也相对加高。如上面公式所表示的,累进价值等于该程式本身的效率,以及在不断累积使用下频率和生命期的乘积。只有基于组合语言的高效率,才可能产生这种价值。在资讯时代,程式师必须认识软件的重要性及其所具有的价值,才能充份发挥。
2,程式师应有的态度:
自动自发,谦虚学习,掌握重点,认真负责,追求完美
写程式完全是脑力活动,除非是行家,程式师是否真是在工作,别人很难从外表上看出来。同时,如果程式师不是自动自发,对工作无热忱,甚至心存歧见,则不可能把程式写好。
自动自发是指发自内心的原动力,且不论是基于名、利、个人成就感或是好奇、赌气、逞强,只要有了这种动力,问题没解决,就会形成悬疑,不断地萦绕脑际,难以休息,直到解决为止。
但是,人的智力相去甚远,经验亦各自不同。姑不论个人的才智,在解决问题时,集思广益,虚怀若谷,必然是最有效、最正确的态度。
问题在于,越是执着、好强,或者自卑自傲的人,其自我观念越重。遇事即采惯性行事,而且坚持不变,这种人不可能谦虚,更无法学习。
就像艺术家一样,不参考他人的作品,不学习新的技巧及观念,固步自封,则难成大师。如果程式师不能谦虚学习,不随着时代的变化成长,创作出来的程式,其价值可想而知的。
天下英才比比皆是,然而出类拔萃的人却不多。究其因,在学习、思考时,当是原则重于细节,然而在执行的过程中,却是细节重于原则。此外,事物变化的组合无穷无尽,主事者必须能针对目标,随时根据实际状况,逐步处理。
在各种状况中,如若程式师不能掌握当前的重点,则凡事皆如有千头万绪,难以下手。事实上,从成事败事的观点来看,人只有两种,有能力者,是把复杂的事简化;无能力者,经常把简单的事变得复杂无比。而这种能力的差异,就在于能否掌握当前的重点。
观念清楚了,就看当事人是否能认真负责,坚持贯彻到底。人间世事成败,完全基于这种态度。不认真,工作时草草了事,不可能有好的成绩;不负责更糟,没有问题也会产生问题,发生问题后,更是无人解决;若参与工作的人多,彼此推卸责任,这样做人处世必将失败,程式制作亦然。
所谓认真负责,具体说来,即是在事先要彻底瞭解该做什么?要做什么?以及如何去做?工作时要考虑怎样做最有效率?每一步骤会产生什么结果?而工作完成后要彻底检查,目标是否已达成?能否再加以改进?
最后,是对程式的品质及技巧的完美性,应锲而不舍地追求。一般人常把完美当作不必要的奢侈,其实不然,完美是一种永远无法达到的理想。重要的观点是,人只有在追求完美的过程中,才能不断地进步、升华。一个人若没有理想,就与动物无异,一个程式师若没有理想,套句爱因斯坦的名言,不过是只「训练有素」的小狗罢了。
态度来自习惯,习惯则来自于学习及锻炼,有志向上者,应该自我要求,努力学习。等到锻炼久了,习惯成自然,有了良好的态度,终有成为大师的一天。
3,软件开发的原则:
分工合作,量材施用,慎重计划,严格执行,市场导向
此处所说的软件开发,是指具有相当规模的程式,需要多数人员共同工作者。人多固然力量大,但是人与人的相处和沟通,问题也特别多。若处理得好,力量是正值,反之,则为负值。不仅彼此的力量相互抵消,有时还有不良的后果。
软件开发,应该有一个主事的重心人物,如果要谈民主,不妨去搞政治。负责人首先要对工作内容详加分判,然后根据性质分配工作。分配时应注意工作量、时间要求、个人特性及相互的配合等因素,责任要划清,交待要明确,俾能集中众人力量,分工合作。
成事在人,如果用对了人,则成功在望。每个人都有其独特的个性、能力及态度,适合于不同性质的工作和方法。所以应事先瞭解每个程式师的个性、能力及缺点,再行分配适合的工作。
不仅分配工作时要度量才干,管理时亦然,人不是机器,不可能绝对适应同一种工作方式。但是,若每个人以他自己适应的方式工作,对整体而言,又有步骤不一、难以相互配合的弊病。
比较理想的解决方式,是对参与工作的人员,施以再教育,使之习惯于一种统一的方式,藉着训练的过程,也可增进对每个工作人员的认识瞭解。
再就是工作计划,将工作分成几个阶段,并配合人员的分工及设备器材的条件,逐步实施之。
工作计划相当于建筑蓝图,一旦确定了就难以修改。一个完整周详的计划,应包括了工作目标,人员分配,时间进度,执行细则,沟通方式,解决问题的程序等。
有了计划,还要有监督执行的专责人员。这种人才必须有足够的经验,对全部计划能瞭解透彻,有敏锐的判断力,并敢于担当。工作时执行要严格,待人要宽厚,处理事务要果断。
最后一项原则,才是真正的成败关键,那就是,产品要以市场需求为导向。不能符合使用者需求的产品,一定「没有用」,没有用的产品,则不具备任何价值。
要测试产品是否「有用」,其实很简单,以程式师为例,如果自己都不愿采用,显然是用处不大。有人会说,程式师又不是使用者,在没有必要时,再好的产品都不肯用。这话并不尽然,人喜爱美好的、尤其是与自我有关的事物。如果程式真有用,制作的程式师一定会想尽方法去 玩赏、测试,而且乐此不疲。
同理,程式师只有当自己不断的试用后,才会发现实际应用上,所可能面临的问题。而当问题解决以后,用得方便,有了实际效益,市场才有可能接受。
4,工作环境的建立:
环境安静,资料齐全,消息流通,压力合宜
从事软件工作的人,可以说就是一个艺术家,艺术需要注入心智,需要个人无保留地投入。在这种情形下,环境相当重要,必须事先安排妥当。
环境的物质条件并不重要,但是安静、卫生,却关系着艺术家心理及生理上的平衡。喧哗、吵闹会令人心烦意乱,难以专心。对艺术家而言,不能专心,就毫无创造佳作的可能性。当然,若只把软体发展视作生产线上的生产工作,那就不在话下了。
程式是运用资料、处理资料的工具,写程式最怕的是资料不全,因为缺乏一点必须具备的资料,而使得整个计划受阻,是最可惜的事。同时,程式本身也是一种广义的资料,尤其是一些软件开发所必须的工具,都应事先准备齐全。
由于电脑发展日新月异,新观念、技术层出不穷,资料永远难以收集完整。所以消息的流通性非常重要,在一个闭塞的环境里,埋头苦干的结果往往会落在别人的后面而尚不自觉。更何况世界各国从事电脑工作者多不胜数,他山之石可以攻错,消息的流通常可使软件工作者节省大量的心力。
最后是工作的压力,为了效率,压力要大;但站在人的立场,不论身、心,实在是经不住长期或太大的压力。所以,如何求取一个合宜的折衷点,是不容忽视的。
以我的经验,一般人受年龄、经验、动机及意志力等的影响,承受压力的能力,不一而同。大概说来,年轻、初学者,在适当的动机下,能够承担长达三至五年、持续性的重大压力;有经验、年龄稍长,除非有极强的动机,再加上坚定的意志,才能维持下去。
软件开发需要劳心劳力,艺术创作则更需要坚持执着的毅力,技术有方法、有步骤,一定可以实现。艺术则要有观念、有创意,加上心智的投注。两者融合,观念由大处着眼,技术由细部着手,是则,理想终将成为事实。