程序員賺大錢

本文共分三部分,現在打開的是《第一部分》,歡迎繼續閱讀第二部分三部


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有何區別”等是最關心的問題。當技巧的積累達到一定程度時,應付日常工作將比較輕松,此時信心爆棚,最喜歡的口頭禪是“天底下沒有編不出來的程序”,技術特點是對某種編程語言(如JavaC#)非常熟悉,甚至達到“回字有四種寫法”的境界。凡事必追根究底,有股子“語不驚人死不休”的蠻勁。
筆者沒有任何貶義,相反,是褒義,因為這是必須經歷的。佛云:“既未入迷,何言解脫?”如果你是工作三年內的同行,那么應以“入迷”為榮。上學時,老師常教導我們“先把書讀厚,再把書讀薄”,只有“深入”,才能“淺出”,也是這個道理。

2.3??不應該做的事

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

2.4??局限性

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

2.5??進階指南

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

2.6??階段小結

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

3?設計,方法為指導

3.1??階段釋義

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

3.2??應該做的事

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

3.3??不應該做的事

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

3.4??局限性

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

3.5??進階指南

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

3.6??階段小結

適用人群:工作三年以上,上限不封頂
???入:軟件需求(請注意用詞的區別:軟件需求,而不是客戶需求,你所得到到軟件需求,是由別人收集來的,并不一定能代表客戶,如果“別人”的水平一般,錯誤理解了客戶的意圖,那么你就等著跟他一塊倒霉吧)
???出:設計好的類、接口和算法
階段目標:我知道它能——I know it can work
技術特點:注重方法,不關注編程語言細節
勝任職位:高級軟件工程師、開發經理、系統架構師等
升級秘笈:換位思維,跳出技術看問題
參考薪水:6000以上,15000以下(僅供參考)

4 思想,無招勝有招

4.1??階段釋義

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

4.2??應該做的事

與客戶保持經常性的溝通。銷售和市場人員,他們可能想不到一些事,與客戶的經常性溝通,能讓你掌握第一手的資料,從而有助于產品的創意。最好是把客戶的MSNQQ等經常上線的聊天工具的號碼弄明白。從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?王國維《人間詞話》:“古今之成大事業、大學問者,必經過三種之境界。‘昨夜西風凋碧樹,獨上高樓,望盡天涯路’,此第一境也。‘衣帶漸寬終不悔,為伊消得人憔悴’,此第二境也。‘眾里尋他千百度,驀然回首,那人卻在,燈火闌珊處’,此第三境也。”
?
還有很多,不一一列出了。以君之智慧,必已有所悟。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450211.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450211.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450211.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL索引底層實現原理

索引的本質 MySQL官方對索引的定義為:索引(Index)是幫助MySQL高效獲取數據的數據結構。提取句子主干,就可以得到索引的本質:索引是數據結構。 我們知道,數據庫查詢是數據庫的最主要功能之一。我們都希望查詢…

解決 A component required a bean of ‘XXX.RoleService‘ that could not be found.

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 springboot工程啟動報錯,無法啟動成功。 dubbo訂閱服務失敗,提示如下: 出錯原因:唉&…

開源個小工具simple-repo

背景 了解android系統的都應該熟悉repo這個工具,google為了方便管理數百個git倉庫,開發了repo這個批量管理工具。不過google repo project配置比較麻煩,而通過gitbucket搭建git server則比較傻瓜,所以此處開發了simple-repo這么一…

配合OAuth2進行單設備登錄攔截

2019獨角獸企業重金招聘Python工程師標準>>> 要進行單設備登錄,在其他地點登錄后,本地的其他操作會被攔截返回登錄界面。 原理就在于要在登錄時在redis中存儲Session,進行操作時要進行Session的比對。 具體實現,假設我們的OAuth 2…

朱大鳴:中國金融危機到底有多嚴重

我們到底該不該救助金融機構,中國鈔票到底有沒有超發,對于這個問題,央行行長周小川日前撰文全面為之辯護:對于第一個問題,他的觀點是金融業出現了問題就必須救,否則意味著集體的失靈甚至死亡;中…

C++知識點(六)數組、指針與字符串導學

1.數組 地址連續存放初始化:列出全部初始值后,第1維下標個數可以省略不做初始化,局部變量中為垃圾數據,static變量為0只對一部分進行初始化,其余數值初始化為02.動態內存分配: new delete 3.動態創建數組 n…

Android應用開發—知識點匯總

獲取Fragment的context: getActivity().getApplicationContext()或者getActivity()You can use getActivity(), which returns the activity associated with a fragment.The activity is a context (since Activity extends Context).設置TextView的顏色setTextCol…

條件渲染vue

v-if:只渲染一次的情況下,性能更好v-show:頻繁切換性能更好 vue虛擬DOM技術 瀏覽器:渲染引擎(慢)JS引擎(快) 用1個JS對象來充當DOM對象,因為JS對象性能比較快,所以用虛擬DOM對象進行…

錢線觀察:貨幣基金T+0駕到 活期存款將死?

導語:即使沒有任何投資風險,通脹也在侵蝕居民的財富,現金是不安全的。最近出現的一項業務,貨幣基金"T0"贖回,意味著貨幣基金可以像活期存款一樣即時取現,而其收益率普遍高于活期存款。因此有人認…

git stash和git stash pop

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 git stash 可用來暫存當前正在進行的工作, 比如想pull 最新代碼, 又不想加新commit, 或者另外一種情…

CentOS 7.0 上安裝和配置 VNC 服務器

作為一個系統管理員,大多數時間是通過網絡管理服務器的。在管理服務器的過程中很少會用到圖形界面,多數情況下我們只是用 SSH 來完成我們的管理任務。在這篇文章里,我們將配置 VNC 來提供一個連接我們 CentOS 7 服務器的方法。VNC 允許我們開…

Android應用開發—TextView的動態創建

動態創建TextView的兩種方式&#xff1a; 下面介紹兩種創建方式&#xff1a; 在drawable里面創建共同依賴的background.xml文件&#xff0c;里面設置shape來設置文本框的一些特殊效果&#xff1a; eg&#xff1a; <?xml version"1.0" encoding"utf-8"…

Mongo DB 簡單搭建和部署

1.先下載源代碼包 官網下載地址&#xff1a;http://www.mongodb.org/downloads 2.解包tar xf mongodb-linux-x86_64-rhel62-3.2.7.tgz 3.把包移動到 /usr/local/mongodb mv mongodb-linux-x86_64-rhel62-3.2.7/ /usr/local/mongodb 指定同一時間最多可開啟的文件數&#xff08…

運算符優先級 必熟記,放到心里

優先級 運算符 名稱或含義 使用形式 結合方向 說明 1 [] 數組下標 數組名[常量表達式] 左到右 () 圓括號 &#xff08;表達式&#xff09;/函數名(形參表) . 成員選擇&#xff08;對象&#xff09; 對象.成員名 -> 成員選擇&#xff08;指針&#xff0…

可持久化平衡樹(FHQ Treap)

兩個最基本的操作 merge合并 split分割 merge 把兩棵treap合并成一棵treap&#xff0c;要滿足T1最大值要比T2最小值小&#xff0c;比較將隨機數值key值更大的作為合并后的根 假設T1作為根節點作為新子樹的根&#xff0c;左子樹不變&#xff0c;右子樹對T1原來的右子樹與T2再遞歸…

Git 分支管理-git stash 和git stash pop

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 合并分支&#xff0c;沖突是難免的&#xff0c;在實際協作開發中我們遇到的情況錯綜復雜&#xff0c;今天就講兩個比較重要的命令使用gi…

useState語法講解

useState語法講解 語法定義 const [state, dispatch] useState(initData)state&#xff1a;定義的數據源&#xff0c;可視作一個函數組件內部的變量&#xff0c;但只在首次渲染被創造。dispatch&#xff1a;改變state的函數&#xff0c;推動函數渲染的渲染函數。dispatch有兩…

NSOperation的進階使用和簡單探討

本文將會從多個方面探討NSOperation類和NSOperationQueue類的相關內容 一、簡介 NSOperation類是iOS2.0推出的&#xff0c;通過NSThread實現的,但是效率一般。 從OS X10.6和iOS4推出GCD時&#xff0c;又重寫了NSOperation和NSOperationQueue&#xff0c;NSOperation和NSOperati…

Android應用開發—LayoutParams的用法

Android應用開發—TextView的動態創建 這篇文章講到了“TextView控件布局位置的控制”&#xff0c;主要依賴于RelativeLayout.LayoutParams的使用&#xff0c;本文簡單介紹下LayoutParams的用法 注&#xff1a;本文大部分內容參考android,利用layoutParams代碼動態布局空間位置…