当前位置:网站首页>开源人张亮的 17 年成长路线,热爱才能坚持
开源人张亮的 17 年成长路线,热爱才能坚持
2022-07-04 13:35:00 【ShardingSphere社区】
当一个人处在持续地追求与锋锐地思索状态中,他将收获怎样的价值与自由?
有人说,敲过万行代码的程序员,可以写一份基础版入行指南,给初阶人群作入门参考。码过十万行代码的程序员,能写一本进阶版技术手册,给陷入发展瓶颈的人们“指点一二”。而完成了近千万行代码的“顶级选手”,已经无需再进行形式繁琐的“叙言著传”,其存在本身,就会为大众带来极强的正面激励与价值启迪。
今天为大家介绍的张亮,便是我们所描述的,写过近千万行代码的“神级选手”。在着力参与开源项目建设时,张亮共计提交了 9,138,592 行代码。2372 天里,张亮“笔耕不辍”,平均每三天就会贡献近 10,000 行代码。在日复一日的坚持中,每天提交 3、4 次代码已是张亮的个人生活里的必选题,甚至比日常三餐还要准时、高频。
数据之巨,比照业内,是惊人的创造力。心力之坚,对比芸芸众生,更是寥寥无几。
谈及其背后的支撑性力量,张亮用八个字概括:『因为热爱,所以勤奋。』 这份热爱支撑着他经历了一次又一次的角色切换:从一名普通开发者到全球顶级开源项目的创造者,再到成为一家创业公司的 CEO。十七年间,张亮的角色在不断进阶,不变的是他最初投身开源行业的热情与初心。对张亮来说,面前的二十多寸的显示器不仅构筑了能让他尽情挥洒自身热情与优势的多维世界,一幅有关开源行业历史与未来发展的巨幅画卷也在他眼中悄然形成...
一、践行代码世界里的『完美主义』 追求优雅代码,是学问,更是艺术
在张亮的代码世界里,优雅代码构成了一种秩序之美,是他在代码世界里追求『完美主义』的主要方式。
理念:用优雅为“技术”赋予灵魂
熟悉张亮的同学们都知道,『优雅』,是他一直挂在嘴边的词。项目架构要优雅、程序运行要优雅、代码观感更要优雅。
但起初的张亮并不是优雅代码的拥护者。将时间拨回到十几年前,21 世纪初的那几年中,程序员们的创造力还远远没有被激发出来,大多都是按部就班,将所写出来的一行行代码当作是实现功能的工具,至于设计灵性、可读性,更是无从谈起。
但事实却是,对于开发而言,在实现代码简洁的同时要确保代码的易读性、易维护和可拓展,这既是学问、也是艺术。代码不仅仅是实现需求的工具,更是对业务领域理解和抽象的体现。
优雅代码应怎样解释?怎样的代码是优秀且优雅的代码呢?在阅读《代码整洁之道》时,张亮找到了答案:
优雅代码好似军规,严格且行列整齐规范,要求软件工程师要有条理,需要清晰的规则底线;
优雅代码有层级分明、清晰的思路,要求代码的抽象层级要相同;
优雅代码之间的模块之间可以被解耦,且关系更清晰;
优雅代码需具备极简性。
“把代码做得漂亮”,这不单需要考虑注释、格式等视觉效果。还有诸多细节需要兼顾,比如变量名取得是否恰当、类与函数的权责划分是否清楚等等。在细节与态度之外,也会考验一名开发者是否具备较强的整体架构设计能力。架构设计是否合理,功能分支是否平衡,都是考验一个项目本身优雅程度的重要因素。
但要在项目中践行优雅代码并不是一件简单的事,如何衡量项目中代码的优雅程度?如何保持项目整体的优雅与健壮?这些还要从为什么要参与开源说起。因为只有在开源生态中,才能最大化发挥出优雅代码的价值,也都关系到开发者撰写的代码能否匹配上更高阶的开源生态。
摸索:在开源社区的试错历程
人的成长、成熟,需要历经时间与实践的打磨。在成长为开源圈的顶级玩家之前,张亮经历了一个反复试错、持续优化自我的过程。
过去,企业往往会围绕不同的业务形成数个典型的烟囱式业务架构,程序员只会为自己的那一个烟囱而服务。这就导致部门间的代码不开放,因为不需要给外部人看,进而开发者缺乏写文档的动力。同时也由于企业内部的功能不互通,产生了许多能力重叠的工具。因此,为了让技术在行业、领域间自由流动起来,团队与团队间的协作更加紧密和默契,减少重复造轮子的工作,就需要有一个平台或社区来承担起这样的能力,让开发者能够随时提交新的功能分支,添加更加丰富的特性功能,形成开源代码文化,创建更好的工程师氛围。
这便是参与开源的意义。
当还在读大学的张亮第一次在编程实战课程上了解到 Apache Tomcat 时,他对开源产生了强烈的学习兴趣。当看到全球顶级项目被编排成整齐铅字写进课本,形成整齐且优雅的美感时,张亮内心涌现起一种愿望:“我也想写出能被选入教材、在全球流行的软件。”
因此张亮认为,技术人应有更清醒的判断与认知,而不是拘泥于现实条件及传统路径,应该从更高维度去思考,重构出与基础设施更加匹配的网络架构。这便是张亮面向开源领域,在未来成功打造出顶级开源项目的第一步。
在技术价值层面,为自己个人的发展寻找一个精准的锚点。这个锚点,一定是要符合产业、行业发展趋势的,才能让开源项目拥有更长的生命周期和更广阔的发展空间。
锚点:面向分布式架构重写当时的基础设施
当时,恰逢中国互联网的高速爆发期。在一边追求优雅代码、打磨自身技术,争取与更多人共享技术价值的同时,张亮也敏锐察觉到现实世界出现的“不和谐颤音”——当时的互联网世界多为传统的集中式数据架构,但与正在高速发展的国内现实环境已愈发难以匹配。
随着线上应用场景的不断扩张,数据库碎片化进程日益加速,数据库的架构、协议、功能、适用场景也愈加多样化。在数据库架构方面,基于单机系统演进而来的集中式数据库与原生面向分布式的新一代数据库并存;在数据库协议方面,MySQL 和 PostgreSQL 这两大主要开源生态以及厂商提供的生态也在数据库体系中各自占有一席之地;每种数据库的独特功能和适用场景也愈发繁多。
于是,碎片化成为数据库领域的大势所趋,单一品类的数据库无法适用于所有场景,只能适用于某一种或某几种擅长的场景。
因此需要从实战出发,匹配中国互联网的需求,打造开源项目的优点与独特性。正是在这样的大背景下,时代将开源、优雅代码与张亮绑定在了一起。
二、叩开开源宇宙中“荣誉之门” 从“先者奋楫”到“百舸争流”
孵化开源社区的过程,也是张亮个人沉淀自我、扩大视野、开放格局的过程。
从最初的 3 个模块成长到如今的 220 个模块,成为 Apache 顶级项目的荣誉之路,ShardingSphere 共走了七年。故事回到最初的起点,从 ElasticJob 到 Sharding-JDBC 再到 ShardingSphere。七年间,以张亮为主导的开源项目经历了一个从无人问津到小有名气再到大放异彩的发展过程。所有的迭代,都是勤奋的思考和大量的重构打磨而来。
在对开源项目的运营中,张亮以坚定的意志,将大量的时间、精力投入到项目中去。七年间,张亮对 ShardingSphere 进行持续地打磨、重构。在 ShardingSphere 社区内部,张亮个人贡献的代码量一度达到 80%以上。随着 ShardingSphere 一路的成长、转型、升级,张亮对于开源世界的理解与认知也发生了转变:『在开源之后,如何能让整个项目长期稳定地运行下去?』
“一个成功开源项目的毁誉都是属于社区的,一个成熟的社区和个人的开源项目是有本质区别的。”
开源不是一个人的游戏,从刚涉足开源时几个小项目的默默无闻,到 ElasticJob 初见成效,再到 Sharding-JDBC 进化为 Apache ShardingSphere 并成长为一个世界级开源项目。张亮明白,如果想做好一款开源项目,让项目能蓬勃发展起来,那么最好的方式是聚集社区力量。你可以是这个项目的创始人、是主导者,但不能是唯一的拥有者。
在最开始进入到开源社区时,张亮会十分关注来自他人的评论,因为一个功能争得面红耳赤更是常事,『完美』是他常挂在嘴边的词。但有时,自己认为的完美,在他人看来却“不够实用”。『千人千面,即便是在同一场景下,每个人对于功能和需求的理解也是存在差异的。属于一个人的项目,和属于社区的项目,是有本质区别的』。
区别就在于,个人项目的上限是受到个人能力制约的,其发展的深度与广度,完全取决于原作者的技术与视野。但从宏观的视角出发,归属于社区的开源项目,如果想具有极高发展上限,更依靠社区中『五花八门』的场景与需求。张亮认为,“接受并欢迎社区出现多元声音,并有效挑选出具有建设性意义的声音”是一个让开源项目获得实质性成长、让开源社区愈发茁壮的必经过程。在个人精神层面,张亮成就感的来源也在变化:从占据主导的主人翁精神渐渐平稳,取而代之的是格局更高、视野更广的家翁式精神。
在全球技术极客的热衷参与下,如今 ShardingSphere 基本已经成为了程序员使用中必不可少的一部分,其功能使用场景更加广泛、其用户基础量也呈现出指数级增长趋势。对目前的 ShardingSphere 来说,项目恰好赶上了中国互联网爆发的机遇,ShardingSphere 功能十分匹配中国互联网的发展需求。由于面向的是基础设施,完全可以说 ShardingSphere 是互联网企业后台数据库的『刚需』,这也是 ShardingSphere 的独特性所在。
经过数年打磨与试炼,ShardingSphere 在 Apache 基金会从“种子选手”成长为“亲传弟子”,社区的活力也在加入基金会后愈发强劲,ShardingSphere 社区逐步蜕变成一个能够让全球开发者、技术极客、开源爱好者等人互相碰撞思想的大本营。社区为所有对 ShardingSphere 感兴趣的人们提供开放的技术、相同的谈资以及共同的热情,成为一个跨越时空的全球交流据点。
三、在商业象限内 为全球技术人搭建一个“耀眼舞台”
国内从来不缺优秀和聪明的开发者,但缺少的是能够让开发者去持续付出心血的环境,以及稳定的项目基石。
张亮认为,优秀的开源项目与经典的话剧类似。经典话剧的价值会在不同演员的共同演绎下、在一次次令人惊喜的突破里历久弥新。其魅力会代代传递,在行为层面呼唤人们参与,也在心灵层面引起大家的共鸣。
正是凭借这样的初心,张亮计划在自己热爱的开源领域,为全球技术人搭建了一个能挥洒热情、发挥才华的“舞台”。2021 年初,在张亮与多位创始人的努力下,SphereEx 公司应运而生。公司以开源项目 ShardingSphere 为基础,面向 B 端客户提供专业性的商业解决方案。“开源与商业并不互斥。恰恰相反,两者能够以更加互补的方式推动对方发展,开源能够为商业公司带来坚实的用户基础,而商业也能够反哺开源,从而建立更加完善、友好的社区生态。”
从开源领域的先驱者进化成积极接受商界洗礼及资本审视的创业人,面对这种变化,张亮坦言创业拓展了自己的能力边界:“当我作为 ShardingSphere 项目主导人时,更多是作为技术管理者的角色去对 ShardingSphere 的顶层设计做思考决策,更偏向于产品思维。当我的身份是 SphereEx 的商业运营者时,我考虑更多的是如何设计出让 SphereEx 可持续经营的商业模式,如何在客户需求与市场需求间做合理权衡。公司的创建者和技术管理者所关注的重点是不同的,技术管理者关注的是代码质量及产品架构设计,而公司管理者会更关注现金流、营收、商业策略、团队搭建等。”
面对波谲云诡的商界,张亮表示虽然创业具有挑战,但在公司商业化运营的过程中,他热爱开源行业的初心以及面对挑战时产生的兴奋感却没有改变。从技术到商业,其实很像是换了个场景打怪升级,王牌打法是可以场景通吃的。张亮认为,不论在面对哪种场景问题,重要的是拥有架构性思维。“首先需要具备静态架构的能力,这需要你有全局视角,这样才能设计出合适且完备的底层结构。另一方面,你也要有动态架构的视野,这样才能随着现实环境的变化而灵活变通,让静态结构更富活力。”
在热爱的领域,人会心甘情愿地给自己“树立规矩”,并且坚持到底。没有这条规矩,他将不是他自己。
对于张亮来说,以百分之百的热情与精力投入到开源领域中,便是多年来心甘情愿为自己树立、并一以贯之、坚持到底的“规矩”。
在开源旅途中,张亮始终跟随着心中热爱的召唤,以源源不断的勇气与毅力,在开源之路上持续前进着:体会过数次项目重构、转型的苦涩;经历过近十年的技术研读、积淀时的蛰伏时期;也品尝过独力承担近千万行巨额代码量的现实辛辣之感...但,风雨过后,他也同时获得了超越个人视角外,更宏大、丰富、多维的价值与自由。
对个人兴趣的热烈追求、与志趣相投友伴的并肩作战、让心中愿景在现实层面“完美落地”、让个人价值通过全球协作而无限放大,且将价值反哺、惠及众人....这些现实层面的成就感,组成了张亮开源路途中的色彩鲜明的风景线。
对于张亮来说,对开源的热爱,是一个永无止境的过程。而开源宇宙更光明、恢弘的未来,也正在如张亮一般,对开源有执着追求、独到思考与无限热爱的开源者们的共同建设中,慢慢到来。
欢迎点击链接,了解更多内容:
Apache ShardingSphere 官网:https://shardingsphere.apache.org/
Apache ShardingSphere GitHub 地址:https://github.com/apache/shardingsphere
SphereEx 官网:https://www.sphere-ex.com
边栏推荐
- C language programming
- Details of FPGA underlying resources
- Free, easy-to-use, powerful lightweight note taking software evaluation: drafts, apple memo, flomo, keep, flowus, agenda, sidenote, workflow
- Halo effect - who says that those with light on their heads are heroes
- Preliminary exploration of flask: WSGI
- Redis publish and subscribe
- openresty 重定向
- (1) The standard of performance tuning and the correct posture for tuning - if you have performance problems, go to the heapdump performance community!
- MP3是如何诞生的?
- 十六进制
猜你喜欢
No servers available for service: xxxx
[information retrieval] experiment of classification and clustering
LVGL 8.2 Draw label with gradient color
Summary of common problems in development
现代控制理论入门+理解
金额计算用 BigDecimal 就万无一失了?看看这五个坑吧~~
Preliminary exploration of flask: WSGI
Memory management summary
关于FPGA底层资源的细节问题
MP3是如何诞生的?
随机推荐
LVLG 8.2 circular scrolling animation of a label
Dialogue with ye Yanxiu, senior consultant of Longzhi and atlassian certification expert: where should Chinese users go when atlassian products enter the post server era?
Graduation season - personal summary
Exploration and practice of eventbridge in the field of SaaS enterprise integration
The performance of major mainstream programming languages is PK, and the results are unexpected
Weibo and Huya advance into interest communities: different paths for peers
SAIC Maxus officially released its new brand "mifa", and its flagship product mifa 9 was officially unveiled!
selenium 元素交互
毕业季-个人总结
Preliminary exploration of flask: WSGI
深度学习 神经网络案例(手写数字识别)
A keepalived high availability accident made me learn it again
Deep learning neural network case (handwritten digit recognition)
Who the final say whether the product is good or not? Sonar puts forward performance indicators for analysis to help you easily judge product performance and performance
Leetcode 1200 minimum absolute difference [sort] the way of leetcode in heroding
LVGL 8.2 Draw label with gradient color
C language personal address book management system
LVGL 8.2 Line
自动控制原理快速入门+理解
ES6 modularization