QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

从校招生到核心架构师,支付宝研究员李俊奎谈如何成为一名优秀的程序员

  • 2019-10-18
  • 本文字数:3286 字

    阅读完需:约 11 分钟

从校招生到核心架构师,支付宝研究员李俊奎谈如何成为一名优秀的程序员

校招进入支付宝,11 年时间,从一线工程师成长为支付宝安全核心架构师,这个技术牛人就是李俊奎。


李俊奎一直聚焦风控平台的技术和架构发展,并着手搭建了中国第一家云上的商业银行——网商银行。


在 2016 年双 11 和新春红包等活动中,李俊奎和他的团队实现历史性突破,即在系统不被降级的压力下,控制资源消耗不超过 2015 财年双 11,并且很好地满足了业务需求。


同时,李俊奎率领团队实现了风控系统的异地多活,打造出新一代的风控体系。支付宝创立之初即提出“敢付敢赔”的口号,其背后的支撑就是由李俊奎及其团队负责建设的实时风控平台。


李俊奎乐于知识分享,经常在工作中对其他同学进行辅导,深受一线工程师的尊重和认可,被大家尊称为“向爷”(花名:向秀)。


不久前,在支付宝 BASIC College 以代码为主题的分享活动中,李俊奎回顾了自己与代码是如何结缘的,并对程序员职业发展谈了谈自己的想法。

给初入行程序员的建议

从在校学生到初入职场,首先是要过三关,很重要的一关就是在工作的第一天或头几天,就要接触到代码,因为只有接触到代码心里才感觉是有点踏实的。


我加入公司的时候,还是相对比较简单的,不像现在代码量,公司体量已经很大了,不管是系统数还是代码数以及变更的数量都是很大的。08 年的时候阿玺(蚂蚁金服副 CTO)带着我们一起搭全站的系统环境,当时是 50 多个,基本上三个人,花一上午就能够把整个支付宝所有的环境搭起来。


刚刚加入公司的时候会有一段强烈的新鲜感时光,是来源于我们总觉得代码其实是最重要的。我现在也会和很多的新同学说,新人同学进来首先是要过三关,很重要的一关就是希望他在工作的第一天,就是要接触到到代码(如果是技术同学),能看到代码,最好能写代码,因为只有接触到代码心里才感觉有点踏实的。


比如说你工作了几天,代码没看到或系统也不知道,这个时候心里是不踏实的,不知道自己在干嘛,会有点失落。


我入职后的一两个月都是觉得支付宝代码也还好,数量还可以,但是后来就发现我只看到了冰山的一角。

如何快速成长?

在项目中成长,从我个人的经历来看也是这样的,项目在你修炼自己的代码的这种能力里面是非常重要的。


今天最想要讲的就是项目中成长,我跟代码结缘以来最主要的经历就是在项目中的成长。

要写代码先看代码

支付宝的代码分成三类:第一类代码是写得很好的,这个好跟不好其实是有非常重要的一个评价,就是你能否可以快速了解它,觉得它赏心悦目并且能够快速地抓住它主要设计的精髓。


我觉得这种代码是好的代码。这一类代码,很多就是在什么地方呢?


第一个就是在一些公共的库,第二个是一些所谓的核心的系统。


我很长一段时间,一部分是自己参加一些项目,第二部分就是看代码。


我认为 Code Review 其实很多情况下并不是提交了代码然后让人来 Code Review,这是一个过程。我认为的 Code Review 更多的是“看代码”,代码有好的也有坏的。


好的就是我刚才说的一些比较核心的系统,比较重要的库,这些代码能看到很多一些设计,很多的原理。新同学多看一些代码,这对于其了解全貌很有益处。

### 考古

很多同学可能接触到一些别人推送过来的系统,交接过来的系统,会发现文档不一定是最好的,很多情况下就需要考古。我也考了很多的古,做每个项目之前很大一个工作其实就是要了解过往的系统到底是怎么运作的,或者说整个链路是怎么运作的,这个时候就需要去考古了。


不能说看一些 PPT 上面的东西就能把这个方案能够做得非常细致,非常典型的是一些拆分类的项目或者移交过来的比较大的系统。这个时候你只能去看 PPT 那个层面,当然这是一个恶习,PPT 画得高大上无比,真正到代码上就各种坑,各种不注意的细节。


考古我觉得是非常重要也是非常有必要的。只有把代码基本上能够粗略的看全,然后才真正能够通过代码大概了解它的运作方式,这是非常重要的。

不断磨炼

第三类代码就是说代码跟配置其实很多情况下是分离的,这种情况下出问题可能会比较大。


我的例子就是当时我是在做前台业务,交易核心是最重要的系统的服务。交易其实代码跟它的配置是分离的,交易的代码,如果不知道它下一步往哪里走的,就只能把代码跟配置一起来看,甚至要调试。


这个时候,通过运行它的配置的代码,在整个运行中看它的过程,而不是只看 JAVA 的代码,实际上这个配置代表一些很重要的逻辑在里面,现在这样的情况越来越多。我理解现在是比以前更加的难,或者说范围更加的广。


第三类代码就是不断地去做这样的一个磨炼,我的理解就是自己在项目中做这种磨炼。


关于磨练,我这里有几个例子是自己经历过的。

1. 看书

不知道大家现在还看不看书?我当然是指不是看《故事会》《小人书》,而是看一些设计的书或者别人代码的这些书,我以前参加项目的过程中,其实忙里偷闲还是要去看一些书,我看鲁肃(蚂蚁金服 CTO)也是这样的习惯,经常看到鲁肃拿了一堆的书自己在那里狂啃,这个确实是一个比较好的习惯。我自己的经验是,看书的过程中可以使大家开阔思路。

2. 单元测试

第二个我刚才说会看代码,其实还有一部分看单元测试。当然现在是在强制做,有覆盖率的要求,单元测 #### 试是非常重要的一个环节。单元测试是相对非常小的一段,它能做一些测试、模拟,甚至说做一些演示的工作。


如果大家一味地看注释,注释不一定是准确的,有的注释写得好,有的注释写得差,但是实际上单元测试如果它有一定的覆盖率的话,其实在哪些逻辑不清楚的情况下,看或者写一些单元测试对于理解系统运行也是非常重要的。

3. 设计的经验

比如 SOFA 框架(分布式中间件),我对新同学说,如果在试用期或实习期,能够把 SOFA 框架的整体的原理图能够搞清楚,它的一个依赖关系的那张图能搞清楚,那么就抓住了 SOFA 的精髓。然后再去看支付宝主要的系统的代码,就有据可依,这就是设计的一个好处。SOFA 的框架相当于龙骨,能看懂就会知道主要的一些代码,核心代码是写在哪里的,一些主要的逻辑放在哪里的,这个很重要。


设计的第一块是向框架去学习,第二块其实就是向他人去学习。我经常看项目组其他同学的代码,看优秀的代码还会做一些总结。


在项目中成长,对工程师来说是非常重要的。从我个人的经历来看也是这样的,项目在自己修炼代码能力方面是非常重要的,大概占了百分之七八十。

总结

最后,是我给大家的一些建议。

1. 多看代码,无论好坏,保持代码敏感度。

代码方面,我认为首先要看代码,多看代码,因为无论如何要保持自己对代码的敏感。大家可能经常自己吐槽是一个码农,天天不管需求在哪里,只管代码码哪里,这个肯定不是最好的方式。好代码跟坏代码是有本质的差距,好代码是体现了人的思想,体现人的设计。坏代码,为什么看坏代码?某种原因也是给大家一个警示,这个我们要避免。

2.写代码,多做总结,一次比一次好。

除了经常看别人写的好代码或者考古别人的代码,我也会经常回过去看以前自己写的代码。看的时候就想,这个代码,为什么觉得写得好?为什么它那个地方是有一些问题的。


我相信不是所有的代码都是好的,自己写的代码也不一定所有都是好的。但是自己给自己是有个评判,有的时候去看,这个地方做一下更多的抽象,或者更多地提取一些公共的一些东西,这个是非常重要的。


多做总结其实是为了让自己一次比一次写得少,一次比一次好,能够避免以前的一些坑,或者说能够避免以前的一些错误,这个就是一个进步。

3.写代码前,一些设计很重要。

写代码有很多种,有的是直接完全按照需求实现,按逻辑实现。但我想即使这样,如果大家要提高自己的代码的能力或者代码的意识,一些设计特别重要。这个设计不是要去整设计模式,整高大上的框架。很多情况下是能够通过一些代码,能够把一些这种共性的东西做一些写法的不一样,可能都是很好的设计。但是如果只是纯粹的把逻辑实现,或者说就按照这个逻辑去这样做,有的时候并不一定是最好的。

4.养成看书的习惯。

现在是时间碎片化非常严重的时代,获取知识的渠道非常多,但是有一些经典的书或者体系化的书,建议还是要去多看。养成看书的习惯,那么获取的知识会比你看比如今日头条或者一些网页还是要来得更加的体系化。


本文转载自公众号蚂蚁金服科技(ID:Ant-Techfin)。


原文链接:


https://mp.weixin.qq.com/s/twkykXzsHcdk_2fa5xNvjQ


2019-10-18 18:201156

评论

发布
暂无评论
发现更多内容

券商龙头借助PowerAgent实现大模型落地成本与效率平衡

中关村科金

人工智能 落地大模型应用 大模型应用开发

信创CPU是什么意思?有哪些品牌?用哪个好?

行云管家

软件 信创

防范AI换脸诈骗,芯盾时代有办法

芯盾时代

人工智能 金融 反欺诈 账户安全

OpenSearch LLM智能问答版全新升级

阿里云大数据AI技术

人工智能 阿里云 开源 LLM

OpenAI发布会最新消息!ChatGPT新功能发布!

蓉蓉

openai ChatGPT GPT-4

阿里巴巴搜索API返回值解析:电商精准搜索的关键

技术冰糖葫芦

API boy API 接口 API 文档 pinduoduo API

Pencils Protocol Season 2 收官在即,展望Season 3 及其权益

BlockChain先知

宝尊将于2024年5月28日发布2024年一季度未经审计财务业绩

财见

聊聊MySQL是如何处理排序的

华为云开发者联盟

MySQL 华为云 华为云开发者联盟 企业号2024年5月PK榜

有隙可乘 - Android 序列化漏洞分析实战

vivo互联网技术

Android序列化漏洞 Parcel不匹配 startAnyWhere FileProvider

名企专家私教服务,让你的职业生涯扶摇直上 !

霍格沃兹测试开发学社

对话 Databend Labs 联合创始人王吟:大模型浪潮里,云数仓是宠儿 | 极新企服直播实录

Databend

数据库

Galxe已投资Pencils Protocol,投资者阵营正不断扩大

股市老人

企业指标设计方法:构建高效指标体系

袋鼠云数栈

指标体系 指标 指标平台 指标建设 指标设计

QCN6274 and QCN6024: RF module CPU performance comparison analysis

wifi6-yiyi

qcn6274

Pencils Protocol Season 2 收官在即,展望Season 3 及其权益

西柚子

Pencils Protocol Season 2 收官在即,新系列有哪些重磅权益呢?

股市老人

聚道云一键打通金蝶宁波银行,财务效率暴涨10倍!

聚道云软件连接器

案例分享

从校招生到核心架构师,支付宝研究员李俊奎谈如何成为一名优秀的程序员_文化 & 方法_Geek_cb7643_InfoQ精选文章