程式設計師的四種型別

fengxinwei發表於2013-07-01

  不是每一個寫程式碼的都是程式設計師。這裡,我把程式設計師定義為以程式設計為生的人。我認為世界上存在四類程式設計師:科學家、碼農、專家和工匠。下面我一一介紹自己的觀點。

  科學家,與其說他們是程式設計師,不如說他們是數學家。他們發明了各種理論、演算法和術語,教科書上那冗長的證明和計算也出自他們之手,其他的程式設計師都或多或少受益於他們的成果。有時,他們的一篇論文能改變整個業界的思維方式,但他們通常不會也不喜歡把那驚世駭俗的理論商業化。相比之下,他們更喜歡沉浸在科學的象牙塔裡,自得其樂,好不快活。他們是程式設計師中最不經常寫程式的人,甚至有一些大師一輩子都沒寫過程式,你也許認為這違反了我們開頭對程式設計師的定義,可誰說程式設計非要用鍵盤呢?

  碼農,這個詞彙來自網路上程式設計師的自嘲。但在這裡,我把他定義為軟體的主體實現者。正如農民工兄弟一樣,他們是軟體大廈的實際締造者,他們通常熟悉或精通一到兩門語言,在現有的架構下進行開發。他們是程式設計師中的藍領,幹著某種程度上的體力活,但這並不是什麼壞事,事情總要有人做,並且程式設計的自由行賦予了碼農很大的創造和學習空間。如果承認自己是個碼農並樂於所從事的工作,那也是件極其美好的事,可問題在於很多人並不是自己願意做碼農,而是被迫成為了碼農,他們本應是音樂家、運動員或者是商人,可因為種種原因成為了碼農,幹著他們認為枯燥且重複的體力活,所以他們不開心,這種狀態下工作身心俱疲,也就是他們最容易發出程式設計師吃青春飯,三十歲以後還寫程式沒出息,應該轉管理之類的蠢話。可當他們真的成為了管理者,通常情況下,只有極少部分人找到了自己喜歡做的事,其他大部分碼農仍將繼續他們的抱怨。綜上,碼農是程式設計師中佔比最大的群體,他們的可塑性最高,有剛學習程式設計的中學生,有剛參加工作的畢業生,也有工作多年仍樂於戰鬥在第一線的資深工程師;作為碼農,首先要承認自己的身份,然後找到自己的興趣與方向,或者樂於做一輩子碼農,或者準備向其他三類程式設計師轉換,再或者換個行業,追尋自己最初的夢想。

  專家,他們在軟體行業中摸爬滾打多年,見多識廣且精於一個或多個領域。他們在公司裡通常被稱之為高階程式設計師,架構師或是CTO,他們通常設計軟體大廈的結構,然後安排碼農去實現,或者自己寫一些核心程式碼。他們經驗豐富,具有技術前瞻性,能夠未雨綢繆,提前做出反應以應對軟體大廈腐朽的趨勢和業界的技術變化。他們性格單純,喜歡自己的工作,且薪水不菲,通過閱讀科學家的論文來保持與時代共同進步。軟體行業很特殊,對於製造業,傑出者與平庸者帶來的結果差距通常只有一到兩倍,可在軟體行業恐怕用千萬倍形容都不為過。所以專家是公司的寶貝,任何一家公司都要不懈餘力去爭取或培養專家;同時,成為專家通常也是很多碼農的終極夢想。因此,如果你是一位專家,請接受我致以的崇高敬意。

  工匠,他們是很特殊的程式設計師,與其他程式設計師關心技術本身相比,他們更關注實現的結果,他們是把科學家論文商業化的實踐者。對他們而言,重要的不是技術本身,而是利用技術創造偉大的產品。因此,你很難用前端、後臺、DBA、安全工程師定義他們,為了創造偉大的產品,他們願意學習任何技術,有些淺嘗而止,有些因為需要或興趣而精通無比。他們通常具有叛逆精神,本能地抵制權威,喜歡挑戰某個領域的領導者,具有傳統意義的黑客精神。他們對自己和別人都極其嚴格,具有很強的控制慾,喜歡插手程式設計之外與產品有關的事物,如設計、UI、市場等等;因為他們不希望因為某個環節的失誤而降低了產品的影響力,雖然他們並不總是對的。他們喜歡程式設計,但程式設計通常並不佔據生活的全部,他們一定會有一些與大眾眼中程式設計師氣質不符的愛好,如吹笛子,打劍道,玩音樂,繪畫,種地,旅行等等。他們特立獨行,性格倔強,工作瘋狂,只願和優秀的人合作。因為如此種種,在一般的企業中,工匠很難共事,他們總會覺得自己的才華受到了限制,周圍的人跟不上他的節奏;他們在某種意義上是公司的不穩定因素,要麼是天使,要麼是魔鬼;絕大部分的企業不需要工匠,但對偉大或立志偉大的企業而言,工匠比專家還重要,專家可以把現有的產品做到行業領先,但工匠可以創造新的產品從而改變遊戲規則。因為適合工匠的企業如此至少,他們中的有些人選擇自己創辦一個。

  以上是我個人對程式設計師的分類,科學家、碼農、專家、工匠;每一個程式設計師依據技術能力,性格習慣一定會找到自己的型別,但通常或多或少都會具有其他型別的氣質,有工匠氣質的科學家,喜歡與碼農並將作戰的專家等等。對於每一位程式設計師,重要的不是你現在屬於哪種型別的程式設計師,而是找到你希望成為的那種程式設計師,併為之努力。每一位程式設計師,都會有自己的精彩。

相關文章