《阿里巴巴Java开发手册》发布一周年!你不知道的背后故事!

摘要: 今天是2月9日,也是《阿里巴巴Java开发手册》(下称《手册》)对外正式发布一周年的日子。在过去的300多个日子里,这本小小的手册在业界产生了巨大的影响力。值此一周年之际,我们不妨一道围炉煮酒,倾听《手册》的主要推动者——孤尽首次讲述规约背后的故事。

点此查看原文:http://click.aliyun.com/m/42018/

导读:今天是2月9日,也是《阿里巴巴Java开发手册》(下称《手册》)对外正式发布一周年的日子。在过去的300多个日子里,这本小小的手册在业界产生了巨大的影响力。值此一周年之际,我们不妨一道围炉煮酒,倾听《手册》的主要推动者——孤尽首次讲述规约背后的故事。


孤尽

Q:为什么当初会想去做这样一本手册,初心是什么呢?

大家好,很高兴今天能与大家一起交流。要回答这个问题,我想用个例子来解释。

原始社会的争端,更多的是讲究个人的蛮力;三国时代的群雄并起,开始讲究士兵的团队默契;到了现代战争,海陆空、信息兵、工程兵,无不需要紧密配合。软件发展至今,只是靠一句hello world走天下的时代,已经过去了,我们需要团队紧密协作。

代码规约是一种文化软实力,关系着互联网公司规模化生产效率,从这点上讲就是要提升研发效率,提升代码质量。在规约出现之前,一片混沌,如表达删除状态的字段名,非常多,像:delete, delete_flag, is_delete, is_deleted,在数据分析时,总要小心翼翼,像文字游戏。而0/1还是y/n来表示已删除和未删除,更是神坑,极易造成线上问题。再如,批量接口定义时,没有接口保护很容易造成服务提供方内存耗尽,产生OOM等等。

所以,我们的初心是码出高效,码出质量。码是名词,也是动词,希望规约能够提升整个社会的研发协作效率,提升系统质量,提升我们广大程序员编程的幸福感。

Q:手册发布后,受到许多工程师的认可与支持。可以分享一些数据吗?

这本手册的影响力,确实出乎我们所有人的意料之外。据不完全统计,手册推出一周年,影响了全球范围内逾160万人,插件安装数23万+,《手册》纸质版一个月连续增印两次,一直处于热销状态;插件开源不到4个月,已经超过7300star,曾达到周热度排名世界第一;手册插件正式在云效公有云上线;英文版也在海外发布,引起业界广泛关注。

在此期间,业界同仁为我们提供了许多宝贵的建议,在此也非常感谢大家的支持与厚爱。

Q:对于一路陪伴它成长起来的你来说,你觉得最大的挑战是什么?

挑战的主要来源是程序员内心的天马行空和自身价值的不可替代性。

程序员都是天生幻想创造个性化作品的艺术家,变着法子想着要如何与众不同,最好代码只有自己能够看懂,只有自己能够维护。内心深处个人至上的不可替代性,是一个深层次的潜意识抵抗,是最大的阻力来源,没有足够的意识为了遵守团队的代码风格去委屈自己。

但是个性化应尽量表现在代码质量和算法效率的提升上,而不是对于合作规范上纠缠不休的争论。再者,公司是请程序员来产出实际价值的,而不是经常消耗时间为TAB还是空格的事情争得脸红脖子粗的。有时候,就是一个规定,就像交规靠左行,还是右行一样,大家这么做了,协作效率自然就提升了,正所谓无规矩不成方圆,无规范难以协作。

Q:今年手册推出了实体书,怎么会有这样的想法呢?


其实,实体书的推出并非计划之内。在2017年杭州云栖大会,为了方便现场做规约挑战赛,我们精心准备了800本试读本,把网络上公开发布的电子版制订成薄薄的册子,结果现场受到很多童鞋的喜欢,甚至有人愿意出钱收购。

后来我们意识到,尽管有电子版,同学们还是希望能够有实物可以在纸上记录自己的学习心得,在地铁、公交、火车上的碎片化时间内也可以随手翻翻,所以我们把尺寸极大缩小,制订成册,并且独家发布了《设计规约》部分。

为了把实体手册做好,我们做了反复校对,在标点符号、示例代码、字体颜色等都做了认真的审核。到第三次印刷时,也进行了20处的精细修改,我们希望这是一本走向卓越的小册子,是陪伴大家的床头书、工具书。

Q:这本书推出后,你也承担起了“布道者”的角色,带着它和业界童鞋积极交流。可以分享一下你遇到的人或故事吗?

是的,我们非常欣喜地看到,手册受到了广泛的关注和支持,大家都希望它变得更好。苏州微软的一个同学提及错误的示例代码,是关于延迟初始化的问题,我们反复论证,发现《手册》的命名是存在问题,所以在第三次印刷中,我们进行了修改。

另外,也有人觉得设计规约过分量化了。事实上,如果描述为“原则上”,或者说写一个非常宽泛的区间,指导意义也很弱,干脆就写成具体的数字,当然具体的数字,也是从无数的设计案例中抽象出来的。

前段时间有读者问我如何理解<? extends T>和<? super T>的区别,我是这么举例的。好多人看过优酷剧场的《白夜追凶》吧,关宏峰追查他弟弟的悬案时,去查看被封存的证物箱,被明确告知,你只能看,不能动,当然更不可以增加一件新的证物进去,那是在伪造证据,这就是前者,只能读取,不能增加。

那<? super T>在什么样的情况下只能增加,不能读取呢?这个场景似乎更难立体地被想象出来。比如,投票选举代表时,你只能往里投选票。如果自己选错了代表,想从票箱里捞出来,重新投票,这可能吗?更加不可能给你读取票箱元素的机会。有人说,这只是一种生活场景,在系统设计中,很难有这样的情形。那么,我再举例说明一下,我们在填写对于主管的年度评价时,填写完毕提交后,即使填写错误,当你再次访问之前的链接时,也会告诉你:“您已经完成对主管的年度反馈,谢谢参与”,当然更加不可能让你读取到其它成员对于主管的反馈内容。

Q:未来,《手册》还会给大家带来哪些惊喜,可否提前透露一下?

《码出高效——阿里巴巴开发手册详解》即将出版,此书将详细说明规约的初衷和意义、编写和推广历程,每个条目背后的思考与详细的示例代码,以及相应的故障案例分析。当前基本完成了三章的编写,我们希望这本书是深入浅出、言之有物,从实践中来,走向理论,再走向指导实践。

言之有物,物指的是有定义、推导、案例、总结。而深入浅出的深指的是能够在业界领先的深度上,把内容讲深讲透,浅指的是让一个Java初学者都能够看得懂。


Q:情怀,这似乎是一个非常虚的词。但我却听到许多人,用“情怀”来评价这本书。在你眼里,情怀是什么呢?

经常有人问我,编写和推广《手册》如此费心费力,是什么样的信念让我如此执着?

我想说一个自己经历的事:我很喜欢电影《冈仁波齐》,也去过冈仁波齐。转山的那段路,汽车呼啸而过,尘土飞扬,可是转山的藏民,还是那样的虔诚,叩拜之后,即使满脸灰尘,他们的信念依然朴实而笃信。陆川的电影《可可西里》也是,很多事情是因为信念而坚守,现实中为可可西里申遗做过巨大贡献的王欣,毕生都献给了藏羚羊的保护,长年驻守在高原雪域,他无私地付出了很多,也放弃了很多,因为信念而坚持体现出人类的伟大,信念就是一种情怀。


情怀,如果用武侠文化来说,是行侠仗义于江湖,快意潇洒于恩仇,大江南北,侠之大者,为国为民;侠之小者,为红颜,为知己。而技术情怀是什么?它是一种匠心;是追求一年又一年双11业务背后的技术突破,拓展商业边界;是解决问题后客户的认可。

说到底,技术情怀是一个比较虚的词,工程师是偏向于数据驱动的群体,希望能够用数据来量化定义,能够明确符合什么特质,达到什么程度的人,才是具有技术情怀的。我抛一下个人愚见,尝试从三个维度来解读一下技术情怀:热爱、思考、卓越。热爱是一种源动力,而思考是一个过程,而卓越是一个结果。如果给这三个词加一个定语,使技术情怀更加立体、清晰地被解读,那就是奉献式的热爱,主动式的思考,极致式的卓越。

Q:冰冻三尺,绝非一日之寒。这本手册虽小,却是众多工程师平日一点一滴的积累而成。在你平常的工作里,有哪些一直保持的良好编码习惯,可以分享给大家吗?

我很习惯去做摘记,从进入阿里第一天开始,沉淀了近2000页的笔记,分为两个文档,搜集和整理。我会让知识快速进入搜集区,包括听到的、看到的、疑惑的,不断地去思考,不断地去总结之后,将它们沉淀进入整理区。有一些至今没有搞清楚的知识点,在搜集区已经沉淀了多年,依然会不断地去review一下。所以,我对于知识的记忆非常清晰,因为那是不断进行总结、思考、沉淀的结果。

编码的过程也是一种艺术的演绎,对于设计七大原则和架构设计理念的理解,需要充分融入到代码体系中,使代码有灵感,有活力,有创造力。软件设计是一个不断学习,不断实践,不断参悟的反复过程,这个过程可能比较辛苦,也容易缺氧,这个时候,多和身边的良师益友沟通,或许会有“听君一席话,胜读十年书”的感受。

Q:最后还有什么话,想和大家分享?

忽悠是把我不相信的东西说给大家听,而信念是把我相信的用行动传递给大家。我相信手册的愿景是码出高效,码出质量,码出未来,帮助到更多的人。希望我们开发同学,能够觉得开发是一件幸福的事情,开发是一件有创造力的事情,开发是一件能够改变世界的事情,而不是为了争论不休的规范,影响了算法效率和架构设计的优雅性。

扫码获取更多资讯:


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/522682.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谁不喜欢《长安十二时辰》? | Alfred数据室

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | AlfredWu来源 | Alfred数据室最近&#xff0c;悄悄上线的《长安十二时辰》在朋友圈被吹爆了&#xff1a;年度最佳古装剧、服道化精致、电影质感、良心剧等赞美的声音不绝于耳。该剧首播时在豆瓣拿到了8.8的高分&#xff0c;但…

SpringBoot集成Flowable_Jsite已发任务菜单报500

JSite 快速开发框架&#xff0c;内置Flowable工作流引擎 五大基础模块 前后端基础代码自动生成 权限精确控制。 说明&#xff1a;此版本我已经调通&#xff0c;最新版本正在更新&#xff0c;页面未处理好&#xff0c;因此采用历史版本。 文章目录一、部门经理流转1. 登录dep…

linux按日期备份mysql,在Linux、Windows上如何按日期逻辑备份数据库

在逻辑备份数据库时&#xff0c;用户可能会希望在dmp文件中加入日期变量&#xff0c;以区分不同日期的备份文件&#xff0c;并且可以防止意外的覆盖。参考了eagle在逻辑备份数据库时&#xff0c;用户可能会希望在dmp文件中加入日期变量&#xff0c;以区分不同日期的备份文件&am…

一张图看懂阿里企业级分布式应用服务EDAS

摘要&#xff1a; 近日&#xff0c;阿里中间件&#xff08;Aliware&#xff09;的企业级分布式应用服务EDAS宣布再次升级&#xff0c;全面支持Spring Cloud应用。今后&#xff0c;使用Spring Cloud开源框架的应用可以实现0代码修改&#xff0c;即能在EDAS上平滑运行。目的是帮助…

SpringBoot集成Flowable_Jsite办理任务菜单报403

JSite 快速开发框架&#xff0c;内置Flowable工作流引擎 五大基础模块 前后端基础代码自动生成 权限精确控制。 说明&#xff1a;此版本我已经调通&#xff0c;最新版本正在更新&#xff0c;页面未处理好&#xff0c;因此采用历史版本。 文章目录一、克隆/打开项目1.1. 搜索…

漫画:有趣的“帽子问题”

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 小灰来源 | 程序员小灰————— 第二天 —————主持人让三名参与者各自戴上眼罩&#xff08;看不见外界&#xff09;&#xff0c;然后随机给每个参与者戴上一顶帽子。比如下面这样&#xff1a;然后&#xff0c;主持人…

【程序员归家计划】放假回家之前拜服务器?不存在的,这才是保证程序员过好年的正确打开方式

摘要&#xff1a; 在即将到来的214情人节和举国同庆的农历春节期间&#xff0c;运维同学们应该如何才能不被公司召回&#xff0c;如何才能保证系统的正常运转&#xff1f;本文就为大家整理了自动化运维、架构升级以及安全保障的相关干货合集&#xff0c;希望能够帮助各位运维同…

秘籍分享:如何将负载均衡按量付费实例转换为包年包月实例

摘要&#xff1a; hi&#xff0c;大家好&#xff0c;今天我来教大家如何将负载均衡从按量计费实例转换成预付费&#xff08;即包年包月&#xff09;实例。 点此查看原文&#xff1a;http://click.aliyun.com/m/42583/ hi&#xff0c;大家好&#xff0c;今天我来教大家如何将负…

Flowable快速工作流脚手架_Jsite角色授权不显示

JSite 快速开发框架&#xff0c;内置Flowable工作流引擎 五大基础模块 前后端基础代码自动生成 权限精确控制。 说明&#xff1a;此版本我已经调通&#xff0c;最新版本正在更新&#xff0c;页面未处理好&#xff0c;因此采用历史版本。 文章目录一、克隆/打开项目1.1. 搜索…

中国撸串指北:13万家烧烤店的吃货最爱

戳蓝字“CSDN云计算”关注我们哦&#xff01;数据分析&#xff1a;还是更爱火锅的朱小五内容撰写&#xff1a;最爱干豆腐卷的王小九来源|凹凸数读对美食最大的肯定无疑就是那操着不同口音说出的“好吃&#xff01;”二字。——《人生一串》豆瓣短评以美食慰藉夜归人&#xff0c…

新功能:阿里云负载均衡支持访问日志功能(可能是这个星球上最好用的访问日志)...

摘要&#xff1a; 1. Greetings :) 2. 什么是负载均衡访问日志 3. 负载均衡访问日志有什么作用 4. 如何使用负载均衡访问日志功能 4.1. 开通访问日志 4.2. 查询访问日志 点此查看原文&#xff1a;http://click.aliyun.com/m/42584/ 负载均衡访问日志&#xff08;7层&#xff09…

绿联串口线linux驱动下载,绿联usb转db9驱动下载

绿联usb转db9串口线驱动是一款应用十分广泛的usb转串口驱动程序&#xff0c;本站提供的资源适用于ftdi芯片&#xff0c;具有体积小、易操作的特点&#xff0c;安装过程并不复杂&#xff0c;帮助你快速进行串口线的转换工作&#xff01;驱动介绍绿联的usb转串口线有两种&#xf…

阿里给所有卖家发福利:全球首个人工智能中文字库免费用

摘要&#xff1a; 你打开手机淘宝&#xff0c;精美的海报让你目不转睛&#xff0c;你下了单&#xff0c;从快递员手中接过商品&#xff0c;心满意足的那一刻&#xff0c;你不会想到自己在掏钱买下商品的同时也为海报买了单&#xff0c;从模特、摄影到设计师的后期处理&#xff…

第2篇:Flowable快速工作流脚手架Jsite_配置项目

接上一篇&#xff1a;第1篇&#xff1a;Flowable快速工作流脚手架Jsite_克隆项目 https://blog.csdn.net/weixin_40816738/article/details/103387442 说明&#xff1a;此版本我已经调通&#xff0c;最新版本正在更新&#xff0c;页面未处理好&#xff0c;因此采用历史版本。 文…

如何高效地准备技术面试?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | Windson Yan来源 | www.enginego.org刚开始参加工作的时候&#xff0c;我对面试总是很恐惧&#xff0c;既担心简历无法通过初筛&#xff0c;也担心即使简历通过筛选&#xff0c;因为面试经验不多以及基础知识不扎实而导致发挥…

重要的机器学习算法

摘要&#xff1a; 本文旨在为那些获取关于重要机器学习概念知识的人们提供一些机器学习算法&#xff0c;同时免费提供相关的材料和资源。并且附上相关算法的程序实现。点此查看原文&#xff1a;http://click.aliyun.com/m/42631/本文旨在为那些获取关于重要机器学习概念知识的人…

linux红帽知识内容,RedHat基础入门(一)

Tips&#xff1a;转载自作者TedLau_R怎么说呢&#xff0c;要想学好linux&#xff0c;记命令肯定是必不可少的&#xff0c;虽然命令很多&#xff0c;但是我们不用害怕&#xff0c;其实用的一些常用的命令不算多&#xff0c;我们多刷题&#xff0c;多敲命令就一定可以学好它。当然…

如何从零开始用Keras开发一个机器翻译系统

摘要&#xff1a; 作者拥有大量的实战经验&#xff0c;快来跟着作者开发属于你自己的神经网络翻译系统吧。点此查看原文&#xff1a;http://click.aliyun.com/m/42632/机器翻译是一项非常具有挑战性的任务&#xff0c;按照传统方法是使用高度复杂的语言知识开发的大型统计模型。…

第1篇:Flowable快速工作流脚手架Jsite_克隆项目

JSite 快速开发框架&#xff0c;内置Flowable工作流引擎 五大基础模块 前后端基础代码自动生成 权限精确控制。 说明&#xff1a;此版本我已经调通&#xff0c;最新版本正在更新&#xff0c;页面未处理好&#xff0c;因此采用历史版本。 文章目录一、克隆/打开项目1. 搜索项…

基于阿里云MaxCompute实现游戏数据运营

摘要&#xff1a; 一、总览 一个游戏/系统的业务数据分析&#xff0c;总体可以分为图示的几个关键步骤&#xff1a; 1、数据采集&#xff1a;通过SDK埋点或者服务端的方式获取业务数据&#xff0c;并通过分布式日志收集系统&#xff0c;将各个服务器中的数据收集起来并送到指…