架構師成長歷程:時刻對新技術保持敏感
原創架構師是一門建立在科學,工程基礎之上的藝術,一個充滿魅力,極其有趣的工作;給人帶來了一種不被束縛,不按別人的思路走,自由描繪無限風景的期盼。那么程序員應如何成為一名合格的架構師?如何加強自己的技能修養?架構師在公司主要負責什么?等等,記者帶著網友的一系列問題專訪了當當網技術部高級總監。曾歷任開發工程師、高級工程師、架構師、高級總監。
傅強,當當網技術部高級總監,2006年碩士畢業于北京航空航天大學計算機學院,應屆畢業加入當當網。歷任開發工程師、高級工程師、架構師、高級總監;目前負責搜索、推薦與數據挖掘、個性化營銷、廣告聯盟、用戶行為分析、大數據技術解決方案。
以下回答基本以在當當網的工作為背景。
51CTO:首先請您介紹一下自己的您的專長和目前的一些研究領域。
傅強:06年-10年,專注于站內搜索。目前再次負責搜索這塊業務;
07年至今,專注于通過數據挖掘、統計分析等手段,開發B2C網站個性化推薦、個性化營銷系統;
09年至今,專注于利用大數據處理能力,解決用戶行為分析;
11年至今,以用戶行為分析為核心的Anti-Fraud。
51CTO:一開始您是因為什么開始對IT行業感興趣的?又是因為什么開始程序員的生活?
傅強:我的本科、碩士都是計算機專業,至少畢業時也沒想到離開IT行業。
跟大多數程序員一樣,我在研究生期間最早開始程序員生活,雖然是實習生;畢業后若干年,一直對編程保持激情;至今仍然以“高級工程師”或“架構師”稱號為榮。
51CTO:對于任何一個軟件開發人員來說,架構師都是一個令人向往的角色。可以介紹一下您從程序員到架構師的過程中的一些經歷嗎?
傅強:
舉個例子吧:
我在重構升級站內搜索服務時,首先,我對緊緊圍繞公司搜索業務做了總結,對2年內業務對搜索排序、性能等提出的種種需求做提煉—搜索大部分問題在于不同品類搜索排序效果相差較大,對出現過的技術問題做總結—搜索的大部分投訴在于搜索結果中數據信息與網站單品詳情頁的信息不同步,即數據更新問題,對未來2-3年搜索業務的趨勢做了分析—搜索流量支持10-20倍即可、搜索模型中點擊負反饋信息量需要深度挖掘、大內存SSD磁盤的服務器越來越便宜等等,基于以上分析和總結,為新版搜索設計出更加合理的架構。
第二,對我本人之前幾年在搜索方面積累的大量關鍵代碼做重構,拆分若干功能獨立的子模塊作為搜索的基礎類庫。這讓其他新加入搜索團隊的成員上手快了很多,工作效率和產出提高很大。再加上我手把手細心地帶新人,半年至1年,其中勤奮的程序員的開發效率基本與我本人的開發效率相差不大了。這相當于復制出若干我自己。這樣我自己不但帶新人的能力有所提高,而且也在團隊中建立了技術影響力。
第三,為搜索團隊制定出代碼規范、SVN代碼存儲規范、測試流程規范、上線流程,并在堅持檢查這些規范的執行程度。一段時間之后,團隊在這些方面逐漸做的井井有條,從小作坊變成正規軍。有了流程的保證,程序的質量也得到的保證。
以上是我從程序員成長為架構師時一次重要的關鍵點,供參考。
51CTO:程序員要成為一名架構師發展,需要進一步加強技能的修養。在您的研究領域上,您是如何加強技能修養的?
傅強:
幾個必要的要素:
- 思考問題的角度盡量站的高一點、再高一點,從分解公司戰略層面開始入手做架構設計
- 對業務的深刻理解,才能做好業務架構
- 理論學習&技術實踐,什么時候都不能丟掉,這是技術架構的基礎,重要性不贅述
- 同行業交流
- 時時對新技術保持敏感
51CTO:個人覺得成為一名架構師僅僅通過理論學習是不行的,那么您的一個自我培養的過程是怎樣的?也就是說從程序員到高級程序員再到設計師的整個過程如何去完成?
傅強:
技術方面:
- 從最基礎的開發做起
- 逐步提高解決高難度技術的能力
- 不斷重構代碼、不斷優化代碼,每次重構都是一次思考
業務方面:
- 從理解現有業務做起
- 從成為小領域業務專家,擴展到更多領域的業務專家
- 在每次重構底層代碼時,更在不斷思考業務架構重構與優化
做到以上,大約是個高級程序員或準架構師水平。
架構師的核心競爭力:
- 有獨立思考、價值判定,建立在對行業、對公司戰略和目標的深刻理解之上
- 很強的語言翻譯能力,能跟產品經理講明白技術,能把產品理念翻譯成架構和可執行代碼
- 影響力
51CTO:您在團隊中時如何開展架構師相關的設計工作?
傅強:
以公司戰略在技術方面的分解為指導思想:
- 為團隊設定技術規范、代碼規范、文檔規范
- 為開發團隊、以及相關產品團隊、測試團隊、運維團隊,規定流程和標準
- 為開發團隊抽象、提煉、儲備和推廣通用代碼類庫、常用業務代碼類庫
- 根據實際操作情況,對以上內容不斷優化和調整
51CTO:您覺得作為一名架構師,***的挑戰是什么?如何去克服這些困難?
***的挑戰是架構的落地和執行,克服方法,無他法,唯有緊密貼近業務,如:公司戰略需要半年內出某個新平臺,力求速度、效率,作為競爭的重要利器這時架構設計最忌諱過度設計、過于理想化,建議走實用路線,不斷迭代、不斷重構,小快靈底做一次次升級架構,如:公司戰略1年后重新規劃ERP系統,為未來3-5年做準備這時架構設計當然需要盡量考慮周全,盡量留出足夠的接口,保留靈活性擴展性。