程序員職業生涯

原文:
(本文共分三部分,如今打開的是《第一部分》,歡迎繼續閱讀《 第二部分》和《 第三部分》)

1 引子

都說海闊憑魚躍,又有多少魚能躍出大海?都說天高任鳥飛,但真正能一飛沖天的,也不過是寥寥數鷹而已;在IT圈裏流浪的程序員,當青春逝去、漸至而立之年時,又有多少人黯然退出?30歲,彷佛宣告了程序人生的終結。
從學會寫第一個Basic程序起,已過去了15年,我也曾爲30歲煩惱過。近日《神鵰》熱播,楊過在獨孤劍聖的劍冢中發現寶劍若干,見證了獨孤劍聖在人生不一樣階段對劍道的領悟。忽有所感,聯想起古聖今賢的論述,結合自已這些年來的經歷,不由豁然開朗。
程序之道,在於悟,悟透表象後面的真相。程序人生,大體可分爲三個階段:
n 編碼階段:凌厲剛猛,無堅不摧,弱冠前以之與河朔羣雄爭鋒
n 設計階段:重劍無鋒,大巧不工,四十歲前恃之橫行天下
n 思想階段:四十歲後,不滯於物,草木竹石都可爲劍。自此精修,漸進於無劍勝有劍之境
本文針對普通程序員的實際狀況,對這三個階段進行解說,並給出了「升級」的祕笈。所述觀點,不適合IT狂人和天才——由於我不是。

2 編碼,技巧做先鋒

2.1   階段釋義

老張:小王,昨天討論的那個EJB接口,已經實現了嗎?
小王:我已經實現了,如今客戶端能夠經過EJB與服務器進行通訊了。
上述對話,取自於某項目組的會議紀錄,老張是這個小組的開發經理。小王畢業一年,在項目組中主要從事代碼編寫工做。天天上班,老張會給小王分配當天的工做,告訴小王有哪些Java接口,須要寫多少個Java類,具體有什麼要求等等。小王按照要求,寫完這些類後,交給老張,一天的工做就完成了。衡量小王的能力的標準是,看他是否是能作好具體的事,即「我能作(I can do it)」。
小王是典型的第一階段中人。該階段中人,一般是入門三年內的,初窺門徑,鬥志昂揚。在網上常看到的「VB好仍是DELPHI好」「.Net好仍是J2EE好」等貼子,多數都是由這個階段的人提出,人氣值劇旺(這是合理的,符合人才的金字塔結構),每每爭吵得頭破血流也不罷休。筆者也曾所以與同班一MM大吵出口,現在回想,深感當年之可愛。獨孤劍聖弱冠前,手持無名利劍,凌厲剛猛,與河朔羣雄爭鋒。程序員也同樣,手持「編程語言」利劍,以「面向對象」爲招式,東征西戰,編出代碼無數。

2.2   應該作的事

找一家有正經事幹的公司,打一槍換個地方的不要。這是重中之重。「蓬生麻中,不扶自直,白沙在涅,與之俱黑」,現階段的程序員,是無力改變現狀的。若是你所在的團隊不能按正規方式進行較大型軟件產品的開發,那你所能學到的東西就會少量多。若是是正規開發團隊,並且有前輩願意全力以赴地教你,那就是撿到寶了,不給錢都行。
從技術角度,這個階段的人,關注細節是必修課,追求的是技巧這個層次。「如何才能用最少的語句實現表達式求值」「i++與++i有何區別」等是最關心的問題。當技巧的積累達到必定程度時,應付平常工做將比較輕鬆,此時信心爆棚,最喜歡的口頭禪是「天底下沒有編不出來的程序」,技術特色是對某種編程語言(如Java、C#)很是熟悉,甚至達到「回字有四種寫法」的境界。凡事必追根究底,有股子「語不驚人死不休」的蠻勁。
筆者沒有任何貶義,相反,是褒義,由於這是必須經歷的。佛雲:「既未入迷,何言解脫?」若是你是工做三年內的同行,那麼應以「入迷」爲榮。上學時,老師常教導咱們「先把書讀厚,再把書讀薄」,只有「深刻」,才能「淺出」,也是這個道理。

2.3   不該該作的事

年少氣盛,當然可愛,但若所以而鼻孔朝天,則是大大的不妥了。你的許多同事,API沒有你熟悉,編程也沒有你快,但他們能爲企業創造的價值卻可能比你大(爲何?看下文)。時下流行「態度決定一切」,此時的你,應以低姿態爲主,傲氣會讓你短視。
「技術表明一切」多是你的信仰。但你的老闆可能對技術根本不感興趣,老闆關心的是你能爲公司創造多大的價值。許多黑客甚至養不活本身,由於單純的自我陶醉式的攻擊、騷擾、破壞並不能創造價值,一般都是在改行後(例如當安全顧問),他們的技術才能用於創造價值,才能使本身過上好日子。許多黑客則乾脆是雙重身份,平時從事着另外一份職業。因此,若是想掙更多的錢,那你就不能迷信技術(屠龍之技有何用?),而是要審視你所作出的貢獻。許多牛人以爲本身水平很高,爲何老闆就是不給加薪?反思一下,本身給公司掙了多少錢吧。

2.4   侷限性

一、鋒芒有餘,韌勁不足。該階段的人,銳氣太盛,遇到挫折後容易氣餒,輕言成敗每每是他們的缺點。(什麼?沒有銳氣?是誰,是誰把你招進公司來的?)
人不可有傲氣,但不可無傲骨,傲骨體如今面對困難上。要敢於用抽繭剝絲的精神,去磨,去啃,相信吧,只要你的困難不是想發明質能方程,最終必定會被你搞定的。事實上,你趕上的問題,大多數均可以經過Google、百度搜出答案來。
二、與具體的語言或編程工具綁定得比較緊,受語言的限制較大。
三、須要良好的體力。人到中年,體力上每每拼不過剛畢業的學生,這就是所謂的「程序員30歲問題」的緣由。我有一些朋友,已過而立之年,卻還在苦苦尋找編碼的職位。雖然我很同情,但心有餘而力不足,若是這種狀況繼續下去,「尋尋覓覓,冷冷清清,悽悽慘慘慼戚」將是必然的結果。
朋友,趕快升級吧。

2.5   進階指南

一、多記多寫。好記性不如爛筆頭,把各類想法寫下來,把經典的代碼摘錄下來(最好用源碼工具來管理,推薦VSS),有價值的東西,還能夠發表在博客中(俺們那個時候苦啊,網絡不發達,嘔心瀝血之佳做,卻只能孤芳自賞),這些就是你的財富,在關鍵時刻拿來就能用;
二、別忘了挖井。不知是否據說過兩個和尚的故事,原文不在此粘貼了,大意是一個和尚每天挑水,另外一個除了挑水外,還在寺廟附近挖井。若干天后,第一個和尚還在挑水,第二個和尚已經挖好井,不用再挑水了。編碼比如挑水,做爲本職工做,天然是要賣力地挑,好爭勝的,不妨跟人比比誰挑得多。但在業餘時間,能夠多看看《軟件工程》、《設計模式》、《人月神話》、《極限編程》、《UML》……
三、由外而內,勤修內功。什麼編程啦,什麼算法啦,通通都是外功。外功練好了,內功也能跟着長進。內功是什麼?不少。現階段最須要的是:靈活的頭腦、關注細節的態度以及與人爲善的處世技巧。
靈活的頭腦,使你能快速學習新東西,這是最基本的。
關注細節的態度讓你能「象福特同樣撿起地上的紙片」(若是不知道福特的故事,上Google搜去吧),工程實施現場出現的問題,多數都是因爲編碼人員的疏忽;經典錯誤「空指針」和「數組越界」,你檢查了嗎?幾十年了,「緩衝區溢出」仍然是黑客的最愛。
與人爲善的處世技巧,使你有良好的人緣,前輩願意幫助你,晚輩願意投靠你,領導願意提拔你,哇,好處多多,實惠多多……可否進階,就靠這了。
(常雲:先作人,後作事。不管是程序員仍是藝術家,這個道理都是廣泛適用的,貫穿人生的各個階段——而這偏偏又是剛參加工做、涉世未深的新人們容易忽略的。因此在此提出,下文就再也不贅述了。)

2.6   階段小結

適用人羣:工做三年內
輸     入:設計好的類、接口和算法
職     責:按要求編寫類和接口的具體實現代碼
輸     出:具體的代碼
階段目標:我能——I can do it
技術特色:注重技巧,對具體的編程語言很是熟悉
勝任職位:軟件工程師、開發工程師
升級祕笈:多學習軟件工程、設計模式等與具體編程語言無關的知識
參考薪水:¥6000如下(僅供參考)

3 設計,方法爲指導

3.1   階段釋義

 
老李:老張,你負責的這個模塊,要有分佈式事務處理能力,還要能與客戶的OA系統通訊,從OA中獲取客戶資料的數據。
老張:好的。我將用EJB來實現分佈式事務處理,而後開發一個專門的接口,用來與OA通訊。
老張畢業五年,是項目組的開發經理,負責完成子系統的設計,並指導其餘成員完成編碼。老張從老李處得到關於所開發的產品的需求狀況,而後進行設計和分析,用UML建出模型,並生成框架代碼,由小王等去實現。
老張屬於第二階段中人,一般工做了三年以上。此階段中人,已經完成了必定程度的技術積累。對《設計模式》、《J2EE核心模式》、《UML》等爛熟於胸,張口就是IOC(控制反轉),有事沒事也要說說AOP,最差也得是Factory、Delegate吧,你要是說不知道什麼是Facade,都很差意思跟人打招呼……
與第一階段「我能——I can do it」不一樣,本階段的人,特色是「我知道它能——I know It can do」,對,就是「知道它能」,至於如何去「能」,就不須要關心了。例如老張,他只須要把EJB接口定義清楚,知道有了這個接口就能完成相應的功能,至於小王如何去實現這個接口,是寫了三個類仍是五個類,就不關心了。
從技術角度,追求的再也不是純粹的技巧,而是方法這個層次,努力尋求正確的作事方法。即關心「怎樣才能蓋出好房子」,而不是「如何把石頭從貨車裏搬運到工地上」。用流行的話說,就是「只要方法正確,結果就會正確」。
固然,達到這個階段的人,技巧自己,一般也是很厲害的。舉個例子吧,小王要用一個開源的XML文件比較工具,並編了個測試程序,比較a.xml和b.xml的區別,卻怎麼着都得不到正確的結果。後來老張來了,牛人根本不看JavaDoc,而是拿着XOP提供的命令行比較了a.xml和b.xml,發現結果是正確的,而後直接打開與命令行對應的main(),檢查與options對應的API,發現小王少調用了一個API,加上這個API後測試程序就經過了。在這件事中,老張根本不熟悉XOP的API,但他掌握了查找API的方法,那就是:組件或工具,都有其外在特性,經過組件或工具提供的命令行能作到的事,也必定能經過它提供的API來完成。若是不知道如何去調用API,對於開源軟件,看它的source code或samples中的main()便可;對於非開源軟件,看StackTrace;若是都看不出來,就放棄該軟件,選擇別家的吧。
此階段中人,也須要編寫程序,但編寫的是與業務和框架相關的核心類。所用的語句一般樸實無華,用最簡單的語句完成最複雜的功能是他們的習慣。例如,求b和c中的較大值,一般不會寫成
result=(b>c)?b:c
而是寫成
if (b>c)
result=b;
else
result=c;
由於後者更容易懂,而前者,相對生僻一些。開發經理的工做,是把產品的需求,轉變爲編碼人員能理解的接口或類,並保證團隊的全部成員在理解上的一致性、無二義性,在這個前題下,簡單而又精確的語句是必然的首選。因此,若是你的經理編寫的程序,在你看來很「幼稚好笑」時,千萬不要洋洋得意。
舍小巧而用大巧,捨棄繁花似錦的編程細節,換取簡單穩定的框架結構,換取無二義性的交流效果……獨孤劍聖四十歲前,以玄鐵重劍縱橫天下,劍法古拙,大巧不工,就是此境界(孤獨大俠也走過彎路,30歲時用紫薇軟劍,多是追求劍招的繁複和劍法的華麗,失去控制,最終誤傷義士)

3.2   應該作的事

該階段的人,該作可作的事很是多。須知一個完整的軟件產品的開發過程,編碼僅僅是其中的一個環節而已。做爲開發經理,老張的典型工做以下:
首先充分理解需求,挑選其中20%左右的功能,結合非功能性需求,設計出系統的結構(Architecture Design)。經過邊界類、控制類、實體類的應用,分析清楚Use Case中的交互流程,而後用一系列接口來表達這個流程,最後運行各類設計模式或技巧,實現這些接口,建出UML模型,並生成代碼框架。
除了開發經理外,你還有多是項目經理,在中國公司,項目經理和開發經理可能都是你。學習先進的開發方法是你的必修課,什麼用例驅動開發、測試驅動開發,無論用不用,你都得知道個大概;選擇正確的開發模型也很重要,什麼時候選用瀑布模型,什麼時候選用迭代模型,必定不能含糊。
遵照公司的開發流程,爲SQA(Software Quality Assurance)提供必需的文檔和數據也是你的本職工做。若是你所在的公司尚無規範的開發流程,那麼,你要幫助公司來創建。完整的開發流程貫穿整個產品生命週期,你有可能只與其中幾個階段有關。但只要與你有關,那就要盡力去配合。
該階段的人,一般在公司中是中層幹部,執行能力是一個最主要的考覈指標。你的領導,可能根本不懂編程,而項目組裏的小夥子們,可能沒法領會領導的意圖,這時,你就是中間人,比如足球場上的中場,你的溝通能力和執行能力,將決定產品開發階段的成敗。

3.3   不該該作的事

一、儘可能少編程。除了「核心接口、類和算法」,不要與其它代碼糾纏,那會使你忽視宏觀上的問題。並且,你也不必定比小夥子們編得快。只有當小夥子們趕上困難時,你纔去協助他們解決問題。
二、不輕言放棄。該階段的人,工做壓力巨大,即便他看上去什麼事也沒幹,他承受的壓力也不是編碼人員所能體會的。在壓力面前,容易失去理智,若是不注意控制本身的情緒,可能會發生一些不愉快的事。
如今的你,能夠說是「到哪都能找到工做」了。當與公司、同事發生一些摩擦時,可能會「一怒而去」,這是最要不得的。由於你如今追求的,已不是「能找到工做」了,而是「能找到體現本身價值的工做」,千里馬尚且須要伯樂來發現,換家公司就必定能受重用了?並且,無論你是否意識到,你已經學習了許多行業相關的知識,這些知識,在更換公司後,未必能用上,到新公司後,還得從頭學習——人生有幾回重來的機會?
三、戒驕戒躁。你如今已是「有本事」的人了,加上工做壓力,不免有點脾氣。可是切記,你尚未功行圓滿,還要「多長本事,少長脾氣」。由於你的侷限性,與你的優勢同樣明顯。技術等級的提高,應該是讓你眼界更開闊,並看到了更大的差距,而不是固步自封。
四、不要迷信新技術。新技術的採用是有必定的風險的。由於技術自己,可能還不成熟。追捧新的框架多是你的愛好。不要緊,做爲愛好,是能夠的,但不必定要把愛好帶到工做中來。老闆關心的是你開發出來的東西可否買個好價錢,不是看你用了多少新的Framework。你的用戶關心的,是產品的易用性、穩定性,用起來是否順手,用戶一樣不會關心你用了Tomcat仍是Jetty,甚至連J2EE和.Net都不關心——若是他不須要爲此購買新的硬件或者從新培訓操做員。
五、多看人文方面的書和文章。此時的你,在技術方面已經有必定的造詣了。可是不是就大功告成了呢?回答固然是「不」,你還須要補充人文方面的知識,即進行感性思惟訓練。爲何?往下看。

3.4   侷限性

你的侷限性,與優勢同樣明顯。若是讓你列舉本身的優勢,你可能會說:
n 我精通設計模式,能作出重用性很好的軟件
n 我對軟件工程頗有經驗,能作一個好的項目經理
n 我熟悉建模工具、開發環境等,能提升開發效率
n ……
是的,這些都是了不得的能力,可是:
一、 大家公司不是研究所,不賣設計模式,也不是諮詢公司,不賣軟件工程經驗,更不是培訓機構,不對外提供「建模工具、開發環境」培訓
二、 你知道軟件是如何被開發出來的,但不多考慮是否應該開發這個產品;
三、 你不知道用戶會怎樣使用你開發的產品,你不知道用戶喜歡什麼、抱怨什麼;
四、 你不知道這個產品爲公司贏得了多少利潤;
五、 ……
一句話,你懂技術,但客戶要的,並非技術。摩托羅拉有世界上最好的射頻工程師,但爲何手機就是賣不過諾基亞呢?由於諾基亞喜歡聽客戶的意見,而摩托羅拉喜歡聽工程師的意見。
你說:「我熱愛技術,喜歡鑽研技術,至於客戶在想啥,那不是我要考慮的問題——我甚至不知道客戶是誰」。是的,達到你今天的這個境界很是不容易,許多人工做十年也未必能象你這樣優秀,你是公司的骨幹,是同事的偶像,可是……可是……《武狀元蘇乞兒》中有一段經典對白:
洪日慶:先別走!行行出狀元!若是我沒看錯,你會是乞丐中的霸主!
蘇  燦:乞丐中的霸主?!那是什麼?
洪日慶:嗯……仍是乞丐!
沒錯,乞丐中的霸主也是乞丐。你再優秀,也只是公司的中層幹部,是幹活的人中的霸主——仍是個幹活的:
n 客戶給老闆發工資
n 老闆給你發工資
n 你不認識客戶,客戶一樣也不認識你
n 既然你不認識客戶,那就不知道客戶喜歡什麼、討厭什麼
n 若是有一天,你的產品讓客戶不滿意(這個機率仍是很大的)
n 客戶很生氣,後果很嚴重
n 老闆請你喝咖啡,並建議你去度假,順便提醒你從外面把門關好
 
再來看看圈子裏:
n 沒有技術,但手裏有一堆客戶的公司,比比皆是,他們活得很滋潤。
n 沒有客戶,但手裏有一堆技術牛人的公司,不多見——都倒閉了。
 
如今,你知道侷限性在哪裏了吧?
「正由於你技術太強了,因此只能當乞丐中的霸主,技術剛好就是你的枷鎖」
說件真實的事吧。
某天,我奉命與一個合做夥伴交流咱們的平臺產品,目的是讓對方瞭解咱們的平臺並在平臺上作二次開發。交流進行得很順利,對方也跟咱們籤合同了。後來,市場人員去合做夥伴處瞭解反饋意見,對方說:「大家那個xxxx太厲害了,問什麼都難不倒」。回來後,領導就不容許我參加交流了。緣由是:「你可能泄密了」。
做爲技術人員,我但願充分介紹本身產品的優點,並能應付合做夥伴提出來的各類應用場景和問題。可是,從領導的角度來看,「如何知足應用場景、如何解決問題」自己,就是商業機密,是不能亂說的。舉這個例子的目的,就是說明技術人員看問題的侷限性。
想要達到更高的層次,就要跳出技術看問題,多瞭解市場,瞭解客戶。假設孤獨劍聖陶醉於玄鐵重劍的威力,每天帶着處處亂跑,那麼他就不是劍聖,而是搬運工了。搬運工最多隻能當個中層經理,當不了高層領導。
若是想進入領導班子,與老闆一塊兒玩遊戲,那就趕快升級吧。

3.5   進階指南

一、 跳出技術看技術
達到這個階段的人,在技術上已經「很深刻」,眼中所見,滿是技術。但大家公司不是賣技術的,大家賣的是產品,是服務。因此,把你的目光從技術中解脫出來,去思考一下產品和市場層面的問題。例如:
n 市場上有同類競爭的產品嗎?
n 當前已有的產品,客戶有什麼不滿意的?
n 我作的產品應該具備什麼樣的特點?有什麼賣點?
所謂「一招鮮,吃遍天」。只要你知道客戶想要啥,並能有針對性地開發產品,客戶必定會不由自主地給你錢。客戶都給你錢了,老闆還好意思不給你個CTO的頭銜玩玩?
二、 瞭解業務
計算機技術必須爲具體的行業服務,每一個行業都有本身的特定背景和業務知識。技術人員應抓住機會,瞭解這些知識。我曾在某個電信軟件公司任職三年,號稱是項目經理,開發電信網管產品。那時我成天的工做就是研究各類框架,討論各類設計模式,我眼中所見心中所想,滿是WEB、Struts、HTML等一大堆計算機名詞。若是你問我「爲何這玩意是個網管軟件,而不是淘寶易趣阿里巴巴?」我必定回答不出來。
一個公司裏面,真正值錢的東西,不是技術,而是業務知識,技術是實現業務的一種手段,是爲業務服務的,主從關係,不可搞錯。
三、 增強非技術性的功夫
學書法時,老師曾說過「三分書內功夫,七分書外功夫」。這句話我一直不理解(事實上,到今天依然不理解),但把這句話用於計算機技術,倒是明白的。三分書內功夫,是計算機技術,七分書外功夫,就是非技術性的產品和市場了。
能夠經過看些「遊手好閒」的書,來提升本身的感性思惟能力,能夠多看看市面上流行的《比爾蓋茨傳奇》《數字化生活》《把信寄給加西亞》等,象《誰動了個人奶酪》這種只會抱怨不會解決問題的書,就不用看了。

3.6   階段小結

適用人羣:工做三年以上,上限不封頂
輸     入:軟件需求(請注意用詞的區別:軟件需求,而不是客戶需求,你所獲得到軟件需求,是由別人收集來的,並不必定能表明客戶,若是「別人」的水平通常,錯誤理解了客戶的意圖,那麼你就等着跟他一塊倒黴吧)
輸     出:設計好的類、接口和算法
階段目標:我知道它能——I know it can work
技術特色:注重方法,不關注編程語言細節
勝任職位:高級軟件工程師、開發經理、系統架構師等
升級祕笈:換位思惟,跳出技術看問題
參考薪水:¥6000以上,¥15000如下(僅供參考)

4 思想,無招勝有招

4.1   階段釋義

客戶:咱們公司有二十個下屬單位,每一個單位分別有一套本身的銷售管理系統。咱們想了解各個單位的銷售狀況,如今是每一個星期由下屬單位上報週報,週期太長了,不利於領導及時掌握狀況。
老李:若是把銷售數據自動地集中到總公司這邊來呢?
客戶:集中?有什麼好處?
老李:數據集中後,總公司能夠實時掌握銷售狀況,不用等上一個星期。根據集中後的數據,您只須要打開電腦,就能看到每小時的銷售變化狀況。
客戶:那挺好啊。只是,怎樣來集中數據呢?要花多少錢?
老李:能夠在每一個下屬單位分別安裝一套程序,實時地把進銷存系統中的數據提取出來,而後上報給總公司。在總公司這邊,也安裝一套程序,用來接收下屬單位送上來的數據。這樣,數據就所有集中到總公司了。從如今的規模來看,您只須要在總公司增長一臺服務器,用於接收數據。固然,總公司與下屬單位的計算機要能經過網絡互聯。請問如今已經聯網了嗎?
客戶:咱們如今已經聯網了。公司申請了專線,能夠進行視頻會議。
老李:噢,那就花不了多少錢了。您只需購買一臺服務器,再加上軟件的費用就好了。
客戶:噢,聽上去挺好的,那大家公司能不能作這件事……
(注:上述對話,純屬虛構。目的是爲了說明不一樣階段所作的事。實際項目中,您可別建議客戶「實時提取並上報銷售數據」,所花的錢,也不僅是一臺服務器那麼簡單,^_^)
老李是公司的研發副總。他常常拜訪客戶,瞭解客戶有什麼困難和需求。本例中,客戶以爲每週上報一次,時效性太差——這就是需求,同時也是老李的機會。老李運用手中所掌握的技術,幫助客戶策劃出一個分佈式採集數據的方案。老李只須要知道:(1)如今有許多種成熟的分佈式技術,能實現分佈式採集;(2)老張對這些具體的技術很熟悉。至於如何去實現分佈式,就不是老李要考慮的了。
老李屬於第三階段中人:既瞭解技術,又瞭解業務。從技術出身的背景,使得老李在與客戶交流時更務實。許多人對業務很是熟悉,但因爲不懂技術,不知道什麼事能作,什麼事不能作,與客戶的交流常常流於形式,只能開花,不能結果。既懂技術又懂業務的複合型人才,每每具有獨特的優點,使得他們能在事業上達到別人沒法企及的高度。
第三階段的人,看問題的角度已再也不侷限於技術,而是更通常化、通用化。其實作信息系統也好,作通用軟件也好,思惟都有一些模式可循。例如,在決定開發一個產品前,一般須要問本身幾個問題:
n 目標客戶是誰?
n 客戶有什麼煩惱?他在抱怨什麼?
n 客戶如今已經有了什麼?還缺什麼?
n 你能給他提供什麼?
(注:後來我才知道,這些問題早已出如今RUP 的Inception 階段中,Inception 要解決的是商業風險,上面列的幾個問題,就是Inception 階段的成果——Vision Document
這些問題弄清楚後,基本上,「給客戶提供什麼東西」就已經定下來了。而後就能夠與架構師一塊兒,討論這個產品,並最終由開發小組去實現。與第二階段中「我知道它能-I know it can work」不一樣,本階段主要特色是「我知道它是什麼——I know what it is」。
也許你會說:「上面的幾個問題,誰都能問,幹嗎非要第三階段中人呢?」沒錯,這幾個問題,誰都能提出來,甚至能夠用Word寫個模板。可是,提問題容易,回答問題難。一樣的環境,一樣的客戶,不一樣的人收集到的信息是不同的。不信?找兩我的一塊兒去爲某個會議作紀錄,而後看他們寫的《會議紀錄》文檔,就知道差距了。許多人不肯意作會議紀錄,認爲這是低級活,其實否則。會議紀錄作得好的人,與客戶交流時,就能有重點而又比較全面地記錄下有用的信息,甚至能領會「弦外之音」。能達到第三階段的人,一般都是信息挖掘的高手。
到達這個境界後,再也不須要知道什麼設計模式,也不須要知道什麼是EJB、CORBA(雖然他們都懂技術,造詣也都不低),就象獨孤劍聖,已達「不滯於物,草木竹石,皆可爲兵」。提及來神乎其神,其實概括起來,也就兩點:
一是識勢:俗話說,識時務者爲俊傑。用如今的話說,叫「形勢比人強」。以一已之力對抗大形勢,那是必敗無疑。「俊傑」的出現,能推進形勢的發展,但也只是「推進」而已,形勢是不可能「阻擋」和「違逆」的。大禹治水,疏並導之,鯀不懂這個道理,縱有息壤相助,亦沒法堙填。張勳不知道封建君主制已不適合中國國情,而搞什麼復辟,唉,可憐啦。具體到軟件項目,若是客戶想搞分佈式,你卻建議他搞大集中;客戶想要三層結構,你卻建議他用二層C/S,豈不謬哉?因此說,識勢是應具有的首要能力,是重中之重。
二是知人:光說不練假把式。若是僅僅是識勢,而沒有得力的人相助,那也是一場空。劉備身具「帝王以後,漢室宗親」的血統,打着光復漢室的旗號,甚得人心,可謂是識勢(至於劉備是否是真的想光復漢室,鬼才知道),但在趕上關、張前,他只能賣草鞋,在認識諸葛亮以前,也一直被趕着屁股跑。再說老李,若是沒有老張,任他舌綻蓮花,天上也不會掉下一套分佈式系統來。

4.2   應該作的事

與客戶保持常常性的溝通。銷售和市場人員,他們可能想不到一些事,與客戶的常常性溝通,能讓你掌握第一手的資料,從而有助於產品的創意。最好是把客戶的MSN、QQ等常常上線的聊天工具的號碼弄明白。從MSN的暱稱、說明檔等很能看出一我的的心情,這裏面能表達不少信息。頻繁的、不刻意而爲之的溝通,容易拉近與客戶的距離,讓客戶把你當成朋友。固然,許多客戶,尤爲是客戶中的領導,一般是不上MSN的。對於這些人,就要謹慎一些了,他們可能不但願被打擾,因此別隨便打電話。建議請教專業人士:公司的銷售——他們有的是辦法。
增長閱讀量,擴大信息來源。大量的信息,可讓你瞭解行業動態,增長你的靈感和創意。上文說過,要鍛鍊「收集有用信息」的能力。如今都是海量信息,若是不能敏銳地發現對本身有用的信息,那你惟一能作的事,就是在信息的海洋裏游泳健身。一個祕訣:看到有用的文章後,隨手就保存到本地硬盤裏。而後在機器上裝一個Google Desktop,讓Google幫你搜索。另外一個建議就是:最好有屬於本身的筆記本電腦。錢很少的,買個活動硬盤也行。
培養情商,增長我的魅力。一般,能對你有用的人,都是些「牛」人,至少是比較牛的人。這樣的人是否願意爲你所用,不必定取決於薪水,而更多地在於你的領導藝術——至少要讓他們認爲,跟着你混是有前途的。《古惑仔》中有一段對白:「咱們作古惑仔的,跟對老大很重要」。其實在職場混,跟在江湖混,沒多大區別。越往上走,就越古惑。一般是職位越高,圈子越窄,擡頭低頭,老是那麼幾我的。到達這個份上,就應了一個平時常說的名詞:「人品問題」。人品好而又有能力的人,才能成就大事。
參加俱樂部或沙龍活動。有的信息,尤爲是內部信息,從外界是無從得知的。尤爲是,許多靈感,可能來自於幾個有共同愛好的朋友的閒聊。

4.3   不該該作的事

做爲第三階段中人,一般是一個不小的領導,不該該作的事有不少。市面上有大量的書而供參考。本文只給出從技術出身的領導最常犯的兩個錯誤:
不信任下屬。技術出身的領導,每每對那些技術上不如他的人持有必定的懷疑,尤爲是當他/她們犯了錯誤時。用人不疑,疑人不用。你的下屬之因此會犯錯誤,正是由於他/她想真正把事作好。此時,寬容大度加上適當的指導,一般是最好的選擇。
本身頗有成就感。這是另外一個常犯的錯誤。要知道你是領導,你不須要與下屬爭搶功勞,應儘可能把得到成就感的機會留給下屬。若是你事事爭先,因爲自己的能力與素質,你比下屬更容易把一件事作好,但所以而帶來的反作用,遠大於這件事情自己:下屬會以爲沒有成就感,沒有自信心,漸而漸之,就會影響士氣。若是這樣,就算你這個當領導的再能幹,也不可能把全部事情都作完。

4.4   侷限性

俗話說:江湖愈來愈老,膽子愈來愈小。當你逐漸成爲某個行業內的知名人士以後,獲得的東西愈來愈多,相反,患得患失的心理也愈來愈重。所謂「壁立千仞,無欲則剛」,慾望太多,就會使本身變得虛弱。
在職場上,你已是老兵,酸甜苦辣都經歷過一些,可謂是水火不侵了。但在人生道路上,起落浮沉,也許纔剛剛開始。此時的你,大概已過而立之年,家事雜事有一大堆,人際關係也漸趨複雜。此時能影響你成功的,一般都是些與職場無關的事——偏偏又由於你在職場上投入了太多的時間,職場外的事,多半是一團糟。

4.5   進階指南

職場內的事,已無須我再說什麼了。到了你這個境界後,我只有一句話可說,那就是:人生並不僅有職場,正如職場並不僅是技術同樣。知道獨孤劍聖怎麼死的不?他是寂寞死的。

4.6   階段小結

適用人羣:工做六年以上(常常跳槽的不算),上限不封頂
輸     入:客戶需求
輸     出:可行的創意或產品定義
階段目標:我知道它是什麼——I know what it is
技術特色:注重思想,不關注技術實現
勝任職位:部門經理、研發副總、CTO、解決方案專家、業務專家、產品經理、高級產品經理等
升級祕笈:換位思惟,跳出職場看問題
參考薪水:¥15000以上(僅供參考)
 

5 附錄:關於「三階段說」

 
古聖今賢給予咱們許多的啓示。雖然他們沒學過計算機,沒當過程序員,但對於人生,對於「道」的領悟,遠比咱們這些白骨精(白領骨幹精英)強。人的進步過程,實際上是一個「確定,而後否認」的過程,這個過程,其實不僅三個境界。可是境界三轉後,就與「程序員」這三個字無關了,因此本文中不加以論述。
不管是哪一個階段,都須要先「入迷」,而後「解脫」:
n 在第一階段,須要先在編程語言細節上入迷,而後從語言細節中解脫出來,達到語言無關,從而進入設計這個層次
n 在第二階段,須要先在設計方法上入迷,而後再從方法中解脫出來,達到技術無關,從而進入思想層次
n 在思想層面,須要先在解決問題的整體思想上入迷,而後又從思想中解脫出來,達到與職場無關,從而進入另外一個境界。
 
如下附兩段筆者收錄的與「三階段說」有關的名句,供參考。
 
n 孫過庭《書譜》:「初學分佈,但求平正;既能平正,務追險絕;既能險絕,復歸平正。初謂未及,中則過之,後乃通會。通會之際,人書俱老」
n 王國維《人間詞話》:「古今之成大事業、大學問者,必通過三種之境界。‘昨夜西風凋碧樹,獨上高樓,望盡天涯路’,此第一境也。‘衣帶漸寬終不悔,爲伊消得人憔悴’,此第二境也。‘衆裏尋他千百度,驀然回首,那人卻在,燈火闌珊處’,此第三境也。」
 
還有不少,不一一列出了。以君之智慧,必已有所悟。
 
(全文完,謝謝閱讀)
相關文章
相關標籤/搜索