简要背景
我是一个非科班出身的程序员,而且是连续跨专业者,用一句话总结就是:16 届本科学完物流,保送研究生转交通,自学前端开发的休学创业者。
17 年休学创业,正式开始学习前端,离开创业公司后,我又回炉深造,期间一直没有放弃前端开发的自主学习,在 19 年秋招(20 年毕业)大战中也收获了一些 offer。
列举一部分 SP(Special Offer):
美团(专注吃喝玩乐的 O2O 互联网公司)
小米( 年世界 500 强中最年轻的公司)
顺丰(物流行业中高端市场扛把子)
云从(人工智能行业四大明星独角兽之一)
一加(中高端手机市场新贵)
具体的薪资水平,都是在传统的物流和交通行业之上的,可以上一些平台比较。
找到满意得工作后,我现在想通过自己的努力,帮助到有志于从事前端开发工作的各位朋友,收获适合自己的 offer。
大学教育赋予了我们的自学能力,只要感兴趣,肯用心,转行吃碗热饭是可以的。
下面我将仔细讲述亲身经历得故事,不堆砌词藻,但求真实,也许会给你带来一些启发。
经历不可复制,经验却可以流传。
在校求学
本科专业是物流工程,研究生专业是交通工程。本科期间我只学过 VB(Visual Basic)和 R 语言。研究生没有上过任何计算机课程,全靠自学。
当然,也在本科期间参与过大大小小的科技竞赛,数学建模比赛,对物流专业的管理学知识渐渐兴趣不大。于是,在保研深造的时候,我选择了一个更偏工科的专业——交通工程,我当时清楚地认识到自己的计算机知识有限,当时就没有选择正儿八经的计算机专业。
不过读研有个好处,可以自己选方向。我选择了数据可视化作为研究方向。数据可视化和计算机是紧密结合在一起的。现在看起来,我的选择是正确的。所在的实验室完全就是在和计算机专业的同学抢饭吃,毕业的师兄师姐从事的工作基本上也是和计算机打交道。有点遗憾的是,从事互联网行业的师兄师姐并不多。我是组内为数不多想去互联网行业发展的同学。
纵观本科和研究生的求学经历,我一直有清晰的目标,本科的目标就是拿到好学校的深造offer,研究生的目标就是拿到互联网公司的offer。学校里的教育只是给我增加了许多见识,认识了很多朋友,他们分布在各行各业,透过他们的眼睛,我看到传统行业的薪资待遇和晋升机会存在天花板。
所以早些确定自己的目标很关键,现在还很迷茫的同学,应该好好静下心来,思考一下自己未来三年要做什么,未来五年要做什么。只有把一切都思考清楚了,才会有清晰的目标,剩下的就看执行力。当然,坚持执行是最难的部分。
学校里的学习时光是很宝贵的,很容易被我们浪费。我曾也有一段时间迷茫过,保研结束以后,觉得没有什么事情做,我选择用来做兼职,白天去肯德基打工,晚上去做家教挣钱。
虽然那段时间没有用家里的钱,实现了经济独立。但是如果让现在的我来选择,我一定会用来学习计算机。
李笑来在《财富自由之路》中提到,未来人类必须要掌握的三大技能:英语、计算机、理财。我相信他的判断是正确的,看完他的描述以后,我注意到,身边的少儿编程教育开始兴起,现在就连潘石屹每天都在学 Python。
所以非科班的朋友看到这篇文章后,应该计划着多多少少学一点计算机知识。如果想要吃 IT 这碗饭的,更应该花时间在计算机知识的积累上。切莫在课外兼职、游戏娱乐上花过多的精力,切切。
总结来说,我的大学就一个“忙”字,打比赛,写论文,搞科研,做公益,大学四年下来奖证书塞满了一个鞋盒。
虽然不是计算机专业的,但我掌握了连夜突击学习,查找资料的快速学习的能力。
临近大学毕业,我又瞄准了另一个新鲜玩意儿——创业,而且是认真地做,真枪实弹地做。
参与创业
我的经历有一些特殊,休过学,创过业,和一群人吃过大锅饭,睡过大通铺。当时自己带电脑,买二手显示器,每个月领500元补贴,全情投入到创业中。合伙人一起哭过,喝醉过,争吵过,最后分道扬镳,现在各自安好。
公司势头发展得很好,17 年 2 月份,公众号粉丝突破 40 万,我决定从中山大学休学一年,帮助公司成长。在经历了一个公司的婴儿成长期后,18 年 2 月份,由于一些人为因素,我离开了亲手创办的公司。现在云逸未来依然存在,但所做的事情我完全不认可。不过,我离开公司后,云逸未来跟我也没有任何关系了。
我是怎么踏上前端开发这条道路的呢?16 年公司刚成立的时候,我和一个在天津大学读研的同学,一起学 Dreamweaver(一个写网页的工具),准备搭建一个网页供大家下载资料。
由于本科没有系统性地学过前端开发,只在一次创新创业比赛中,为了迎合评选老师的猎奇,用 Dreamweaver 写出了人生中的第一个网页,但只能在本地预览,最后并没有上线。
所以,网页是怎么构成的,它又是怎么被部署在网上的,这一切我不知道怎么做。做了两个月的切图仔(前端工程师自我戏称)后,我们发现上线都成问题。
后来,被逼无奈之下我们寻求外包,起初想让哈尔滨一家信息技术公司帮我们搭建网页,几个合伙人吭哧吭哧跑到他们公司,听工程师吹了半天牛,对方表示我们想要做的网站太复杂,整体做下来大概需要 12 万,而且网站的源码还不会给我们,以后升级还得请他们做,当然我们也要再给一笔维护费用。那天我们灰溜溜地回来了,还是自己开发吧,哪有那么多钱做。
机缘巧合下,我们认识了远在西安的涛哥。涛哥在一家军工企业做技术开发,主要做后端,但是他也懂前端的开发。我们当时着急做那个网站,来不及考虑太多,起草了一个外包协议以后,就把网站交给涛哥去开发了。当时花了 1 万元不到,功能基本上都能达到。
网站有着落了,但是维护依然是一个问题。涛哥用的是基于 JAVA 语言的一套框架——CMC(内容管理系统)开发的,当时我们团队里没有一个成熟的 JAVA 开发,涛哥用的那套东西需要有人去专门学习。加上国内很少人用 CMS 去做网页开发,我们让涛哥开发完公司官网以后,就拜他为师,请他作为技术顾问,花半年的时间帮助我们成长。
团队里已经有两个同学做后端了,公司里还没有人做前端,我和天大的同学就选择做前端开发。我们又一切从零开始,丢掉以往开发网页的工具,直接上手当时大火的 React,脚手架工具用的是阿里巴巴的 Dva,照猫画虎,勉勉强强开发出来了第一个资料上传系统。
就这样,我稀里糊涂地进了 IT 行业。
涛哥用了一个星期的时间教会我们写 Todolist,然后告诉我们可以开始做产品了。那时候的我根本不懂什么叫设计模式,也不知道为什么开发网页要用 React 全家桶,他们的作用是什么,我完全不关心,只需要把页面开发出来。
创业公司就是这样,产品需要快速迭代,功能上满足即可,安全性、规范性、兼容性等我们是统统先不考虑。
做了一年的前端开发后,React 框架被我玩转了,基本上什么功能,只要运营同学和用户需要,我们去调研一下,用 React 仿写出来,就算开发完成,工作挑战性不大。
所以,那一年时间里,我算是在入门前端开发,算不上一个成熟的前端开发。掌握了 JS、HTML、CSS 三者基本的 API,搬 React 轮子技巧,产品开发的基本流程,还有团队的协作(Git 版本管理)。
此时,我依然心里没有底,因为我连红宝书(《javascript 高级程序设计》)都没有看过,连 js 的基本数据类型有多少个都回答不出来。
于是,我复学后,又重新捡起书本,一页一页地看,做笔记,重新梳理了知识体系,我才发现原来之前经历的前端开发,只是浮在水面上的冰山,更多重要的东西在于语言特性,计算机原理,数据结构和算法。
总之,非常感谢这段经历带给我的成长,无论是技术的成长,还是认知的提升,都是一笔不小的财富。
这段创业经历在我身上发生了很多事情,感兴趣的可以看我以下的文章,想要看简版就看第一篇即可,详细的可以看后面的“连续剧”:
纪念我的第一次创业
我的创业故事(一)团队成立
还有部分文章写完未发,我保证会发。
深化学习
以前我们公司的产品是前后端分离的,所以我只需要负责用 React 框架做前端开发,能够搭建出设计师做好的页面就可以了。
现在经历过了一个秋招以后,我才重新梳理了自己的知识点,重新审视前端工程师这个职业,也才在大中小厂前后近百场面试的蹂躏中确定前端工程师应该具有怎样的素质。
前端工程师很难,一边要顶着 IT 鄙视链前行,一边又要学全面的计算机知识。现在想从事前端工作,掌握扎实的计算机基础非常重要,再也不是从前那个由后端工程师随随便便代工就可以搞定的职位了。
经历了那么多场校招面试下来,我总结了前端工程师必须要掌握这几个方面的内容:
前端三板斧及其新版本(JS、HTML、CSS)
算法和数据结构
计算机系统
计算机网络
浏览器
性能优化
前端工程化
加分点:数据库、前端框架、小程序、设计模式、数据可视化
结合我的实践经验,总结整理了一份适合应届生(新手)的 面试手册,内容涵盖以上我提到的内容。准备分享给有志于从事前端开发的同学。这个手册主要的特点有三点:
力求最简。前端开发知识点又多,又杂,如果长篇大论,很多人望而却步。
问答形式。让刚开始接触到前端的同学循序渐进地学习前端结构化的知识。
思维导图。为了辅助记忆,我还给大家准备了几张思维导图,搭配手册来准备面试,效果更佳。
无论是科班的,还是非科班的同学,我相信通过我这个面试手册的抛砖引玉,一定会帮助大家找到理想的工作。
先说明一下,这个手册会是收费的,当然也有免费的在线项目front-end-interview-guide 供大家参考学习 ,手册的内容会更系统,而开源项目会更粗略。手册现在还在不断完善当中,不久就会和大家见面。
本来我只想做免费的,但是收费有两方面的好处,一方面可以为我提供正反馈,激励我不断生产更好的经验和内容。另一方面,付费会让学习者更加重视,毕竟花钱买的东西,自己也要用心对待。
最后,通过这几年得自学,我的经验是,对于新手学习的最好方式并不是去看源码,看标准,而是从最小知识集合入手,激发自己的兴趣,产生成就感,然后在自己的能力范围内拓展。 你可能突然有一天,发现自己原来也可以这么 X 逼(X 自己填)。
不多说了,让我们一起向上生长吧!