從出版業看中國程式設計師的錢途

coffeescript發表於2012-09-29

  從出版業說起

  網路作品排到靠前的,都不會太難看,一般人不愛看某部作品也是因為不喜歡這個型別,而此人也不會全不喜歡這些網路作品。究其原因,是因為網路作品都是讓人先白看的,看的好了才出了頭。而紙質作品就不一定了,排行榜靠前的,有好作品,也有垃圾。

  許多大牛都是寫了部落格,後來出了書。這些書也都不次,可能有人讓為不好,是因為技術書不像小說,小說在讀故事,技術書是在學知識或溫習知識,有些技術書讀得可能很違背某人的學習習慣,就感覺不好了。

  所以說網路是塊神奇的空間,很能造就高手,而網路高手是絕對不能小瞧的。

  建築工程

  建築工程不乏豆腐雜,但比起軟體工程來說,豆腐雜的概率還是很小的。做軟體,很可能某程式設計師在開發階段一天沒幹一點正事,但在建築行業,除非是收尾階段,否則絕對不可能一個工人一天沒幹一點活兒。建築工人還是很較掙錢的,但絕對是血汗錢。程式設計師還真不一定是血汗錢,因為軟體工程沒有建築業成熟,常常因為分配不當,很多程式設計師每天在幹無用功。建築工人的門檻相對低一些,但也並非容易達到熟練水平,就算那個最低等的搬磚推灰的小工,至少想達到這個水準,你得身體力氣跟得上,一月沒有一天休息你得熬得住,想想都不容易。

  中國軟體的用處

  軟體不一定驗收了就是有用的,在我看來,一款軟體要想達到有用,至少實現以下功能之一:

  1,為使用者節省了時間

  2,為使用者節省了人力

  3,為使用者帶來了方便

  4,為使用者帶來了知識

  5,使使用者能做到某種難以實現的事情

  6,為使用者帶來了快樂(比如遊戲)

  7,為使用者節省了資源

  8,輔助使用者做出了判斷

  9,為使用者解決了某些問題

  10,為使用者提供了資源

  而有很多軟體做出來以後,使用者不用吧已花了錢了,用吧什麼也沒帶來,還得為學習這款軟體而費時費力,得不償失。

  但有一個很悲觀的訊息,除了網路軟體之外(包括網站),凡有用的軟體中國人都習慣白去使用。而花了一大筆錢的軟體,往往帶來的好處不多。不是一點沒有,是價效比太差。所以現狀是:有用的軟體沒市場,有市場的軟體用處有限。多尷尬的事。

  而以上的一切帶來的現狀是:除了網路性軟體外,中國的軟體掙錢不容易。

  程式設計師的被動

  如果程式設計師做的東西要不掙不了錢,要不掙了錢反而讓客戶感覺不值,這樣的話,程式設計師的價值就降低了。這樣,建築工人灌一天的水泥往往沒白乾,而程式設計師開發一週的工作往往白乾,這是常事兒。

  這使程式的技術定位很尷尬,在中國,說句實話,不是每個程式設計師都能天天用到記憶體管理,就連最基礎的演算法也都被高階語言封裝好了,當然也有很多低層的程式設計師,所以大家不用跟我爭這個,最主要的是,高階語言、業務需求、工期決定了有很多編碼與作業系統、演算法、記憶體等等越來越脫節,這樣的話,很多程式設計師幹了若干年,特定業務熟悉了很多,但程式設計最基礎的知識反而漸漸忘去。這就出現了,讓市面上很多程式設計師去做個基本的資料結構與演算法(比如有向圖,再比如好像是老趙說的排序),反而不會。這找誰說理去?還不如建築工人呢,人家說會刷塗料真還做的不錯。

  有些公司,銷售、行政、甚至實施人員都比程式設計師有優勢,他們眼中這群天天如高僧般坐在那兒的人,佔公司大半人數,反而做的貢獻不多,反而讓他們辛苦開拓的客戶群都在謾罵。

  程式設計師,好被動。

  不按套路出牌的中國人

  中國到處都有不按套路出牌的現象:不用正版,不守時,造假,山寨,不排隊,地溝油,不按合同辦事,以次充好,沒服務。這是種壞氛圍,以至於每天每個人都習慣了這樣規律,反而麻木了,不認為這是不對的,就如同我(我也不敢說你也是)每天白看人家的書白用人家的軟體,而沒有感覺自己有多少罪惡感。

  中國程式設計師的出路

  中國程式設計師也有做好的,雖然其最優秀的那些拿到國際上什麼也不是,但畢竟能達到不被動,能用自己的努力使生活美好起來的還是很多的。總結一下,有如下幾種:

  1,教育型,主要是學知識,寫書,講課。

  2,自由型,主要是為自己打工,做好的小團隊軟體,以積累使用者而達到做有用的軟體,掙有價值的錢。

  3,業務人際型,一般都走向偏管理的路子,用高階語言,對資料庫、報表、伺服器和某個業務領域精通。

  4,高階白領型,以進入國際大公司做核心專案為主,因為待遇好,屬於打工仔裡的高富帥。

  5,創業型,當老闆,或許這個已不是純粹的程式設計師了,所以這個只能算半個。

  以上幾種路都可以走,但大多數程式設計師都還不在這5類之中,都是在某些公司不溫不火的為生存努力著。

  讀技術書籍未必就真是無敵之出路

  我常愛說,會中國常用的三千字寫不了個好文章的話,學會中國八萬漢字也未必就能寫出來。同樣,市面上的程式設計師如果去實現個初期的Facebook大多數還是能做到的,但你會這些知識還不能做出一個像Facebook一樣有用的軟體,那麼你再精讀了作業系統、設計模式、程式碼大全、演算法導論......也還是照樣做不出來。所以我很反感網上列的程式設計師必讀書目,一列就是五十大本,你花十年啃完這五十本,你還能寫程式碼嗎?

  從環境入手,找到自己所缺少的知識與資源,突破再突破

  個人感覺程式設計師首先應該定位目標,然後界定目標所涉及的環境圈,在環境圈的範圍內捕捉問題,界定自己的知識與資源範圍,有目標的展開學習與環境方面的突破,這樣更適合程式設計師。

  也就是說,你要是教育型的,你在你所涉及的知識範圍裡要細到知識點;但你是自由型的話,還沒必要都細到點,否則你天天不是在開發了,而是在學習了。如果是業務人際型,可能你對作業系統、網路什麼的不必要了解太細了,但業務得精純。

  儘可能縮小範圍,持之以恆是關鍵

  其實不管是技術還是人際,所涉及的學問是無邊的,如果都要學精再去做事,我想這樣的話就沒有做事的機會了。所以儘可能縮小知識領域的範圍,比如上面我分5類人才,就是縮小了一層範圍,但是這還是很粗的。假如你是教育型的,你想教會大家用設計模式,那儘可能先不要去學習WPF,先把設計模式搞到專家地步再說。此間道理,我想大家是可以理解的。

  結束語

  寫了這麼多,其實我並非在教育誰,我沒有這個資格。高人一把一把的,怎麼能輪到我來說教。目的只有一個,想找到程式設計師的出路,想讓程式設計師不那麼民工(或碼農)。大家是拍磚也好,送花也罷,這都是對我有幫助的,畢竟我也是在摸索當中。我不喜歡那些寫類似《如何讓程式設計師成為百萬富翁》而自己連十萬都沒有的作者,但我確不反對作者們拋磚引玉。

相關文章