软件的效率

在我长篇大论之前,有必要解释本文的『效率』所指何物。

简单来说,效率就是吃多少饭和做多少事之间的比例,一个效率高的人吃少少饭也可以做很多事。其实用人来作比喻不太恰当,纯属开玩笑,那么我们用汽车作例子吧。一辆用30公升汽油能行使500公里的汽车当然比另一辆同样大小而必须用40公升汽油才能行使500公里的汽车来得有效率。电脑程式也一样,一个高效率的软件能用最少的电脑资源来处理最多事务。所谓的电脑资源是指硬碟的空间、记忆体的空间、处理器的处理时间和硬碟的读写次数等等。

电子或机械工程师在设计科技产品时,往往都要绞尽脑汁的把产品的效率提高,因为一个科技产品的效率高低也往往是客户购买的考虑因素之 一。可是软件不一样,因为你写得再有效率,能节省的电源可能也不多,再加上电脑上的软件那么多,你的软件有效率可能也没有人会察觉,所以效率高的软件也只是运作起来比较快,占用的空间比较小,在处理器速读不断提升,电子储存空间(Memory /Hard Drive Storage)逐渐便宜的时代,一个软件的效率低,可能很快就被强大的硬件抵消了。既然如此,那么程序员或软件工程师是否应该把提高效率设定为编程的目标之一呢?须知,要写出高效率的软件也是需要绞尽脑汁的。

程序员绞尽脑汁是需要时间的,所谓慢工出细活,好东西往往都需要多一点时间的。可是我们必须知道一个软件的成本不是别的,就是人日(一个程序员工作一日叫一人日),因此,一个接项目(Project)的软件公司往往都是要在最短的时间里完成用户的功能需求,只要用户愿意签收就算了,不必多费工夫。卖软件产品(Product) 的软件公司也一样,程序员如果因为要把软件的效率提高而误了期限,往往被上司责备,于是写出了一些只能交待得过去的程式就算了。整体的效率高低,反正也不是他一个人的事,那就让公司去承担吧。

我们看看世界第一大软体公司~微软的产品历史,她新版本的产品都比旧版本来得耗资源。我这一台电脑用Windows XP还算可以,用Vista就不行了,要升级或买一台新的电脑才可以。因此人们都误以为每三五年要买新一台电脑是正常不过的事,软件从业员也奉微软的思维为真理,把软件的效率抛诸脑后,认为不停的升级是理所当然之事。以微软的财力,不可能没有能力设计比旧版更有效率的软件,而是他们想也没想过,让软件更有效率可能在他们脑子里就不曾出现过。

想像一下,如果我们用能够在80286的电脑上运行Windows XP,Intel怎么办?其他电脑厂商怎么办?Dell可能也不会出现。当然用80286来作比喻有点夸张,那奔腾100 (Pentium 100Mhz) 总可以吧?美国是个消耗世界最多资源的国家,而推动该国经济的动力就是不断的开发资源,不断的消耗资源。如果每个人每三年都必须买一次电脑,对美国经济的发展有百利而无一害。由于美国也是世界第一大经济强国,几乎所有国家都把美国的这一套奉为真理。可是地球的资源有限,不断的这样开发下去,地球不千疮百孔才怪。环保不是文本的主题,暂不提环保。

windowseach.png让我举个实际的例子来说明所谓软件的效率。微软的视窗都有内建的搜索功能,这个搜索功能不只介面烂,搜索速度慢又不准确。在Google Desktop没有出现之前,微软可以说,

「这是硬碟不够快,处理器不够强大,所以速度就是这样,认命吧。」

可是Google Desktop比微软的搜索快几百倍,而且准确度惊人,于是微软没话说,只能承认自己的软件没效率,在自家门口栽了那么难看的一跤。可是话说回来,微软的做法有错吗?没有。只是他们的搜索方法比较笨而已,不懂的去索引自己的档案,用户要找时就从第一个找档案到最后一个为止。因此微软算是对用户有了交待,它给了我们应有的搜索功能,只是没有效率而已。

再举一个软件效率的例子。防毒界的新星AVG能侦测到的病毒也和老牌Symantec不相上下,可是AVG在扫描病毒时也应用极少的电脑资源,用户根本感觉不到电脑正在进行病毒扫描。这也是有动过脑筋的软件工程师把该产品效率提高的另一个例子了。

因此效率低的软件在没有比较下可能还可以混口饭吃,可是有了比较,立刻相形见拙,高低立判。

朱邦復先生(中文电脑之父)的软件效率之高是我辈难以望其项背的。他设计的中文字库比别人的小百倍,可是功能又多百倍,微软曾经向他购买,可是当时他正在和微软搞对抗,出价六千万美元。这宗交易最终有无成交我并不清楚,可是重点是他对程式效率要求之高无人能比。因为他认为电脑资源应该善于利用,不该写些无效率的程式来胡乱挥霍。因此硬件技术还是要不断的进步,可是硬件的进步不应该是来让软件挥霍的。我不知道电脑科学系的讲师或教授在课堂上有没有讲到这一点。

HP是一家成功的企业,创始人之一的David Packard写过一本书叫『The HP Way』。书中最主要的一个重点就是HP的企业价值观,HP到底有什么特出的价值观呢?他们的价值观竟然是赚钱不是最终的目的。他们最终的目的是要对社会有所贡献,作为一家科技公司,他们在做的贡献就是技术贡献。他们把科学技术贡献给社会,让他人能够用他们产品做更有价值的事情。因此Bill Hewlett与David Packard要每一个员工在工作时都要知道自己工作的价值和意义,要他们时时刻刻都意识到他们正在为美国或世界贡献他们的高品质的技术,而不只是卖产品赚几个钱而已。这是两种完全不同的心态,第一种心态让人求好心切,不只完成工作,而是把工作做到最好,第二种心态只能让人做出不好也不坏的产品,和效率低的软件一样,混口饭吃还可以,可是它无法让你感到骄傲。

写出低效率的程序员有两种,第一种是他们认为没有必要这么做,第二种是他们不懂得怎么做或不够时间这么做。第一种程序员的观念已经错误,如果不知悔改,一生只会庸庸碌碌,不会有所成就。第二种程序员还有进步的可能,须知编程是解决问题的一个过程,在这过程中,我们不断的寻找新方法,由于问题的解决方法可以很多,我们要找出最有效率的那一种。可是时间不够思考,怎么办呢?我本身有个经验,就是利用开车,洗澡,上厕所,吃饭,走路的那些零零碎碎的时间去作这方面的思考。想到之后,隔天编程就会下笔如有神,把最有效率的方法一气呵成的写出来。

可是这个方法有点不好,那就是身边的人会觉得你整天精神恍惚,眼神呆滞,所以要适可而止,免得别人以为你中了降头才好。

Web-based的迷思

做软件系统的人几乎都说,web app或网络应用是软件的趋势,也是商业软件的趋势。程序员赶紧学Java、ASP.net、php、ruby on rails、python等等,他们开始觉得Desktop App或桌面软件过时了,是旧科技,没有什么前途可言。欲知两者之别,可参考我的一篇旧文《网络与桌面的应用软件 (web vs desktop application)》。

做软件的这么想,买软件的何尝又不是?如今谷歌如日中天,人们对微软褒少贬多,似乎意味着桌面软件的黄昏已近。于是企业在选择软件时常常会问:“你们的软件是不是Web based的?”如果答案是“不是”的话,接下来他们又会问:“那么什么时候要转换成Web based的呢?”被一个人问还无所谓,如果连续被十家公司问此问题后,那该软件商还敢怠慢?当然是马上找工程师们商讨如何步向网络之路,有了网络版的系统后,肯定能被市场接纳,于是步向康庄大道。

理想与现实往往有多少出入。要把原有的桌面软件改成网络软件只有一条路,那就是重新编写过。可能推出市场的方式有两种:第一种是分阶段推出网络版的模块,并与原有的桌面版一起卖,第二种是把网络版的编写完成后再以焕然一新的姿态推出市场呢?每一家公司的情况与策略不同,所以视情况而定,这并非本文关键所在。

我们想知道的是,企业是否对网络软件有足够的了解?他们是否真的需要纯网络软件?而软件公司是否对网络化做好的所有的准备?他们是否知道网络所需要的资金和潜在的危机呢?

首先,企业需要商业软件主要目的当然是提高运作效率和准确性。由于互联网的普遍,他们希望可以通过互联网查询资讯,或者让不同地理位置的单位能够通过互联网共用一个系统。这当然是一个理想的境界。可是试着想想,与桌面系统相比,自从微软推出Windows 95以来,一些成熟的商业软件已十多年的历史了,经过那么多年的演化,经验的累计,功能的改进,用户群的增加,该软件如果仍然生存着,那么它应该相当稳定了。

再说,该软件卖了那么多年,很多时候,它的价钱已经不会太高了,第一是软件开发的成本已经赚回了。第二,人们都意识到它已经是世纪末的产品,价钱太高肯定卖不出了。所以这个时候买桌面软件是比较值得的。反观购买一部新的网络软件,虽然感觉比较时髦,可是软件太新必定还有许多臭虫(bugs)未除,这样一来,用户肯定要赔上不少时间在这方面,也可能耽误了自己的日常工作。

再说,有能力把网络软件的好用程度做到不输于桌面软件的公司十分少见。如果操作起来不方便,处理日常事务的效率可能比用桌面软件还慢好几倍。那么,如果你是因为想让少数人通过互联网得知一些如销售额之类商业资讯,而让赔上大多数用户的工作效率,这就是因小失大了。再说,这还不包括系统的保安措施,须知网络系统的“保护费”不菲,要防黑客入侵,要防病毒入侵,要防DoS等等。

从软件商的角度来看,我觉得重新编写一套网络版的系统简直就是一场赌注。这是因为重新编写所需的资金极高。资金用在哪儿?资金就用在”许多人力+许多时间”,投入了这些资源之后,网络版的软件能不能得到市场的接受还是一个未知数。很多时候,辛辛苦苦做出来的网络版软件的功能还比不上历史悠久的桌面软件系统。因此如果市场无法接受,那么投入的资金就付诸流水。因为市场可能还没有足够的理由放弃现有的桌面系统而转移到风险较高的网络系统。

因此我觉得选择网络与桌面软件之间,对企业和软件商而言都必须谨慎的考虑再做决定。这现象和买卖股票一样,不要跟随潮流,要有一颗清醒的脑袋,才能免于坠入万劫不复之地。

軟體開發常見對白

以下是經過我的多年觀察,所整理出來的一些結論,其本上是軟體開發過程中常聽見的對白,或許它也適合在其它的行業。

系統開發之前
“我們會以最新的技術,開發一套比目前更好、更穩定、更低成本、更有效率的系統。系統開發基本上不會有甚麼問題”

開發的過程
“系統比想像中複雜很多!”

推出市場時
“系統好像還有少少問題,推出去了再說吧!”

顧客投訴時
“它有時會這樣”
“在別的地方跑都沒問題啊!”
“那個東西可能要在Microsoft Excel裡才能做到”

維護系統時
“那麼爛的系統,誰寫的?醫也醫不好了,還是重寫新的吧!”

開發升級版時
“我們會以最新的技術加上之前的經驗,開發一套比目前更好、更穩定、更低成本、更有效率的系統。”

軟體更新

  我小學到中學,都是騎腳踏車上學,那是年代「久遠」的事了(這個時代在我這個城市再騎腳踏車應該很快被車撞死,現已車滿為患,而且名貴的車子裡是流氓的駕駛態度),記得小學時,有一次把腳踏車洗得幹幹淨淨,再用油把生銹的部位擦亮。隔日,經過一朋友家,他就問我是不是買了新腳踏車。同樣的情形也發生在電腦行業裡,不知諸位是否注意到了,只要在外觀做些美化,大家會以為是新版本。

  在馬來西亞,我見過一些軟體,不管它的版本如何升級,他的外貎還是老樣子,一成不變,有些更甚者連圖標(Icon)也沒有。雖然有時候許多程序員認為只要系統跑得快,跑得穩,何必弄一堆可有可無的圖標呢?豈不是浪費更多記憶體空間,影嚮系統表現,反正系統可以完成用戶要求的任務,那不就行了嗎?而且有許多程序員很在意系統的效率和內部架構,完全不在意用戶界面與美化。

  這說法是沒錯,但程式要賣出去,這也是一門生意。産品要賣得好,除了實用和耐用之外,外觀也是個很大的因素左右購賣者的決定。就像許多人買車都是看外表和顏色,因為許多時候,同一等級的汽車,功能上都相差不遠。所以想要産品賣得好的,通常都會在外觀上下苦功。

  就像手機一樣,雖然你手上已經有一個了,但不停的受到廣告的誘惑,新款示不停的推出,和身邊朋友不停的升級,許多人還是會動搖,最後也去升級了。以前的軟體,都是第一版,第二版,第三版慢慢推出,可是顧客通常買了過後,就不知道軟體目前已經升級到甚麼版本,所以他不會覺得自己落伍。

  為了刺激銷售,許多軟體公司在上世界九十年代末就開始以年代做版本號碼。像微軟的Office從6就跳去97了,過後就Office 2000。典型的以年代做版本號的包括Norton Antivirus,總之有2004, 2005, 2006。如此一來,如果用戶的電腦還用著微軟Office 2003,雖然他不一定知道最新是哪一版,但他必定會覺得那好像是用著三年前的舊貨了。為此,只有不停的升級,雖然也不見得需要甚麼新功能,但落伍的感覺總是不太好。軟體開發公司就通過這一點來增加自己的財富,屢試不爽。


  我觀察了市面上許多的軟體,而軟體業老大微軟的軟體在升級上面做得最好,如何好法呢?那就是他的用戶界面都會與上一版本不同,讓你第一眼就知道是新東西。為甚麼要這樣做呢?這裡舉一例,像我這種最‘一般’的微軟Word用戶來說,不管是Word 6、97、2000、XP或2003版都好,我就只會用最‘一般’的功能,打打字,最多是加個table,所以不論怎麼升級,我都沒有發現它有甚麼新功能。為了對付我這樣的用戶,他們就在用戶界面,像開啟畫面(Splash Screen)、圖標(Icons)、目錄欄(Menu Bar)等去下手,弄得更華麗更精致,所以我眼前一亮,就確定它是新版本。


  為何外觀在軟體更顯重要?這牽涉到它的推廣,許多軟體推出後,就會有發佈會,在發佈會上或是行銷人員把新軟體展示在顧客前,不是行家根本就不知道它內部如何強加,如何改進,如何加快,但一眼看去,畫面改進了,嗯!絕對是新版本。就像Norton Antivirus的升級一樣,我只知道他的virus pattern每年增加,但軟體加強了甚麼,我完全沒概念,所以他每個版本在界面上煥然一新,讓我覺得我在「升級」。這裡並不是說功能升級不重要,而是說在你的行銷人員去展示給顧客時,因為展示的時間有限,許多功能他們未必馬上就能發覺,但畫面的改進會讓他們一眼就覺得這是個「新」東西。在國內,我看過許多軟體,他們不停的升級,功能不停的加強,可是畫面就是一成不變,永遠是個老樣子,即使你免費給顧客升級,他也只是感覺你來「重裝」一遍,而不是進行升級,至於內部功能,則因為他認為不是新東西,就沒空去「發現」它。

  升級有很多種,有的升大級(Office XP–>2006),有的升小級(Skype 2.0.0.90–>2.0.0.97)。有些軟體,像Internet Explorer,好幾年沒有更新了(因為打遍天下無敵手),直到最近受到Firefox的影嚮,失去少許的市場佔有率後,也同時要配合Windows Vista,才會想到要去升級。而有一些軟體,尤其開源的,更新很快。其實更新得太慢太快都有問題,不更新的問題更大了。

  軟體太長時間沒更新,大家通常是以為公司快倒了,但微軟除外。對客戶最大的麻煩是許多缺陷(bugs)沒得解,許多功能沒得發揮。因為現在有網路的方便,許多軟體都有線上更新(Online Update)的功能,因此更新非常容易,但是如果不是自動更新而需要用戶去啟動的,我發現有許多的用戶根本不會知道可以網上更新,或不在意更新升級這回事。太長時間沒更新,對軟體公司來說,需要面對競爭對手的挑戰,但是更新得快,公司才能不停的有新貨賣出,口袋才會不停的有錢財入。

  更新得快對用戶是好的,一是問題得到解決,二是功能得到提升,雖不知到底加強了甚麼,但猜想必定是更快更穩更好。但我聽到一個這樣的真實事情,一人在幾年前都是用正版軟體,舉一例,用Norton Antivirus 2003,可是到了2004年,他必須再買,2005年呢?需再買,買到幾時呢?他說第二年他就感覺落伍了,但要再付錢又覺得此「付」綿綿無絕期,所以就用盜版到現在。這裡不是說頻密更新升級不好,而是讓大家知道有些用戶會有他們自己的算盤。

  許多開源的軟體,更新升級更快,快得不得了,讓你感受他們的熱忱,但這又有另一問題,太過快速的更新讓我覺得他們沒有計劃好,就隨意的發佈出來,讓我覺得他們的東西好像很「不穩重」,要不然就告訴我說它裡頭存在太多問題了,要不停的修改,這也會讓用戶對它的信心打折扣。

  當然還有一些出師未捷身先死的,像www.nvu.com的計劃一樣,我是它的用戶,因為我不想用付錢向Macromedia買Dreamweaver。它是個不錯的東西,但似乎沒有要繼續更新升級的感覺,讓我們這些用戶求助無門。但想想也是,天底下哪有那麼多白吃的午餐,有個OpenOfficeFirefox已經是很不錯了。

從不漲價的商品

前言

  因為自己在電腦這行業內一段時間,而且也常常與好友談論電腦的趨勢與發展,所以一直很希望把自己的想法做個記錄,卻又常提不起勁來寫它(因為實在是太懶了),但一些要點也Save在腦中多時。有時看看國內電腦軟體發展的情形,就會想要說點甚麼,卻一擱再擱,遲遲都沒把它寫出來。事情沒做完,心理上就是不舒服,今天就開始「動手」(古代叫「動筆」),把它用Blog弄出來(這是我個人第一次用Blog),希望能有始有終吧!


一切從盜版開始

  從我在大約1989年開始接觸電腦以來,電腦在這十多年間的發展,絕對是突飛猛進的。那時我還是初中的學生,開始學習電腦,當時就祇是去學習它,還不知道可以應用它。直到高中時,我有個熱愛電腦的同班同學告訴我:「現在它們可以用電話來傳資料」,所謂的「它們」當然是指電腦的發源地美國了。當時我們也還不懂甚麼是網際網絡,因為在那個時候有機會閱讀的電腦雜誌並不多,而且也還不是那麼的全球同步化,所以在我國的電腦科技,絕對比美國慢了好些年。那時的比爾盖茨也沒有現在那麼紅,世界首富還是我們鄰國的汶萊蘇丹。

  我是從8088的電腦開始的,當時的磁片還是大片的5.25寸,還有High Density(高容量)和Low Density(低容量)之分。後來就變成3寸半的,一直用到今天。從那時候起,也就是電腦在我國慢慢的走向普及,我們基本上是與盜版一起成長。當時開始要學習MS-DOS,從第三版開始,學習如何dir, copy, cd等等的指令,然後到當時最紅的WordStar,Lotus 1-2-3,DBase等軟體,根本就不知道有所謂的版權或需要購買軟體這回事。總之要甚麼,就去找人借來複製一片,如果是找電腦店複製,是要以碟片量計算收費的。

  當時的電腦店也沒現在這麼多,他們的營利也是來自於售賣電腦硬體。如果你想要甚麼軟體,可以去向電腦店購買,然後他們就會複製給顧客,當然是盜版的。所以從那時候起,我們都是這樣的方式與電腦相互成長,當然也沒有機會知道甚麼是版權。一直到硬碟的出現,許多的軟體都可以裝在硬碟裡。如果在那個時候曾買過電腦的,都知道電腦一買來,裡頭就裝了許多的軟體,就像現在一樣。所以從那時起,用戶就被教育成祇要付硬體的錢,就可以開始使用電腦了。這個問題一直拖到今天,我還有個朋友在2005年的某一天,告訴我說:「原來Windows和Microsoft Office是需要付錢的!」。當然這並不是他的問題,而是賣電腦的人從來就不曾向他提過版權這回事,做為使用者,買了電腦回來理所當然就直接用了。

  好幾年前,當我到澳洲念書時,想買電腦硬碟,發覺當地賣的硬碟容量都比我國的小,真是大惑不解。照理澳洲是先進國,馬來西亞是發展中國家,應該他們的電腦設備都該比我們先進才對。原來他們注重軟體版權,要裝甚麼軟體就要付錢,所以只裝需要的軟體,因此就不需要太大的容量。反觀我們,一定要大容量,甚麼Windows,Office,Netscape(在當時候),Winzip,IE,ACDSee,Norton Antivirus,Winamp(剛出不久)是必備的,然後再來Adobe,Microsoft Visual Studio,Turbo Pascal,Turbo C++等等使我們的電腦無所不能。這種軟體不必付費的用法,硬碟當然是愈大愈好。盜版軟體的使用讓我們大開眼界,見識各式各樣的軟體,讓我們在學習路上受益無窮,但它也間接了打擊我們自己,當大家都想用免費軟體,那還有誰會付錢給我們這些開發軟體的人呢!

  當然,不只是我國的使用者,大多數人都對版權沒有甚麼概念,最明顯的例子莫過於許多人都知道用盜版的Norton AntiVirusMcAfee這些名牌的防毒軟體是不合法的,於是就找個代替品,確保自己沒犯法,當中最著名的就是AVG個人版,可是許多人就沒有仔細去閱讀它的授權說明,就直接Next,Next,Next裝來用了,卻不知道最後還是不合法,因為這個版本祇能做個人用途,卻不被允許在公司內使用,辦公用途的話要另購商用版本。這說明了大多數人對知識產權的認識不多,祇有開發軟體的老板知道版權是甚麼回事,可是他們當中有很多也是用著他人的盜版開發工具來開發軟體,然後希望自己也可以像標哥一樣(我的同學把目前(2005年)的世界首富比爾盖茨稱作標哥,比較親切),賣個滿堂紅。我想這個情況不祇發生在我國,我相信全球大部份的人都是在安裝軟體時,就是不停的按Next,Next,Next,有誰會認真的去閱讀那長篇大論的EULA呢(End User License Agreement, 使用授權同意書)?


複雜的軟體版權

  我曾向友人借來VCD連續劇觀賞,後無事就閱讀其版權說明。才驚覺我與友人都犯了法,因為那VCD是不許借人的。如果邀請朋友來家裡一起觀賞也是犯法的。後來自己想一想,也不是沒道理,要不然友人買了一套,借給一百個人觀賞,那拍攝公司或電影公司還怎能活得下來?這忽然讓我產生疑問,如果我觀賞的同時,朋友突然來訪,也來觀賞個十分鐘後才離去,那他算是犯了法嗎?夠複雜了吧?當然這對於電腦軟體來說,就顯得小巫見大巫了,因為電腦軟體有所謂的個人版,共享版,試用版,免費版,廣告版,開源版,專業版,企業版,升級版,OEM版(也叫隨機版),網路版,多用戶版,伺服機版,單CPU版,雙CPU版,多CPU版。總之除了木板之外,甚麼版都有了,這讓大家覺得它非常的複雜也不知其所謂。

  或許正是這種原因讓大家對它隨便看待,反正有人來抓,就裝個甚麼版下去,祇要過關了就好,而沒去認真的瞭解它。安裝軟體時還是一樣Next,Next,Next完成,可是大家一不小心,很可能就裝錯了版本,還是犯法,嚴重的話是要罰款坐牢的。正因如此,軟體開發商還是絞盡腦汁來保護本身的產品,而另一批叫駭客的人,也絞盡腦汁在做魔高一丈的軟體破解工作。軟體的版權過於複雜,壽命短,種類多,破解又容易找到再加上網民們有互助共享的美德,使得許多軟體被迫要便宜賣出。反正你賣貴我就找別人,或用免費的(包括盜版的),這也使得國內的開發商必須得小心處理本身的產品定價。

  國內也常有反盜版運動,然後就會抓幾家公司企業殺鷄儆猴一番,這段期間的軟體銷售就特別好,當然這些錢都主要去了美國(有誰不用Windows, Microsoft Office, Adobe, Macromedia呢?)。但這活動有季節性,一年大概兩次,有事先警告,所以大家可以有所準備。有些公司為免惹上麻煩,在這期間就清掉所有的盜版軟體,等風聲沒那麼緊來再重裝。我曾在一間公司,當時也沒用正版的(聽說現在買齊了全部正版軟體),從事Foxpro和Borland Delphi的應用程式開發,反盜版運動一開始,老闆就下令要清除這些軟體。當時我就在想,如果他們真的上門來抓,若我說用正版Windows裡的Notepad來開發程式,不懂他們會相信嗎?因為我的角色是程序員,而當時我的電腦只有Windows是正版的,公司那時還沒有財政預算來購買那些開發工具。


國內的軟體開發商的起步

  正當個人電腦在大馬慢慢的起步的同時,WordStar, Lotus 1-2-3, DBase等曾經聞名一時的軟體也一個一個的離開我們,直到大家對Microsoft和標哥的大名越來越熟悉為止。但戰爭還沒結束,而是剛開始,只是從春秋的百多個國家變成戰國的七雄(或許是IBM, Sun, Apple, Borland, Adobe, Redhat, SymantecOracle這些大廠吧!當然Microsoft是虎狼之秦囉!),而當那些Word Star, Lotus 1-2-3, DBase, Turbo C++, Novell, Netscape相繼的離開了大家的硬碟,或從未進入過大家的硬碟。

  這段期間,國內許多的個人,著手開發了一些小型商用軟體,這裡當然包括了國內第一軟體大廠UBS的誔生。在這之前,國內的程序員用著許許多多不同的開發工具來開發軟體,其中包括Clipper(曾是很受歡迎的開發工具),Foxpro, VB, Delphi,C++等等。為了讓辦公室更有效率,比較有遠見的企業就紛紛開始使用一些商用系統,而最受歡迎的當然是會計系統。一直到今天,它還是國內最多軟體產商在競爭的項目。許多的工作者,也慢慢的發展成有一定規模的軟體公司,甚至公開上市。而這當中,他們是戰戰競競地不停奮鬥才取得的成果。


大馬推行多媒體超級走廊(MSC, Multimedia Super Corridor)

  看見了軟體只要輕易複製,就可以再賣另外一套的這種模式,許許多多的人都紛紛的加入戰圍。高手們開始寫程式。當然有許人也還是用盜版工具來開發軟體的,另個原因是,如果在當時想要購買正版軟體,也不知要找誰好。看見了軟體工業在美國矽谷的光芒,我國前首相馬哈廸也搞了個要與矽谷爭光輝的多媒體超級走廊,希望它可以讓大馬更邁進一步。

  一時之間,學習電腦的學生突然增多了,大專學院開了各種不同的電腦及多媒體相關的課程。投資開發軟體的公司也不少。這也造成了目前的電腦軟體開發就像炒粿條一樣,隨手可得,可是炒得好吃的就屈指可數。

  當然我們也要有Mesdaq,要與Nasdaq相應。可是如果你有空閒去查一查那幾間電腦公司的財政報告,你就看得出來他們其實也沒達到大家的高期望。

  或許還不是收割的季節吧!所以到今天我們還沒看見MSC為我國帶來了甚麼。祇看見不少的熱血青年,用著別人開發的Visual Studio,Java,Macromedia,Adobe在搞著多媒體(或許他們以為MSC就是多媒體)和程式開發。希望有那麼一日,國內的企業也像Visual Studio,Java,Macromedia,Adobe那樣為國家賺取巨額的外匯吧。看看美國今日的富強,Microsoft,Intel,Sun,IBM,HP,應該居功不少。我們這些用著他們的開發功具在瞄著國內市場的,跟他們還是差上好多截。


國內的軟體市場

  看回國內的軟體市場,我有個在會計軟體公司上班的朋友告訴我,在馬來西亞,單單商用會計軟體就有三百多種。其它各種類的軟體也不在少數。但成名的沒幾家,能衝到國外的更寥寥無幾(印像中好像沒有)。這讓我回過頭來看看國內的軟體市場,是不是賺不到錢,使得他們無法成長?

  當有人說他需要一個軟體來幫忙做完成某些任務時,許多程序員都可以為他編成電腦程式(Custom made Application),然後向他收取製作費(程序員也是要吃飯的啊!)。當然這些程式員也是聰明的,所以就希望能再買多幾套出去,賺更多錢(沒有人會嫌錢多的嘛!),因為公司A能用這個軟體,公司B幹著相同行業的也應該可以用。這當中有許多人就成立了公司,但是他們或許沒注意到,寫那一套應用軟體靠的是編程能力,可是要買出第二第三套,靠的就是行銷的能力。許多聰明的程序員卻不熟悉行銷工作,使得公司無法良好的成長。

  在我國,我知道有許許多多的編程高手,功力深厚,但是在我國實在是容不下他們來成為一個高級的程序工程式,因為國內軟體市場還很小,到今天也是如此,公司所能付給的薪水很快就會停在那裡。所以這些高手最終的出路就是自己來當老闆,開個軟體開發公司,希望有朝一日能賺點錢,建立自己的軟體帝國。緃觀國內許多的軟體公司,其實創辦人大都是程序編寫員出身,而且是個編程高手。但是當他們成為老闆時,他們的其它問題也接踵而來。開發軟體是一回事,銷售軟體卻是另一回事。他們所面對的問題,和他們的前老闆所面對的問題沒甚麼不同。市場太小,競爭太大,但已插了一腳,也就幹下去吧!不可能轉行去炒粿條吧!


SOHO, Freelancer加入戰圍

  電腦的普及加上SOHO概念和寛頻(Broadband)的出現,還有國內大專院校所栽培出來一批又一批的電腦專才們,使到許多個人或小團隊可以與小型軟體公司直接對壘,某個程度來說,這對用戶大眾是有利的,有競爭才有進步。但過於激烈的競爭,使到經不起考驗的軟體公司或個人迅速的「收檔」。激烈的競爭明顯的反應在價格上,雖然公司還是給人比較可靠的感覺,但SOHO的超低價也搶去不少市場。所以在國內可以看見許多人一開始是抱著滿腔熱忱想要成為第二個標哥,然後過了幾年,他在幹著別的行業了(當然也沒有哪個行業是輕鬆的)。他們的失敗或許也包括了太低的產品售價讓他們本身無利可圖。當用戶發現他們的軟體供應商收檔或消失了,他們才驚覺先前的考量有所偏差,下一回得找個「可靠」的。

  國內目前很多家庭都有了個人電腦,本地大學或學院學生也都有自己的電腦(因為它現在的價格很普及化了(電腦硬體的市場競爭更激烈)),而我們再也看不見用手親筆寫出來的作業了。這許多畢業後找不到工作,或是打工了一段時間後想自己當老闆的上班族,就開始了個人的小本生意。非常肯定的,他們的服務收費就比一般公司便宜很多。直接對小型軟體公司競爭。他們的收費之所以能超低價,主要是沒有甚麼成本負擔,因為把自己的家或房間當辦公室,傢俬全齊了,電腦打印機是念書時買來做作業的,用到現在。

  開發工具呢?簡單,pasar malam(馬來西亞的夜市,夜市也賣軟體,先進吧!我有個朋友不把盜版叫做pirated version而叫pasar malam version)就可以買到,或直接網上下載吧!(當然我指的是大部份情況,並非所有人都如此,而且我也的確還沒聽說哪個freelancer去買了正版軟體)。基本上他們想要獲得比打工時更高的薪水是不難的事,但要穩穩的每個月如此卻不容易。要發展成為像他們的對手那樣的小型軟體公司更不容易了。


小型軟體公司的生存法則

  SOHO和Freelancer開得出來的低價格,照看應該是一般軟體公司無法比的。雖然小型軟體公司要付辦公室租金,水電費,傢俱裝潢,電腦設備,還要買那昂貴的開發工具才能開工,可是很意外的,他們還是可以存活下來。在軟體方面,雖然只有開發工具(Development tool)是關鍵,可是總得有個Windows吧?那Office也不可少啊!至少也要處理一些文檔資料的(少少程式文檔(Documentation)也要做一做吧!不然別人會說我們的軟體是沒有架構的)。那防毒軟體呢?現在只要能上網就會碰上電腦病毒,不裝不行啊!要不然千辛萬苦日以繼夜寫出來的程式瞬間消失,如何向老闆大人交代?單單這些基本的軟體裝下來,再加上開發工具,就幾千幾萬塊錢。還沒有收錢,就得先付出這些投資。按理說,如果他們產品的價錢還能與SOHO或Freelancer競爭,實在是很離奇,可是他們的價錢的確還是可與SOHO們競爭,奇怪吧?反正市場的價位就是那麼低,誰要是開高價,就先被顧客唾棄,所以小型公司也別想說我們是專業,我們可靠,我們穿著正式,我們強,就可以收高價一點。這時我們要開始去探討這些小公司能成為survivor(生存者)的原因。


從不漲價的商品

  某日,一個想搞便利店的朋友就問我說POS(Point of Sale)系統會不會貴啊,大約需要多少錢。我剛想開口回答時,身邊的一個電腦業同行朋友就快速反應說:「貴甚麼啦!在馬來西亞,只要跟電腦相關的,都是最便宜的」。當然,他的觀點是以電腦軟體供應商角度出發,但我也認同。

  在馬來西亞,我們面對汽油漲價,過路費提高,柴米油鹽醬醋茶等加價習以為常,原料漲價後吃麵喝茶都貴了,衣食住行都貴了。但是就有一類產品從來不漲價,那就是軟體產品。按常理員工每年加薪,過路費加價(到用戶那去安裝,支援費增加了),產品應該也跟著漲價才是。

  可事實卻不然,因為市場正在拼個頭破血流,何況又有更新的,更強的,更便宜的,更多功能的同類產品面市了,所以不得漲價,或許還需要減價去跟對手拼個死活。因此我常說麵貴油貴,炒粿條的也漲價,可是那些開發程式的,要學新技術,要上seminar,要買電腦書(都是像電話簿那樣厚又貴又易過時),要加程序員薪水,更要升級開發工具(Mircosoft, Borland都不會放過你,定時升級產品)。產品功能提升了(被迫的,因為對手的新程式有好多新功能),安全性加強了(因為用新的開發功具),通貨膨脹率提高了,可是產品祇能照原價賣。

  瞭解了小型軟體開發公司的困境後,我們發現許許多多的公司開不久就收檔,當然也有很多SOHO有一餐沒一餐的也離開了戰場。看見了不少SOHO離開了戰場,經營小型軟體公司的我們以為美好日子來臨了,畢竟許多SOHO撈不到吃的,走了。可是,還有一批又一批找不到工作或不想朝九晚五的畢業生,後浪推著前浪地趕來了,反正在家閒著也是閒著,倒不如寫個程式試看能不能賺點生活費,最後小型公司的產品價格還是不能漲。

  那麼小型的軟體開發公司是如何適者生存呢?我對此疑惑很久,不停思考他們的生存法則。根據我的觀察,當然許多人還是對公司比對SOHO來得有信心,使他們有一定的用戶群。但那麼低的產品價格,那麼高的成本,理論上他們應該也活不下去。對用戶不能加價,因為別人都是那個低價位,對產品功能又不能偷功減料(因為別人的系統甚麼都可以事都辦得到),員工薪水又固定在那兒,省也省不了(還要年年加薪,不然他會跳槽),而且現在不像以前DOS或Freeware/Shareware的時代,可以一個人寫出個程式。加上現在的程式都很複雜,不是一個人就可擺平,至少要三五個人才搞出花樣來。

  那麼,一定還有些甚麼原因讓他們生存到今天。後來,我發現有許許多多的小型軟體供應商,靠的就是擠壓他們年輕程序員的熱忱與時間,把專案(project)的時間縮到最短而存活下來。因為現在大家都在談「效率」,在固定時間內完成專案,而不是以前那樣固定的朝九晚五,所以你趕不出成績來是你差,你沒有效率,這就造成了許許多多的程序員被迫要夜夜哀歌,加班沒有多拿薪水。這樣子公司就活了下來,雖然價格低,可是因為做的案子比別人多,那麼除了程序員過著不正常的生活外,公司還是可以過維持著正常的運作。反正你不想幹程序員,還是有一堆人在排著隊。所以我見到的許多公司就是靠著擠壓員工們的血淚汗來成長的。


程序員的美麗與哀愁

  這些被擠壓的程序員們,之前都對嚮往著電腦行業。看著標哥的風光,好多的程序員都希望有朝一日能像他一樣。只要產品不與標哥的類似,應該不會有性命之危(總之就不要去搞甚麼OS, Office就是了,更不要去像Sun, Borland, Apple那樣太光芒萬丈被微軟對到,那是很危險的,君不見WordStar,Lotus 1-2-3,DBase,WordPerfect,倚天中文系統都不見了,還有一群苦苦掙扎的中文之星,WinZip,ACDSee,PCAnywhere等等)。見到他的風光,許多人也開始希望說自己也變成大馬標哥(大馬的就好了,不要太貪心!)。

  有許多人,他們對電腦的認識是從電腦游戲,網際網絡,網上娛樂開始的,然後就誤以為自己愛上電腦,加上大家還一直以為搞電腦有前途,可賺大錢,然後就這樣選上電腦科系。直到工作後才知道真相。許多從事電腦行業相關工作者,外表亮麗,手提電腦,PDA手機,無線上網,聽著mp3機在鍵盤上敲打。可是大家沒注意到,有大部份都是驚人的超時工作,太陽沒出就到公司,太陽下山還沒離開,所以有人說這是一份見不得光的工作。當別人在海邊渡假,他們卻在趕進度,因為交貨時間非常短。若是真的有了假期,也得自修一番,學些新技術(因為新技術層出不窮),以和同事競爭,而公司也得與別人競爭。所以高科技一族所謂的高薪(如果有高薪的話)很可能就是將來的醫藥費補貼。當然,也有不少的人陶醉在編程和研發的工作。

  某日我從維修摩多車和汽車的店舖經過,看見技工們在幹活。我就想,現在的高科技新貴會不會就像好幾十年前的修車員一樣,當年會修汽車的應該也是高級工程師吧!修車員的現在會不會是科技新貴的未來呢?

  雖然有高學歷,看起來高深莫測。但是在高級管理層來說,他們或許也只是高級藍領;在不懂電腦的人來說,就以我父親為例,一直以為程序員是修理電腦的或打字的。我有個朋友念電機系的,他的親友一直以為他是維修電視機的。

  如果說SOHO族或小企業裡的戰士們都在這領域裡苦戰著,那在大企業裡的IT族呢?我有三個分別在銀行,跨國石油公司的MIS部門和國際電腦大廠上班的同學,他們都兼職在賣保險。或許他們在尋找另一條路,或更保險的路吧!從這裡也可看出部份電腦業打工族對自己的事業不太有信心(當然在這個時代,其它好多行業也都如此)。


檳城炒粿條 SOHO程式員與炒粿條老闆

  當電腦行業出現某些變化時(如反盜版運動,新程式語言或架構出現,軟體公司被購併等),我會與朋友談論著程序員的命運,因為我是曾是程序員。在很多時候,我和朋友會發覺外表光鮮亮麗的程式員很多時候還不如炒粿條老闆。我們並非瞧不起程序員或是自卑,而是他們真的可以直接比較的。

  首先,許多程式員都算專業人士,創業前就花了不少學費與光陰,然後要投資硬體或軟體設備,都價值不菲,就可以開工接案子了。炒粿條的老闆們也是開檔接案子,但投資就沒那麼大了。像炒粿條,炒好了端給客人就可以收錢,如果是customize要加蛋,就多收一點。程式就不一樣,弄好了還要給客戶測試,然後嫌三嫌四一番(這很正常的,因為有批評才有進步嘛!),還不能收錢,要修改,因為之前的溝通有問題,弄出來的並非客戶想要的,不像炒粿條那麼簡單。

  即使客戶接受了,或許半年後當你正在弄著其它新案子的時候,這個客戶又來電說程式在某某情況下出問題(很可能是Windows或打印機問題),又要幫他查一查,搞一搞,不像粿條吃完就完那麼直接,這情況很多時候不能再收費,因為是原來的程式出問題,「我不是付過錢了嗎?你的程式出問題,怎麼還要我再付錢呢?」。還有個情況,有好多的專案都一拖再拖,少少錢拖個一年半載,可是你有見過一碟粿條從早上炒到晚上的嗎?

  先說創業投資,幾台電腦加上打印機加上Windows+Office+開發工具+防毒軟體+…,多少錢去了,而且還得不停升級,可是就沒聽說炒粿條老闆需要升級(upgrade)他的鍋和鏟去2005版,而且也沒有網路的版本,不就是開多一個爐,兩碟粿條同時炒(multitasking)。所以從創業資金看,炒粿條老闆好像花比較少錢。

  至於工作時間呢?程式員要朝九晚五,再加班(沒額外加薪),炒粿條老闆是想開檔就開檔,不開檔幾天也沒關係。不開檔客戶就會吃別樣(因為還有鷄飯,雲吞麵和加喱飯),也不怕顧客溜了,反正顧客也不會天天吃鷄飯吧!更不會有前天的客戶來要系統支援(system support)。工作進度呢?炒得快,賺得多,程序員就編得快,錯誤多。另一點是程序員們要抓蟲(debug),炒粿條老闆的粿條炒焦了,是客戶自己去抓蟲,要不然就忍著吞下口。

  社會問題也攪進來了,當通貨膨脹,過路費漲,油價漲,水電費漲,鷄蛋漲,粿條就跟著漲價,粿條漲價後,老闆也可能多賺不少。軟體嘛,就從沒聽說有漲價的。一個在大馬的程序員的薪水,我們大概可以知道,那炒粿條老闆的收入呢?如果你哪一天得空,留意一下他們裝鷄蛋的紙盒,再推算一下,你或許知道他們月入多少。而且他們有許多在下午兩三點就收檔喝茶去,晚上在家享天倫樂,想多賺錢的還可以繼續加班或兼差。

  那你想說:「炒粿條老闆星期天也要工作,至少程序員不必啊!」,但是程式員也是時常加班趕工的。如果不必去上班,那麼手頭上一定還拿著Learn Java in 21 days或C# Unleashed(因為公司某個天才又向老闆建議說要換個更強的程式語言)。粿條就沒有Windows版或Linux版,也更加沒有2.0版或2005版,它只有好吃和不好吃。好吃或不好吃,從每日營業額就知道。

  如果從這裡看,就會明白有許多人離開電腦行業,就幹別的行業去了。當然還是有很多還是留下來,因為第二樣技能不是人人有,所謂不熟不做嘛!而且軟體的優勢,是寫了一份可以賣多多份,炒一碟粿條吃了就沒了,要不停的炒。但另一個思考邏輯是,就因為有各種平台,各種版本,各種問題,那總要有人去解決啊!所以這也是商機所在。


小型軟體公司的限制

  看了程序員的情況,再看看小型的軟體公司。大馬大多數的軟體公司都以開發本地商用軟體為主,雖然還有好多中小企業需要向電腦化自動化邁進,但市場規模並不太大,加上競爭太激烈,使他們必需要步步為營,一不小心就萬劫不復。我有個朋友,離開企業,自己編寫小型的軟體,以共享軟體來賣,市場是全球,成績還不錯。另一個我認為這些小型軟體研發公司的限制是,它們存在了好幾年,好幾十年,可是還扎不了深根,它們也就變成了今日不知明日事的公司,隨時可能轉行或倒閉。而這個深根就是它們苦苦經營好幾年下來所累積的資產。

  我國許多小型軟體公司真的並沒有累積甚麼資產,就以技術而言,好多技術都在員工和大老闆腦袋裡(像我先前所說,許多老闆都是優秀的程序員),小員工來來去去,哪裡福利好就往哪跳,所以只留下一份程序碼(Source code)在公司,和全盤流程在老闆腦裡。既然人員不是小型軟體公司的資產(雖然大家也常常像IBM一樣高喊,員工是我們最大資產)。那就剩下那一份程序碼了,可是它真的也並不是所謂的智慧資產,為甚麼呢?

  大家都知道,像IBM,Adobe,Macromedia,Symantec, Borland,Microsoft, Sun這些商用軟體大廠,都各自擁有自己的核心技術與專利,和一堆可以複製鈔票的程式碼,這些程式碼都是以C/C++為主(總之就不用Visual Foxpro, Visual Basic來編寫),經過多年無數次的測試,修改,升級和加強才讓他們的產品暢銷全球。他們的核心技術也在他們的程序碼裡頭,根據不同平台(platform),如Windows 3.1, Windows 95,Windows XP,Mac,Linux等不同的SDK來煉製不同的軟體。所以他們歷時愈久,產品也愈穩愈好。當別人推出甚麼新語言時,他們跟本沒怎麼大驚小怪。而國內一般商用軟體開發產商就不一樣,大家用的是微軟或Borland出品的開發工具(如早期的Clipper,DBase到目前的VB,Delphi,Foxpro),然後開發工具本身不停的升級,再加上版本之間有不相容現像,作業系統也不停升級,使得資產(程序碼)忽然英雄無用武之地,必須從寫。

  這裡舉一例,若早期以Clipper(當年紅極一時的資料庫軟體)開發了一套商用軟體,但後來因為要視窗介面(Windows UI),上網等功能和員工因素(現在應該也找不到幾個Clipper程序員了的吧!找到的話,他也幹不久吧!),所以開發產商若要升級,就必須以另一語言重寫(因為Clipper也好像下落不明了)。若以VB重寫,那出來的絕對是新的軟體了,過去在Clipper碰過的問題,現在還有可能再出現。所以那不是升級版,而是另外重寫版。那以前的智慧財產呢?沒辦法了,暫時放一邊吧(多數是永久放棄了)!

  新版本不停修修改改,也隱定了,想不到豐收季節來臨時,又來了個新語言新架構,大家都往.Net去了(大時代來臨,秦王要統一天下,書同文,車同軌,大家可以用華語(C#),福建話(VB),廣東話(C++),客家話(Java),潮洲話(Foxpro)下命令,但都能以中文字(.Net)來達到溝通,你不會還想用著趙國或魏國的文字吧!)。聽說它更強,更快,更隱。跟不跟呢?可是VB和VB.Net是兩碼子的事,又要重寫?所以說,資產去了哪?不跟的話,客戶會說:”別人的有Web Services,你的沒有還賣那麼貴?”(其實也沒幾個人知道甚麼Web Service,只是用來壓價錢而已)。

  所以好多中小型的軟體開發公司,並不擁有任何的資產。這就是他們和國際大廠的最大差別。沒有技術資產祇能賺些眼前的營利,卻無法讓他們無法茁壯成長,在一段時日後,他們又必需一切重來。看到這裡,就知道要以軟體印鈔票實在是困難啊!這問題當然也不祇是企業的問題,當然要招來那些高技術人材和經營管理人,也是需要不小的投資,小型企業不一定搞得來。這也是全球一大堆投資在軟體的企業,最終不但沒有成為微軟,卻栽了個大筋斗。而且若認真思考一下,就像我朋友說的,要成為另一個標哥的時代好像也過去了,現在最多也祇能成為Linus Torvalds了.

  當然,他們的客戶群算是資產,但客戶的存在是與他們的軟體產品同在的,當別人的軟體比他們便宜又好又問題少的時候。這些資產也可能會慢慢流失。


軟體開發公司之外的戰場

  除了軟體開發公司之外,那些性質相近的多媒體公司(Multimedia),虛擬主機(Web Hosting)公司也是在血戰著。因為多媒體的成本更高,要劇本,要繪稿,要上色,要動畫,要美工,要編程,人手眾多,製作流程複雜,工具昂貴(Adobe, Macromedia,它們已在2005合并了),而虛擬主機則一堆人在搞,比春秋時期的一百多個國家的戰場還激烈一百倍吧!所以它們的情況並不比軟體公司來得好。

  再以炒粿條為例,若你去年在某某檔口吃了三塊錢一碟的炒粿條,今年你再去吃回同樣三塊錢的粿條,老闆給你端來兩碟。那你一定會嚇一跳吧!這種事情不會在國內出現才對,難道是在夢裡?但是虛擬主機(Web Hosting)就是這樣,去年兩百塊給你1GB,今年兩百塊給你2GB。所以做顧客的實在是有福了。


眼前路難料,活得久的是英雄

  不管是個人或小型軟體公司,在這樣艱辛的路上苦戰著,大家都不再盼能成標哥第二了,惟盼對手盡快撐不住倒下,然後刮它一點市場份額。所以不求福貴,只求能活得更久,這成了他們短暫的目標。要不然,活都活不下去了,還談甚麼未來大方向?如果現在就倒下,豈不是有志難伸?

  當然職業不分高下,炒粿條也是個養妻活兒之路。但對於搞了電腦許多年的人來說,做生不如做熟,再頂多兩下子吧,反正幹了那麼多年了!或許柳暗花明又一春,桃花園就在前方,撐得住的就是英雄,能壯士斷腕(轉行)的更是豪傑。而就目前的市場看,有哪行業是輕鬆的呢?大家也都是祇為了三餐溫飽而戰,或許明日網路世界又帶來另一番新機會呢?所謂世事如棋局局新嘛。

  注:以上文字并無要吹捧或鄙視哪個行業或哪個團體及個人,更無意要道人是非,只是就我所觀察國內小型軟體公司的發展情況做個記錄。若你有不同意見,看法或建議,可留下comments。萬分感激。