浅聊技术情怀

2,797 阅读12分钟
原文链接: blog.longjiazuo.com

作者:孤尽,阿里巴巴高级技术专家

前言

大年初一的晚上,夜深人静,在马来西亚的风情小岛上,听着海浪的声音,难得可以静静地把自己的心路历程系统性地梳理一遍,分享给大家,希望大家有所收获,主题是技术情怀,这是个一直萦绕在心头的一个词组,和很多同学讨论起来这个词组的释义,都是一脸茫然,到底什么是技术情怀?技术情怀怎么量化?技术情怀如何landing?感觉说得人很多,但是清晰的人很少。任何事情上升到定义的层面,都是一种非常高度的抽象和信息的高度提炼。诚如上次,我随意和同学讨论一个定义:什么是生命。生命是能够呼吸的个体?不是吧,植物不呼吸吧。生命是一种有活动细胞的个体?可是我们的软件还经常说有生命周期。生命是一场说走就走的旅行?宅男宅女多了去了。今天我们尝试给技术情怀一个非正规的定义,让我们煮酒围炉畅聊一下吧。

技术情怀是什么?

  情怀是近年的热词,可是谁也清晰地说明过情怀是什么?小生斗胆在此大放谬论,各位看官,有用且收下,无用莞而一笑就好。个人认为情怀是一种难舍难分的感情,即使风雨兼程,依然故我,坚信雨后彩虹会更美;退一步说,即使没有彩虹出现,享受雨后带着泥土芬芳的清新空气,享受追求内心梦想的历程就好,用阿里的武侠文化来说,情怀是行侠仗义于江湖,快意潇洒于恩仇,大江南北,侠之大者,为国为民,侠之小者,为红颜,为知己。

  而技术情怀是一种匠心,但是说到底技术情怀是一个当下比较虚的词,工程师是偏向于数据驱动的群体,希望能够用数据来量化定义,能够明确符合什么特质,达到什么程度的人,才是具有技术情怀的。我抛一下个人愚见,尝试从三个维度来解读一下技术情怀,总结成三个关键词:热爱、思考、极致。热爱是一种源动力,而思考是一个过程,而极致是一个结果。如果给这三个词加一个定语,可能使技术情怀更加立体、清晰地被解读,那就是奉献式的热爱,主动式的思考,极致式的卓越。《集团开发规约》几乎是集团内开发同学人人皆知的开发规范,代码规约对于集团的影响力和渗透力比我曾经负责的美杜莎和马可波罗影响力要大一个级别,那么,以此为参照物,聊一下技术情怀。

奉献式的热爱

  《集团开发规约》对外的名称是《阿里巴巴Java开发手册》正式公布已经超过一年:手册试读本对外;手册英文版走进硅谷;手册插件正式在云效公有云上线;开源插件登顶Github,成周热度排名第一开源插件,安装人次超过24万次。实际上,代码规约已进入了第三年,三年的风雨,我坚信一条:码出高效,码出质量,提升集团开发同学的研发效能,推动世界规约文化的进步。热爱,是一种兴趣,一种爱好。奉献,这种兴趣和爱好,能够惠及他人,造福社会。有时候技术总是孤独的,我写了几千页的总结,这些总结都是深夜、周末、假期中,一个人陪着自己走过来,因此,有人说我的花名是孤独的尽头,简称孤尽,孤尽真正的释义是“独孤九剑,破尽天下武功”的说法。
  人们通常有两个常见的毛病:患得,患失。而热爱一件事情,除了热爱,不会在得失上顾虑太多。很多人觉得《集团开发规约》是KPI的产物,KPI是公司目标驱动的一种机制,而内心的热爱,与这些暂时的得失又有什么关系呢?马总说除了智商,情商,还有一种叫爱商——爱家人、爱恋人、爱朋友。扩展一下,热爱自己的事业,这种热爱不会因为短期的质疑、否定而放弃。

  经常有人问我,编写和推广《集团开发规约》如此费心费力,什么样的信念让我如此执着?从两部电影说起,《冈仁波齐》这个电影我看了三遍,我曾经去过冈仁波齐,转山的一段路是汽车呼啸而过时的尘土飞扬,可是转山的藏民,还是那样的虔诚,叩拜之后,即是满脸灰尘,但是他们的信念是内心朴实无华但是笃信的力量。陆川的电影《可可西里》印象也非常深刻,很多事情是因为信念而坚守,现实中为可可西里申遗做过巨大贡献的王欣,毕生都献给了藏羚羊的保护,长年驻守在高原雪域,他无私地付出了很多,也放弃了很多,因为信念而坚持体现出人类的伟大。忽悠是把我不相信的东西说给大家听,但是信念是把我相信的用行动传递给大家,我相信手册的愿景是码出高效,码出质量,码出未来,帮助到更多的人,推荐世界的规约文化进步,希望我们的一代开发同学,能够觉得开发是一件幸福的事情,开发是一件有创造力的事情,开发是一件能够改变世界的事情,而不是为了规范和琐碎的规则消耗巨大的能量,影响了算法效率和架构设计的优雅性。

  此外,让我自己受益的是内心变得无比强大,因为知乎的那些无脑黑。有些人劝我想开一些,不必回应,社会如此,不必过于在意,我明确地说,我很在意。《集团开发规约》是我的女朋友一样,在街头遭遇流氓调戏,非礼,不尊重,我即使知道会受伤,我也会擦身而出,奋起反击。这不是心胸狭隘,我可以放弃任何《集团开发规约》给我个人带来的利益,但是不允许各种莫名其妙的詆毁,因为内心的热爱。奉献式的热爱,这种爱是大爱,是无私的,广泛的,利他的。

主动式的思考

  很多人以为,《集团开发规约》只是信息收集整理后的文档而已,代码规约的70%内容完全出自平时个人的总结和技术提炼,冰冻三尺,绝非一日之寒,展示给大家的小板凳,已经是第380多只小板凳,并且还在不断地改进中,不断地自我思考中,去提升自己对知识的认知层次和抽象水平。

  我很习惯去做摘记,从进入阿里第一天开始,沉淀了近2000页的笔记,分为两个文档,搜集和整理。知识快速进入搜集区,包括听到的、看到的、疑惑的,不断地去思考,不断地去清理、复核、总结之后,沉淀于整理区。有一些至今没有搞清楚的知识点,在搜集区已经沉淀了多年,依然会不断地去review一下。所以,我对于知识的记忆非常清晰,因为那是不断进行主动式思考的结果。经过一段时间的整理之后,形成某个知识体系,比如,高并发处理、Docker技巧、函数式编程等,会形成一个新的文档——体系化总结。而最后的思考就是把知识体系抽象成哲学思维,我在2017杭州云栖大会上,做过《技术成长&哲学思想》的演讲,引起了一定的共鸣。所以,我对于知识的记忆非常清晰,因为那是不断进行主动式思考和沉淀的结果。

  现在《码出高效——阿里巴巴开发手册详解》正在编写中,我给作者组的指导思想是:言之有物,深入浅出。如果网络上一堆肤浅的或者学究式的干货说明,那么还需要我们来写干嘛。言之有物,物指的是有定义、推导、案例、总结。而深入浅出的深指的是能够在业界领先的深度上,把内容讲深讲透。浅指的是让一个Java白痴都能够看得懂。讲得非常生活化、轻松化,甚至是笑话。在谈到泛型地说明上,如果我们只是说前者是只能get不能add,后者只能add不能get,那么有何意义,搜索引擎敲个命令,这类解释有一堆。比如泛型的与 的区别,如何表达这种含糊的思路,需要不断地去思考,想想如何让读者在这个点上,一目了然,过目不忘。前者,我是这么举例的。好多人看过优酷剧场的《白夜追凶》吧,关宏峰追查他弟弟的悬案时,去查看被封存的证物箱,被明确告知,你只能看,不能动,当然更不可以增加一件新的证物进去,那是在伪造证据,这就是前者,只能读取,不能增加。那什么样的情形只能增加,不能读取呢?这个情景似乎更难立体地被想象出来,如果投票选举代表时,你只能往里投选票,如果即使是自己选错了代表,想从票箱里捞出来,重新投票,这可能吗?更加不可能给你读取票箱元素的机会。有人说,这只是一种生活场景,在系统设计中,很难有这样的情形。那么,我再举例说明一下,我们在填写对于主管的年度评价时,填写完毕提交时,即使填写错误,当你再次访问之前的链接时,也会告诉你:“您已经完成对主管的年度反馈,谢谢参与”,当然更加不可能让你读取到其它成员对于主管的反馈内容。

极致式的卓越

  极致与卓越,似乎是一个意思,即出类拔萃,超出期望。极致式的卓越,把卓越再往前提升。如果一个人在一个无人可以比拟的高度上,要学会自我驱动,持续进步,不但卓越,还要追求个人内心极致的追求。集团开发规约在现在的高度上,很多觉得已经名声在外,但是远远不够,希望极致到大家可以感觉不到规约的存在,从无到有,要实现这目标,还需要顽强地走下去,甚至是全世界范围内,采用阿里统一的代码规范,细化到点上:
1)遵守团队的基本编程风格,这是基本的编程良心。
2)写出来能够使后续有利于业务扩展的代码。
3)注释合理,不多不少。
4)让你的队友看你的代码像看情书一样美妙。
5)贡献《阿里巴巴Java开发手册》给apache基金会,统一世界范围内的开源风格。
  在写代码的极致上总会不断地去REVIEW自己的代码,并且和同事进行Code Review,极致式地追求代码的清晰、可读性。甚至冒着风险,进行系统的重构,追求到极致,就是能够有9行完成的代码,坚决不写10行;能够写出50ms的接口,坚决不写成100ms。

  编写《集团开发规约》历时三年,时代在进步,需要进行不断地完善,持续性的完善。这个完善的过程是非常漫长的,比如最近半年内就陆续完善了8条,在现在的阶段,增加一条,都需要在项目组内进行充分的讨论,有事实根据的论证。比如,取反逻辑的问题;高并发的问题,以及最近暴露出来的日期大写YYYY的跨年问题。

  前段时间《集团开发规约》书籍版发行后, 网络上闹得沸沸扬扬,殊不知,这个手册即使从电子版转成书籍版,经历了非常多轮的校对和完善,增加了设计规约。在标点符号、示例代码、字体颜色等都做了认真的校对和审核,一直处于脱销状态,马上进行第三次印刷,在第三次印刷前,又进行了20处的精确修改,希望这是一本走向卓越的小册子,是陪伴大家的床头书,地铁中翻一下神清气爽的工具书。因为卓越,所以经典,只有这样百尺竿头,才能更进一步。有人曾经留言说到这个手册与星爷的电影,我真的非常感动,我相信经典是经得起时间洗涤的。追求卓越,追求极致式的卓越,是技术情怀的核心。

  当前我负责阿里巴巴的代码中心和用户声音,存储着的海量代码和用户反馈是一座未开发的金山,我希望未来可以做到极致,将代码团队打造成技术第一、快乐第一、前沿领先的TEAM,坚定地进行代码价值二次挖掘与代码智能化建设,赋能每个同学切实提升研发效能。

打赏 欢迎关注人生设计师的微信公众账号
公众号ID:longjiazuoA