我的编程之路:从好玩到玩好...
作者:敲代码的小德子
来源:https://urlify.cn/R7bAvi
# 第一次接触电脑我最早接触电脑是小学四年级的时候,一九九几年,那是一个秋天,有一位老人在中国的南海边写下诗篇,我坐在学校机房的386电脑前照着一张A4纸上的代码敲入一连串的命令,经过若干次失败、重启后,成功进入了DOS系统并开启一个练习软件 —— 开始五笔打字练习。虽然教电脑的女老师很美,那时候上电脑课对我来说是个负担,可能是因为我觉得更快地用五笔打字对我来说没有什么卵用。如果我生在美国,那会儿应该玩的是 Apple II 吧,完全不是一个档次啊有木有。
不过我始终记得一个有趣的事情:那个练习软件会统计打字速度,女副班长学得最快打得也最快,每次数值都是最高。有个女生表示不服,说一定是副班长的电脑时钟走得比较慢。于是副班长做了一个我们这种所谓的”少年艺术学校“的学生才会干的事情来证明她们倆的时钟速度是一样的 —— 副班长对照她自己电脑的时钟用手打节拍,一秒一个节拍,保持打节拍,走到那个女生电脑前,一对照,发现节奏是一样的。于是,那个女生竟然马上相信了他们俩的时钟速度是一样一样的...
# 第一次编程:VB
在有自己的电脑之前我经常混迹于市区唯一的一家网吧,一家在里面看黄色照片会被制止的网吧。2001年初三毕业的时候,暑假,家里给买了台电脑。
和其他骚年一样,我开始混迹于本地的盗版光盘一条街。5块钱一张的光盘,一两年下来家里就屯了一百多张游戏光盘。
和其他骚年不一样的是,我会和盗版光盘店老板交流,显然老板是见过世面的,他们推荐我玩 Flash、Dreamweaver、Fireworks 所谓网络三剑客。后来我顺藤摸瓜,在新华书店发现了一本《少年学Visual Basic》(大体是这个名字吧),图文并茂很好玩,于是里面跑去盗版光盘店买了张VB6.0的安装盘。那个暑假,把那本书学完了,期间也学了Flash和Action Script,可以自己做个小软件。电脑里的东西是按照自己的意思去计算、去运动、去反应的,那时候的我觉得这个很好玩。当然,这个好玩也仅限我自己,周围没人知道、没人理解。
后来,在另外一家卖电脑器材的店里,老板给我推荐了一本更高阶的VB的书,说是他店里最后一本了,我花25块钱买下来。有一次在学校厕所上大号,书掉下去了...掉下去了...。考虑到,这可能是我们这个小县城里最后一本了,我把书拿去洗了洗,再用剪刀剪掉一部分,晒了晒,接着看了...
# Pascal 和 文曲星
高一的时候,学校有个班级网页制作大赛,我代表我们班拿了第一名,用 FrontPage + Flash 做的静态网站。电脑老师跟我说可以参加学校里的Pascal编程课,将来参加全国比赛,拿奖的话高考加20分,说不定还能保送浙大。于是我跑去买了本Pascal的书,晚自习的时候都在看,回家也练练。自然,我在编程课上表现很好,老师都是让大家来围观我的代码来着。然而,不知道为啥,编程课没开几节就不了了之了,有一种白折腾了的感觉。唉,“保送浙大”啊,至今耿耿于怀呢。
高二的时候,经常一起交流游戏心得的小伙伴告诉我他在网上看到文曲星可以编程。于是,我开始鼓捣这个,实际上文曲星自带Basic编译器(对,就是比尔盖茨发明的那个)。我利用金山游侠的原理找到了系统密码和游戏密码的存储地址、可以查看和修改别人文曲星的密码、可以修改俄罗斯方块的难度值到更高级别、可以改掉很多系统默认文案,后来还在文曲星里写了点小动画。提这个不是为了说自己多厉害,而是想表达:那会儿纯属是觉得好玩而Coding的。事实上,我们班上一个同学看了我代码后,现学现用,回家闭关一天,回来后给我们展示了他自己用文曲星写的有开头、有情节、有结尾的动画——《老吴传说》(老吴是我们班主任)。
金山游侠的原理:金山游侠是一款可以修改游戏参数的软件,原理是这样的:假设你游戏里生命值是10000,那么遍历所有存储空间,找出值是10000的地址,记下来,然后想办法让生命值变一下,假设9500,再遍历一遍,就可以找到这个地址了,然后就可以直接改它了。
# 大学
2004年,高考考得不是很理想,进了一个三流院校,读计算机专业。因为有老底子,在学校里成绩还行,尤其是专业课。不过期间除了课程作业要求,就没怎么写过其他的代码了。青春的荷尔蒙全部用在了《魔兽世界》上了。直到《魔兽世界》一直停留在60级,不能更新资料片,让我很失望。大三下学期,在拿到最后一个我想要的装备后,我长期AFK去考研了。考研其实是个体力活儿,很辛苦的,我基本上每天都是那栋楼里最后一个离开的。不过,期间系统地复习了一遍计算机专业的主要课程,极大地提升了英语能力,这两项一直受用至今。
# I pronounce Linux as Linux
08年如愿进入浙大计算机学院,在实验室里干的主要是跟linux有关的项目。简单点说,就是在Fedora的基础上,给某军区定制一款以安全为特色的Linux操作系统。老板(我导师)作为产品经理给我们提出了各种奇葩的需求,比如:开机界面要改成和 windows xp 一样...
虽然产品经理比较恶心,但总的来说研究生第一年还是很轻松的。除了上课,都得在实验室待着。在实验室里,1/4的时间是和实验室师兄弟们玩游戏,1/4的时间看看电影、电视剧,1/4的时间上网、读RSS,剩下1/4的时间才是做项目。期间系统地学了Shell、用GTK+Glade做了几个GUI软件、读了点Linux源码。总得来说,混日子吧,没啥追求。
# 自由
友情提示:高潮来了
我们老板除了做项目外包生意,也做劳务输出。他和几个软件公司有合作:他把手下的研究生、博士生派到他们那儿实习一年多,那个软件公司给相应的好处。当然,被派去的学生也是包食宿有点工资的。研一那个暑假,我估摸着也要被这么“卖”掉了。于是,在和一个同样被卖到杭州某公司的师兄商量过后,到有了个计划...
我找了个也是浙大毕业的在外面开公司的师兄,让他找我们老板说:久闻x老师您的大名呀,我读书的时候就上过您的课,我们需要一个实习生,我们有个和联通合作的项目(项目书是我事先做的)需要你们实验室的研究生帮忙,能不能合作一下。老板同意了,也谈妥了价钱。然后我们几个下学期马上研二的学生被叫过去做了一场笔试和面试(笔试题是我事先出的)。我自然是“脱颖而出”啦。于是,我自己花钱买了自由,开始找实习...
# 实习
淘宝
因为比较主动,基本功还算扎实,09年9月份很在淘宝搜索中心找到了实习。开始做的事情比较简单,配配正则之类的。后来在师傅的带领下写爬虫,偶尔也帮运营同事写些脚本做数据处理,算是把Java、Python给入门了吧。淘宝真是把实习生当正事员工用啊,感觉很被重视,能感觉到自己做的事情能产生价值的,所以干活儿也很卖力,经常深夜骑车从创业大厦返回玉泉校区。所以,在这儿跟在实验室里干活的感受是完全不一样的。
Intel & eBay
在淘宝实习了半年,我听信一个师兄的建议做了一个现在看了极其错误的决定:换个公司实习。理由是体验体验不同的城市、不同的公司,这样才能清楚自己将来适合在哪里、干什么。严格来说,目的是达到了,但失去了继续呆在淘宝,让自己技术更精进的机会。
先去了Intel,在上海闵行,做 Meego(Intel和Nokia搞的针对上网本和平板的操作系统)测试工具相关的事情。然而,很闲,没啥事儿做。2个月后,10年暑假申请到eBay暑期实习计划,去他们在上海的运维部门的 Unix Team 实习了,所在部门的TL现在应该是某知名公司的CTO了。eBay对实习生安排还是很的:硬性的活儿不多,安排了很多培训和活动,比如:职业规划、如何发工作邮件、英文话剧、TMC(Toastmaster Club)等等。不过我还是做了些事情的 :)。这期间用 Django 做了个 VMware 虚拟机集群的管理界面。为了让界面好看点,开始自学CSS、JS,感觉前端这块挺好玩的,似乎找回来小时候 Coding 做小软件、做动画的快感。这为后来的职业选择埋下了伏笔。
eBay 有个企业文化我觉得非常好:公司选择信任你,但如果你被发现一次诚信有问题马上开除。比如发票报销,审核是很宽松的,但只要你被发现乱报,马上开除。
# 毕业、工作
临近毕业,我陷入了迷茫。按说,从技能上来说,最适合我干的是运维,事实上也拿到了阿里运维部门的offer。然而,我想干前端。但,10年、11年的时候,前端的地位还不像现在这样高、那么有挑战,很多人觉得前端其实很low,没啥技术含量。我在矛盾中挣扎了很久,最后还是去了天猫写Java。
然而,并不开心,
我辞职在家里待了半年想自己创业,用Flask + Backbone,基于百度地图做了个旅游规划相关的网站,虽然最终没把这个事情做大(现在想想,当初自己很不成熟嘛~~),但系统学习了前端、积累了很多前端方面的知识,12年我进入了网易杭州研究院,如愿成为一个前端工程师。
在网易参与了网易云音乐官网、PC端的开发。这两个项目都是基于网易自己的 NEJ 框架的,虽然语法有点诡异、入门有点难,但让我收获非常非常大的。我前端层面的大局观、模块化思维基本上都来自这里,至今受用。尤其PC端,是 chrome 的壳子套一个单页面的HTML页面,整个架构是网易首席前端技术专家蔡剑飞做的。里面体现的思路和现如今很火的 webpack、react redux 单向数据流如出一辙。我刚开始做这个的时候也是懵懵懂懂,很难跟大牛统一思维啊,无数次找他请教。反正问题到了他那里,总是很快定位,轻松解决。这个过程中,我学到很多,成长很快。
其实,管理上如果更接地气一点、工资能稍微正常点给涨一涨,我应该蛮喜欢在网易长期待着的。
# 有赞
14年初,我辞掉网易的工作,加入了现在的公司:有赞,那会儿还叫口袋通。这次换工作,我就投了这一家,比较笃定,就觉得这家公司有前途...
过去两年,是我最辛苦的两年,也是收获最大最开心的两年。
我从一个骚年成长为前端技术TL
我们梳理了前端架构,形成了比较完善的持续迭代更新扩展的UI框架和JS组件库
我们形成了一套还不错的开发工具:线上打包、数据Mock、UI测试
我们将移动页面性能提升了一个台阶,打开速度比原先减少了一半多
我们针对全站做了 https + spdy
我们至少两周一次的技术分享
我们在React、Node方面做了大量的探索和应用
我们积极有担当
嗯,文章写到这儿,不加一个招聘广告太说不过去了,毕竟这篇文章是HR姐姐鼓励我写的,欢迎优秀的工程师 加入我们
# 把前端玩好
”以工程师的方式把事情做好“
这句话是我最近我自己对码农这个职业最大的体会。作为一个前端工程师我越来越强烈地感觉到我们不应该强调自己是个前端,而是要去强调自己是个工程师。工程师是干嘛的呢?工程师就是创造东西、解决问题的。我们应该利用设计、前端、后端、运维等各方面的优势来解决我们遇到的问题,而不是陷入以前端的方式解决任何问题的思维牢笼。在做性能优化的时候,我就强烈地感受到:好前端必须得是半个好运维。所以,我们前端团队的群里长期有三个运维同学驻扎,我们把他们当爷供奉来着。
同时,我们应该追求以最优雅的方式来解决问题——不单单是把问题解决了,而且解决问题的过程和手段是优雅的、有技术产出的、能对其他工程师有帮助的。或者说,我们的智慧成果应该是可累积的,尤其是一个团队内部。
"前端同学应该多去看看艺术展提升自己的美学修养"
这是我一直想在团队里倡导的,但还没付诸实践。“打造面向未来的有战斗力的团队” 是我给自己定的今年的OKRs的目标之一,前端作为承前启后的工种,就应该是很全面的。
"基础真的很重要"
前端技术日新月异,翻看应聘者的简历,我总能看到不认识的新名词。前端工程师的知识图谱里,变得快的其实只是其中一小部分,还有很多变得并不快的知识我们是不是都掌握地很好了呢?比如:http协议、浏览器原理、网络安全、设计模式等等...
图题:做木工和码代码是一样一样的,都需要工匠精神思密达。
实话告诉你,用IDEA自动化部署Docker镜像,并没有想象中的那么难....
觉得不错,请给个「在看」
分享给你的朋友!