从事前端开发的你,如今过的怎么样了?

大二在读学生,大三会学习前端知识,在之前对前端三剑客有一定了解,对未来感到焦虑,想提前了解前端行业的现状,请前辈们赐教。
关注者
1,926
被浏览
2,431,109

255 个回答

首先感谢 @紫云飞 大大的邀请!

我算是赶上了互联网的一波红利吧,有幸在这十年的浪潮中弄潮,只不过提前被后浪拍死在沙滩上。今年算是“退圈”吧,因为今年开始的工作内容和前端已经没有太大的关系了。不说现在了,说说以前吧!

我毕业算是早的了,2001年毕业的,我当初的专业可以说和互联网没有半毛钱关系,最早接触过电脑大约是1998年,那时候兴趣所然,学了学一些软件的操作,比如办公三件套呀,Photoshop呀,另外就接触过网页三剑客中。印象中在学校的时候,有位校友把 Flash 玩的特别的牛,还没毕业就开始赚钱了。而我们那时候对赚钱、工作没有概念,唯一的概念就是“六十分万岁”,希望早点步入社会,实现自己所谓的梦想。

好不容易熬完四年中专,一年的成人大专,进入了社会。但现实是很残酷的,我们那一届毕业的时候刚好碰上自己学的专业(对了,我学的专业是“纺织工艺设计”)应对的行业是低谷时期,国营相关的棉纺厂都在砸锭(砸掉有梭织机,更新淘汰),有大批人员下岗,更别说我们这些毛没长全,刚从学校出来的人能有企业接收了。原本以为毕业就能进入国企(我那届算是统招,说好毕业有分配的),就这样不得不面得自己择业。

刚毕业的时候,根本找不到工作,反正我自己尝试很多,比如路边发传单,跑“业务”等等。最后有幸运去了一家电脑培训的门店,专门教厂妹打五笔,学Office。这一呆就差不多一年,在这一年中一直尝试进戴尔(DELL)锁螺丝。大约在2002年左右终于进去锁螺丝了,干了一年多我就离开了厦门,来到了浙江干起了老本行,再转战广东虎门。2009年刚好碰上金融危机,我也就进入了人生中的第一个低谷,把十年打工赚的钱,一下子赔没了,这个时候我29岁了(我儿子五岁了)。

就在2009年,我回老家了,我弟弟给我买了台电脑,两本书,一本是 HTML,一本是CSS的书,开始自学了(那时候还没有前端这个职业)。那时候边看书,边使用Firefox抄网站代码,一直在抄 Wordpress官网的源代码。说实在的,刚开始也不知道所以然,只是按着代码抄,边抄边看效果,也就这样算是会写 HTML 和 CSS了。在家学了三四个月,次年(2010年)我跟我弟弟和他那些兄弟来到了魔都,在魔都那时没有工作,但也不用担心生活问题,因为那段时间我吃,住,喝等都是白嫖。

就在世博会那段时间,我接了自己的第一单,就是帮人家切页面,写写 HTML 和 CSS ,做一做浏览器的兼容性,后来我参加工作之后才知识我接的第一单,设计是仿照 Linkin的页面。这一波操作,小赚了一点钱,自己生活费是没有啥问题了。

也在这个时候幸运之神开始与我接触,在还没完成这一单的时候,我去了一家法国公司面试(这家法国公司现在还在,Wiredcraft,这家公司承办过几次 JSConf),面试结果一个月之后才通知我去上班,去上班印象特别深,老板跟我说,我不会说英语,沟通起来困难,加上也不知道我会不会撸码,让我试用一周,要是可以后面就留下来,要是不行就支付我一周的工资。我在魔都的第一份工作就是这样开始的。这家公司早期做的项目都很牛,好几个项目都是和联合国合作的,那些合作的网站基本上是使用 Drupal 来做的,我在其中主要写主题(也就是Drupal 的 Theme部分),简单地说,写一点点最基础最基础的 PHP,甚至都不用写,我要写的只是在人家生成的 HTML 基础上写 CSS ,让页面符合设计稿的要求。因为那时候做的网站都是国外的,都不需要做太多的兼容。我在家公司呆了一年半的样子。这一年多的工作,让我积累了第一份与互联网有关的工作经验,而且这家公司的老板很nice,我有时间的时候就叫我去学习,而且会推荐一些国外的博客给我。也就在这个时间段,我接触了很多优秀的国外博客,也学会了怎么使用 Google 来搜索。

因为我的工作主要和 Drupal 有关,那时候我的好朋友(为之)跟我说(那时候只在QQ上聊,没见过面,主要是我老找到问 Drupal 主题相关的问题)反正有时间,就用 Drupal 去创建一个站。就在这样的情况之下,我创建了第一个完全属于我自己的网站“W3Cplus”:


https://www.w3cplus.com/



以前写了篇我和 w3cplus 的故事:我和W3cplus的故事_总结 教程_W3cplus


最早这个网站就是我自己记录学习笔记的一个博客,因为那段时间我刚好在学习 CSS3 相关的内容。加上天天泡 QQ 群,会碰到了些有意思的问题,比如那时候大家常问的:

因为自己闲得蛋疼,就会去和大家讨论这些问题,并且把一些东西记录在案,也把自己学习 CSS3 的一些东西发到网站上。没想到很受大家欢迎,也就在这个动力之下,我坚持把 CSS3 的新行性都撸了个遍。那时候觉得自己的 CSS ,尤其是 CSS3 很牛逼了,有点坐井观关。

也就在这个时候开始混混圈子了,会参加一些大会。记得我最早参加的是腾讯那些前辈搞的“重构” 相关主题的大会。那个时候还经常有 娜姐( @田爱娜 )搞的 HTML5 活动,有波波( @裕波 )搞的活动。我也会去混个脸熟。那时候的活动都是免费的,也很有意思。我印象中有一次参加波波搞大活动,五花肉小姐姐跪着向大城小胖递名片(我记得 神仙 和 飞叔 也在)。那时候是很有意思的,只是我离那些大老都好远,我认识他们,他们不认识我。比如 @winter@贺师俊 (Hax),勾股(我阿里的师兄),小鱼 ( @sofish ),完颜,点头猪( @点头猪 ),一丝( @一丝 ),林毅 ,志爷(林小志)等。那时候特别葱白他们。


2012年出来之后,我去了一家手游公司,在这里做官网,就是各种游戏的官网。在这没呆久,我就跑路了,因为工作实在没有挑战性,整了几个模板,往上一套就行了。

2013年的时候志爷把我推到携程(Ctrip),有幸运和志爷和点头猪这些大大们共事。在携程这段时间我完成了我自己的第一本书《图解CSS3:核心技术与案例实战》:



大约在2014年上的架,现在应该下架了。这本书能上架,要感谢朋友的支持和鼓励,尤其要感谢华章编辑 福川( @杨福川 )老师的支持与鼓励。

新版本图解CSS 完成大部分,可以在小站上看到相关的更新:图解CSS_入门 精通 教程_W3cplus

大致涵盖了:

我的印象中,2014年开始我也会去做一些分享了,具体的也不太清楚。而且就 CSS 方面的能力,在圈子中也小有实力,那个时候还是“只是会用,但不知所以然”。


携程没呆多久,2015年3月份我就被我人生中的导师 @winter 招入手淘,成为他的麾下一员,可没半年时间我们就拥抱变化。我也就换老板了,在阿里七年时间,我换了不少老板,比如 @winter 、文叔(子之),胖子(@渚薰),鲲哥,斯肯,舒文等。


在阿里七年对我来说是收获最大的,而且我学的 CSS 也开始进入到更深的一层了。而且在大大们的带领和指导下,进步不少。就是一直没有去学别的,我一撸 JS 我就困,所以到现在都只会一点 CSS, 不算是前端,要算也是破脚前端。

好久没写这样的回忆文了,记得以前还是常常写:



这就是我做前端开发时的过程。后面就跟前端没啥关系了,也就有空的时候写写 CSS 相关的文章。比如最近就在 月影姐姐( @月影 )的掘金上写个小册:


就像 @紫云飞 大大在群里说的,撸了十年 CSS 的大漠退圈了:


感谢 @一丝 姐姐制作!

TL;DR

先说结论,野生半路出家“前端”系程序猿,在某厂 Node.js 相关团队搞基建。高不成低不就。之前在另一个厂,封榜前(ACM/ICPC 比赛中,为了保留悬念,通常在比赛结束前的某个时刻进行封榜,从这时候到宣布排名结果为止,参赛者将无法看到排名榜的更新)是个 P6。

下面是根据自己某次 Live 稍加整理、重构得到的回答。

网页三剑客年代

接触的年代没有天猪早(99 年),我是在 2002 年上下接触的所谓的“前端”。为什么这么说呢,首先那个年代并没有“前端”这个概念,其次,不会 JavaScript 的我当然只是个切图仔了。不,甚至都不是,只是个文字堆砌者 + “闪客”。

小学时候选班,有俩班比较特殊。三班三算班,四班电脑班。没见识的我觉得电脑班就是玩(穷人家没见过电脑)。其实所谓的电脑班就是,除了日常上课跟其它班一样,一周会多出一节还是什么的“打字”课,学生需要买“小霸王”,打字需要学“认知码”。

图源网络
图源网络

然而其实我们都是拿它玩游戏的。自从有了这玩意儿,我的小学阶段,我最常见父母的娱乐就是他们俩用小霸王双打俄罗斯方块、打坦克。因为别的游戏玩不明白,又因为是盗版卡带,所以自然能玩的不多。而自带的所谓“学习机”的卡带,则就是玩一个小孩敲城门的游戏。不过在这个年代已经埋下了我对“创造游戏世界”渴望的种子(这颗种子现在已经烂了)。当时玩坦克大战,我是不喜欢玩的,我不喜欢“对抗”、“闯关”,纯粹是手残。但我最喜欢玩它的地图编辑器,然后看我爸妈玩。包括当时有别的同学家居然有电脑,年代久远我记不清了,但是他有一款游戏类似超级玛丽(终于想起来了,游戏叫 Speedy Eggbert),能自己造地图,这也是我最喜欢的“项目”。一直到后来,玩帝国时代,我最喜欢地图编辑器,尤其是大学时候寝室断网后,我最喜欢的娱乐项目就是做个地图,给室友们对抗玩,我则开 OB 视角看他们玩;玩 Cities,最享受造地形;喜欢玩 MC……

图源网络

不过那个时候学校还是有机房的,里面有一股 15 寸显示器和主机箱特有的塑料味,进机房得脱鞋,就像这种。

图源网络

但小霸王上学的认知码这边根本没法用呀。课上老师教的是 DOS 下的一些操作,然后怎么进画图、记事本云云。上机课唯一的娱乐就是乱涂鸦。

后来到了 2002 年,机房来了一波更新。不过这个时候,电脑课就不再是“电脑班”的专属了。毕竟我们这代人一直是时代的“试验品”,所谓“电脑班”自然也是个“试验品”了。甚至连认知码自身都没活几年。我能记得这个字眼就已经是时代的眼泪了。

这个时候,别人都忙着打游戏。

暴力摩托
圣女之条件
李逍遥 & 赵灵儿
剑侠情缘贰白金网络版

以及,对当时大宇出的轩辕剑 Online 惊为天人。

轩辕剑 Online

然而我的兴趣并不在这里,而是网页三剑客。Dreamweaver、Fireworks 以及 Flash。啊呸,其实我并没用过 Dreamweaver 和 Fireworks。当时我捣鼓的是 Frontpage 97、Flash 5 以及 Photoshop 6。也有可能是我这样的学生在电脑老师眼里是“一股清流”,再加上我有从学校机房翻窗进去玩那仨玩意儿的前科,她就把机房钥匙给了我和另一个跟我一样有“前科”的发小,并同时扔了一本很厚很老的关于 C 还是 C++ 的图形设计的书给我(不知道有没有人有线索,我已经忘了书名了,毕竟年纪太小),当时惊为天书,然后压桌角了。小学有两个电脑老师,至今记得那个把刚翻进机房又拎出来的男老师,他做得很对,毕竟小学生可没什么自我负责的能力。但我更感谢给我钥匙和书的女老师,陈晓丽,一定意义上打开了我新世界的大门。

图源网络

说到“放学翻机房的窗”进去玩电脑,那个窗跟大家想象中的可能不大一样。是类似下图小蓝框框住的位置,而不是普通的窗户。

翻的机房窗户

有了钥匙之后,我在 2002 年玩了一暑假的电脑。带小伙伴进去玩红警,我自己在一旁捣鼓自己的东西。说来也巧,这些同学里还有一个异类,也是爱捣鼓各种东西的,不过除此之外,他比我更稍微喜欢玩游戏一些。这个发小现在在 Meta。

在这段国内互联网早期的期间,我有三个收集癖。

第一个是爱去电脑店收集各种类似于“网页特效大宝库”的光盘,或者去华军这些地方下载“网页特效大宝库”这种软件,就那种烟花跟踪鼠标、页面下雪等等。虽然我是个不会 JavaScript 的切图仔,但是按教程把大宝库里面的代码复制到指定位置还是能做到的。后来靠着这个东西,以及 Flash 做点小东西,在县里拿了个奖。

第二个是从一切纸媒、其它各种包装等等地方找网址。我当时有一个随身小本本,从所有能看到网址的地方把网址和标题记下来。实际上这种行为没卵用,但的确满足了我的收集癖。而且事实上,我发现很多网址只是随便写的(比如某些包装),他们自己根本没有那个站点,现在回想,要么就是乱填,要么就是过期了,大家对这方面也不了解不敏感,就不了了之了。

第三个是收集各种“免费空间”。毕竟我的启蒙书籍上告诉我,要想在网上安个家,就要找“免费空间”。

后来,“免费空间”逐渐升级了,支持 ASP、PHP 等。但免费空间该难找、该“高门槛(至少对于小学初中时期的我来说)”还是难找和高门槛。

游戏的种子

2002 年、2003 年那会儿,网络游戏开始在国内开花,彼时我小学终于快毕业了。上面我就讲过轩辕剑 Online,当时它出了个资料片我记得很清楚——《蚩尤再现》。奈何没文化的我在很长一段时间里一直叫它《蛮尤再现》。当时还有一些没活多久的游戏,比如嘭嘭帮、疯狂坦克等。除了网游,还有像大菠萝这类游戏。不过我在 2003 年弃了大菠萝,当时家里没网,我从不知道哪搞来大菠萝的光盘,玩了一段时间后,有次放学回家发现我的装备全没了——父母趁我不在家的时候玩,但是他们当时不会玩,要给角色穿衣服,于是从背包里面把衣服拖出来放到角色身上。发现衣服没了,但是角色衣服没穿上。于是我怒而弃游——那些装备对一个熊孩子来说就是全部呀

我从小就有个爱好,“创造”。加双引号的,因为不是真的创造,没那能力,只是纯爱好。比如上面提的坦克大战就爱玩地图编辑器。那段时间盛大引进了《热血传奇》,大街小巷有电脑的店面里,大家都在玩。

虽然没其他同学爱玩游戏,但怎么说我都是个天性爱玩的小孩。我眼红呀——但我同时又是个穷比。于是我就注册了账号去“白嫖”——没钱去网吧就去蹭有点脑的亲戚(没错我就是个熊孩子),从未出过新手村是因为每到 7 级要充值了我就换个号。在学校时候手痒又菜又穷怎么办,我自己画了好多本子,每页画一页用户账号,里面有背包、职业、登记、属性等等,然后让同学来“注册”。课间我当怪、NPC 等等一系列角色,跟玩家同学乱战。话说回来,现在找我玩狼人杀、剧本杀,我大概率会去,但我通常只会选一个角色——上帝、主持人。这是从小养成的兴趣,我对要动脑的“对抗”没兴趣,也就是说我对第一人称射击、MOBA 类的兴趣大于即时策略。

除此之外,爱动手的我还研究各种私(违)服(法)的技术,然后自己一个人在电脑里玩得很开心。这爱好一直延续到现在,比如前段时间我用 Electron 搞了个这个以做怀念:

基于 Electron 的 WIL 文件浏览器

也是因为倒腾这个,让我萌生了做游戏的想法。可以说我学编程,最开始是为了能“写一个自己的游戏”。然后莫名其妙我就接触到了幻想森林。

RPG Maker

从此,我在 RPG Maker 的道路上一发不可收拾。从 RPG Maker 2003、RPG Maker XP 到 RPG Maker VX 都玩过,脑海里一直挥之不去的语音是“紫苑工作室倾情汉化制作”。我的同学就成了我的“玩家”,规格也从实体游戏变成了电脑游戏。

不过也是因为 RPG Maker,让我产生了对 Ruby 的 PTSD。毕竟那时我唯一的“编码基础”是复制粘贴各种代码(比如网页特效大宝库,或者同期的各种 ASP 程序),根本学不会 Ruby,我现在对其仍有阴影,一直不会 Ruby。

RPG Maker 同期,还有一类类似于 MUD 的中国特色游戏,江湖。大部分江湖都是 ASP(非 .NET)写的,于是我又入了 ASP 的坑。当然,还是仅限于复制粘贴。

图源网络

基本上我的整个初中都是在传奇、RPG Maker 及其周边产物、ASP 等内容中度过的。有了 ASP,自然少不了海阳顶端这些东西。别的游戏还在玩,跟其他熊孩子一样,周五一放学就跟同学组团去黑网吧打 CS。

之前那个一起翻机房的发小一样也搞 ASP,但他跑去玩冒险岛了。在他带领下,进入了跑跑卡丁车的世界。在跑跑没出多久的情况下,当时最骄傲的成绩是,练了一整个晚上,能用新手车开到一分五十几秒的沙漠金字塔。

不过我的游戏品味一直跟别人不大一样,在劲舞团大行其道的时代,我一个人贼爱玩劲乐团。虽然是个手残党,但也算是可以随意过十三左右的难度无 Miss 吧,现在老了应该不行了。懂行的小伙伴应该能看出来,“死月(Death Moon)”就是劲乐团里的一首曲子。

死月 @O2Jam

我对机械键盘的崇拜也是在木星劲乐团论坛上获得的,当时论坛内极度推崇多键无冲的极限键盘。

扯远了,在 IIS5.1 + ASP 的荣光下,我算是摸遍了当时社区上有名的论坛(Discuz、dvbbs……)、博客(pjblog……)、江湖等程序,就是不动手写,只是精通这些程序的安装。除去 IIS 之外,当年还用过 @响马 大大的 Netbox,发现比 IIS 好用多了。

也是从那个时候起,虽然我不会写代码,但至少对数据库的一些基本概念、库表结构的合理设计有了一定的耳濡目染。毕竟是个类似程序都会有自己的数据库表(虽然大多是 Access 的)。

但是不会编程不打紧啊,我一样可以通过拖拽写“中文代码”,出软件。不是易语言,当时我居然了解到下面这玩意儿,不知道多少人听说过。神奇的是它真的可以用来写“企业级”的软件,甚至连数据库功能都有。

搭建之星

初入编程

为什么我说自己是野生半路出家“前端”系,因为除了千禧年初那会儿我接触 HTML、Flash 等,我没再接触更深入的前端相关内容。说起来,我初入编程是在我高中那会儿,2006 年。当时跟翻机房发小在同一个高中,但是学霸和学渣是有差距的。学霸玩游戏也能去重点班,而我在普通班。

重点班当然重点培养,包括竞赛。在我们那种十几县小县城的高中里,我从没听说过 OI,但神奇的是我们学校居然有。发小自然就去了。而我被安利,由于跟计算姬有关,就死乞白赖让教练收下我。如果说小学的电脑老师给我打开了计算机世界的钥匙,那么高中教练王震老师给我的则是打开饭碗的钥匙。我在《JavaScript 悟道》中邀请他作了推荐语。

结果就是,我又得到了一把机房钥匙——仍是跟发小一起。不过这次又多了一个好机油,现在是 NLP 博士大神,刚从谷歌来到我厂。

OI 时期是我技术最精进的时期之一。之前一直在蒙昧且自满的阶段,这会儿知道自己菜了。关键我自己菜还不努力。高中由于比较学渣,比以前会玩游戏了,玩 RPG 类的网游。诛仙、霸王大陆、永恒之塔……

然而发小看不下去,恨铁不成钢。关键他也玩,是个大佬,还跟我一起搞了个帮派。大佬跟手残党的区别就是,大佬玩的合欢,我只能玩青云躲得远远的。

有多恨呢?我跑去网吧玩诛仙,发小就给我 QQ 共享屏幕和语音。彼时我刚入门 OI,甚至不会 DP。我硬是在网吧学会了 01 背包和价值背包。从此我在 DP 的带路上一发不可收拾。

我个人是成就感驱动的,学会 DP 后,我便正式爱上了 OI。从此去机房去得可勤了,下课十分钟都不放过,更别说晚自习放学后一定要刷题刷到十一二点。比如刷刷 Vijos 和 USACO,逛逛 nocow,看看 @matrix67 的博客(说起来 KMP 还是在巨佬博客上学的,对巨佬的“如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第六个自然段。”印象深刻)。偶尔打打 TC、CF。

Vijos 已经找不到 2006 - 2009 之间的截图了。nocow 则直接消失了。

其实不止课余时间刷,上课前还会把题目记下来,然后上课的时候在本子上写代码,在心里调试。就像这样:

图源:知乎用户 @老钱 的爷爷的手稿

一到下课时间就飞去机房照着敲代码,然后提交看结果,如此循环往复。那段时间练就了非常初级的胸中 debug 能力,以及“盲打”能力。

是真“盲打”。我们有一项娱乐活动是相互比赛,闭眼不看屏幕和键盘,然后手敲快排,看谁快、准、狠。

后来我诛仙弃游了,原因是我当时就花了三十来块钱买炼器符,居然炼出了一把 +9 还是 +10 的 75 还是 90 级剑。然后去同学家炫耀的时候,他的电脑居然有毒。号马上被踢下去,等我再上去的时候,背包和装备已经空了,唯一给我剩下的是绑定的时装和坐骑。从此遁入空门。

OI 期间,为我的数据结构、算法能力打下了基础。同期的大牛基本上现在都是博士,通常领域都是 AI 相关的,比如刚才提到的那个好机油。而我只是个页面仔,殊不知我是靠 Pascal 踏入编程界的。

其实搞 OI 谁没点功利心,不就是为了保送么。不过学霸和学渣是有区别的。NLP 好机油省一无压力,而我由于双线 DP 传纸条错了几个点,保不了。就我这学渣的体质,去武汉搞自招也没用,毕竟我可达不到一本线。发小虽然也没得保送机会,但好歹考了个好学校,而且他的 ID 也完成了一次升级,把楼教 ACRush 的后半部分与 Matrix67 的前半部分拼了起来,得到了 MatRush。好机油则用 x + merge 得到了自己的新 ID。而我最没文化,把 Cadillac 的俩 c 变成了 X。

在比赛期间,其它事情没记到多少,对“还要区分大小写呢”印象深刻。彼时刚接触 Ubuntu 没多久,还去申请了免费光盘寄过来。在镇海中学还是绍兴一中(我忘了)比赛时,我跟发小还有好机油三个人挤一间房间,我睡椅子。但脑子里心心念念的 Ubuntu,以及它跟 Windows 的区别。后来半睡半醒之间,有人拍醒我,我迷迷糊糊脱口而出一句梦话,“还要区分大小写呢”。

大学四年

大学期间,如愿以偿报上了 CS 专业。由于没有顶尖学府那样的生源,又得益于我多年的耳濡目染,我的专业课水准在学校同学间算是顶尖了。大学四年,我的学习和编程路径很单一——

  1. ACM 与组建集训队;
  2. 完成我校 OJ;
  3. 学着搞游戏。

毕竟最开始电脑在我心里种下的就是游戏的种子。OJ 是用 ThinkPHP 写的,游戏则是用 C++。当时对前端一无所知,我的前端水平入门与 2009 年,也停留在那个年代。

记得当时学校一个前辈 @杨帆 给我一锤定音:

jQuery 你就用就好了,不用管它的原理。

他指的是 $(function() {}) 里的那个 $() 函数。我当时的确不明白为什么我的所有代码都要写在一个美元符加两个括号里面。现在明白了,但我的前端水平也仅限于此了。哦,后来还多了个 Bootstrap,不过我发现 @老雷 的水平跟我半斤八两,尤其是我看到他在我厂内网写的一个关于高密度部署的 Playground,浓浓的 Bootstrap + jQuery 风味。

ACM 按部就班。我又一次如愿以偿地拿到了实验室的钥匙。三把钥匙贯穿了我的计算机三扇大门。我在《Node.js∶来一打 C++ 扩展》的前言里也有感谢了大学实验室的老师陈萌老师和集训队教练宣江华老师。后来,也算是以学校有史以来第一枚省金回报学校了。不过主要是因为队友 @timebug 和另一位现在的阿里云流媒体大佬太过优秀。

至于游戏,还真有捣鼓出点小游戏来。当时从网上发现一个神奇的基于 DirectX 8 的游戏引擎 HGE,它的文档很清晰,API 很简单,很容易就能开发简单的游戏。比如贪吃蛇:

Hero Snake

比如拿 QQ 游戏的资源搞的连连看、大家来找茬。

连连看
大家来找茬
找茬编辑器

以及复刻了个当时的 AVG 游戏《啪啦黑·零章》,还有一个比较“和谐”的打砖块:

对,就是那个和谐的意思。我就不放图了。

以及,我还帮一个公司做过一个韩国的小网游。原因是它的单机版是 HGE 写的,我要把它进行改造,编程在线版的。至于为什么是韩国的网游,主要韩国人觉得我们便宜。作为学生党,的确是把这东西搞定了,但同时也被压榨了。

期间还有过一段去西班牙实习的经历,参加了一个国际项目,可以去海外参与“专业实习”,而不只是普通游学。这段经历对我来说其实也比较宝贵。做了一个所谓的全栈项目——他们公司的官网,PHP 写了个 CMS,有模板功能,那边的设计师小姐姐自己去写模板。

不过本科的实习经历,让我离游戏越来越远。

本科实习是一个创业公司,只有我一个技术。当时团购大行其道,老板要做一个团购汽车的网站。

汽族网——Bootstrap + jQuery

我最开始是拿 PHP 写的,毕竟是世界上最好的语言。后来我网上逛的时候发现了一个叫 Node.js 的东西,那是 2013 年末了,比 @天猪 晚了两三年。我当时恶从胆边生。独木桥我走不过顶尖学府的学霸们,我挑一条羊肠小道走,自然没人跟我抢饭碗。于是,我走上了 Node.js 的不归路。入门书籍是前 OI 大牛 @郭家寶 写的《Node.js 开发指南》。很神奇吧,并不是朴大的《深入浅出 Node.js》。毕竟我的《深入浅出 Node.js》是后来朴大亲手送我的。

实习期间,之前莫名其妙报的一个达内的发现杯编程大赛,居然进了决赛。当时就携之前搞的 OJ 去参赛了。为期一周的完善、演讲演练,自己都没想到居然拿了个第一。然后人生中的第一桶大金就到手了——10w。

深造与实习

本科毕业后,我选择了继续读下去。不过我没参加研究生统考,对于学渣来说这无异于自寻死路。选择自招的我顺利通过了专业课考试,再经过面试后就进去了。导师 @李启雷 对我的影响和帮助也很大,很支持我学习和使用 Node.js。他也是国内区块链的先锋,也给我的《Node.js:来一打 C++ 扩展》作了推荐语。

总之我之后就是 Node.js 一条路走到黑了。包括几个同学一起搞的实践项目,也是我一个人用 Node.js + MongoDB 写后端(当时就流行这个),其余几个小伙伴搞移动端。毕竟我读的是“移动互联网与游戏开发”专业,移动端如火如荼的,他们不搞才怪。这几个小伙伴后来也全去了某大厂。

在继续读书期间,断断续续有接外包做后端。当时创业氛围实在太浓了,随随便便一个外包就是本地生活的 App。

第二年开始找实习,不知为何,到处碰壁。我当时的路子可能选错了,荒废了 PHP,面多听、堆糖等都挂了,而 Node.js 又找不到好工作。最后 @timebug 收留了我,把我推到他们姊妹公司花瓣网。当时他们的一个 Slide 在民间广为流传,我也心生向往。

当时有一个小插曲是,我投了 @朴灵 的团队。也收到了面试。不过我是不走寻常路的“野路子前端”。在我被问到“你了解盒子模型吗”的时候,我就知道我挂了。事实是我的确挂了。

这个黑历史一直伴着我到现在。

后来在花瓣做做我终于有了正儿八经的 Node.js 经验。在那时我最得意的俩输出,一个是主题色提取,另一个则是把 Redis 当做定时任务用。

主题色那个真的是无心插柳柳成荫。我的研究生论文就是基于这个写的工程实践相关的内容;而且对应的 Node.js 包底层是用 C++ 写的,也奠定了我用 C++ 写 Node.js 扩展的基础;现在公司居然有业务在用,并且根据这个 Node.js 包的作者在公司内找到了我。

2014 年上下,除了创业氛围浓,那时大会氛围也浓。这个就不得不提当时纯粹的 JSConfCN 了。那年应该是在杭州办的,我去参加了。真的是大佬云集。

值得一提的是,赫门的 PPT 的无厘头风格对我后续的分享风格有很大的影响。

赫门的分享《淘宝前后端分离实践》

然后这里有个 Callback,由于当时我好像是去晚了还是怎么了,总之好晚才去。遇到了在外面摆摊的朴灵老师,然后就送了我本签名的《深入浅出 Node.js》。我记得也是这次大会,认识了好多人,比如 @小芋头君,我后来的 TL;比如 @老雷,现在一起搞 Web-interoperable Runtime 的同事; @游戏阿柴@李引证 大大等。

我发现我跟很多大佬的交集都是从杭 JS 开始的。

社会毒打

如果说我找实习的经历是我收到的第一顿毒打,那么我毕业后就开始受第二顿毒打了。其实我校招是有可能重返游戏行业的。只不过当年网易校招的面试还是笔试那天,花瓣网团建。我为了免费去农家乐,放弃了网易。其实后来也去面过 DeNA 并收到 Offer 了,还有江游,考虑到在杭已一年,以及其它一些因素,也没最终选择。然后谷歌挂在了第五面,终究是没能进。最后,我在阿里和大搜车之间选择了后者,因为我问阿里多给我 500 的 base 无果(诚实脸)。

大搜车两年,第一年做业务,第二年开始搞公司 Node.js 基建,并带了不到十号人,但这个带不涉及任何管理,只是 Tech Leader。也就是这段经历给那个知乎的问题提供了温床。

我至今不知道这个问题是谁提的,但我斗胆猜测一下是想在谈 Offer 的时候要更高一个层级却被 HR 以我为基准压下来的同学们中的一个。我为什么这么猜,因为当时的确有几个人悄悄跟我说他被卡了,我不确定有几个。现在回过头去看,我做事情的能力的确一塌糊涂,当时的我只具备做确定的事情的能力(此处的确定并不是技术难度的确定)。攻克技术难题的能力我有,但是攻克人、协作上的事情的能力则缺失。况且当时才工作两年,虽说差点给了,但最终于情于理都给不了。

大搜车的经历给了我非常大的技术成长, @小芋头君 也给了足够多的技术自由度。当时用 C++ 写了 Node.js 下的阿里云 ONS 消息队列 SDK,进一步对这个技术栈有了了解。也是芋头给我推荐了博文视点的编辑,让我最终出版了《来一打》。

2017 年沪 JS 大会,Node.js 社区打算在会上搞个 Code+Learn 的 Workshop,教大家如何给 Node.js 提交代码。我想成为 Mentor,但前提是得成为 Node.js Contributor。于是我开始从 Node.js 的 Issue 最后一页往前刷,把一些陈年老 Bug 或者需求给解决了。为什么是从后往前,因为前面的 Issue 往往很快就被人解决了,越是后面的,越不好解(至少我当时是这么认为的,其实也有可能是 ROI 不够或者被忘了)。最终我成了 Contributor。然后由于当时给 DNS 模块提交了几个大 PR,被提名为 Node.js Core Collaborator。我记得是在沪 JS 大会上,跟几个国外 CTC(当时还叫 CTC)一起吃饭的时候,在 @张秋怡 的帮助下,当场帮我完成了 Onboard。

Code+Learn Workshop

后来就去了蚂蚁的体验技术部搞 Node.js 基建。那段时间跟 @i5ting 一前一后进了阿里系,狼叔还开玩笑说大前端不是在阿里,就是在去阿里的路上。不得不说玉伯的体验技术部真是卧虎藏龙,前端我不了解,Node.js 大神就有很多,Python 发烧友 @苏千、koa 维护者 @死马@贯高、小丸子姐姐 @高晓晨、cnpm rapid 模式作者 @顾珠彬 等等,以及一年后转岗来扛把子的 @天猪、TypeScript 神奇队友 @whxaxes。还有很多低调的大神,一言不合就跑去内核调试。以及,我可以很自豪地说我跟少年时代偶像仙剑奇侠传三的主程 @房燕良 老师在体验技术部做过同事,以及还有网易天谕的引擎前主程 @iiif。至今有个遗憾的事情是一直没找到机会拿着仙剑的盘子找他签名。

随着时间的推移和 JSConf 的易主,大会越做越水。再也没有 2014 年那样纯粹的干货大会了,也是那个大会带我进入了大观园,真正打开了 Node.js 世界的大门——虽然并没有物理意义上的钥匙。

下面这个是我在蚂蚁一年所产出的一个分享,做这一块的数据基线真的是非常重要的事,它对研发效能来说就是基础。可惜我做得慢了,也做得早了。慢是指进度慢,我技术 OK,产品能力真不行;早是时机早,超前了。

后面我又蹉跎了一年在 CloudIDE 上,不过对这一块的架构算是有了一定的了解。写前端不行,曾花了几个月时间才堪堪搞定 CloudIDE 上小程序研发的前端,以及一个联调用的网络劫持 Chrome 插件的 CloudIDE 视觉还原。蹉跎归蹉跎,该有的分享还是少不了。

兜兜转转,最后 @七念 找我去淘系,说那边 Node.js 底层缺个人。想来我做 CloudIDE 前端也写不出花,毕竟 IDE 是重交互、重体验的重前端项目,后端并没多高深,终究还是去了淘系。在这之前顺便翻译了老道的书《JavaScript 悟道》。

淘系前端同样卧虎藏龙,比如当时同是 Node.js Core Collaborator 的吞吞老师(现在已经是 TSC 了),比如对 C 语言和系统底层了如指掌的码匠老师,Midway.js 作者 @Harry Chen@九十 等等。隔壁团队 @Yorkie 也是好机油,经常跟狼叔一起去公司 Costa 喝下午茶,聊聊人生谈谈理想。

在淘系一年,我主要做两个事情:

  1. Node.js 冷启动加速;
  2. Web-interoperable Runtime 及其高密度部署。

关于 Node.js 冷启动加速这块,在前段时间淘系开源出来的 noslate 项目中有讲具体原理。我当时就是在负责这块的。

另一个 Web-interoperable Runtime 其实也是前段时间淘系开源出来的 noslate,包括 Noslate Workers 及其调度层。我跟吞吞老师一人一半,加上底层 666 的码匠老师做技术加持。当时扛了 618 和双十一的一部分 SSR 流量,效果还是挺不错的。

在淘系的一年,我算是真的找到了“自己真正感兴趣的东西”居然真的可以跟商业公司的“生产项目”相结合。毕竟之前在体验技术部的时候,我要是去做这个事情就是在没必要的项目上探索。阶段不同,团队和公司的需求也不同。

新的旅程

去年 11 月,拜别了供职四年的阿里巴巴及蚂蚁集团,开始了新的旅程。这个时候就回到了最开始的 TL;DR 内容了。

野生半路出家“前端”系程序猿,在某厂 Node.js 相关团队搞基建。高不成低不就。之前在另一个厂,封榜前是个 P6。

现在的团队很年轻,也很优秀。一样有稳如老狗的同事,比如 2014 年面基的 @老雷,还有从大搜车开始就跟我拥有差不多轨迹的 @段潇涵,TL 也靠谱。不得不说 Node.js 圈子是真小,兜兜转转还是这些人。

正是兜兜转转还是这些人,我就有了个想法。大家每去个地方还是要重新搞套基建,为什么不集合社区上的人,去掉“公司”的概念,真正搞一套国内(至少目前是国内)的 Node.js 框架标准呢?这样无论谁去哪个公司,这个项目不会死掉,因为它的维护者们是真正“异地多活”的。人还是那波人,去哪个公司还是那波人。这样可以大大减少人力资源的浪费,把真正的热爱投给社区。

于是在去年年末和今年年初,我撺掇了 Artus.js。

这是一个社区项目,弱化了“公司”概念。聚是一团火,散是满天星。关于 Artus 的一些消息, @天猪 也有在一些场合提起过,我们也做了一些分享。

年逾三十,在职场上已经不是非黑即白了。技术也不是一切,为公司产生价值才是。这不代表我被磨平了,我该有的技术能力并没有退化,相反它还在进步。只不过我的其它方面也开始变得丰满起来。

至于过得怎么样?当前经济大环境下,得过且过吧,抱紧大腿过寒冬。

最后的建议,路子是自己走的,当下不代表未来,未来也不是当下。就像我最开始一样,进入编程界最开始是想写游戏,并且一直是这么走的。后来误入了 Node.js 的坑,当时的想法是另辟蹊径,没人跟我争独木桥。但是报应就是当时的确找不到工作——因为没有需求。但当时找不到工作并不代表一辈子找不到,最终还是找到了属于自己的定位,并在激烈的职场竞争中活了下来。

做一个选择总会遇到高峰遇到低估,选择自己热爱的事业就行了。总会柳暗花明的。