程序员三部曲
從學會寫第一個Basic程序起,已過去了15年,我也曾為30歲煩惱過。近日《神雕》熱播,楊過在獨孤劍圣的劍冢中發現寶劍若干,見證了獨孤劍圣在人生不同階段對劍道的領悟。忽有所感,聯想起古圣今賢的論述,結合自已這些年來的經歷,不禁豁然開朗。
程序之道,在于悟,悟透表象后面的真相。程序人生,大致可分為三個階段:
- 編碼階段:凌厲剛猛,無堅不摧,弱冠前以之與河朔群雄爭鋒
- 設計階段:重劍無鋒,大巧不工,四十歲前恃之橫行天下
- 思想階段:四十歲后,不滯于物,草木竹石均可為劍。自此精修,漸進于無劍勝有劍之境
本文針對普通程序員的實際情況,對這三個階段進行解說,并給出了“升級”的秘笈。所述觀點,不適合IT狂人和天才——因為我不是。
編碼,技巧作先鋒
1.?? 階段釋義
老張:小王,昨天討論的那個EJB接口,已經實現了嗎?
小王:我已經實現了,現在客戶端可以通過EJB與服務器進行通信了。
上述對話,取自于某項目組的會議紀錄,老張是這個小組的開發經理。小王畢業一年,在項目組中主要從事代碼編寫工作。每天上班,老張會給小王分配當天的工作,告訴小王有哪些Java接口,需要寫多少個Java類,具體有什么要求等等。小王按照要求,寫完這些類后,交給老張,一天的工作就完成了。衡量小王的能力的標準是,看他是不是能做好具體的事,即“我能做(I can do it)”。
小王是典型的第一階段中人。該階段中人,通常是入門三年內的,初窺門徑,斗志昂揚。在網上??吹降摹癡B好還是DELPHI好”“.Net好還是J2EE好”等貼子,多數都是由這個階段的人提出,人氣值劇旺(這是合理的,符合人才的金字塔結構),往往爭吵得頭破血流也不罷休。筆者也曾因此與同班一MM大吵出口,如今回想,深感當年之可愛。獨孤劍圣弱冠前,手持無名利劍,凌厲剛猛,與河朔群雄爭鋒。程序員也一樣,手持“編程語言”利劍,以“面向對象”為招式,東征西戰,編出代碼無數。
2.?? 應該做的事
找一家有正經事干的公司,打一槍換個地方的不要。這是重中之重?!芭钌橹?#xff0c;不扶自直,白沙在涅,與之俱黑”,現階段的程序員,是無力改變現狀的。如果你所在的團隊不能按正規方式進行較大型軟件產品的開發,那你所能學到的東西就會少許多。如果是正規開發團隊,而且有前輩愿意盡心盡力地教你,那就是撿到寶了,不給錢都行。
從技術角度,這個階段的人,關注細節是必修課,追求的是技巧這個層次?!叭绾尾拍苡米钌俚恼Z句實現表達式求值”“i++與++i有何區別”等是最關心的問題。當技巧的積累達到一定程度時,應付日常工作將比較輕松,此時信心爆棚,最喜歡的口頭禪是“天底下沒有編不出來的程序”,技術特點是對某種編程語言(如Java、C#)非常熟悉,甚至達到“回字有四種寫法”的境界。凡事必追根究底,有股子“語不驚人死不休”的蠻勁。
筆者沒有任何貶義,相反,是褒義,因為這是必須經歷的。佛云:“既未入迷,何言解脫?”如果你是工作三年內的同行,那么應以“入迷”為榮。上學時,老師常教導我們“先把書讀厚,再把書讀薄”,只有“深入”,才能“淺出”,也是這個道理。
3.?? 不應該做的事
年少氣盛,固然可愛,但若因此而鼻孔朝天,則是大大的不妥了。你的許多同事,API沒有你熟悉,編程也沒有你快,但他們能為企業創造的價值卻可能比你大(為什么?看下文)。時下流行“態度決定一切”,此時的你,應以低姿態為主,傲氣會讓你短視。
“技術代表一切”可能是你的信仰。但你的老板可能對技術根本不感興趣,老板關心的是你能為公司創造多大的價值。許多黑客甚至養不活自己,因為單純的自我陶醉式的攻擊、騷擾、破壞并不能創造價值,通常都是在改行后(例如當安全顧問),他們的技術才能用于創造價值,才能使自己過上好日子。許多黑客則干脆是雙重身份,平時從事著另一份職業。所以,如果想掙更多的錢,那你就不能迷信技術(屠龍之技有何用?),而是要審視你所做出的貢獻。許多牛人覺得自己水平很高,為什么老板就是不給加薪?反思一下,自己給公司掙了多少錢吧。
4.?? 局限性
- 鋒芒有余,韌勁不足。該階段的人,銳氣太盛,遇到挫折后容易氣餒,輕言成敗往往是他們的缺點。(什么?沒有銳氣?是誰,是誰把你招進公司來的?)人不可有傲氣,但不可無傲骨,傲骨體現在面對困難上。要勇于用抽繭剝絲的精神,去磨,去啃,相信吧,只要你的困難不是想發明質能方程,最終一定會被你搞定的。事實上,你遇上的問題,大多數都可以通過Google、百度搜出答案來。
- 與具體的語言或編程工具綁定得比較緊,受語言的限制較大。
- 需要良好的體力。人到中年,體力上往往拼不過剛畢業的學生,這就是所謂的“程序員30歲問題”的原因。我有一些朋友,已過而立之年,卻還在苦苦尋找編碼的職位。雖然我很同情,但愛莫能助,如果這種情況繼續下去,“尋尋覓覓,冷冷清清,凄凄慘慘戚戚”將是必然的結果。
朋友,趕快升級吧。
5.?? 進階指南
- 多記多寫。好記性不如爛筆頭,把各種想法寫下來,把經典的代碼摘錄下來(最好用源碼工具來管理,推薦VSS),有價值的東西,還可以發表在博客中(俺們那個時候苦啊,網絡不發達,嘔心瀝血之佳作,卻只能孤芳自賞),這些就是你的財富,在關鍵時刻拿來就能用;
- 別忘了挖井。不知是否聽說過兩個和尚的故事,原文不在此粘貼了,大意是一個和尚天天挑水,另一個除了挑水外,還在寺廟附近挖井。若干天后,第一個和尚還在挑水,第二個和尚已經挖好井,不用再挑水了。編碼好比挑水,作為本職工作,自然是要賣力地挑,好爭勝的,不妨跟人比比誰挑得多。但在業余時間,可以多看看《軟件工程》、《設計模式》、《人月神話》、《極限編程》、《UML》……
- 由外而內,勤修內功。什么編程啦,什么算法啦,統統都是外功。外功練好了,內功也能跟著長進。內功是什么?很多。現階段最需要的是:靈活的頭腦、關注細節的態度以及與人為善的處世技巧。
靈活的頭腦,使你能快速學習新東西,這是最基本的。
關注細節的態度讓你能“象福特一樣撿起地上的紙片”(如果不知道福特的故事,上Google搜去吧),工程實施現場出現的問題,多數都是由于編碼人員的疏忽;經典錯誤“空指針”和“數組越界”,你檢查了嗎?幾十年了,“緩沖區溢出”仍然是黑客的最愛。
與人為善的處世技巧,使你有良好的人緣,前輩愿意幫助你,晚輩愿意投靠你,領導愿意提拔你,哇,好處多多,實惠多多……能否進階,就靠這了。
(常云:先做人,后做事。無論是程序員還是藝術家,這個道理都是普遍適用的,貫穿人生的各個階段——而這恰恰又是剛參加工作、涉世未深的新人們容易忽略的。所以在此提出,下文就不再贅述了。)
6.?? 階段小結
- 適用人群:工作三年內
- 輸??? 入:設計好的類、接口和算法
- 職??? 責:按要求編寫類和接口的具體實現代碼
- 輸??? 出:具體的代碼
- 階段目標:我能——I can do it
- 技術特點:注重技巧,對具體的編程語言非常熟悉
- 勝任職位:軟件工程師、開發工程師
- 升級秘笈:多學習軟件工程、設計模式等與具體編程語言無關的知識
- 參考薪水:¥6000以下(僅供參考)
總結
- 上一篇: 股指期货策略精选合集
- 下一篇: 《时代三部曲》感悟三