编者按】大学因学费而辍学,最困难时睡在公园长椅,有远见的母亲让他走上了编程之路,温柔智慧的妻子用爱与信任激励着他秉承初心、奋勇前行。编程十余年,他已在GitHub开源三百多个项目,项目总Star数位居全球TOP
20。从后端成功转型为前端,成为Deno核心代码贡献者的迷渡(网络ID:justjavac)在《新程序员004》之「我是程序员」板块分享了他这一路的成长与感悟。同时,也给新一代开发者留下了寄语:“学历代表过去,能力代表现在,学习能力代表未来”。
作者|迷渡责编|张红月
出品|《新程序员》部
2009年,&Deno之父RyanDahl首次在JSConfEU上介绍,从那时起,他便成为我崇拜的技术偶像。
2019年,我收到了一封来自Ryan
Dahl的邮件,信中他说来中国了,想约我一起喝杯咖啡,谈谈Deno以后的发展方向。我激动的一晚上没有睡好,第二天一大早便坐高铁从天津赶到北京赴约(见图1)。
图1&Deno之父RyanDahl与justjavac的合照
回顾十多年的编程生涯,我在大学时因为学费而辍学,最困难的时候也曾经睡过天津人民公园的长椅,后来在百脑汇找了份电脑维修工作,业余时间学习了计算机相关的所有课程。结婚之后在老婆的督促下开始努力,经过十余年的付出,终于迎来了自己的Aha时刻:技术文章全网访问量破千万,如今被之父单独约见并一起开发下一代类平台——Deno。
本文节选自《新程序员004》,扫描上方二维码即可订阅
学生时代编程启蒙
初中时,我开始接触电脑,使用的第一门语言是BASIC。那时我所在的初中是我们县仅有的几个开设计算机课程的学校之一,当时电脑还是奢侈品,进入微机室上课需要穿鞋套。每个学期的计算机课程很少,两周才上一节课。还总会出现“今天微机课老师有事,这节课改成数学/语文课”的情况。课程内容也很简单,就是一些计算机的正确开关机、拼音打字、五笔打字、常用操作,并没有安排编程课。但微机教科书最后两章是BASIC编程入门,于是我在学完计算机基本操作之后就开始自学BASIC编程,编写的第一个程序是计算从0累加到100的总和。
在初三时,我的父亲给我买了一台二手电脑。我在这台电脑上编的第一个程序是VBA,主要是使用VBA脚本在Excel中处理了我整个初三上半年的成绩。闲暇之余,也会玩一些游戏,如《红色警戒》。
到了高中,学校的电脑课程主要围绕WPS和一些软件操作教程。彼时的我从计算机杂志里面扣下来一张3.5寸软盘,在电脑上安装了Pascal编译器,也进行了一些简单的编程尝试。不过家里的电脑最主要的用途还是用来玩游戏,放假时,我经常邀请同桌一起来家里玩《雷电》。但是好景不长,没过多久这台电脑平白无故的就坏了,也一直没修。到现在我也不知道这台电脑到底是年久失修坏的还是“人为的故意”损坏。总之直到高考结束,我再也没有写过程序。
人生的两个转折点:选择与放弃
当填报志愿那天来临时,我的妈妈做了一个影响我直到现在的决定,这也是我人生的第一个拐点。当时我还在犹豫填报什么专业的时候,母亲对我说:“现在比尔·盖茨是世界首富,学编程以后肯定吃香,报计算机编程专业吧”,于是我大学选择了软件工程专业。
万万没想到妈妈的话一语成谶,我果然步了比尔·盖茨的后尘——但是并没有像比尔·盖茨一样成为世界首富,而是像比尔·盖茨一样辍学了,当然这些都是后话了。
还记得2009年对我来说是最尴尬的一年,那年我花掉了家里给我本来应该交下学期学费的钱,买了一台高配的笔记本。当我打算用一年时间打工赚学费时,却被现实无情地打败了。我和3个同学一起在网上找了一个饭店服务生的工作,面试完之后HR告诉我们上岗需要穿西装。我之前从来没有穿过西装,正当我犹豫要不要买一件的时候,却接到了公司的电话,其它3个同学都应聘上了,我落榜了。
后来,我静下心来回归到了正常的大学学习与生活中。大学期间,我学习的主要课程是C、C++、C#、Delphi,也在图书馆里自学了Java、PHP、Python。个人而言,我最喜欢的语言是Java和C,于是我给自己取了一个网名叫justjavac。我接触的第一个开源软件是FireFox,这也是我头像的由来,我很欣赏FireFox挑战IE浏览器权威的故事。
随着的发布,RyanDahl成了我的榜样和偶像,我做梦都幻想自己将来能成为像RyanDahl一样的软件工程师。
于是,我开始关注国外的最新技术以及开源相关的动态。就这样大学过去了一年,我鼓起勇气向开源软件Tomcat的Servlet组件提交了个人的第一个代码补丁。那时候GitHub还没有诞生,我在查阅了很多向开源软件贡献代码的资料后,将代码补丁以邮件的形式发给了Tomcat维护者,经过几轮的讨论,我的补丁被拒绝了。虽然这次参与开源失败了,但这是我迈向开源的第一步。
大学期间,我也开始了第一次创业之旅。我的第一个创业合伙人叫徐来,他的座右铭“但行好事,莫问前程”深深的影响了我。他是我大学的班长兼舍友,当大部分同学都找到实习工作的时候,只有我在宿舍里写写程序,而他则在外面接一些做软件的私活,并让我和他一起做。后来他对我说要成立一家公司,询问我是否感兴趣一起干。那天,我们聊了很多,也聊得很投机。人生中的第一次创业便从这时展开。
没过多久,我就用到了大学自学过的几乎所有编程语言,俨然成为了一名“全能”工程师,而徐来也支持并认可我做的每一次技术选型。创业比打工要辛苦多了,最久一次工作时间是一个月只休息了一天,但一想到是为了自己而拼搏,也就不觉得累了。
大学的时光总是美好而短暂,很快就到了毕业的日子。临近毕业的前几天,老师找到我说,如果能够补齐此前拖欠的学费,可以给我补发毕业证和学位证。然而在人生的第二个拐点,我做了一个错误的决定。当时只是想着“既然我根本就没怎么去上课,为什么还要补交学费呢?”于是我拒绝了老师的要求,实则最主要的原因是当下确实没有钱,也因此没有拿到毕业证。
一万小时定律
从学校离开的两年后,我结婚了。结婚前的一个月,一直期待婚姻的我第一次有了恐婚心理。那时的我一无所有:没钱、没房、没车,甚至也没有给老婆买钻戒、拍婚纱照。
我们最初租了一间60多平米的房子,生活的大部分花销都是由老婆负责,我平时就是靠编程获得寥寥可数的工资,即使如此,老婆依然很支持我做的任何事情和决定。婚后我除了编程之外,也开始写写博客、在社区回答一些问题。
不过,有一年的结婚纪念日,我的老婆突然和我谈心时说道:“你知不知道之前咱们租房时,有一次我切着切着菜,把菜都扔地上了,在沙发上坐了一会儿才又继续切。你知道为什么吗?我在想,我要一辈子过这种日子吗?后来我想通了,既然我当初嫁给了你,就算跟你过一辈子这种日子,我也愿意”。
这段话深深地触痛了我,我不应该辜负一个深深爱着我的人,我应该做些改变。
不久后我在网上看到了一句话:一万小时定律,任何一个人只要在某个领域精益求精地钻研一万小时,那么他就能成为这个领域的专家。听上去有点像心灵鸡汤,但是不管它是“真鸡汤”还是“毒鸡汤”,我都喝定了。那晚我和老婆聊到很晚,我告诉她,“一万小时是多久?如果一个技术我每天钻研5小时,一年365天,那么一万小时差不多就是5年。而5年后我才三十岁左右,别人三十岁可能已经遇到中年危机了,而我三十岁能成为一个领域的专家。不过专家这个词比较虚,现实一点的说法就是虽然我现在一年赚不到3万,但是我一定要30岁的时候年薪30万”。
2014年,在我办了一张双币信用卡并支付了5美元的费用后,LibrarySniffer终于在ChromeWeb
结识狼叔,深入后端
我以为LibrarySniffer能受到国外程序员关注是我的巅峰,没想到这仅仅只是开始。一个月后我收到了某个活动的邀请函,让我去他们公司做技术交流。该公司创始人说要上线一个新品,特邀我去做技术分享,如图2所示。
图2我的首次分享
想必很多经常逛中文社区的开发者即使没听说过创始人alsotang,也一定听说过
i5ting。当得知狼叔也在天津创业时,我还是吃了一惊。天津被称为互联网的沙漠,而狼叔带领的团队可谓沙漠里面的一颗明珠。我经常使用,不过只是作为工具,真正生产环境里的后端服务依然是使用PHP或者Java。
我和狼叔深入聊了聊后端,随后狼叔更是邀请我去参观他们公司的技术团队。狼叔对我说,你研究V8那么深,其实对前端的作用不是非常大,但是对于后端则很有用。听完狼叔的劝告,我也开始在公司中引入作为后端服务,遇到问题则直接呼叫狼叔这个“免费的顾问”,几乎都可以解决。
谁曾想天有不测风云,一心研究的狼叔被合伙人给坑了。我约狼叔出来一起吃饭,心态佛系的狼叔也没有怨天尤人,只是说了句“程序员斗不过商人”。这句话我太有同感了,因为我第二次创业时也是被合伙人给坑了。我安慰他说,你虽然离开天津了,但是我继续留在天津扛下的大旗。狼叔笑道:“就算我不走,你也是天津
届的扛把子”。
狼叔比我小,平时他喊我哥,我喊他叔。在随后的几年里,每当狼叔来天津都会和我一起叙叙旧,而我如果去到了狼叔所在的城市也会找他一起聊聊天。最近几年,我在维护
Deno的过程中也向狼叔请教了很多的知识点。
图3左起依次是umijs作者sorrycc(云谦)、i5ting(狼叔)、justjavac(迷渡)
成为Deno核心代码贡献者
图4上排中间winter(寒冬),中排中间justjavac(迷渡)
2018年,Ryan
issue上发泄不满解决不了任何问题。彼时,我便在思考,既然Deno问题这么多,为什么不帮它改进呢?于是,我开始了Deno开发之旅。
起初我也仅仅是帮Deno改一下Bug,但当我得知Deno是想做一个兼容浏览器及WebAPI平台后,我便新建了一个开源项目,为Deno开发WPT(Web-
Platform-Tests
Suite,Web平台测试套件),然后帮助Deno实现和改进了url、console、encode/decode、timmer等API。
Plugin来解决这个问题,很快这个扩展便受到了国内外很多社区的推荐,甚至得到Deno之父RyanDahl的关注。
2019年,RyanDahl和我见面时也当面感谢我为Deno开发了这个扩展。与此同时,另一位开发者axetroy(铁手)
也一直为这个扩展添加功能。后来我老婆怀孕了,我对社区的参与也少了很多,于是axetroy基于我的代码新建了一个项目继续开发并完善这个扩展。
在Deno发布1.0正式版的当天,我联系Ryan
Dahl并希望把该扩展放到Deno的仓库。我目前最遗憾的一件事就是由于当时选择了直接把我的项目复制到仓库而导致了axetroy代码没有合并进来。
后来,我又搭建了Deno中国加速镜像服务,让国内开发者更加方便地学习和使用Deno。将域名送给RyanDahl作为Deno
Deploy的域名。开发了Deno的多版本管理工具dvm(DenoVersionManager)。
这几年我不断被各种技术研讨会、组织、企业、个人邀请去做Deno技术演讲。
总结
二十年前,《新程序员》创刊时,我们要全面关注软件人的成长。今天,我们依然初心不变:在一行行代码的背后,是一颗颗鲜活的开发者想要改变世界的雄心壮志。
因此,《新程序员004》从C++之父BjarneStroustrup、C#之父AndersHejlsberg、MySQL之父Michael
MontyWidenius、PostgreSQL全球开发组联合创始人BruceMomjian
等程序员祖师爷,到阿里巴巴副总裁贾扬清、指令集创始人兼董事长潘爱民、作者尤雨溪……48
位技术大咖,共创我们的程序人生、我们的技术时代。《新程序员004》已全面上市,欢迎订阅!
毕业证样本网创作《学费未交清没拿毕业证(大学因学费而辍学,最困难时睡在公园长椅,有远见的母亲让他走上)》发布不易,请尊重! 转转请注明出处:https://www.czyyhgd.com/692985.html