(控制反轉),有事沒事也要說說AOP,最差也得是Factory、Delegate吧,你要是說不知道什麼是Facade,都不好意思跟人打招呼……
與第一階段“我能——I can do it”不同,本階段的人,特點是“我知道它能——I know It can do”,對,就是“知道它能”,至於如何去“能”,就不需要關心了。例如老張,他只需要把EJB介面定義清楚,知道有了這個介面就能完成相應的功能,至於小王如何去實現這個介面,是寫了三個類還是五個類,就不關心了。
從技術角度,追求的不再是純粹的技巧,而是方法這個層次,努力尋求正確的做事方法。即關心“怎樣才能蓋出好房子”,而不是“如何把石頭從貨車裡搬運到工地上”。用流行的話說,就是“只要方法正確,結果就會正確”。
當然,達到這個階段的人,技巧本身,通常也是很厲害的。舉個例子吧,小王要用一個開源的XML
你的侷限性,與優點一樣明顯。如果讓你列舉自己的優點,你可能會說:
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、 瞭解業務
計算機技術必須為具體的行業服務,每個行業都有自己的特定背景和業務知識。技術人員應抓住機會,瞭解這些知識。我曾在某個電信軟體公司任職三年,號稱是專案經理,開發電信網管產品。那時我整天的工作就是研究各種框架,討論各種設計模式,我眼中所見心中所想,盡是WEB、Struts、HTML等一大堆計算機名詞。如果你問我“為什麼這玩意是個網管軟體,而不是淘寶易趣阿里巴巴?”我一定回答不出來。
一個公司裡面,真正值錢的東西,不是技術,而是業務知識,技術是實現業務的一種手段,是為業務服務的,主從關係,不可搞錯。
3、 加強非技術性的功夫
學書法時,老師曾說過“三分書內功夫,七分書外功夫”。這句話我一直不理解(事實上,到今天依然不理解),但把這句話用於計算機技術,卻是明白的。三分書內功夫,是計算機技術,七分書外功夫,就是非技術性的產品和市場了。
可以通過看些“不務正業”的書,來提高自己的感性思維能力,可以多看看市面上流行的《比爾蓋茨傳奇》《數字化生活》《把信寄給加西亞》等,象《誰動了我的乳酪》這種只會抱怨不會解決問題的書,就不用看了。
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,豈不謬哉?所以說,識勢是應具備的首要能力,是重中之重。
二是知人:光說不練假把式。如果僅僅是識勢,而沒有得力的人相助,那也是一場空。劉備身具“帝王之後,漢室宗親”的血統,打著光復漢室的旗號,甚得人心,可謂是識勢(至於劉備是不是真的想光復漢室,鬼才知道),但在遇上關、張前,他只能賣草鞋,在認識諸葛亮之前,也一直被趕著屁股跑。再說老李,如果沒有老張,任他舌綻蓮花,天上也不會掉下一套分散式系統來。
適用人群:工作六年以上(經常跳槽的不算),上限不封頂
輸入:客戶需求
輸出:可行的創意或產品定義
階段目標:我知道它是什麼——I know what it is技術特點:注重思想,不關注技術實現
勝任職位:部門經理、研發副總、CTO、解決方案專家、業務專家、產品經理、高階產品經理等
升級祕笈:換位思維,跳出職場看問題
參考薪水:¥15000以上(僅供參考)
5 附錄:關於“三階段說”
古聖今賢給予我們許多的啟示。雖然他們沒學過計算機,沒當過程式設計師,但對於人生,對於“道”的領悟,遠比我們這些白骨精(白領骨幹精英)強。人的進步過程,其實是一個“肯定,然後否定”的過程,這個過程,其實不只三個境界。但是境界三轉後,就與“程式設計師”這三個字無關了,所以本文中不加以論述。
無論是哪個階段,都需要先“入迷”,然後“解脫”:
n 在第一階段,需要先在程式語言細節上入迷,然後從語言細節中解脫出來,達到語言無關,從而進入設計這個層次
n 在第二階段,需要先在設計方法上入迷,然後再從方法中解脫出來,達到技術無關,從而進入思想層次
n 在思想層面,需要先在解決問題的總體思想上入迷,然後又從思想中解脫出來,達到與職場無關,從而進入另一個境界。
以下附兩段筆者收錄的與“三階段說”有關的名句,供參考。
n 孫過庭《書譜》:“初學分佈,但求平正;既能平正,務追險絕;既能險絕,復歸平正。初謂未及,中則過之,後乃通會。通會之際,人書俱老”
n 王國維《人間詞話》:“古今之成大事業、大學問者,必經過三種之境界。‘昨夜西風凋碧樹,獨上高樓,望盡天涯路’,此第一境也。‘衣帶漸寬終不悔,為伊消得人憔悴’,此第二境也。‘眾裡尋他千百度,驀然回首,那人卻在,燈火闌珊處’,此第三境也。”
還有很多,不一一列出了。以君之智慧,必已有所悟。