編程語言五花八門.所以,同為程序員,又用同種編程語言工作,才真正算是同行.在我所幹的這一行中,能夠在編程語言的某個方麵或在某個細節上有獨到見解,從而能發表論文作交流,或有同等能力的,大約隻占5%到10%.也就是1/10到1/20.
先定義程序員的能力係數,如果把從職場上隨機選取的N名同行的程序員按水平從高到低排序.而你是第m名,那麽,當N很大時(以幾百上千為宜),你的能力係數為:k=N/m.
再定義編程任務的難度係數,如果一項編程任務的難易程度正好適合一個能力係數為k的程序員在全麵發揮其水平的條件下做出,那麽,這項編程任務的難度係數是:k
能力係數大到10,可稱為準高手。能力係數大到20,必為高手。我要講的就是這類人的故事。
我去東岸一家中型公司工作時,遇到高手X,中國人,理工科出身,10年工作經驗,宏編程能力超強。我工作到3個月,也被刮目相看,派去做QC。不久,就開始給他的產品(程序)作QC。‘行家一出手,就知有沒有’,我見過他的代碼,簡潔流暢。我評出他的能力係數:30。他是我熟悉的人中能力最高的。
後來,我又給別人QC,就發現公司其他人中,還有個西人,能力係數曾接近於10。但以做管理為主,編程時間不到50%,能力就降下來了。而公司裏較難的編程任務的難度係數多在10與20之間,從而,程序員們錯誤百出,QC特別費時。因為原產品沒做好,該公司的QC任務更難,難度係數有時達到30以上,這在以後的職業生涯中也沒遇到過。程序員走了2個,於是,QC任務都壓過來還有時限,隻好加班。我每周常常工作70小時,公司付加班費。結果,各個項目接連完成。不久,冒出一項難題,幾經他人試做與推逶,就交給了我。一上手,很難,我幹脆又接受了一項附加要求,難度係數增加到60。當我完成後,已被譽為作圖專家。又作了幾個形態各異的圖後,6個月合同期滿。公司說要再續半年,可我說累了,執意要回家,走了。
一睡就是一個月。我一睡醒,獵頭們來了。舊獵頭問我過得怎麽樣.我說,睡覺,拉小提琴,或逛曼哈頓。他說:好了,接著幹吧,有家公司免麵試。我就說這可前所未聞。他說免麵試僅對你,就是你剛幹過的那家公司。我說別的都行,那家公司幹得太累就免了吧。他說可以漲工資。我考慮到上班近,就又從了。
當我回到原公司,看到了7個新招的程序員,其中兩個西人老頭。高手X還在,廋了。我奇怪:有這樣瘋招的嗎?他說:近期公司編程項目進展不順,沒能按時完成,統計師也坐立不安,隻好亂招人。又問:老頭子行嗎?他說:其實不行,公司又外包部分任務到一家外州的CRO,他們有3個程序員由我們遙控。
我先是給那3個遠程程序員做QC,他們的能力係數都小於5。完成後,新任務是給一個30多的西人程序員J作QC,這人謝頂,有些列寧的風度.我問X:J 行嗎?答道,新招的裏麵,他是最好的。QC開始,這人竟把代碼藏著,看不到。別以為我沒能耐,我可以不知道機器的運行狀況,而照樣把關產品質量。漸漸我覺得這人不差。但即使聰明,也常出錯,那是因為任務的難度係數達到了20。不久得知,此人擅長宏編程,10年工作經驗,自己開有小公司並雇有2人(怪不得來公司如同三天打魚,兩天曬網.),也愛寫論文參加會議交流。我給此人當時的能力係數評為15。他是我熟悉的西人中能力最高的.(後來,我曾見到他2010年的會議交流論文和他的公司網站,3年了,想必能力係數應增長到20,或再高點。)
再不久,X生病住院了,還要開刀。打電話問他,他說幹得太累了,尤其是我不在的那個月。我開始自責我那一個月的長覺。
繼續與J配對工作,此人編程快,但我QC也快。J漸漸很聽我這QC程序員的勸告,因為我指出他的問題,一般十有八九為真。我下班總是很晚,恐怕是大廈清潔工最熟的麵孔了。筆記本電腦上又安了軟件,偶而可在家編碼。如果你看到一個程序的存盤時間是清晨5點,你知道那是我通宵編程做的?還是早起編程做的?
不知不覺又快半年了,我必須離開,而公司合同也隻能聘11個月。又有新任務計劃了,但我已不在那計劃之中。一次,討論該計劃,J竟說要獨挑編程產品的大梁,讓另外4,5個程序員去給他作QC。其中一位會後歎道,J乃狂人發狂言,200多個報表,他能那麽快完成?我知道, 沒有好的QC程序員,J會孤掌難鳴的.
恰巧,一位上次無功而返的獵頭找到我,電話中一陣噓寒問暖後,便與我伊妹兒頻頻,並急忙為我聯係麵試.還關心地問這是否是我近期唯一的麵試。我說那當然,因為我隻對這一個工作機會感興趣阿。終於,程序員們開始感歎:他就要離開公司了。
多年後,當我看到這家公司的股票5年走勢圖,心中總有些微感慨在那峰穀之間。
或者主要用什麽語言?