- Published on
freeCodeCamp 访谈丨琚致远:优秀 Web 全栈工程师的成长之路
- Authors
- Name
- Zhiyuan Ju / 琚致远
- @jjzhiyuan
本期嘉宾致远,是一位 97 年的小朋友。叫他小朋友是因为他的年纪比我小好几岁,记得之前我们合影的时候他总是有点腼腆地抿着嘴哈哈~自我们 2017 年认识以来,这位小极客的独立、坚韧、认真的品质,始终对世界保持好奇与不断探索的态度,都给我留下深刻的印象,也启发我以开放包容的心态思考自己工作的价值。
本文标题取自致远的自我介绍 “正在努力成为一名优秀的 Web 全栈工程师”——我知道,“全栈工程师” 绝不会只是一个定义他的人生的标签,而会是帮助他不断拓宽人生边界的能量之源。文章里聊到他小学时开始接触电脑,初中时自学编程的有趣经历,也聊到他大学时的项目经历,在阿里第五面时因学历不够被拒,而后尝试远程工作的体验……每一个问题,致远都回答得很认真,相信大家读起来也会感受到这名小青年对生活和工作的用心:)
这个夏天,致远就要大学毕业了。当被问到对于未来的期待时,他说 “希望自己可以踏踏实实、继续做自己喜欢的事情,在此前提下,能够鼓励、帮助身边人自我实现”。很感恩我们拥有致远这样的年轻的朋友们,他们在化思考为行动,为我们的社区注入活力,让这个世界变得更好。我们也很希望刚刚结束高考正在憧憬大学生活的孩子们能够读到这篇文章,相信对于他们 “如何度过大学时光” 也会有一定的启发意义吧。
淡泊明志,宁静致远,愿致远们始终年轻。
1、简要介绍一下自己吧。Hi 大家好,我是琚致远,即将本科毕业。我喜欢交朋友,热衷于 Web 技术,正在努力成为一名优秀的 Web 全栈工程师。
2、可以讲讲你的童年生活吗?我的童年和绝大多数人的童年没有什么不同,有家长的严格管教,有自己的不安与顽皮,有探知的好奇心和探索的破坏力。唯一不同的,或许是我对一件事的好奇与坚持比别人久了那么一点。
对每一个孩子来说,家庭的影响力都是排在首位的,我也不例外。在别人眼中我也算是出身于书香门第,这对童年的我来说还是有一定的压力的,毕竟我的成绩不能惨淡。但幸运的是家人也开明地在我的爱好和思想上给予了更多的自由。我的母亲是小学教师,教书育人,不仅教课,也弹的一手好琴,写的一手好字。小时候,母亲在弹琴和阅读上对我也是下了大功夫的,可惜我志不在此,也就荒废了,现在看来,当时的自己太年轻。
孩子的爱好总是广泛的,在家人的影响下我喜欢打乒乓球、陪爷爷杀两局象棋。也和同龄人一样喜欢周杰伦和林俊杰的音乐,打小喜欢看 Disney 等工作室出品的动画以及诸如「Harry Potter」、「The Lord Of The Rings」等奇幻系列电影。小男孩嘛,总是沉迷于拆卸各种电子产品,从遥控车到电脑电视,拆着拆着就多了螺丝,哈哈,破坏力也是很强了。关于电脑,家里书柜中各种电脑书籍就是我的启蒙教材了,撺掇着撺掇着就发现更有意思了,深陷其中。
我的童年影响并造就了我为人处世的方法以及平时思考的问题,它是磕磕绊绊的成长过程中的生成物,无论好坏,无关成败,都密切关系着我的未来。
3、你是什么时候开始学习编程的?在这个过程中遇到什么困难,是怎么解决的?对于初学编程的小伙伴你有什么建议呢?因为家人工作单位会用到电脑,我便打小接触到了计算机基本操作相关的图书,这算是我的启蒙读物了。
在小学三年级我拥有了自己的第一台电脑,是叔叔在中关村组装的。当时用电脑纯粹用于娱乐:看《大长今》、玩《魔兽争霸》以及各种 Flash 小游戏。
在玩儿 Flash 小游戏时,就想到自己可否也做一个呢?后来,我在县城书店找到一本厚厚的《Flash 制作从入门到精通》,但是妈妈觉得没用便拒绝给我买,为此我一路生闷气,回到家也不说话,最后妈妈还是迫于无奈又带着我买了一本。随后的很长一段时间里,我便在电脑上按照教程、一步一步跟着做,并不时地鼓捣出一些小玩意儿。
初中自己比较“活跃”、到处乱窜,有天突然看到校长在办公室手动搜索并整理几十份各个班级的 Excel 表,我便想:能否做一个程序帮助他提高办公效率?于是在初二升初三那年暑假,自己用了接近两个月时间系统地学习了 Visual Basic 编程语言,并使用它开发了一套学生信息管理系统。打开该系统并登陆后,即可进行学生查询、学生编辑、报表生成与打印等功能。
在 08 年暑假,我的 QQ 号码被盗取了,我就想自己是否可以盗回来?然后便迷上了所谓的「黑客」技术。从最开始下载各种木马工具到后来开始翻看、学习某些工具源码,再到后来使用社会工程学手段「恶搞」我的同桌:在过年时和他打赌能盗取他的 QQ 号,他不信,2 个小时后便把他账户的密保、安全手机全部解绑。
年少轻狂的我也曾渗透过中学教务处,改了考试成绩,还特别开心的和妈妈说:我能进尖子班了!妈妈听完后便训了我一顿。自此我知道凭技术手段改成绩是不对的,便逐渐向白帽子靠拢。
学习 Web 安全的历程中,最大的一次渗透经历是中学时曾渗透过某省教育厅,并可以访问到大量敏感数据,但我没有脱库、而是找到管理员并发送了一封描述具体漏洞问题的邮件。
进入大学后,我想到如果自己清楚 Web 系统是如何构建的,那定将有助于我学习 Web 渗透技术。于是我通过搜索引擎查询大量资料并自己在本地模拟示例,用了将近两周的时间才初步了解传统 Web 系统是如何搭建并运作的。紧接着,我及其幸运的为学校、政府以及部分大小企业定制了一系列 Web 系统。
在学习 Web 开发的这将近 4 年时间里,我也尝试了各种不同的编程语言。根据项目需求选择最合适的语言就好,不必追新。另外,不要因为语言繁多而苦恼,尽可能学精通某几门即可,因为语言只是一种表现形式。
学习一门语言,要把基础打扎实,有自己的一把刷子。什么是扎实呢?在我看来不是说你有个印象,而是信手拈来不需要去频繁查询,有自己的框架、技术栈,构建自己的护城河。
4、你在大学期间做过一些外包项目,可以介绍一下其中比较有挑战的吗?你觉得自己通过做这些项目收获了什么?大学四年做过的项目还是蛮多的,从 Visa、PICC 到当地政府甚至私企都有深入负责过。其中的每一个项目都是有挑战的,左耳朵耗子陈皓说:“要去经历大多人经历不到的,要把学习时间花在那些比较难的地方。要写文章就要写没有人写过的,或是别人写过,但我能写得更好的。”所以那些只是写重复的业务代码的项目,我会尽可能转交给其他需要赚外快或者攒经验的朋友们。
那么聊一下我的第一个正式项目吧。
在大一上学期,一位学长问我能不能帮学生处蓝天网改版页面?我欣然答应了,但那个时候我并没有学习过如何制作网页、搞不清楚打开浏览器输入网址为什么能出现各种页面、为什么同一个网址展示的内容却不一样,但我还是答应做这个事情了,我总觉得:这事儿靠谱,应该能成。我知道不能只想着怎么做,而应该马上试着去做。通过搜索引擎,我了解到一个网站是如何搭建的、知道了制作网站需要用到什么语言,这就足够了。
当时我在学生会有一个公共办公室,做学生处网站的日子里,我每天早上 8 点准时到办公室,晚上 11 点才回宿舍(那个时候不熄灯)。耗时一个半月,终于更换了旧网站。这期间,网站界面改了两次,第一版界面是我自己想的,我觉得效果很酷,但是学校不这么认为并且给了我一些其它高校网站作为参考。从这件事儿上我第一次明确认识到:一定要提前确定好需求与界面设计。
为学生处改版过程中,我不仅写了代码、做了设计、顺便又做了一次伪产品经理,所以专心做一件事儿,它真的不会很单调,因为有那么多坑等着你去踩、有那么多内容需要你去学习,对于这些挑战,我是非常乐于接受的。做完学生处网站后,我在其底部留下了自己的昵称与个人站网址,随后接到了多个大大小小的项目,这些例子不再一一赘述。
实战极大提升了自己的技能,虽然岀现了非常多的问题,但是摆正好心态,一遍一遍搜索、排查,总能够解决的。而且通过实战解决的问题,你对它的理解并不是理论学习所能达到的。
现在看来,第一个项目并不复杂,但引用阿里云王坚博士的话:“其实年轻人很了不起的地方在于,TA 觉得 TA 什么都能干,但是没有说 TA 什么都能千成。这是两件不同的事。可能年轻人明知道干不成,TA 还要去干,这是一件非常了不起的事情,要有巨大的自信心才可以做到。挑战天生就应该离年轻人更近,因为只有年轻人想学习东西,年纪大了的天天想教别人东西。所以我相信,只有这个世界的挑战离年轻人更近,未来才会离我们更近。“
5、你平时热衷于参与社群或者参加技术会议,这些经历对你的成长有什么影响?互联网圈子是异常活跃的,众多的社群组织在等待你的加入,我非常鼓励大家在确定自己的某个兴趣点后主动查找、加入相关社群。无论线上或者线下,形式不重要,重要的是你加入后应当积极融入进去,因为很少有人会主动邀请你。加入社群后,要去学习别人的想法、分享自己的见解并尝试与成员交流。
freeCodeCamp 是我加入的第一个社群,加入后我会主动与成员聊天、结交朋友。起初我也觉得不好意思,一直在窥屏,认为彼此不熟悉不好开口,但有一天突然想通了一件事儿:“既然大家都不认识,那就试着唠吧。如果对方回复,那就太好了!如果对方方便,就可以继续唠;如果不回复,那也没关系,反正大家原本就不认识,不理我我也不会感到尴尬。”有了第一次开口,就有了第二次、第三次,久而久之,这种行为就变得自然而然。
互联网会议是异常多的,但我不能告诉你需要参加什么会议,因为我不知道你的兴趣点在哪里,我只能鼓励你和你的小伙伴积极查找、选择、参加高质量的、自己感兴趣的会议。
这四年里,我用做外包获取到的收入参与了多个跨界的社群或技术会议。列举某几个会议~
乌云白帽大会
阿里云栖大会
freeCodeCamp 成都社区 Web 前端 交流大会
ArchSummit 全球架构师峰会
生财有术社群
积极参加合适、正确的社群与会议,并不会给我带来一时的“利”,我知道,自己需要做的是循序渐进地学到讲师们的思想、与讲师们交朋友。有几位小伙伴之前从未参加过类似活动,这几次带着 TA 们参加活动既拓展了视野又促进了我们之间的友谊。不仅仅如此,通过这些活动使我有幸结识了诸多跨行业大咖。
今天的世界已经没有人可以教给你什么了,但是你可以从别人那里学习很多东西。和 TA 们聊天,对方并不会有高人一等的感觉,而是很朴素、很平常。所以,作为刚入门的新人,摆正心态、提出问题、大大方方讨论就行了。但是需要注意,大咖们时间也是非常宝贵的,不要和大咖拐弯抹角,自己用一定时间组织清楚语言以及问题,有事儿说事儿,这是对对方起码的尊重。
6、身边的同学也都像你一样对自己的学习和社会实践有明确的规划吗?你尝试通过哪些方式带动他们?我不认为自己在学习和社会实践有明确的规划,但我知道自己在尽可能做自己喜欢并利他的事情。
附上两张截图吧,这是在 2017 年时尝试在学校做了一段时间 Web 前端培训,参与者是我的朋友们,不过大部分人是零基础。
我并没有手把手教 TA 们如何去写,而是给 TA 们列出时间周期以及某个周期内的任务。TA 们总会遇到各种各样的问题,如果直接向我求助效率很高,但是,我希望 TA 们可以通过自己的努力、在遇到问题时通过查询搜索引擎来解决,这远比我直接告诉 TA 们该怎么做要好。
在有朋友给我发来下方截图中的文字时,我心里是异常开心的,有一种满满的成就感!但,好景不长,没有兴趣或利益驱动的事情,往往大部分人是坚持不下去的。
在一段时间后,TA 们倦了,因为短时间内看不到回报。这不是 TA 们不努力,而是大部分人希望短期内可以产生效益:比如拿到高回报外包,或者找到一份工作。可是技术学习哪有这么容易,前期需要耐得住寂寞、死扛过去。
于是,在学习一项技能时,以 Web 技术为例,我的建议是首先确定是否真的要做 Web 方向; 接着请教有相关经验的朋友,都需要学习什么技能; 最后用一定的时间规划学习周期,持久地、分阶段性学习。
于我,在学习(做)一件事情的时候便是按照上面的步骤来的。过程不复杂,但在最后一步,坚持下来的又能有多少人呢?提供一个可以支持自己长期做一件事儿的小技巧:尽可能做自己喜欢做的事儿。
想做一件事情的时候,快速分析一下,觉得可行那就只管去做好了。瞻前顾后可以理解,毕竟这是一次选择,需要用一定时间来考虑。可过于瞻前顾后,觉得这不行那不行,或者在等等,大概率这件事最后也不会去做。况且,就算这件事情最后”失败“了,自己也不会损失太多。相反,我们从这次”失败 / 试错“中可以学到许多,比如:下次不会再做同样的事儿或者同样的事儿不再跳坑。
另外,在学习从未接触过的领域时,建议自己先摸索一下。如果有必要,那就请教该领域的高手,或许 TA 们一句话就可以点醒你,不过记住:最终还是要靠自己。
三个月学习 Web 技术,勤奋一些,是可以达到一定高度的。不要因为马上毕业就随意找一份工作,用三个月时间掌握这项技能,你越熟练、越有经验,自己的机会也将越多。
不过令我开心的是,我在去年回国后,把远程工作转给了一位朋友,他通过绝对的努力,胜任了这一职位。从最初零经验到如今已经可以独立开发 Web 前端项目,每个月还能拿到不错的薪水,一举两得。
7、聊聊 2018 年你在德国作为交换生的学习和生活经历吧,你觉得这段经历中最有意思的是什么?去年我作为交换生去了德国法兰克福,国外学习的确更自由,上课与否都没有关系,只要最后考试通过即可。但是,这也需要极强的自我驱动,因为德国老师不会提醒你该做什么、怎么做,必须自己操心,否则考试大概率无法通过。
我所见到的大部分国外学生非常严谨、认真,这是我暂且所不能及的。
在这里,顺理成章的我结交了新的朋友,TA 们来自不同的国家,偶尔也会有联系。
在德国生活,因为我的住处离美茵河畔走路只需要 2 分钟,所以每天早上或傍晚,我便顺着河边跑步或遛弯儿,但我依然胖了很多*(:з」∠)* 可能是这里有许多好吃但热量极高的食物吧。
在这里,我会和朋友们偶尔出去玩,比如阿姆斯特丹、德国汉堡、捷克布拉格等等。
比较刺激的一件事是与朋友们一起在布拉格跳伞,当喷气机飞上天空后,说实话当时心里确实一怂,不过很快便平稳下来:无非两种极端结果嘛~ 在飞机到达跳伞高度后,我们一个个挪到机舱口,然后像下饺子似的跳了下去(我怀疑自己是被风吹下去的)。
很快习惯高速下落后,放眼望去,幅员辽阔,我甚至看到了地平线。原本在地面上如此渺小的我,现在以「上帝视角」审视着它们。这次跳伞,极大地拓宽了我在日后审视问题的角度。
8、这个夏天你即将大学毕业,你也拿到一些很不错的 offer,为什么之前选择在 Team247 远程工作呢?分享一下远程工作的体验吧。在回国前一个半月,我开始准备秋招,并选择性地投递简历给一些企业或团队。自然而然的,阿里是我所期望的企业,这是一种信念。
在将近一个月的各种面试中,先后拿到了扇贝单词、轻芒、网易等公司的 offer,但此时阿里的面试仍未结束,于是我便选择了网易。在阿里将近 40 天的面试流程后,我在第 5 面被 HR 以学历不够拒了,因为应聘部门相对较新,且有足够多的研究生以上学历应聘者。阿里失利后,我确实会有一定失落,但这已经不重要了。
在网易的这段日子里,感触颇深的是网易确实很像一所大学,因为年轻人真的很多。但由于我不喜欢一进入办公区、黑压压一片人在敲键盘这种氛围,我最终离开了它。
随后,申请加入了远程团队 Team247,感谢团队给我的这次机会。团队成员真的十分厉害,每个人手里都有不止一把刷。
在回国前,我在德国有申请到一份远程工作。只需要确定需求并与对方确定时间后,按时按质交付即可,具体什么时间工作并不作限制。我可以一周不工作,趁着下一周用两天时间集中处理;也可以每天工作两个小时,总之只要在约定时间内按时按质量交付即可,这才是我所理解的远程团队。
在 Team247,我感受到了朝九晚六的感觉。每天按时上线后,开始处理当天的任务。经常性地,我会在多个不同类型的项目中处理任务,比如处理完 Web 应用后,就需要抓紧去处理原生应用,这对自己的技术栈还是很有挑战的,所以压力会很大。
有时问题卡住了,我就不得不继续处理,当然这不是强制的,我完全可以放在第二天做,但是作为一名工程师,我喜欢尽早处理完问题的快感。
总之,做远程工作是需要较强的自我驱动的,因为大家彼此不可见,所以更需要自己合理安排进度,否则久而久之,自己经常完不成任务,同事便会考虑你的工作能力。一时的偷懒,从长期看是不利己的。另外,远程工作对自己技术栈有极强的要求,因为自己不单单做自己熟练的,也会让你做你所不熟悉甚至完全陌生的领域,大家都很忙并不会一步一步带着你做,因此唯一的办法就是自查、自我解决。
投入时间与精力,并结合搜索引擎进行有效的搜索,问题被解决只是迟早的事情。因为远程团队,大家彼此不见面,你能证明自己的最好方式就是能担此重任,解决问题。
9、你是如何找到远程工作的?我主要是通过在远程工作平台申请到远程职位的,推荐两个平台:一早一晚 https://yizaoyiwan.com/ 与 远程.work https://yuancheng.work/ ;除此之外,因为我比较活跃,也会有不同的朋友介绍远程职位给我。但是,职位虽然很多,也需要自己实力硬才可以顺利申请到的。
10、你说自己正在努力成为一名优秀的 Web 全栈工程师,那么你是怎么定义”优秀“的?我认为工程师在技术能力上可以分三个层次:基本、中等以及优秀。
基本:可以按时保质地完成任务;
中等:有自己的想法,可以分析出开发过程中产品有哪些点是不合理的、又有哪些点是值得我们借鉴、学习的;能合理设计架构、有大局意识。
优秀:触类旁通、举一反三,所掌握的知识不仅仅局限于专业技术,还能够主动将其它方面内容合理组合、加以应用。
11、除了工作,你有些什么兴趣爱好?电影
异常喜欢看悬疑破案、逻辑推理、武打格斗、奇幻系列(动画)电影。
旅游
说走就走的旅行,如果没有伴那就一个人孤身前往。这段时间和小伙伴就要驾车从成都去稻城了~
读书
小时候读了太多计算机、管理类相关图书,缺少阅读历史人文类图书,大学后便坚持阅览优秀公众号文章、阅览历史人文类图书。
写作
更精确的描述是:把所见所想记录下来。
乐器
十分喜欢钢琴、笛子,但是长时间不接触也就淡忘了。
12、对于未来你有什么期待?希望自己可以踏踏实实、继续做自己喜欢的事情,在此前提下,能够鼓励、帮助身边人自我实现。