校招進入支付寶,11年時間,從一線工程師成長為支付寶安全核心架構(gòu)師,這個技術(shù)牛人就是李俊奎。
李俊奎一直聚焦風(fēng)控平臺的技術(shù)和架構(gòu)發(fā)展,并著手搭建了中國第一家云上的商業(yè)銀行——網(wǎng)商銀行。
在2016年雙11和新春紅包等活動中,李俊奎和他的團隊實現(xiàn)歷史性突破,即在系統(tǒng)不被降級的壓力下,控制資源消耗不超過2015財年雙11,并且很好地滿足了業(yè)務(wù)需求。
同時,李俊奎率領(lǐng)團隊實現(xiàn)了風(fēng)控系統(tǒng)的異地多活,打造出新一代的風(fēng)控體系。支付寶創(chuàng)立之初即提出“敢付敢賠”的口號,其背后的支撐就是由李俊奎及其團隊負(fù)責(zé)建設(shè)的實時風(fēng)控平臺。
李俊奎樂于知識分享,經(jīng)常在工作中對其他同學(xué)進行輔導(dǎo),深受一線工程師的尊重和認(rèn)可,被大家尊稱為“向爺”(花名:向秀)。
不久前,在支付寶 BASIC College以代碼為主題的分享活動中,李俊奎回顧了自己與代碼是如何結(jié)緣的,并對程序員職業(yè)發(fā)展談了談自己的想法?! ?/p>
一、給初入行程序員的建議
從在校學(xué)生到初入職場,首先是要過三關(guān),很重要的一關(guān)就是在工作的第一天或頭幾天,就要接觸到代碼,因為只有接觸到代碼心里才感覺是有點踏實的。
我加入公司的時候,還是相對比較簡單的,不像現(xiàn)在代碼量,公司體量已經(jīng)很大了,不管是系統(tǒng)數(shù)還是代碼數(shù)以及變更的數(shù)量都是很大的。08年的時候阿璽(螞蟻金服副CTO)帶著我們一起搭全站的系統(tǒng)環(huán)境,當(dāng)時是50多個,基本上三個人,花一上午就能夠把整個支付寶所有的環(huán)境搭起來。
剛剛加入公司的時候會有一段強烈的新鮮感時光,是來源于我們總覺得代碼其實是最重要的。我現(xiàn)在也會和很多的新同學(xué)說,新人同學(xué)進來首先是要過三關(guān),很重要的一關(guān)就是希望他在工作的第一天,就是要接觸到到代碼(如果是技術(shù)同學(xué)),能看到代碼,最好能寫代碼,因為只有接觸到代碼心里才感覺有點踏實的。
比如說你工作了幾天,代碼沒看到或系統(tǒng)也不知道,這個時候心里是不踏實的,不知道自己在干嘛,會有點失落。
我入職后的一兩個月都是覺得支付寶代碼也還好,數(shù)量還可以,但是后來就發(fā)現(xiàn)我只看到了冰山的一角。
二、如何快速成長?
在項目中成長,從我個人的經(jīng)歷來看也是這樣的,項目在你修煉自己的代碼的這種能力里面是非常重要的。
今天最想要講的就是項目中成長,我跟代碼結(jié)緣以來最主要的經(jīng)歷就是在項目中的成長。
1.要寫代碼先看代碼
支付寶的代碼分成三類:第一類代碼是寫得很好的,這個好跟不好其實是有非常重要的一個評價,就是你能否可以快速了解它,覺得它賞心悅目并且能夠快速地抓住它主要設(shè)計的精髓。
我覺得這種代碼是好的代碼。這一類代碼,很多就是在什么地方呢?
第一個就是在一些公共的庫,第二個是一些所謂的核心的系統(tǒng)。
我很長一段時間,一部分是自己參加一些項目,第二部分就是看代碼。
我認(rèn)為Code Review其實很多情況下并不是提交了代碼然后讓人來Code Review,這是一個過程。我認(rèn)為的Code Review更多的是“看代碼”,代碼有好的也有壞的。
好的就是我剛才說的一些比較核心的系統(tǒng),比較重要的庫,這些代碼能看到很多一些設(shè)計,很多的原理。新同學(xué)多看一些代碼,這對于其了解全貌很有益處。
2.考古
很多同學(xué)可能接觸到一些別人推送過來的系統(tǒng),交接過來的系統(tǒng),會發(fā)現(xiàn)文檔不一定是最好的,很多情況下就需要考古。我也考了很多的古,做每個項目之前很大一個工作其實就是要了解過往的系統(tǒng)到底是怎么運作的,或者說整個鏈路是怎么運作的,這個時候就需要去考古了。
不能說看一些PPT上面的東西就能把這個方案能夠做得非常細(xì)致,非常典型的是一些拆分類的項目或者移交過來的比較大的系統(tǒng)。這個時候你只能去看PPT那個層面,當(dāng)然這是一個惡習(xí),PPT畫得高大上無比,真正到代碼上就各種坑,各種不注意的細(xì)節(jié)。
考古我覺得是非常重要也是非常有必要的。只有把代碼基本上能夠粗略的看全,然后才真正能夠通過代碼大概了解它的運作方式,這是非常重要的。
3.不斷磨煉
第三類代碼就是說代碼跟配置其實很多情況下是分離的,這種情況下出問題可能會比較大。
我的例子就是當(dāng)時我是在做前臺業(yè)務(wù),交易核心是最重要的系統(tǒng)的服務(wù)。交易其實代碼跟它的配置是分離的,交易的代碼,如果不知道它下一步往哪里走的,就只能把代碼跟配置一起來看,甚至要調(diào)試。
這個時候,通過運行它的配置的代碼,在整個運行中看它的過程,而不是只看JAVA的代碼,實際上這個配置代表一些很重要的邏輯在里面,現(xiàn)在這樣的情況越來越多。我理解現(xiàn)在是比以前更加的難,或者說范圍更加的廣。
第三類代碼就是不斷地去做這樣的一個磨煉,我的理解就是自己在項目中做這種磨煉。
關(guān)于磨練,我這里有幾個例子是自己經(jīng)歷過的。
(1)看書
不知道大家現(xiàn)在還看不看書?我當(dāng)然是指不是看《故事會》《小人書》,而是看一些設(shè)計的書或者別人代碼的這些書,我以前參加項目的過程中,其實忙里偷閑還是要去看一些書,我看魯肅(螞蟻金服CTO)也是這樣的習(xí)慣,經(jīng)常看到魯肅拿了一堆的書自己在那里狂啃,這個確實是一個比較好的習(xí)慣。我自己的經(jīng)驗是,看書的過程中可以使大家開闊思路。
(2)單元測試
第二個我剛才說會看代碼,其實還有一部分看單元測試。當(dāng)然現(xiàn)在是在強制做,有覆蓋率的要求,單元測試是非常重要的一個環(huán)節(jié)。單元測試是相對非常小的一段,它能做一些測試、模擬,甚至說做一些演示的工作。
如果大家一味地看注釋,注釋不一定是準(zhǔn)確的,有的注釋寫得好,有的注釋寫得差,但是實際上單元測試如果它有一定的覆蓋率的話,其實在哪些邏輯不清楚的情況下,看或者寫一些單元測試對于理解系統(tǒng)運行也是非常重要的。
(3)設(shè)計的經(jīng)驗
比如SOFA框架(分布式中間件),我對新同學(xué)說,如果在試用期或?qū)嵙?xí)期,能夠把SOFA框架的整體的原理圖能夠搞清楚,它的一個依賴關(guān)系的那張圖能搞清楚,那么就抓住了SOFA的精髓。然后再去看支付寶主要的系統(tǒng)的代碼,就有據(jù)可依,這就是設(shè)計的一個好處。SOFA的框架相當(dāng)于龍骨,能看懂就會知道主要的一些代碼,核心代碼是寫在哪里的,一些主要的邏輯放在哪里的,這個很重要。
設(shè)計的第一塊是向框架去學(xué)習(xí),第二塊其實就是向他人去學(xué)習(xí)。我經(jīng)??错椖拷M其他同學(xué)的代碼,看優(yōu)秀的代碼還會做一些總結(jié)。
在項目中成長,對工程師來說是非常重要的。從我個人的經(jīng)歷來看也是這樣的,項目在自己修煉代碼能力方面是非常重要的,大概占了百分之七八十。
三、總結(jié)
最后,是我給大家的一些建議。
1.多看代碼,無論好壞,保持代碼敏感度。
代碼方面,我認(rèn)為首先要看代碼,多看代碼,因為無論如何要保持自己對代碼的敏感。大家可能經(jīng)常自己吐槽是一個碼農(nóng),天天不管需求在哪里,只管代碼碼哪里,這個肯定不是最好的方式。好代碼跟壞代碼是有本質(zhì)的差距,好代碼是體現(xiàn)了人的思想,體現(xiàn)人的設(shè)計。壞代碼,為什么看壞代碼?某種原因也是給大家一個警示,這個我們要避免。
2.寫代碼,多做總結(jié),一次比一次好。
除了經(jīng)??磩e人寫的好代碼或者考古別人的代碼,我也會經(jīng)?;剡^去看以前自己寫的代碼??吹臅r候就想,這個代碼,為什么覺得寫得好?為什么它那個地方是有一些問題的。
我相信不是所有的代碼都是好的,自己寫的代碼也不一定所有都是好的。但是自己給自己是有個評判,有的時候去看,這個地方做一下更多的抽象,或者更多地提取一些公共的一些東西,這個是非常重要的。
多做總結(jié)其實是為了讓自己一次比一次寫得少,一次比一次好,能夠避免以前的一些坑,或者說能夠避免以前的一些錯誤,這個就是一個進步。
3.寫代碼前,一些設(shè)計很重要。
寫代碼有很多種,有的是直接完全按照需求實現(xiàn),按邏輯實現(xiàn)。但我想即使這樣,如果大家要提高自己的代碼的能力或者代碼的意識,一些設(shè)計特別重要。這個設(shè)計不是要去整設(shè)計模式,整高大上的框架。很多情況下是能夠通過一些代碼,能夠把一些這種共性的東西做一些寫法的不一樣,可能都是很好的設(shè)計。但是如果只是純粹的把邏輯實現(xiàn),或者說就按照這個邏輯去這樣做,有的時候并不一定是最好的。
4.養(yǎng)成看書的習(xí)慣。
現(xiàn)在是時間碎片化非常嚴(yán)重的時代,獲取知識的渠道非常多,但是有一些經(jīng)典的書或者體系化的書,建議還是要去多看。養(yǎng)成看書的習(xí)慣,那么獲取的知識會比你看比如今日頭條或者一些網(wǎng)頁還是要來得更加的體系化。
- 為什么年輕人不愛換手機了
- 柔宇科技未履行金額近億元被曝已6個月發(fā)不出工資
- 柔宇科技被曝已6個月發(fā)不出工資 公司回應(yīng)欠薪有補償方案
- 第六座“綠動未來”環(huán)保公益圖書館落地貴州山區(qū)小學(xué)
- 窺見“新紀(jì)元”,2021元宇宙產(chǎn)業(yè)發(fā)展高峰論壇“廣州啟幕”
- 以人為本,景悅科技解讀智慧城市發(fā)展新理念
- 紐迪瑞科技/NDT賦能黑鯊4 Pro游戲手機打造全新一代屏幕壓感
- 清潔家電新老玩家市場定位清晰,攜手共進,核心技術(shù)決定未來
- 新思科技與芯耀輝在IP產(chǎn)品領(lǐng)域達成戰(zhàn)略合作伙伴關(guān)系
- 芯耀輝加速全球化部署,任命原Intel高管出任全球總裁
免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實,溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。