架構師要努力成為內功深厚的高手
原創【51CTO獨家特稿】一聽到架構師,首先便想到的是在一間寬敞的房間中間坐著一位衣著得體的中年男人,望著落地窗外的風景凝思,萬千思緒在腦海里翻騰,頗有運籌帷幄千里外的氣勢。程序員究竟是做架構師還是項目經理,最近看到微軟潘正磊女士的一篇博文,給出了一些啟示。
#T#
“當時我們團隊來了一位剛被提拔的開發經理,每次當我陳述完一個問題,他都會迫不及待地提出他的解決方案。在這之后很長的一段時間,他還是一直習慣性地建議我如何如何處理問題。通過平日的觀察,我也發現他更喜歡花時間對技術和產品進行深度探討,而非團隊管理。于是幾個月后,我找了一個機會跟他說,“我覺得你做軟件架構師說不定會更有意思。”而他自己也覺得這個建議不錯。幾個星期后,他真的轉去做架構師的工作,我們團隊也迎來了一個新的開發經理。”
這個例子中體現出來的正是架構師深厚的技術底蘊,或許很多程序員更向往項目經理的職位。從上面我們可以看出,程序員在平時的培養過程中還是過于看重技術處理細節,而不喜歡管理。這樣看來,成為架構師還是更多程序員的最終歸屬,盡管項目經理的頭銜看起來是更吸引人,但是架構師作為一個純技術性崗位,更適合廣大的程序員。
修煉內功不等于死鉆開發技術
講到內功深厚,大家心想“那我就往死里鉆研技術,不就完了?”。確實,很多人理解的內力就是開發技術,包括語言的掌握、對框架的掌握、數據庫管理能力、安全管理能力等等。但是我們看到,架構更多的內力體現在對技術的綜合運用上,光會編程的程序員,最多就能做到高級程序員,也就是技術實現上的高手。
51CTO編輯在對高級架構師王翔先生的采訪中,曾提到這樣一個問題“假設有三名優秀的程序員,A尤其擅長溝通與團隊管理;B的編程功底深厚,且對新技術能快速掌握;C在邏輯思維和抽象能力方面表現優秀。您會重點培養哪位程序員成為架構師?”
王翔的回答是這樣的“C,后面依次遞減是B、A。A更適合做項目經理、產品經理。而且根據個人的經驗,雖然女性程序員開發階段顯得不如男性那么快深入和入手(Programmer),但能堅持到Developer、S. Developer、 Designer、S. Desinger階段她們的思維能力優勢就顯示出來。如果B是女性Desinger級別的人員,我寧愿選擇培養她,因為架構師在創造性、知識匯總方面根據個人經驗似乎女性更適合。”這里我們看到,內力更多的是一種思考能力,結合技術的思考能力。光有程序開發的能力,不會思考,那只能做個代碼狂人。只思考而沒有腳踏實地的技術開發能力,那就是忽悠人的表現,更不招人喜歡。
內功的修煉第一層,自然是開發技術的培養。從寫第一行代碼開始,就多想為什么,有沒有什么其他的路徑能實現同樣的功能。當我們寫了很長時間代碼了,是不是就該考慮更多的問題,比如優化、預期未來。其次是對架構的熟悉,下面是大家比較熟悉的Struts 2架構圖。要做一名優秀的架構師,就得對各種架構做到了熟于心。
更高層次的修煉,就在于不同技術的學習。要懂得數據庫知識,懂得安全監控方面的知識,還要懂得網絡構建方面的知識。這是比較高層次的內功修煉,很有可能與程序員目前所處的開發環境關系不大,對程序員來說并不是什么有用的東西。但一個優秀的架構師必須懂得這些,才能更好地抽象軟件的使用環境,選擇符合需要的架構以及開發模式。
本文為《架構師害怕程序員知道的十項技能》中的內力篇