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