作者介绍:杨冠宝,花名孤尽,取自《笑傲江湖》中风清扬的“独孤九剑,破尽天下武功”之意,是《阿里巴巴Java开发手册》的主要作者。在阿里巴巴集团历任研发、架构师、技术主管等不同的角色,承担过双11、国际化、代码中心等大型项目,有着丰富的一线编程经验,目前是研发协同平台Aone代码中心负责人。乐于分享与总结,在阿里巴巴集团内部大型分享多达30余次,不懈地追求技术创新,勇于挑战技术难度,在大数据、高并发、研发效能领域均有较深的造诣。
“一个优秀的工程师和一个普通工程师的区别,不是满天飞的架构图,他的功底体现在所写的每一行代码上。”——毕玄
编者按:集团开发规约(阿里巴巴JAVA开发手册)一出,在业界有巨大反响。技术情怀如何量化?你看看或许就悟道了。
前言
技术情怀是什么?
情怀是近年的热词,可是谁也清晰地说明过情怀是什么?小生斗胆在此大放谬论,各位看官,有用且收下,无用莞而一笑就好。个人认为情怀是一种难舍难分的感情,即使风雨兼程,依然故我,坚信雨后彩虹会更美;退一步说,即使没有彩虹出现,享受追求内心梦想的历程,用阿里的武侠文化来说,情怀是行侠仗义于江湖,快意潇洒于恩仇,大江南北,侠之大者,为国为民,侠之小者,为红颜,为知己。
而技术情怀是一种匠心,但是说到底技术情怀是一个当下比较虚的词,工程师是偏向于数据驱动的群体,希望能够用数据来量化定义,能够明确符合什么特质,达到什么程度的人,才是具有技术情怀的。我抛一下个人愚见,尝试从三个维度来解读一下技术情怀,总结成三个关键词:热爱、思考、极致。热爱是一种源动力,而思考是一个过程,而极致是一个结果。如果给这三个词加一个定语,可能使技术情怀更加立体、清晰地被解读,那就是奉献式的热爱,主动式的思考,极致式的卓越。由于代码规约对于集团的影响力和渗透力比我曾经负责的美杜莎和马可波罗影响力要大一个级别,《集团开发规约》几乎是集团内开发同学人人皆知的开发规范,那么,以此为参照物,聊一下技术情怀。
奉献式的热爱
《集团开发规约》对外的名称是《阿里巴巴JAVA开发手册》正式公布已经超过一年:手册试读本对外;手册英文版走进硅谷;手册插件正式在云效公有云上线;开源插件登顶Github,成周热度排名第一开源插件,安装人次超过24万次。实际上,代码规约已进入了第三年,三年的风雨,我坚信一条:码出高效,码出质量,提升集团开发同学的研发效能,推动世界规约文化的进步。热爱,是一种兴趣,一种爱好。奉献,这种兴趣和爱好,能够惠及他人,造福社会。有时候,技术总是孤独的,我写了几千页的总结,这些总结都是深夜,周末,假期,一个人陪着自己走过来,因此,有人说我的花名是孤独的尽头,简称孤尽。人类有两个常见的毛病:患得,患失。热爱一件事情,除了热爱,不会在得失上顾虑太多。很多觉得《集团开发规约》是KPI的产物,KPI是公司目标驱动的一种机制,而内心的热爱,与这些暂时的得失又有什么关系呢?马总说除了智商,情商,还有一种叫爱商,爱家人,爱朋友,扩展一下,热爱自己的事业,这种热爱不会因为短期的质疑、否定而放弃。
经常有人问我,编写和推广《集团开发规约》如此费心费力,什么样的信念让我如此执着?从两部电影说起,《冈仁波齐》这个电影我看了三遍,我曾经去过冈仁波齐,转山的一段路是汽车呼啸而过时,尘土飞扬,可是转山的藏民,还是那样的虔诚,叩拜之后,即是满脸灰尘,但是他们的信念是内心朴实无华但是笃信的力量。陆川的电影《可可西里》印象也非常深刻,很多事情是因为信念而坚守,现实中为可可西里申遗做过巨大贡献的王欣,毕生都献给了藏羚羊的保护,长年驻守在高原雪域,他无私地付出了很多,也放弃了很多,因为信念而坚持体现出人类的伟大。忽悠是把我不相信的东西说给大家听,但是信念是把我相信的用行动传递给大家,我相信手册的愿景是码出高效,码出质量,码出未来,帮助到更多的人,推荐世界的规约文化进步,希望我们的一代开发同学,能够觉得开发是一件幸福的事情,开发是一件有创造力的事情,开发是一件能够改变世界的事情,而不是为了规范和琐碎的规则消耗巨大的能量,影响了算法效率和架构设计的优雅性。
此外,让我自己受益的是内心变得无比强大,因为知乎的有些无脑黑,有些人劝我,想开一些,不必回应,社会如此,不必过于在意,我明确地说,我很在意,《集团开发规约》是我的女朋友一样,在街头遭遇流氓调戏,非礼,不尊重,我即使知道会受伤,我也会擦身而出,奋起反击。这不是心胸狭隘,我可以放弃任何《集团开发规约》给我个人带来的利益,但是不允许各种莫名其妙的詆毁,因为内心的热爱。奉献式的热爱,这种爱是大爱,是无私的,广泛的,利他的。
主动式的思考
很多人以为,《集团开发规约》只是信息收集整理后的文档而已,代码规约的70%内容完全出自平时个人的总结和技术提炼,冰冻三尺,绝非一日之寒,展示给大家的小板凳,已经是第380多只小板凳,并且还在不断地改进中。
我很习惯去做摘记,从进入阿里第一天开始,沉淀了近2000页的笔记,分为两个文档,搜集和整理。知识快速进入搜集区,包括听到的、看到的、疑惑的,不断地去思考,不断地去总结之后,沉淀进入整理区。有一些至今没有搞清楚的知识点,在搜集区已经沉淀了多年,依然会不断地去review一下。所以,我对于知识的记忆非常清晰,因为那是不断进行主动式思考的结果。
现在《码出高效——阿里巴巴开发手册详解》正在编写中,我给作者组的指导思想是:言之有物,深入浅出。如果网络上一堆肤浅的或者学究式的干货说明,那么还需要我们来写干嘛。言之有物,物指的是有定义、推导、案例、总结。而深入浅出的深指的是能够在业界领先的深度上,把内容讲深讲透。浅指的是让一个Java白痴都能够看得懂。讲得非常生活化、轻松化,甚至是笑话。在谈到泛型地说明上,如果我们只是说前者是只能get不能add,后者只能add不能get,那么有何意义,搜索引擎敲个命令,这类解释有一堆。比如泛型的<T extends 类>与<T super 类>的区别,如何表达这种含糊的思路,需要不断地去思考,想想如何让读者在这个点上,一目了然,过目不忘。前者,我是这么举例的。好多人看过优酷剧场的《白夜追凶》吧,关宏峰追查他弟弟的悬案时,去查看被封存的证物箱,被明确告知,你只能看,不能动,当然更不可以增加一件新的证物进去,那是在伪造证据,这就是前者,只能读取,不能增加。那什么样的情形只能增加,不能读取呢?这个情景似乎更难立体地被想象出来,如果投票选举代表时,你只能往里投选票,如果即使是自己选错了代表,想从票箱里捞出来,重新投票,这可能吗?更加不可能给你读取票箱元素的机会。有人说,这只是一种生活场景,在系统设计中,很难有这样的情形。那么,我再举例说明一下,我们在填写对于主管的年度评价时,填写完毕提交时,即使填写错误,当你再次访问之前的链接时,也会告诉你:“您已经完成对主管的年度反馈,谢谢参与”,当然更加不可能让你读取到其它成员对于主管的反馈内容。
极致式的卓越
极致与卓越,似乎是一个意思,极致式的卓越,是提醒自己,如果一个人在一个无人可以比拟的高度上,要学会自我驱动,持续进步,不但卓越,还要追求个人内心极致的追求。集团开发规约在现在的高度上,很多觉得已经名声在外,但是远远不够,希望极致到大家可以感觉不到规约的存在,从无到有,要实现这目标,还需要顽强地走下去,甚至是全世界范围内,采用阿里统一的代码规范,细化到点上:
编写《集团开发规约》历时三年,时代在进步,需要进行不断地完善,持续性的完善。这个完善的过程是非常漫长的,比如最近半年内就陆续完善了8条,在现在的阶段,增加一条,都需要在项目组内进行充分的讨论,有事实根据的论证。比如,取反逻辑的问题;高并发的问题,以及最近暴露出来的日期大写YYYY的跨年问题。
前段时间《集团开发规约》书籍版发行后, 网络上闹得沸沸扬扬,殊不知,这个手册即使从电子版转成书籍版,经历了非常多轮的校对和完善,增加了设计规约。在标点符号、示例代码、字体颜色等都做了认真的校对和审核,一直处于脱销状态,马上进行第三次印刷,在第三次印刷前,又进行了20处的精确修改,希望这是一本走向卓越的小册子,是陪伴大家的床头书,地铁中翻一下神清气爽的工具书。因为卓越,所以经典,只有这样百尺竿头,才能更进一步。有人曾经留言说到这个手册与星爷的电影,我真的非常感动,我相信经典是经得起时间洗涤的。追求卓越,追求极致式的卓越,是技术情怀的核心。
新书推荐:《深入分布式缓存》
本书在天猫等电商平台有售,华章直营店购书扫码:
JD购书,扫描二维码: