停止思考是一種墮落--我對《中國軟體之十五個看不懂》討論的總結和說明 (轉)

worldblog發表於2007-12-13
停止思考是一種墮落--我對《中國軟體之十五個看不懂》討論的總結和說明 (轉)[@more@]

  停止思考是一種墮落

  ----我對《中國之十五個看不懂》討論的總結和說明

  首先,我對由於我的一篇不成熟的文章所引發的熱烈討論,感到由衷的高興和滿足;對於廣大熱情的網友和許多關心中國軟體產業發展的人們的積極參與表示誠摯的感謝。面對軟體業界的種種問題和困惑,只要有大家的關心和思考,就一定會有好的解決辦法,中國的軟體產業也就一定會有光明的未來!


  作為我到處散發這篇文章的初衷,既不是為了宣揚我的某些觀點,也不是為了吸引大家對我個人的注意。我的目的是為了激發大家對許多視而不見的問題的關注,引起大家深刻的反思和理性的探討。因此,我在這篇文章中,並不是採用一種客觀、公正,實事求是的態度,而有許多偏激的意見和看法,整篇文章中也充滿了毫無根據的主觀臆測和沒有事實基礎的論述。換句話說,我是想用一種激進的描述來贏得大家的注意,以達到促進大家去思考的目的。這就意味著,中國軟體產業界並不是象我所描述的那樣,在某些方面具有那樣的準確情況和統計資料,這一點,許多網友也毫不留情地進行了指出和批判。在此,我對這些不客觀的描述坦率地承認,對大家的意見虛心接受。
 

但是,我們也應該看到,我在文章中描述的種種現象和問題,在我們軟體產業中是客觀事實,並在許多軟體企業和從業人員個人身上不同程度地存在著。我們只有正視而不是迴避這些問題,才有可能找到阻礙我們軟體產業發展的根本障礙,並在排除這些障礙後取得整個產業和企業、個人的實質性進步。當然,被別人指出自己的問題總不是一件會另人感到愉快的事情,因此,我的觀點會刺痛某些人,並引發他們自然的反應,進行反駁和,是非常正常的。我也不會對大家的各種觀點有任何個人化的情緒反應,相反,我認為,有爭論才會有思考,有分歧才會有進步,這是任何事業發展的一個基本規律。


  中國是一個愛好面子的國家。因此,我們總是在千方百計尋找一些依據,來保持我們表面的光榮和自尊,在軟體產業中也不例外。所以,我們能夠在和許多人的觀念中,發現許多誇誇其談、粉飾太平、譁眾取寵和避重就輕的思想和言論。同時,由於不願意進行認真的思考和深入的剖析,我們也提出了許多自不量力、好高騖遠和盲目冒進的策略和做法。而這些對本質問題的迴避和自大自滿的思想,只會給我們帶來更多的失敗和困難,使得我們的軟體產業無法獲得健康的持續發展。
 

另外,必須指出,由於我們國家處於一個經濟轉型的特殊時期,因此,在整個社會中,當然包括整個軟體產業界和軟體界的大多數企業和個人,都具有一種非常浮躁和急功近利的情緒,表現於對於眼前部分經濟利益的盲目追求,而不願進行更紮實的基礎工作以獲得長久發展的動力。這種思想是非常有害的。它使得我們不願意做艱苦的努力就希望能獲得很好的回報,它使得我們不注重去做好每一件事而是希望立刻就有收益,它還使得我們軟體產業界這個技術產業的領域,大家卻並不把技術創新作為最重要的工作,反倒把精力集中在大量的其他事情上。不解決這樣一個基本的觀念,不把技術創新作為我們整個產業界、我們的企業、我們的從業人員
得到發展的根本保證,那麼,所有的美好未來都是空中樓閣,永遠不可能實現。


  可喜的是,許多人已經認識到了以上的這樣一些問題,並在積極思考和探討的基礎上,正在踏踏實實地做一些具體的工作,以獲得和進步的基礎。我相信,隨著大家對這些問題的關注,一定能對中國軟體產業的發展起到重要的推動作用,並使得每一個企業、每一個個人在整個產業的良好的發展中獲得發展,並獲得最大的回報。


  善於思考、勤于思考是優良的品德。雖然我們的討論業已結束,但我希望我們的思考不會停止,並能夠有更多的探索和交流,共同尋找產業發展的良策。
 
  下面是我對這次討論中一些具體問題的看法和最後的說明,希望能提供給大家作為思考和批判的材料:

1、關於VB:

  首先宣告,我對於各種工具沒有任何偏見和歧視。我的基本觀點是:任何工具在它適合的範圍內,都是最有效和最好的。因此,評判一個工具的好壞,評判使用一個工具的開發人員的水平高低,永遠都只有一個標準--那就是看他能不能很好地解決所需要解決的問題。
  所以,VB在它適用的範圍內,是非常好的開發工具。而它適用的範圍,就是在簡單的應用開發中。VB的最大優點就是容易學習和使用,你不需要知道執行的底層原理,你也不需要有太多的的理論和經驗。因此,力推VB的用意,就是希望這種工具能夠讓任何的終端完成自己所需的應用,而不需要求助於非常專業人員。(這裡面也隱藏著微軟的一個“險惡用心”,就是讓使用者來打敗其他的軟體公司,進一步鞏固微軟的市場壟斷地位)
  VB的特性使得它非常容易上手,對於初學軟體開發的人員來說,是非常好的語言。但是,如果你的軟體開發的要求不僅僅在簡單的應用層上,而需要接觸到更加深入的內容,那麼,VB對底層良好的封裝就成為了一種障礙,這也是為什麼VB要進行深入的高階程式設計時,就會用到大量的和其他底層介面的原因。
  我並不反對VB,我也不認為會用VB的人一定就是沒有能力。但我可以不客氣地指出,許多隻會VB,而不願意學習別的開發工具的開發人員,其根本原因並不在於VB的強大,而是在於對於其他工具的複雜性難以理解和掌握,因此“不得不”堅守VB的陣地,同時為防止自己的技術能力受到懷疑,對於任何企圖貶低和攻擊VB的開發能力的言論都保持著高度的警惕。
  VB並不壞,會用VB進行軟體開發是一種不錯的能力,並且比不會用VB進行軟體開發的人多了一種技能。但是,使用VB不能超過它的適用範圍,也不能盲目誇大VB的強大功能,這樣會在實際軟體開發過程中遇到許多難以解決的問題。
  在各種語言中,我對C和C++有獨特的偏愛,我認為任何從事軟體開發的人員都必須掌握這兩種語言。C是非常基礎的語言,它對於培養軟體開發的基本思維方式,培養良好的軟體開發習慣,培養模組化、結構化等基本軟體開發技能都具有非常重要的作用。同時,掌握了C,也就獲得了通向程式底層環境的通行證,可以在需要的時候深入到任何的層次,解決需要解決的各種問題。而C++的最大特點,除了對C的基本特性的繼承外,最重要的就是他可以培養程式設計師完整的面向程式設計的概念,及基本的技巧,還可以使得開發人員充分了解等多工操作上程式執行的基本原理,從而為實際的應用開發提供最基礎的思維。同樣,C和C++雖然能完成幾乎所有的開發任務,但它們也不是萬能的,也有自己的適用範圍。在面向應用的許多終端開發中,C 和C++都由於實現任務過於複雜,難以理解和開發而不能作為主要的開發工具。但是,為了具備一個軟體開發人員的基本素質,為了擁有堅實的軟體開發的技術基礎,我認為:一個開發人員可以不用C和C++,但不能不去掌握它。

2、關於ERP和CRM市場:

  我們國內的市場是一個不成熟的市場,其中的一個表現就在於十分容易出現追風,也就是說,跟隨流行的時尚去進行專案建設。MRPII、ERP、CRM莫不是如此。
  ERP是由MIS、MRP、MRPII發展來的,它的本質並不是軟體,而是一套管理模式。企業運用這樣的管理模式來建立和規範自己完整的管理流程,並且ERP最適合的是製造業。在ERP中,軟體只是一種工具,這種工具並沒有標準的功能和結構,而是根據企業的ERP系統的實際情況,去滿足ERP的需要,為企業實現ERP提供支援。從這種意義上來看,企業要實施ERP系統,其核心是管理,是管理思想、管理體系和管理流程。這也是國外ERP廠商為何都以企業管理諮詢專家的形象出現,來幫助企業建立ERP系統,並選擇合適的軟體來完成ERP支援環境的構造。在這方面,SAP為我們做出了最明確的說明。
  而在國內,上ERP完全成為了大型企業的一項面子工程,所追求的是“我們上了ERP”,而不是“ERP為我們帶來了什麼”。這股風潮的根本動力是對大量國家資產的揮霍(有公開的揮霍--立項實施,也有隱秘的揮霍--回扣),並得到了媒體、IT廠商的推波助瀾。事實上,絕大多數企業連基本的現代企業管理架構都沒有建立起來,決策和管理還純屬個人性質,就想上ERP,企圖透過上ERP來改進企業的管理,一步登天。這種事情失敗的必然性是顯而易見的,是毋庸置疑的。因此,聽到國內熱炒一通ERP,熱上一批ERP,最後再基本上失敗,根本沒有任何值得驚訝的事情。
  可悲的是,在這場以國家資產的流失為根本目標的運動中,所有的參與者:企業的經辦人、IT廠商、媒體都心知肚明,但都不去點透。這就形成了上ERP的根本就不當回事,做ERP的也根本沒有認真做。軟體廠商在這場運動中,更熱衷於炒作概念,運作專案,甚至很多廠商連成熟的ERP環境架構都拿不出來,就開始承接專案,以做MIS的思路來完成所謂的ERP系統。這不能不說是我們軟體產業界急功近利的又一典型表現。
  再說CRM。CRM系統的有效實施,其根本基礎就在於一個公平競爭的市場環境,CRM中所強調的客戶的一對一營銷和需求挖掘,必須以規範的市場運作和決策機制來支撐。這兩點在國內的企業和市場中是很少見的。於是,有的人以國內企業做生意時講究的“關係”來置換CRM中“客戶關係”的概念,根本不顧兩者的本質差別,從而在市場上製造了另一個“熱點”,和ERP一樣,讓大家都掙到了錢,而國家卻損失巨大。並且,即使在規範的市場環境中,CRM也不是適合於所有型別的企業,只有客戶量巨大、客戶需要一對一服務、企業和客戶之間不是單純的買賣關係,而有明顯的服務特點,這樣的企業(例如保險、、銀行等)才比較適合上CRM。盲目追求CRM上系統,必然得不償失,淪為擺設。或只起到客戶服務中心的作用。

  在ERP、CRM專案中,關鍵問題在於管理思想的建立和管理體系的構造,當然,為了支援這樣的管理,需要複雜的軟體環境,這也決定了ERP、CRM決不是個人或小團體可以做的事情。


3、關於個人和小團體的軟體開發:

  軟體如果作為一個產業要發展,就必須以產業的方式來對待它。什麼是產業?它是一個透過計劃、合作、創新,透過市場化的運作來創造價值的活動。誠然,國內和國外現在都還有大量的個人和小團體的軟體開發,也出現了許多好的成果。但,這樣的開發並不是以產業的方式來運作的,而更多的是依靠個人的興趣來完成的。這也就決定了,這些開發最主要的
成果會集中在技術創新上,同時,在這些成果真正在市場上獲得成功的過程中,都必須經過嚴格的產業化運作,包括規劃、開發、測試、包裝、宣傳、營銷、客戶服務。另外,不計其數的個人和小團體的軟體開發中能夠最終獲得成功的也屬極少數,這和完全依靠個人興趣來選擇開發方向,完全依靠個人能力來完成開發工作有著不可割裂的因果關係。
  我們必須看到,現在的軟體業已經不是發展初期的軟體業了,如今軟體業的產業化規模已經相當大,要想在市場上取得成功,一個產品需要有非常多的人力、物力、財力的投入,當然,在其中軟體開發的核心人員的數量必須是少而精(這也是軟體產業的特殊規律所決定的),但是,個人和小團體的開發方式,已不能適應現代產業化的軟體開發工作,這是明顯
的事實。
  那為什麼我們還有這麼多軟體開發人員喜歡小團體或個人的開發方式,並以此為榮呢?一方面,是由於國內軟體產業化水平低所造成的;另一方面,則是由於許多軟體開發人員孤高倨傲,難以與他人合作,本質上是急功近利,不願意與他人分享成果所造成的。
  即使是個人和小團體的技術創新型開發,我們也應該將其準確地定位在“創新”上,去實現自己獨特的和領先的東西(現在有許多共享軟體和自由軟體在這些方面就做的不錯),而不是放在跟隨市場趨勢上。個人開發出全套的ERP和CRM軟體,並希望能夠銷售掙錢,是非常可笑的一件事。
  不要不正視這個事實:也許你是最好的軟體開發人員,但你一定要知道,現在已不是個人英雄主義時代了,沒有合作就不會有進步,沒有產業化則不會有真正的成功。
 

4、關於程式設計師的水平要求和軟體藍領:

  什麼是程式設計師?什麼又是軟體工人(軟體藍領)?其實,程式設計師作為實際完成編碼的開發人員,和軟體工人本沒有本質的區別,但由於許多從事軟體開發的人員的好面子(要做高技術人才不做高技術工人)和急功近利(只要是做軟體開發的就應該有高的收入),因此,出於對“軟體藍領”這個名字的反感,使得這兩個概念在我們國內已經對立起來,各有各的含義了。所以,我們就從不同的含義來分別說一說這兩個概念。
  軟體工人,也可以稱為“編碼員”(Coder),是在國外特別是在印度等國的軟體業中普遍的一個職位。Coder不需要了解完整的軟體開發思路,也不需要參與軟體開發的全部流程,他只是根據設計人員所設計的非常詳細的編碼規定,用某種預定的程式設計語言書寫出符合規定的。因此,對於Coder的要求並不高,只需要他會使用某種開發工具,具備按設計要求編碼的能力即可,而不需要他有軟體開發的堅實理論基礎,不需要他有很好的程式設計技巧,甚至不需要他懂得編碼以外的任何事情。正因為如此,所以軟體工人的收入往往不高(這也是我們的開發人員不願意做軟體工人的重要原因)。只是因為有大量相對廉價的軟體工人存在,所以印度的軟體開發才能以成本低、質量和進度有保證、規模大而獲得很好的市場聲譽。
  程式設計師(Programer)是專業性的軟體開發人員,他們的基本工作就是發揮自己的創造性和技術專長,設計和實現符合需求規定的軟體實體,因此,程式設計師的工作既包含了編碼,也包含了設計,這就需要程式設計師不光懂得如何寫出程式程式碼,而且知道為什麼要這麼寫,以及用什麼方法去實現所要求的軟體功能。因此,對程式設計師的要求就需要他懂得整個軟體的開發流程,懂得軟體執行和開發的基本原理,有經驗和技巧,同時,為了有創造性地實現需求,需要程式設計師足夠聰明,有軟體開發的天賦。
  軟體工人和程式設計師的不同任務,決定了對他們的不同要求,也決定了軟體工人和程式設計師的不同特性。軟體工人不需要有天賦,也不需要很聰明,只需要足夠的培訓就能夠勝任編碼的工作;而程式設計師則必須是非常聰明,有較強的邏輯思維能力和創造性的人。

軟體工人的工作內容很單一,最重要的要求是滿足編碼規定和進度要求;程式設計師的工作既包含了編碼,又包含了設計,因此,需要的是實現需求的技巧和解決問題的能力。軟體工人作為一種職業,只需要有基本的素質,就可以勝任;程式設計師作為一種半技術半藝術的工作,除了天賦,還必須有強烈的興趣和工作熱情,不僅僅是一種職業,同時必須作為能給程式設計師自己帶來快樂和成就感的事業。


  所以,如果你想做一個程式設計師,而不想做一個軟體工人,你就必須有天賦,有悟性,並且不能僅僅滿足於簡單的應用型的編碼,這也是我為什麼說程式設計師必須懂得C和C++的原因;否則,你就應該安於做一個軟體工人,用你的勞動換取收入,來供養你的生活。


5、關於目前軟體開發人員的待遇水平:

  也許各地軟體開發人員的薪資水平並不一致,各個公司和各個個人拿到的薪水也各不相同,但是,即使是從CSDN調查的平均月薪3700元的水平來看,軟體開發人員的待遇水平也已經大大高於絕大多數行業了。我並不反對軟體開發人員拿高薪,但我認為,一個軟體開發人員能拿到什麼樣的薪水應該和他所能創造的價值相一致。
  實事求是的說,我們有很多軟體開發高手,但也有很多(現在是越來越多)並沒有很好的素質和能力,甚至達不到程式設計師基本要求的軟體開發人員(很多隻達到了Coder的水平),也加入到了軟體開發人員的隊伍中來,希望獲得好的待遇。這也是為什麼現在找軟體開發工作的人越來越多,而很多人並不能找到滿意工作的原因。可以說,中國的軟體開發人員數量,已處於“結構性”過剩的狀況。
  這樣的並無很好的素質,不能為企業創造價值的軟體開發人員的湧入,由於整個軟體開發行業的薪資水平過高,造成了軟體企業的人力成本過高(這已經是中國軟體企業的一個突出現象),使得軟體企業難以獲得高的利潤,用來進行企業的技術發展和市場營銷,使得中國的軟體企業難以成長。而軟體開發人員把自己的薪酬與企業發展分離開來,只看到我是程式設計師,你應該給我多少多少薪水,沒有看到自己的薪水其實來源於自
己所創造的價值,從而使得薪資多少成為了許多軟體開發人員考慮的最重要的因素,造成軟體行業的人員流動性非常強,很多軟體開發人員也不願意踏踏實實地進行技術開發工作,直接影響了軟體產業的發展。
  這就是我對目前軟體開發人員待遇水平的看法。

6、關於國內軟體市場的風氣:

  國內市場的不規範是有目共睹的,在軟體市場上同樣不例外。專案的競爭,往往集中在私人關係和經辦人利益的競爭上,這也是事實。面對這樣的環境,軟體企業的急功近利也就可以理解了。但從根本上來看,這樣的情況對我們國家軟體產業的發展是毒害性的,它使得軟體企業不會把技術創新作為企業發展的根本源動力,把滿足客戶的需求,為客戶創造價值作為企業技術發展的目標,中國的軟體產業如何能夠成長!


7、關於軟體工程的應用:
 
  認為“不採用軟體工程”也能做好軟體產業化工作,這正是我們國內軟體產業界落後思想的表現,也是軟體企業短視、個人自由散漫、高傲自大的表現。如果這樣的思想被多數人認可,將是我們軟體產業界的一大悲哀。
  問題決不在於“用不用軟體工程”上,這是無可置疑的。問題在於怎樣去利用軟體工程的思想和方法服務於我們的軟體開發工作,這才是關鍵之關鍵。如果沒有真正理解軟體工程的根本思想,只是生搬硬套一些規程、文件格式和一些方法,給軟體開發工作帶來的只會是干擾和破壞,不會產生任何建設性作用。
  所以,我認為,現在首先應該普及的是軟體工程的基本思想,把它灌輸到每一個軟體從業人員的頭腦之中,而在具體規程和實施方法上,應該按照軟體開發單位自身的特點,要明確地感受到其優點,而不會讓大家感到厭煩。
  那麼,軟體工程的基本思想究竟是什麼?我想也會有許多不同的觀點,但我認為這樣幾點應該是共同的:
(1)軟體的開發一定要以產業化的思想來看待,強調合作和規範,杜絕隨意性;
(2)軟體的開發過程一定要採用某種方法進行進度和成本的控制;
(3)軟體的質量必須得到保證,保證的措施一是提高開發過程的質量,二是透過嚴格測試;
(4)客戶的需求永遠是軟體開發的終極目標,客戶的需求一定要準確,並且一絲不苟地滿足;
(5)軟體開發的所有成果必須存在於容易理解的書面中,而不是僅僅存在於軟體開發人員的頭腦中。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-992485/,如需轉載,請註明出處,否則將追究法律責任。

相關文章