做架構設計已經好多年了,前兩天和一位年輕的同事聊天,這位同事從畢業到現在已經工作3年了,是我當前新公司里面最年輕的Team leader(在我現在新的公司,Team leader職位上的人工作7,8年的占80%),他現在感到很迷茫,說天天忙于溝通,基本上沒有時間寫代碼,但是自己以后又想往架構師的路上走下去,很糾結。于是一個加班的晚上,過來和我聊了一下自己的想法。其實這是一個典型的心態,到底以后是往技術走,還是往管理走?其實,說實在話,我1年前還有這個疑惑和顧慮,更何況年輕的他們呢? 大概半年前,我所在的公司,我雖然掛的是高級項目經理的職位,但是其實又管人,有做架構設計當然也寫代碼,但是公司形式不太好,美國客戶想把業務往印度轉移,所以就準備換份工作(雖然不太想換,畢竟在以前的公司也呆了5年多了),所以當時也有過猶豫不決。但是最終還是決定在架構師的道路上繼續前行,因為我感覺,管理其實和技術并不矛盾,誰說架構師就只需要懂技術,而不需要懂得管理呢?其實一旦上升到架構師的層面,不但需要與開發人員溝通,同時還需要與管理人員,客戶,運維,測試等其他不同角色的人員交互,同時還需要進行風險的預防和把控,項目成本的估算等等,如果沒有一定的溝通管理應變已經項目管理能力,是絕對成不了一名出色的架構師的。
那如何快速的成為一名合格的架構師呢?其實,就是從兩方面:
#1 專業技能
@首先當然基礎知識要扎實,一些經典的專業書籍一定要看。比如,設計模式,算法,數據結構,所在領域的編程語言的專業書籍等
@作為架構師,review別人的代碼并給出合理的建議是基本功,比如變量或者方法命名的規則;所以代碼大全,重構,改善既有代碼的設計,Clean code 等等肯定需要看。
@ 對于某一個技術領域或者業務領域,一定要有一門技術是精通的,因為這樣你才能體會到以后遇到自己不懂的技術的時候,如何能夠快速成為這一方面的行家。
@ 平常有時間一定要多多進行代碼的訓練,也就是Martin Flower常說的Kata練習,這個比喻來自于跆拳道,跆拳道選手一般每天都會找一些基本的招式,進行反復的練習,從而訓練肌肉的條件發射,那么對于我們程序員來說,一定也要進行持續的編程訓練,比如上面提到的那位同事,給的建議是,雖然把大部分時間花在了溝通和協調上面,沒有機會寫代碼,但是自己一定要利用業余時間,自己找一些例子來聯系,比如,參與開源項目,或者到網上去搜索一些大師的經典Kata聯系的例子;或者看工作里面是否有一些小工具,是否能夠提升自己的溝通效率,當然已經天天寫代碼的童鞋們除外。請參考我轉發的另外一篇文章:http://blog.csdn.NET/chancein007/article/details/53731514和另外一篇介紹能在線練習Kata code的文章(http://blog.csdn.Net/chancein007/article/details/53792477)
@ 最好能夠在精通一門語言的基礎之上,學習其他的語言,從而站在一個更高的角度,對于程序語言有一個更高層次的抽象認識,比如,學了Java之后,可以學學Ruby,Groovy,C#等等,其實語言之間都是相互借鑒的,比如Lamba表達式,連java也慢慢的向函數式編程方向靠攏。
@ 如果有時間,一定要自己維護一個博客,既然選擇了架構師,就決定了自己以后不僅僅是一個技術專家,同時也要成為一個布道師,為企業組織或者社會上的其他IT同行們貢獻自己的一些微薄之力。
@ 多參加一些社會上舉辦的軟件專業會議或者活動,了解當前比較流行的技術和框架。
@ 這條不提倡,我以前有一個同事,幾乎每年都要更新簡歷1~2次,目的不是真正的換工作,而是通過面試得到當前市場上大部分公司正在使用什么技術和框架。對于這條,請慎用!!!!
@如果有結對編程的機會一定要好好珍惜,特別是和高手大拿一起結對的時候。
@如果大家上面都已經做的非常的好了,這個時候可以看看架構設計方面的書籍,比如企業應用架構模式,架構之美等等。
@ 去51Job上搜索架構師這個職位標簽,看看不同行業的企業對于架構師的技術要求和標準,然后結合自己當前所處的行業和你自己的技術特點,比如擅長前段或者后端,有選擇性的學習一些自己感興趣的技術或者方法。
#2 軟技能(現代社會,一個合格科學家不僅僅是某一個行業的技術專家同時也是一名專業的社會活動家)
@遇到問題,一定要多想,遇到一個問題,如果解決了,就要反思為什么能夠解決,如果以后遇到類似的問題,
如何更快速的解決。
@英語的重要性,不言而喻,因為現在很多新技術的框架的中文文檔非常的少,即使翻譯成中文,也是二手的了(國內自己的開發的一些開源框架除外)
@ 有時間的話,看一些溝通方面的書籍,如果有參與溝通的機會的時候,一定要想如何把溝通做的更好更舒暢。
@ 如果有機會的話,可以參加PMP的考試,但是如果不想參加的話,也沒有關系,至少要涉獵到項目管理方面的書籍,否則以后如果成為架構師之后,客戶或者管理者給你說一些項目管理上一些專業術語時,到時候就會一頭霧水。
@架構師其實從某種意義上就是一種角色,而不是一種職位。一定要時時刻刻保持空杯心態。
@一定要有一顆保持饑渴學習和耐得住寂寞的赤子之心。
@當前的技術節湊是非常快的,特別是結婚以后又有小孩了。一定要好好的利用自己碎片時間,對于一些技術,當時讀不懂不要緊,但是一定要記住和了解其關鍵詞,這個主要是為了拓寬自己的視野。比如,當前你想自己開發一個系統,結果已經有一個開源框架實現了,而且還很穩定,這個時候,自己就沒有必要重復發明輪子了。
@與不同的技術、編程語言、設計模式和結構等(甚至是它并沒有在日常中給予你直接的幫助)打交道。你永遠都不知道這些知識是否會在未來派上用場,但是對你絕對是有益無害。
@在工作中,能夠幫助到別人解決技術難題,一定要盡量全力以赴,因為這不但可以贏得同事的好感和口碑,同時也能增長你解決問題的經驗和提高你的技術思維能力
@ 一定要掌控好自己的時間,對工作沒有幫助的會議,能不參加盡量不要參加,當然,企業安全,公司規章制度如果是強制性的,該參加還得參加,但是如果沒有工作效率和扯皮的會議,盡量避免參加。
@程序員要耐得住寂寞,要在自己的領域深挖,不能看啥火,就學啥,一定要有自己的想法和判定,如果決定不了,可以向資深的同事或者朋友溝通。
@盡量參與到項目中的編碼,因為架構師不能與項目脫離。
@ 如果有機會可以鍛煉一下自己在大眾環境下的演講和PTT的能力。
@有機會多做知識分享,因為你一旦分享了知識,你就會對這門技術有深刻的印象,同時也能樹立在同事中的良好的技術形象,從而贏得更多的專家影響力而不是職位影響力。
上面只是我當前能想到的,知易行難,知道了上面的一些經驗,并不代表年輕程序員們就能馬上成功,畢竟這需要一個鳳凰涅槃和實踐的過程,但是肯定能幫助有志于于此的年輕程序員們少走一些彎路,以后如果有其他的想法,或者讀者有其他的好的建議,我將會繼續更新。
-
架構師
+關注
關注
0文章
47瀏覽量
4622
發布評論請先 登錄
相關推薦
評論