廖恆毅

廖恆毅

1967年生,湖南省岳陽市人。

1986年 畢業於成都科技大學應用數學系。

1989年 任北京四通集團公司開發部經理,領導開發了一系列中文軟體和資料庫管理軟體。

1993年 任北京新天地軟體公司總經理,領導開發了曾獲得過一系列國際國內大獎的著名軟 件產品“中文之星”2.0版本,由此成為中國軟體界的著名人物。

1996年 加入微軟(中國)有限公司,擔任技術協作部總經理一職。對推動全國的獨立軟體 開發商開發基於Windows和SQL Server平台的產品、推動中國Internet技術的發展做出了重要的貢獻。

2000年 正式加盟佳軟公司,任總工程師/副總經理,全面負責公司物流管理軟體的策劃和 設計,成為佳軟在公司戰略研究和技術開發方面的核心。

很多人以前沒有聽說過廖恆毅的名字,包括我。但當你了解了他的過去之後,你會很驚訝的發現,他也是中國程序員具有代表性的人物。雖然同樣是以中文之星起家,他沒有王志東在網路大潮中的呼風喚雨,而仍然在一個軟體公司;同樣是非凡的第一代程序員,他也沒有像求伯君那樣有時間去學開飛機,而仍然在構築自己的程序代碼。我們看到的是一個飄忽不定的技術狂人在書寫自己的程序人生。

人物生平


1967年生,湖南省岳陽市人。
1986年 畢業於成都科技大學應用數學系。
1989年 任北京四通集團公司開發部經理,領導開發了一系列中文軟體和資料庫管理軟體。
1993年 任北京新天地軟體公司總經理,領導開發了曾獲得過一系列國際國內大獎的著名軟 件產品“中文之星”2.0版本,由此成為中國軟體界的著名人物。
1996年 加入微軟(中國)有限公司,擔任技術協作部總經理一職。對推動全國的獨立軟體 開發商開發基於Windows和SQL Server平台的產品、推動中國Internet技術的發展做出了重要的貢獻。
2000年 正式加盟佳軟公司,任總工程師/副總經理,全面負責公司物流管理軟體的策劃和 設計,成為佳軟在公司戰略研究和技術開發方面的核心。
很多人以前沒有聽說過廖恆毅的名字,包括我。但當你了解了他的過去之後,你會很驚訝的發現,他也是中國程序員具有代表性的人物。雖然同樣是以中文之星起家,他沒有王志東在網路大潮中的呼風喚雨,而仍然在一個軟體公司;同樣是非凡的第一代程序員,他也沒有像求伯君那樣有時間去學開飛機,而仍然在構築自己的程序代碼。我們看到的是一個飄忽不定的技術狂人在書寫自己的程序人生。
真正知道廖恆毅,是因為拼音加加輸入法,我當時從網上下載安裝使用之後,感覺就是這個軟體如此體貼用戶,很多功能是期盼已久的,就象是為自己量身定做的一樣,因此立刻把電腦中其他輸入法都刪除了,後來又在網上花了30元註冊了一份。拼音加加也是我唯一通過網路註冊的軟體。但後來,拼音加加的支持網站六合源不見了,並聽說廖恆毅到了佳軟,一個起步很早,但並不出名的軟體公司。為什麼他會這樣選擇,做這些年的開發有哪些體會,懷著許許多多的疑問,最終在佳軟採訪了擔任CTO的廖恆毅。
《程序員》:微軟是程序員夢寐以求希望加入的公司,而您在微軟工作三年之後便離開的,您能談談當時為什麼要離開微軟嗎?另外當大家都認為拼音加加是一個非常好的產品的時候,您又突然進入了企業管理軟體領域,這其中又有什麼原因呢?
廖恆毅:我覺得三年對於一個人來說就是一個標點,研究生也就讀三年,在一個地方幹上三年就把該學的學會了,接下來如何發揮創造力會變得更重要。我離開微軟的時候應該是網路經濟一步步熱起來的時候,當時想法並不是特別明確。主要有幾件事準備做一下:一個是拼音加加輸入法,一個是網上證券系統,還有一個是基於企業的管理軟體。拼音加加和五筆加加這種作品對於我來說,可能輕車熟路一些,因此能夠很順利地推出了相應的產品。網上證券系統這個產品當時也已經做出來了,而且不少人看了之後,也認為非常不錯。但後來發生了一些事情,並由此改變了我對這些產品和市場的思路。
事情是這樣的,在六合源公司成立之後,我們把拼音加加放在網上註冊,30元一個,但註冊情況很不理想。當時有個用戶寫了封郵件,其中說:“你這個產品很不錯,但30元太貴了,貴得實在是不可接受,說實在的,為了支持你,如果你把註冊費降低到1元的話,我立刻就註冊,也不用你免費了!”當時我看到這封郵件,也沒有回信,一口氣開著車到了大山裡,坐了好久。想想即使這個軟體賣一百萬份,這個企業也沒有辦法生存。所以自己便對通用的、面向個人的軟體市場灰心了。再加上當時和佳軟有一定的合作關係,在接觸中發現,國內企業對軟體的需求很大,但企業管理軟體的整體開發水平很低,正因為看到了這些市場需求和機會,我開始傾向於了企業管理軟體市場。
最終我把整個戰線徹底轉向了企業管理軟體,一方面因為佳軟融資成功,更重要的是當時我遇到了一幫能夠優勢互補並且志同道合的朋友。他們當中有管理人才,也有對市場精通的,而這些朋友的長項也正是我所欠缺和需要的,所以選擇加盟了佳軟公司。
《程序員》:我們看到佳軟的產品是用VB開發的,而您現在使用的開發工具也是微軟的C#,是不是表明您對微軟仍然有一種情結呢?
廖恆毅:可以這麼講的。現在微軟推出了.net和C#,我認為這些開發工具對程序員來說,簡直就是夢想中的一種語言,以前是不敢奢望擁有的,但現在實實在在地放在你面前,所以我們公司產品的下一版本會完全改為C#開發。對於一個技術人員,很重要的一條便是要看跟隨誰,跟隨什麼樣的技術對自己的發展有利。IT市場變幻很快,就更要確定跟隨誰,大家都知道微軟做得好,為什麼不跟隨呢!有人說,我們就是要反對微軟的霸權,反對微軟的壟斷。而我認為反對壟斷和霸權那是搞政治的人做的事情,作為一個程序員,首先要注重的是自己的事業。人做事情要冷靜地去判斷,其中不要摻雜個人的情緒。就象炒股票一樣,有價值就要買進,不管這支股票是不是你喜歡的。
《程序員》:國內做企業管理軟體的公司非常多,從技術方面,您是如何提高佳軟競爭力的呢?
廖恆毅:我個人並不是一個害怕競爭的人,越是有競爭的領域,我越願意去拼一下。但反過來說,如果這個領域最終沒有收益的話,那做也就沒有什麼意義了。因為收益一方面是對工作的回報,一方面也是對未來發展的要求,沒有收益就沒有向前發展的動力。說實在的,當年網路經濟很火的時候,有太多的機會擺在我面前,但我一直沒有動,為什麼?因為我實在想不明白盈利點和發展模式等問題。所以無論其他人如何遊說,我一直按兵不動。可以這樣講,一方面我可能錯過了一些機會,但也可以說正因為如此,我沒有在這個大潮中摔下來。
在企業管理軟體領域,現在有一些比佳軟大很多的企業,但我一直認為有很多超越他們的機會。關鍵在於如何深入的理解和抽象企業管理軟體。企業是千差萬別的,企業對軟體的要求也是千變萬化的,如何去適應各種不同的變化,這是首先需要解決的問題。
事實上,很多管理軟體都是剛性的,什麼是剛性呢?就是軟體本身不能適應隨著企業改變而改變。在企業發展或者模式改變之後,要求發生了改變,如何適應這些要求呢?於是很多公司的解決辦法就是在原有的軟體中又增加了更多剛性的適應需求的部件。實際上,這些公司的產品把很多可以抽象出來的模塊固化到程序中去了。如果用戶要提改變的要求,那沒有辦法,只能修改源程序。
而我的軟體設計思想是:首先要抽取企業管理軟體的共性,然後設計出一種模型,進而將這種模型由實施人員根據用戶的需求去重構。也就是說,我是在設計平台,而最終用戶見到的軟體是有人通過我的平台再開發的軟體。這些人更多的是要懂用戶的業務需求,而並不需要知道程序的結構。利用這個平台,用戶只需要很簡單地修改外部的可修改項就能達到需要的效果。通過這個模型和平台,我們能夠完全貼近和符合用戶的要求,而不是強制的去適應用戶的硬性需求。
當然為了搭建這樣一個平台,在一開始付出的代價也是非常高的。我們第一個版本要實現的功能,如果換作其他公司寫,可能五、六個月就完成了,而我們寫了一年。但其他公司的產品出來之後,就已經固化成那個樣子了,而我們的產品可以隨時更改。我敢說,下一步版本出來時,我們的代碼量可能只有別人的幾分之一,這就是抽象的結果。
其實這種設計思想可以延伸到各類軟體的開發,我認為:每做一個軟體其實都在搭建同一類軟體的平台系統,而基於這個平台,可以做出千變萬化的最終產品。這樣才能夠提升自己的高度。
《程序員》:在很多場合,您特別推崇企業管理軟體模塊化的理論,而軟體模塊理論和面向對象的編程有很多相似的地方,是不是從面向對象的編程理論中得到了很多啟發呢?
廖恆毅:在軟體開發過程中,我認為軟體工程其實就是軟體模塊和模塊之間的編程,各個模塊之間如何定義各種介面。實際上,每個模塊內部又可以分為很多的小模塊。我們要做的就是如何使定義更加合理,更加高效。從這個角度講,無論多麼大的公司,寫出多麼大的軟體,其本質是一樣的。當然如果你要做一個非常複雜的軟體的時候,需要很大的魄力和綜合的組織分析能力。
現在編程,其實一切都是對象,如果不用面向對象的編程方法,基本上寫不出好程序來。一個程序員如果還站到討論語言優劣的層次上,他本身就還沒有理解面向對象的概念。其實面向對象是時時刻刻的思想體現,它本身根本同語言無關。如果領會了面向對象的方法,就是用彙編,用機器碼也能編寫,但如果不懂面向對象的方法,就是用Java,用C++寫出來也不是真正面向對象的程序。
有一次我給齊魯軟體的高層技術人員講基本的程序設計理念。講完之後,有人問:"你講的是資料庫,但怎麼和面向對象的概念這麼相近呢?"我說,你提這個問題,說明你真的聽懂了。其實我講的正是面向對象的概念,但卻是通過關係資料庫的形式來表現的。當你徹底明白了面向對象的概念之後,其實可以把任何的東西都看做對象來處理。
《程序員》:在您的拼音加加產品中,有很多方面非常易用和適合用戶的需求,而佳軟的產品用戶的反饋也很好。您認為,在設計軟體的時候,如何更好的體現易用性和預防Bug呢?
廖恆毅:如何做得更易用,還沒有一個通用的原則。但如果一個軟體不易用的話,那就不要用了,因為軟體本來就是為了提高效率的。做軟體開發時,一定要使勁地想:如果自己是用戶,如何才能用的舒服,並把它作為一個極端重要的事情去想,然後再去考慮內核的程序如何編寫,只有這樣才能做易用性的產品。舉個例子,我買了一個很好用的攜帶型硬碟,但它的蓋子和主體是分體的。我就可以說,這個東西不易用,因為對於一個攜帶型的產品,蓋子是很容易丟失的。
我認為,編程的技術,實際上就是數據和界面分離的技術,因為所有的程序最終都要用數據來表達,而給用戶使用的界面需求是千變萬化的。所以最好的方法就是把數據和界面分離開來。數據是一套獨立運行的體系,而界面只是基於數據的表現部分。而且也只有做到這樣,才有可能考慮用戶的易用性問題。
對於防止Bug,其實有一套完整的編程體系來保證代碼穩定,佳軟在這方面做了很多工作。包括把軟體分模塊也是一個防止Bug出現的非常有效的方法,因為這使得Bug沒有傳染性了,不會因為一個Bug的產生造成系統的癱瘓。同時在模塊和模塊之間應該有檢測代碼,一個模塊接受輸入數據的時候如果能夠檢測改輸入的數據是否存在問題,一旦有問題,就立刻能夠產生反饋並解決問題,這樣就能夠將Bug的產生降低到極低的水平,使系統穩定性高一個等級。
《程序員》:您在微軟也做過開發,在國內也做開發,從感受上講,您認為國外和國內的開發有些什麼樣的區別?
廖恆毅:我覺得很多感受是無法用語言來表達的,更多的是個人的感覺,進而慢慢地整理成思路。做市場的人總是要為自己要做的事情找一個說法,但對於做開發的人,更多時候強調的是一種領悟。
很多轉變並不是表面的巨大改變,而是一種基本思維方式的改變,一種基於環境的著眼點的改變。在美國更多的是一種氛圍,一種高層軟體開發的氛圍。比如大家都知道玩雜技,就要到吳橋去,聊足球,去廣東梅州會很多知音。其實軟體開發也是這樣的,正是因為那裡所有的人都在從一個很高的起點上做這些事情,探討這些事情,並在探討中產生了眾多的想法和實施的機會,所以美國軟體業才能不斷快速發展。而我們國內基本環境是比較低的,偶爾有一兩個有悟性的人存在,沒有一種氛圍,互相之間也很難激發出更好的編程開發套路和想法。
《程序員》:軟體開發是發展和競爭最為激烈的領域,您認為如何使自己不斷更新知識,跟蹤軟體潮流呢?怎樣才能算是成功呢?
廖恆毅:我覺得是這樣,人學任何東西,很多時候就是“感悟”,而不是死板學習。在工作的過程中,其實最關鍵的是考驗你的思維能力,對事物的理解能力,對本質的領悟能力。有很多人問我:“你現在還在寫代碼嗎?”說實在的,如果我不寫,我根本不可能去提煉。只有在做的過程中,才可能去抽象,才能找到感覺。只有有了感覺,才能悟出更高的境界。所以我會永遠保持自己去寫代碼的習慣。當然,同類的代碼我只寫一遍,可能寫得很粗。但是我一定要寫。
對於成功,可以分為三種:成功者,小成功者和大成功者。他們之間的差別在那裡?我認為,當別人感覺你已經達到了一定發展階段的時候,你仍然能夠改變和突破自己,那有可能成為小的成功者。而要想成為大的成功者,就是要在已經小有成就,別人認為你已經成功時,仍能突破自己。作為一個普通的程序員,要想成功,就要不斷地去改變自己的思維模式,不停的感悟。
《程序員》:拼音加加這麼一個出色的產品,您就放棄了嗎?
廖恆毅:事實上,當時做的時候,拼音加加就是做公司的副產品。我們做這個產品的時候,一般就是在閑談中產生一些很好的想法,然後將之實施。但從我內心來講,我對中文輸入法還是有非常深厚的感情,到春節前後,拼音加加3.0版應該會推出。3.0版本會支持短句,但又不完全是整句輸入,並且還會增加一些智能特性,比如提醒功能。現在也有一些合作夥伴希望去做一些市場,只是我一直沒有答應。
採訪後記
廖恆毅的桌子上沒有筆記本電腦,但有兩台屏幕很大的電腦,每一個電腦的屏幕上都是開發工具啟動的界面,代碼寫了一半。“我不善於用文字來表達”這句話廖恆毅說了好幾次,同時手不時觸動鍵盤來去掉不斷出現的屏幕保護程序。為了證明自己的觀點,他還把屏幕扭過來,演示他剛寫的基於C#的程序代碼:用一個完全獨立的文本文件控制程序的界面顯示。
看到我們的《程序員》雜誌,仔細地翻了一遍,忽然他的眼光停到了一句話上,那句話是“三十歲還能不能編程?”這時我聽到他嘴中嘟囔了一句“切,這是誰說的啊。”
廖恆毅非常喜歡++,在他的內心,也一定把C#看做了四個+的結合。不斷地突破自己,正是他能夠一直超越常人設想,感悟更多的基石。而從中文之星到微軟,從微軟到六合源,從六合源又到佳軟,可能也正是他成功理論的最好詮釋吧。