支付寶程序員眼中的極致代碼和卓越程序員是什麼樣的?

「雙十一」前夕,支付寶BASIC College舉辦了一場名爲「超級Ma力大賽」的活動。這是一場只用代碼說話的競賽,共有數千名支付寶的工程師參加,程序員和程序媛們經過寫代碼、曬代碼,展示出對極致代碼的孜孜追求,並以此描摹出支付寶最強Coder的畫像——匠心、極致、傳承、創新。程序員

1.jpg

咱們採訪了分別得到卓越代碼獎、優秀代碼獎、最強CodeMan的三位支付寶程序員,聊聊在他們心中,什麼是好代碼,怎樣纔算是卓越的程序員。算法

優秀的代碼有共性

一千個讀者有一千個哈姆雷特,一千個程序員也有一千種代碼寫做方式,但好的代碼必定是有其共性所在的,三位程序員也都給出了本身的見解。安全

「優秀的代碼,在我看來就是能夠跑、能夠讀、能夠被欣賞。」這是優秀代碼獎得主入棧同窗很是體系化的歸納。架構

2.jpg

  • 「能夠跑」是對機器來講的,寫代碼最基本的目的就是告訴計算機怎麼幹活,因此代碼首先要寫對。咱們經常說的併發問題、安全問題、異常處理缺失問題等等,都是「能夠跑」這個要求上面出了問題。
  • 第二個「能夠讀」是對人來講的,畢竟代碼閱讀的次數要遠遠超過編寫的次數。一份能夠讀的代碼,即便在性能、擴展性上存在缺陷,仍是能經過較好的可讀性,被他人理解,進而解決這些問題。相反,有些代碼雖然精妙、高效,可是看不懂,受衆小,很差擴展,就容易被歷史所拋棄。
  • 第三個是「能夠被欣賞」。前兩個標準,評判角度在於功用性,「能夠被欣賞」則是從藝術性的角度。就像照片的本意是爲了記錄,但也能夠被作成藝術品,代碼也同樣。優秀的代碼讀起來,主次分明、層次清晰、賞心悅目,就和看小說同樣,能看到代碼做者背後對領域問題求解的思考,看到對風險的重視,看到精雕細琢的痕跡。

而在卓越代碼獎得到者櫻桃同窗看來,若是隻能用三個詞來歸納優秀的代碼,首先應該是正確,其次是可讀,最後纔是性能併發

3.jpg

正確必定是排在最優先的位置,由於不正確的代碼達不成功能最後毫無心義。代碼首先是給人讀的,而後纔是給機器讀的,可讀性對保證他人理解、項目的長期維護性上影響最大,並且可讀的代碼一般會是簡潔、優雅的。最後纔是性能,性能跟業務是伴生關係,前期代碼性能相對來講不會過重要。工具

摘得最強CoderMan稱號的連明同窗給出的歸納則是「可讀性、高穩定性和優雅性」。除了入棧和櫻桃都提到的可讀和優雅之外,連明補充了一個高穩定性的特色。性能

4.jpg

在他看來,穩定性是相對可貴的一個代碼特性,由於除了實現功能之外,穩定性還意味着在技術風險方面的考慮,以及當下的穩定性和將來業務迅猛擴展時可否保持穩定性的考慮。學習

代碼可讀、正確、穩定、簡潔優雅,這是支付寶程序員們對優秀代碼所下的定義。spa

師兄領進門,修行在我的

工程師文化意味着什麼?也許「Open」和「Share」兩個詞能夠略做解釋。支付寶BASIC College一直有一個「師兄文化」,許多技術同窗的第一本「入門教程」 就是師兄的代碼,在師兄的傳幫帶之下,支付寶的技術同窗不斷提高着本身的技術實力。插件

入棧直到今天仍對本身的師兄功玉有着深入的印象:

我如今寫代碼的嚴謹態度,有很大一部分就是當年師兄帶我時培養起來的。我記得,有一次咱們和組內其餘一些同窗討論,在作vo、bo、do的轉換時,是使用Apache Beanutils好,仍是直接手寫getter、setter更好,一塊白板討論了半個下午,性能、缺陷、給後人留坑等各類問題都考慮到了,最後的結論是直接手寫會更好。這與後來集團推出的《阿里巴巴Java開發手冊》不謀而合。

相似的故事也在連明身上發生過。初入行的連明第一次開發第一個迭代版本,完成後給師兄Review,師兄只提了兩點:寫代碼前有沒有裝支付寶的代碼格式化插件工具;單測、代碼安全掃描有沒有打開。而後連明就懵了,後來他才明白,前者表明的是代碼格式、規約,這些對於生產而言很重要。後者更容易被技術同窗所忽視,魔鬼存在於細節中,若是連這些都作很差,師兄也沒有繼續作Review的必要。

櫻桃所在的團隊是一個新組建的團隊,他雖然沒有經歷過師兄的傳幫帶,但對此也有本身的一番理解。

國內計算機專業存在一個很大的缺失,就是沒有培養出大公司所需的、開發能力符合要求的程序員。大公司須要不少可以寫出架構合理、實現健壯、代碼可讀的人才,代碼比賽也好、師兄文化也好,都是在填補一個鴻溝,從大學到公司之間作一個引導,工程師要有紮實的基本功,才能彙集在一塊兒作大規模的軟件工程。

支付寶的師兄給技術同窗上了入行的第一課,播種下了匠心與傳承的種子,一代又一代支付寶技術人努力地在各自的崗位上持續追求着極致與創新,這就是支付寶的Code文化。

狂奔在追求卓越的代碼路上

櫻桃是清華畢業的博士,「我開始寫生產線上的代碼也就半年多時間」他說。

參加此次超級Ma力大賽之後,他以爲對於本身的代碼價值觀有了很好的引導做用。做爲一個既是一線開發者又是半個Manager的技術人,他眼裏的優秀的程序員形象必須具有獨立思考能力,可以獨立解決一個問題,能夠完美Cover從需求分析、設計到落地的全過程。

入行三年多的連明,此次得到了「最強CoderMan」殊榮,但他表示,本身不敢說最強,可是有朝着最強前進的追求。在他看來,支付寶優秀的程序員都有一些共性:

  • 匠心。一個好的程序員就是一個好的工匠,不論是工做仍是交流,都精益求精,永不知足,具有耐心和專業的態度。
  • 傳承。好的程序員應該是一個Master,不只本身很強,並且能夠帶動他人。
  • 創新。不多人能真正作到創新,連明也但願本身可以用一個創新的想法和思路解決支付寶業務上的痛點,讓技術驅動業務增加。

但他認爲,態度是首要的,沒有態度支撐,這一切將毫無心義。

入棧總結了三種優秀程序員的類型:一類是實現型,實現功能既快又好;一類是架構型,拿到需求能快速抓住核心,提出解決方案;一類是創造型,可以發現問題,提出創新的策略、算法以解決現存問題。「我目前仍是努力成爲一個架構型程序員」,謙虛的他這麼說。

提到怎麼時刻保持本身的技術實力不斷提高時,三位也分別給出了本身的見解:

  • 櫻桃表示本身大學時缺失的是對軟件工程能力的培養,經過自學讀了兩本好書《可讀代碼的藝術》和《代碼大全》,學會了如何寫可讀代碼、如何去設計軟件。
  • 入棧則會在廣度和深度上下功夫。廣度上時刻關注領域技術文章,碎片時間看看Hacker News、Reddit的programming頻道;深度上參與大型項目與牛x的10倍程序員一塊兒共事,學習、提高本身,他提到,在財富技術部這個平臺,他參與了一系列大型項目,接觸了不少大牛,感到十分幸運。
  • 連明很感謝金融核心平臺部這個平臺,讓他有機會一進來就負責比較核心的系統,從瞭解一個系統,到了解其承載的業務,再到整條線的系統、架構,讓他學到了不少東西。

其實對於支付寶技術人而言,初心就是作到代碼的匠心、極致、傳承和卓越,經過技術實力來回饋業務,保證業務的穩定與增加。

敬畏每一行代碼,時刻爲之保持思考,支付寶的技術同窗們狂奔在追求卓越代碼的路上。

相關文章
相關標籤/搜索