(《程序員》2004年第9期的maglog專欄文章,有所刪節(jié)。全文請(qǐng)見雜志。)
上個(gè)世紀(jì)90年代末,軟件泡沫最高漲的時(shí)候,我還在學(xué)校里老老實(shí)實(shí)地學(xué)著我的結(jié)構(gòu)工程。我當(dāng)年的理想是要做一個(gè)好的結(jié)構(gòu)工程師,跟我弟弟一起開建筑設(shè)計(jì)事務(wù)所,這話寫在日記本上,白紙黑字。后來之所以毅然地拋棄本行來趟軟件開發(fā)這攤渾水,很大程度上是受了技術(shù)高手們高大形象的鼓舞。那個(gè)時(shí)候真是有激情,覺得編程高手被澤著理想主義的光芒,向英雄一樣崇拜他們,他們才像是搞技術(shù)的,我們這些土木工程師,嗯,也就是個(gè)混飯吃。
真的走到這個(gè)行業(yè)里才發(fā)現(xiàn),中國的軟件技術(shù)研發(fā)的環(huán)境根本就不是那么回事,按照一般程序員的大白話,就是“在中國,搞技術(shù)的沒前途”。有點(diǎn)理想和抱負(fù)的程序員,大多面臨被分化和鈍化的命運(yùn)。所謂分化,就是以這樣那樣的方式轉(zhuǎn)變?yōu)楣芾碚摺⑹袌鋈藛T、宣傳員等等角色,所謂鈍化,就是乖乖地接受降解,由研發(fā)人員轉(zhuǎn)變?yōu)楣こ倘藛T。.....
......
搞技術(shù)的先天都有點(diǎn)自命不凡,總是幻想向著未知領(lǐng)域沖鋒,探索新的方向。誰不想重復(fù)Adobe在平面設(shè)計(jì)領(lǐng)域的輝煌?誰不想也搞個(gè)什么CAD來發(fā)掘和開拓新的市場?誰不知道搞項(xiàng)目的辛苦?誰不想安心做出好產(chǎn)品,名利雙收,給人生添一抹亮色?可是,難啊!環(huán)境所迫,只能放棄理想,面對(duì)現(xiàn)實(shí)。
不過軟件這個(gè)東西真的不太一樣。我的判斷是,放棄理想,也未必能成就現(xiàn)實(shí)。原因就在于軟件太容易復(fù)用了。我們行業(yè)里的人整天叫囂著要提高軟件的可復(fù)用性,還煞有介事寫一大堆書出來談reuse,殊不知,相對(duì)于其他很多傳統(tǒng)行業(yè),軟件的可復(fù)用性實(shí)在是太好了。比如說,雅典奧運(yùn)會(huì)場館中的鋼梁,絕對(duì)不可能拿到北京奧運(yùn)場館來復(fù)用,連設(shè)計(jì)方案也沒有多大參考意義。可是人家那成熟的奧運(yùn)售票系統(tǒng),改巴該巴就能跑在2008的售票主機(jī)上。不說那么玄的,就拿一般的任務(wù)來說,有幾個(gè)程序員能把線性代數(shù)方程組的那些七七八八的數(shù)值求解算法記得清楚?恐怕能說清楚什么叫矩陣譜半徑的人就已經(jīng)不多了。可是誰又犯的上操這個(gè)心呢?真的碰上這種問題,囫圇吞棗地調(diào)用IMSL庫的一個(gè)函數(shù),或者M(jìn)atlab的一個(gè)命令,算得又快又準(zhǔn),還不比你自己哼哧哼哧的寫代碼強(qiáng)?正是因?yàn)檐浖@東西能低成本大規(guī)模的復(fù)用,在這個(gè)行業(yè)里,就存在一個(gè)殘酷的現(xiàn)象:強(qiáng)勢(shì)的研發(fā)人員事實(shí)上在以自己的產(chǎn)品擠壓弱勢(shì)同行的生存空間。換句話說,你們雅典的建筑設(shè)計(jì)師搶不了我北京同行的飯碗,但是微軟的多媒體專家就能把我們北京的編程高人們逼得沒飯吃。道理很明顯,你在做流媒體播放器,做得還不錯(cuò),但是微軟一出手,你肯定趴下。現(xiàn)在用C#分分鐘就可以裝配出一個(gè)不錯(cuò)的Media Player,你呢,要么轉(zhuǎn)行或者轉(zhuǎn)方向,要么也跑去搞裝配。落到這個(gè)田地,其實(shí)就已經(jīng)肯定只能分到殘羹剩飯了。也許搶先干一段,還能有點(diǎn)出息,畢竟幫用戶解決了“最后一公里”的問題,這活也不容易啊。但是長遠(yuǎn)干真的不樂觀。為什么?裝配這活,技術(shù)門檻太低,而且一定會(huì)越來越低。干這行,向上給核心產(chǎn)品供應(yīng)商打工,向下給客戶打工,里里外外裝孫子。
我接觸過很多做項(xiàng)目的程序員,水平高低參差不齊,但是大部分都有共同的心聲,真不想做項(xiàng)目,真想踏下心來做做產(chǎn)品研發(fā)。大家起點(diǎn)差不多,學(xué)校里不見的誰比誰強(qiáng),憑什么你能專心做產(chǎn)品,探索技術(shù)新方向,我卻得汗流浹背周旋于客戶和廠商之間?而且說實(shí)話,搞這種服務(wù)活,程序員人微言輕,不是滋味。你還別不服氣,服務(wù)不就是讓客戶舒坦嗎,客戶也是人,讓人舒坦的方法多的是,人家sales有的是手段和力量讓人家舒坦,干嘛非在技術(shù)上較勁,誰也不比誰傻,對(duì)不?
要我說,咱們搞技術(shù)的真的不能甘心這么走下去。路不是沒有,其正到各行各業(yè)去看看,沉下心來調(diào)查研究,你會(huì)發(fā)現(xiàn),這所謂的信息化,在各行各業(yè)中的應(yīng)用也就是一層皮。要往深里挖,空間還大得很,機(jī)會(huì)還多得很。無論是石化電力,還是機(jī)械建筑,哪一個(gè)行業(yè)里都有很多真正的機(jī)會(huì)。說句不夸張的話,你要真能幫人家解決實(shí)際專業(yè)問題,還真用不著感嘆技術(shù)不值錢。不過要抓住這些機(jī)會(huì),對(duì)這些行業(yè)就不能淺嘗輒止,一定要有親身投入、深入實(shí)踐的決心。現(xiàn)在我們很多開發(fā)者喜歡自說自話,整天抱著架構(gòu)啊、模式啊、N層結(jié)構(gòu)啊孤芳自賞,其實(shí)上碰到專業(yè)問題根本深入不下去。搞結(jié)構(gòu)軟件不懂有限元,搞設(shè)備控制軟件不懂控制理論,搞探測分析軟件不懂信號(hào)處理,你上10層結(jié)構(gòu),用100個(gè)模式,也解決不了問題。要想深入行業(yè)應(yīng)用,軟件開發(fā)能力固然重要,專業(yè)知識(shí)恐怕更重要。行業(yè)應(yīng)用軟件一是復(fù)雜,二是專業(yè)。經(jīng)過第一輪信息化,最容易挖的那桶金已經(jīng)讓人給挖走了,再往下走,就不能不沉下心來真正鉆到人家專業(yè)里去。我相信,那里面的機(jī)會(huì)大的很。而且,這么想的人不只我一個(gè),已經(jīng)開始實(shí)踐的人也不少。現(xiàn)成的例子,中國建筑科學(xué)研究院的專業(yè)結(jié)構(gòu)設(shè)計(jì)軟件PKPM就非常成功,在國內(nèi)幾十萬人用,還出口到東南亞國家。蒸蒸日上的思維加速公司,也是一個(gè)深鉆苦干的典型。我也知道不少個(gè)人,正抱著十年磨一劍的決心深入到某些應(yīng)用領(lǐng)域里努力。他們是好樣的。我覺得,振興中國軟件業(yè)的希望,在在他們身上。