支付宝程序员眼中的极致代码和卓越程序员是什么样的?
“雙十一”前夕,支付寶BASIC College舉辦了一場名為“超級Ma力大賽”的活動。這是一場只用代碼說話的競賽,共有數千名支付寶的工程師參加,程序員和程序媛們通過寫代碼、曬代碼,展現出對極致代碼的孜孜追求,并以此描摹出支付寶最強Coder的畫像——匠心、極致、傳承、創新。
?
我們采訪了分別獲得卓越代碼獎、優秀代碼獎、最強CodeMan的三位支付寶程序員,聊聊在他們心中,什么是好代碼,怎樣才算是卓越的程序員。
優秀的代碼有共性
一千個讀者有一千個哈姆雷特,一千個程序員也有一千種代碼寫作方式,但好的代碼一定是有其共性所在的,三位程序員也都給出了自己的看法。
“優秀的代碼,在我看來就是可以跑、可以讀、可以被欣賞。”這是優秀代碼獎得主入棧同學非常體系化的概括。
?
- “可以跑”是對機器來說的,寫代碼最基本的目的就是告訴計算機怎么干活,所以代碼首先要寫對。我們常常說的并發問題、安全問題、異常處理缺失問題等等,都是“可以跑”這個要求上面出了問題。
- 第二個“可以讀”是對人來說的,畢竟代碼閱讀的次數要遠遠超過編寫的次數。一份可以讀的代碼,即使在性能、擴展性上存在缺陷,還是能通過較好的可讀性,被他人理解,進而解決這些問題。相反,有些代碼雖然精妙、高效,但是看不懂,受眾小,不好擴展,就容易被歷史所拋棄。
- 第三個是“可以被欣賞”。前兩個標準,評判角度在于功用性,“可以被欣賞”則是從藝術性的角度。就像照片的本意是為了記錄,但也可以被做成藝術品,代碼也一樣。優秀的代碼讀起來,主次分明、層次清晰、賞心悅目,就和看小說一樣,能看到代碼作者背后對領域問題求解的思考,看到對風險的重視,看到精雕細琢的痕跡。
而在卓越代碼獎獲得者櫻桃同學看來,如果只能用三個詞來概括優秀的代碼,首先應該是正確,其次是可讀,最后才是性能。
?
正確一定是排在最優先的位置,因為不正確的代碼達不成功能最后毫無意義。代碼首先是給人讀的,然后才是給機器讀的,可讀性對保證他人理解、項目的長期維護性上影響最大,而且可讀的代碼通常會是簡潔、優雅的。最后才是性能,性能跟業務是伴生關系,前期代碼性能相對來說不會太重要。
摘得最強CoderMan稱號的連明同學給出的概括則是“可讀性、高穩定性和優雅性”。除了入棧和櫻桃都提到的可讀和優雅以外,連明補充了一個高穩定性的特點。
?
在他看來,穩定性是相對難得的一個代碼特性,因為除了實現功能以外,穩定性還意味著在技術風險方面的考慮,以及當下的穩定性和未來業務迅猛擴展時能否保持穩定性的考慮。
代碼可讀、正確、穩定、簡潔優雅,這是支付寶程序員們對優秀代碼所下的定義。
師兄領進門,修行在個人
工程師文化意味著什么?也許“Open”和“Share”兩個詞可以略作解釋。支付寶BASIC College一直有一個“師兄文化”,許多技術同學的第一本“入門教程” 就是師兄的代碼,在師兄的傳幫帶之下,支付寶的技術同學不斷提升著自己的技術實力。
入棧直到今天仍對自己的師兄功玉有著深刻的印象:
我現在寫代碼的嚴謹態度,有很大一部分就是當年師兄帶我時培養起來的。我記得,有一次我們和組內其他一些同學討論,在做vo、bo、do的轉換時,是使用Apache Beanutils好,還是直接手寫getter、setter更好,一塊白板討論了半個下午,性能、缺陷、給后人留坑等各種問題都考慮到了,最后的結論是直接手寫會更好。這與后來集團推出的《阿里巴巴Java開發手冊》不謀而合。
類似的故事也在連明身上發生過。初入行的連明第一次開發第一個迭代版本,完成后給師兄Review,師兄只提了兩點:寫代碼前有沒有裝支付寶的代碼格式化插件工具;單測、代碼安全掃描有沒有打開。然后連明就懵了,后來他才明白,前者代表的是代碼格式、規約,這些對于生產而言很重要。后者更容易被技術同學所忽視,魔鬼存在于細節中,如果連這些都做不好,師兄也沒有繼續做Review的必要。
如果大家對C/C++感興趣的話,可以加一下我們的學習交流Q群:637 ?935 ?295,免費領取一套學習資料和視頻課程喲~
?
櫻桃所在的團隊是一個新組建的團隊,他雖然沒有經歷過師兄的傳幫帶,但對此也有自己的一番理解。
國內計算機專業存在一個很大的缺失,就是沒有培養出大公司所需的、開發能力符合要求的程序員。大公司需要很多能夠寫出架構合理、實現健壯、代碼可讀的人才,代碼比賽也好、師兄文化也好,都是在填補一個鴻溝,從大學到公司之間做一個引導,工程師要有扎實的基本功,才能聚集在一起做大規模的軟件工程。
支付寶的師兄給技術同學上了入行的第一課,播種下了匠心與傳承的種子,一代又一代支付寶技術人努力地在各自的崗位上持續追求著極致與創新,這就是支付寶的Code文化。
狂奔在追求卓越的代碼路上
櫻桃是清華畢業的博士,“我開始寫生產線上的代碼也就半年多時間”他說。
參加這次超級Ma力大賽以后,他覺得對于自己的代碼價值觀有了很好的引導作用。作為一個既是一線開發者又是半個Manager的技術人,他眼里的優秀的程序員形象必須具備獨立思考能力,能夠獨立解決一個問題,可以完美Cover從需求分析、設計到落地的全過程。
入行三年多的連明,這次獲得了“最強CoderMan”殊榮,但他表示,自己不敢說最強,但是有朝著最強前進的追求。在他看來,支付寶優秀的程序員都有一些共性:
- 匠心。一個好的程序員就是一個好的工匠,不管是工作還是交流,都精益求精,永不滿足,具備耐心和專業的態度。
- 傳承。好的程序員應該是一個Master,不僅自己很強,而且可以帶動他人。
- 創新。很少人能真正做到創新,連明也希望自己能夠用一個創新的想法和思路解決支付寶業務上的痛點,讓技術驅動業務增長。
但他認為,態度是首要的,沒有態度支撐,這一切將毫無意義。
入棧總結了三種優秀程序員的類型:一類是實現型,實現功能既快又好;一類是架構型,拿到需求能快速抓住核心,提出解決方案;一類是創造型,能夠發現問題,提出創新的策略、算法以解決現存問題。“我目前還是努力成為一個架構型程序員”,謙虛的他這么說。
提到怎么時刻保持自己的技術實力不斷提升時,三位也分別給出了自己的看法:
- 櫻桃表示自己大學時缺失的是對軟件工程能力的培養,通過自學讀了兩本好書《可讀代碼的藝術》和《代碼大全》,學會了如何寫可讀代碼、如何去設計軟件。
- 入棧則會在廣度和深度上下功夫。廣度上時刻關注領域技術文章,碎片時間看看Hacker News、Reddit的programming頻道;深度上參與大型項目與牛x的10倍程序員一起共事,學習、提升自己,他提到,在財富技術部這個平臺,他參與了一系列大型項目,接觸了很多大牛,感到十分幸運。
- 連明很感謝金融核心平臺部這個平臺,讓他有機會一進來就負責比較核心的系統,從了解一個系統,到了解其承載的業務,再到整條線的系統、架構,讓他學到了很多東西。
其實對于支付寶技術人而言,初心就是做到代碼的匠心、極致、傳承和卓越,通過技術實力來回饋業務,保證業務的穩定與增長。
敬畏每一行代碼,時刻為之保持思考,支付寶的技術同學們狂奔在追求卓越代碼的路上。
總結
以上是生活随笔為你收集整理的支付宝程序员眼中的极致代码和卓越程序员是什么样的?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科大星云诗社动态20210824
- 下一篇: 找一个程序员当男朋友是什么样的体验?