1-2 功能價值
絕對價值=采用後效益/未采用前效益
相對價值=各軟件間絕對價值比
任何軟件,如果沒有實用的功能,就不可能有真正的價值。至於軟件的功能價值如何測定,多多少少要看使用者的主觀條件而定。
在這裡,我們提出一個簡單的方法,先要知道在采用軟件的前後,是否真具有效益?這種效益,是絕對的,沒有大、小的比較。
然而,如果一個軟件沒有效益,就不可能成為商品。所以,任何軟件的功能價值,應該是比較性的,在類似軟件中,取其絕對價值之比值即可。
1-3 效率價值=程式功能價值/占用空間×執行時間
效率是可以精確衡量的,只要得到前述的功能價值,其它諸如程式占用的系統空間、執行所需要的時間等參數,都可以透過測試得到。
當程式的功能價值極高時,相對的看來,其空間及速度的影響不大,但這種程式迄今尚未誕生。尤其是目前電腦硬體的機能還在啟蒙階段,一般說來,現有的軟件占有的空間太大,而且速度太慢,故效率不高。正當這個關頭,軟件所扮演的角色,可以說是舉足輕重,效率自然不能忽視了。
由於軟件界還沒有注意到這一點,有識之士可以想見,只要能掌握住效率價值,就可以出人頭地。
1-4 累進價值=效率價值×使用頻率×軟件生命期
硬體是消耗品,用到一定的時限後,就失去了再利用的價值。而軟體則永遠沒有損耗,除非應用觀念的改變,其實用的價值如常。
不僅如此,應用觀念雖然會改變,只要軟件是由模組結合而成,其中的共用模組永遠不變。略作適當的修改,或再增加功能後,又面貌一新。
這種共用模組就具有累進價值,也就是說,用模組方式制作的軟件,只要分割適當,就應具有累進價值。凡是有累進價值的程式,其邊際效益最高。因此品質的要求也相對加高。如上面公式所表示的,累進價值等於該程式本身的效率,以及在不斷累積使用下頻率和生命期的乘積。只有基於組合語言的高效率,才可能產生這種價值。
在資訊時代,程式師必須認識軟件的重要性及其所具有的價值,才能充份發揮。
2,程式師應有的態度:
自動自發,謙虛學習,掌握重點,認真負責,追求完美
寫程式完全是腦力活動,除非是行家,程式師是否真是在工作,別人很難從外表上看出來。同時,如果程式師不是自動自發,對工作無熱忱,甚至心存歧見,則不可能把程式寫好。
自動自發是指發自內心的原動力,且不論是基於名、利、個人成就感或是好奇、賭氣、逞強,只要有了這種動力,問題沒解決,就會形成懸疑,不斷地萦繞腦際,難以休息,直到解決為止。
但是,人的智力相去甚遠,經驗亦各自不同。姑不論個人的才智,在解決問題時,集思廣益,虛懷若谷,必然是最有效、最正確的態度。
問題在於,越是執著、好強,或者自卑自傲的人,其自我觀念越重。遇事即采慣性行事,而且堅持不變,這種人不可能謙虛,更無法學習。
就像藝術家一樣,不參考他人的作品,不學習新的技巧及觀念,固步自封,則難成大師。如果程式師不能謙虛學習,不隨著時代的變化成長,創作出來的程式,其價值可想而知的。
天下英才比比皆是,然而出類拔萃的人卻不多。究其因,在學習、思考時,當是原則重於細節,然而在執行的過程中,卻是細節重於原則。此外,事物變化的組合無窮無盡,主事者必須能針對目標,隨時根據實際狀況,逐步處理。
在各種狀況中,如若程式師不能掌握當前的重點,則凡事皆如有千頭萬緒,難以下手。事實上,從成事敗事的觀點來看,人只有兩種,有能力者,是把復雜的事簡化;無能力者,經常把簡單的事變得復雜無比。而這種能力的差異,就在於能否掌握當前的重點。
觀念清楚了,就看當事人是否能認真負責,堅持貫徹到底。人間世事成敗,完全基於這種態度。不認真,工作時草草了事,不可能有好的成績;不負責更糟,沒有問題也會產生問題,發生問題後,更是無人解決;若參與工作的人多,彼此推卸責任,這樣做人處世必將失敗,程式制作亦然。
所謂認真負責,具體說來,即是在事先要徹底瞭解該做什麼?要做什麼?以及如何去做?工作時要考慮怎樣做最有效率?每一步驟會產生什麼結果?而工作完成後要徹底檢查,目標是否已達成?能否再加以改進?
最後,是對程式的品質及技巧的完美性,應锲而不捨地追求。一般人常把完美當作不必要的奢侈,其實不然,完美是一種永遠無法達到的理想。重要的觀點是,人只有在追求完美的過程中,才能不斷地進步、升華。一個人若沒有理想,就與動物無異,一個程式師若沒有理想,套句愛因斯坦的名言,不過是只「訓練有素」的小狗罷了。
態度來自習慣,習慣則來自於學習及鍛煉,有志向上者,應該自我要求,努力學習。等到鍛煉久了,習慣成自然,有了良好的態度,終有成為大師的一天。
3,軟件開發的原則:
分工合作,量材施用,慎重計劃,嚴格執行,市場導向
此處所說的軟件開發,是指具有相當規模的程式,需要多數人員共同工作者。人多固然力量大,但是人與人的相處和溝通,問題也特別多。若處理得好,力量是正值,反之,則為負值。不僅彼此的力量相互抵消,有時還有不良的後果。
軟件開發,應該有一個主事的重心人物,如果要談民主,不妨去搞政治。負責人首先要對工作內容詳加分判,然後根據性質分配工作。分配時應注意工作量、時間要求、個人特性及相互的配合等因素,責任要劃清,交待要明確,俾能集中眾人力量,分工合作。
成事在人,如果用對了人,則成功在望。每個人都有其獨特的個性、能力及態度,適合於不同性質的工作和方法。所以應事先瞭解每個程式師的個性、能力及缺點,再行分配適合的工作。
不僅分配工作時要度量才干,管理時亦然,人不是機器,不可能絕對適應同一種工作方式。但是,若每個人以他自己適應的方式工作,對整體而言,又有步驟不一、難以相互配合的弊病。
比較理想的解決方式,是對參與工作的人員,施以再教育,使之習慣於一種統一的方式,藉著訓練的過程,也可增進對每個工作人員的認識瞭解。
再就是工作計劃,將工作分成幾個階段,並配合人員的分工及設備器材的條件,逐步實施之。
工作計劃相當於建築藍圖,一旦確定了就難以修改。一個完整周詳的計劃,應包括了工作目標,人員分配,時間進度,執行細則,溝通方式,解決問題的程序等。
4,工作環境的建立:
環境安靜,資料齊全,消息流通,壓力合宜
從事軟件工作的人,可以說就是一個藝術家,藝術需要注入心智,需要個人無保留地投入。在這種情形下,環境相當重要,必須事先安排妥當。
環境的物質條件並不重要,但是安靜、衛生,卻關系著藝術家心理及生理上的平衡。喧嘩、吵鬧會令人心煩意亂,難以專心。對藝術家而言,不能專心,就毫無創造佳作的可能性。當然,若只把軟體發展視作生產線上的生產工作,那就不在話下了。
程式是運用資料、處理資料的工具,寫程式最怕的是資料不全,因為缺乏一點必須具備的資料,而使得整個計劃受阻,是最可惜的事。同時,程式本身也是一種廣義的資料,尤其是一些軟件開發所必須的工具,都應事先准備齊全。
由於電腦發展日新月異,新觀念、技術層出不窮,資料永遠難以收集完整。所以消息的流通性非常重要,在一個閉塞的環境裡,埋頭苦干的結果往往會落在別人的後面而尚不自覺。更何況世界各國從事電腦工作者多不勝數,他山之石可以攻錯,消息的流通常可使軟件工作者節省大量的心力。
最後是工作的壓力,為了效率,壓力要大;但站在人的立場,不論身、心,實在是經不住長期或太大的壓力。所以,如何求取一個合宜的折衷點,是不容忽視的。
以我的經驗,一般人受年齡、經驗、動機及意志力等的影響,承受壓力的能力,不一而同。大概說來,年輕、初學者,在適當的動機下,能夠承擔長達三至五年、持續性的重大壓力;有經驗、年齡稍長,除非有極強的動機,再加上堅定的意志,才能維持下去。
軟件開發需要勞心勞力,藝術創作則更需要堅持執著的毅力,技術有方法、有步驟,一定可以實現。藝術則要有觀念、有創意,加上心智的投注。兩者融合,觀念由大處著眼,技術由細部著手,是則,理想終將成為事實。