支付宝程序员眼中的极致代码和卓越程序员是什么样的?

“双十一”前夕,支付宝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倍程序员一块儿共事,学习、提高本身,他提到,在财富技术部这个平台,他参与了一系列大型项目,接触了不少大牛,感到十分幸运。
  • 连明很感谢金融核心平台部这个平台,让他有机会一进来就负责比较核心的系统,从了解一个系统,到了解其承载的业务,再到整条线的系统、架构,让他学到了不少东西。

其实对于支付宝技术人而言,初心就是作到代码的匠心、极致、传承和卓越,经过技术实力来回馈业务,保证业务的稳定与增加。

敬畏每一行代码,时刻为之保持思考,支付宝的技术同窗们狂奔在追求卓越代码的路上。

相关文章
相关标签/搜索