你好,我是宇哥。某天不经意间打开了知乎,看到有人在我三年前写的文章下留言。

image-22

不禁感叹:一个机械专业的专科生,没有参加过培训班,全凭自学,竟然能够转行程序员,工作三年依然没被辞退。

你是不是也很好奇我的个人经历呢?

专科生毕业进了工厂

2012 年,我的高考成绩 444 分,差一分上当年的二本线。因为各种原因没有选择复读,加上三本学院费用高昂,无奈之下只好选择了读专科。没有专业填报指导的我,在亲戚长辈的建议下,选择机械专业数控技术。

大一上学期,我报名了自考本科,当上了班里的学习委员,还参加了社团。随着时间的推移,我渐渐以各种理由安慰自己:今天这堂课不用上,自考前再复习也来得及。正因为当时懒惰成性,后面为了这个自考本科文凭付出得更多(PS:文章后面会提到)。

转移三年过去了,2015 年专科毕业的我一心只想着早点出来挣钱,于是跟几个同学去了位于上海的一家苹果代工厂。前期做着一些打杂和跑腿的工作,负责把技师们做好的样品送到量仪室,等结果出来再把样品取回来供他们分析数据。还要做的一件事是帮白班(夜班)负责人统计这一班生产样品的数量、合格率、报废原因等等。

这样的情况一直持续了三个月,我才有机会跟着一位老师傅学习机床知识,了解一块物料到成品需要经历哪些步骤,慢慢的有机会去实际操作机床。

待了半年之后,我与几个同学跳槽去了福建泉州的一家工厂,开始独立负责手机后壳生产工序中的某个环节。

image-23

但是这种小工厂如果没有接到单子做,工资就会特别少。3 个月后我与同学又跳槽去了厦门一家工厂,做的还是技术含量较低且重复的工作。

为什么选择转行做前端开发?

在新工厂的待遇比尽管刚入行那会儿提升了不少,但每天需要工作 12-14 个小时,且常年无休,大部分时间都在上夜班。

闲暇时间我开始思考:除了工作我完全没有生活,无法出去正常社交,也没有多余的时间去提升自己,只能从这个工厂换到下一个工厂,或者待在一个工厂熬工龄。

经历过社会的毒打,我明白了年轻人还是应该多学习、多思考、用技能武装自己。内心深处有一个念头:我一定要做朝九晚六、正常双休、不可替代性高的工作。

碰巧我的一位大学同学毕业后就在成都做运营工作,他在电话里说:“你要不要试试转行当程序员?我好几个朋友都去参加培训了,而且最近 Web 开发很火。”

于是我拿起手机,打开了知乎,搜索“怎样成为一名程序员”、“程序员的工资待遇”、“零基础怎么学习编程”等相关话题。在纠结选择前端还是后端,iOS、Android 还是 Web,培训还是自学......尝试了入门后端语言,了解开发程序原生应用需要的设备和环境之后,我的智力和经济条件告诉我:你没得选,自学 Web 前端吧。

于是我就开启了一段长达 8 个月的自学经历。

我的自学规划和路线

对于每一位零基础自学 Web 前端的人来说,最难的是什么?

1、不知道学什么、怎么学

2、遇到问题谁帮我解决

3、想认识一些在职工作的前端程序员

起初,通过搜集网上的一些信息,我明白了想要找到一份前端工作,至少要掌握四门技术(我当时的理解)——HTML、CSS、JavaScript、AJAX。因为没钱上培训班,我的学习资料来源于百端云盘和一些免费的视频教程,但都不够系统,我也区分不了难易程度。

然后我接触到了 https://codecombat.163.com/play 这个网站,用游戏的方式学习编程。

image-24

但是碍于费用问题,试学完免费课程之后我就放弃了。

那么,有没有一个组织或网站可以帮助到我这样的萌新呢?

有!freeCodeCamp.org,简称 FCC。

偶然间我在知乎大佬余博伦的回答下看到了这个网站,他推荐说非常适合小白自学 Web。在此之前我始终未能找到一个合适且免费的平台,可以帮助零基础想学习编程的人,于是我抱着试一试的态度就点了进去。

image-28

我使用的是志愿者协同翻译的中文版(最新中文版在 learn.freeCodeCamp.one,即将上线到官网 freeCodeCamp.org)。哇,我整个人都惊呆了,HTML 基础,CSS 基础、布局、视觉设计,JS、ES6 基础、数据结构、算法基础、框架......而且每一个章节都带有项目实战,这不正是我所需要的吗?

image-29

在工厂打工是不可能的,这辈子都不可能打工。培训费又贵,只有靠在 FCC 自学前端,才有未来。喔哟,我超喜欢在里面学习的,全球学员线上聊天互相鼓励,国内多个城市有志愿者发起的线下社区,经常分享流行的前沿技术,里面个个都是大佬,又喜欢自称“萌新”,热心解答你的每一个问题。

自学有太多的困难,有时候朋友会叫你出去玩,网友发来游戏邀请,三天打鱼两天晒网,无法长期坚持。

自学的过程也是孤独的,找不到志同道合的伙伴分享解决问题的那种喜悦,遇到难题也没人提供思路。感谢 FCC 提供了这样一个良好的学习氛围,我可以和每一位自学的小伙伴交流,并且结识了一群志同道合的朋友。

image-30
FCC 深圳社区的小伙伴

自学那会儿有受到过前同事的嘲笑,身边的朋友也不看好我能够学完,找到工作。好在家里人非常支持我,为我提供一个舒适安静的学习环境。我给自己订的规划是保证每天学习 8 小时。

早上一般是 10:00 - 12:00

下午 1:00 - 6:00

晚上 8:00 - 睡前(大部分实际在凌晨以后)

四个月的时间,我刚好学完了 FCC 上 HTML、CSS、JS 大部分基础内容,并跟着 FCC 的设计完成对应项目编写。感觉没理解的知识点,回头又补看了一些视频。

这期间我总共读了四本书:《CSS权威指南》、《JavaScript DOM 编程艺术》、《锋利的 jQuery》,粗读了《JavaScript 高级程序设计》前 14 章,差不多 450 页,看不懂的地方都先跳过了。

经过这段时间的学习,我已基本掌握常见的页面布局、样式编写,和用 JS 实现简单的特效。

自学过程中的焦虑和迷茫

焦虑的原因一方面是看着很多培训班的毕业生,要准备找工作了,怕自己错失良机,另一方面裸辞在家经济压力挺大。

9 月份我去了当地一家机构给小学生辅导作业,一直要做到他们放假,差不多 2017 年 1 月中旬的样子。没办法这么快出去找工作,就有点迷茫不知道学啥了。

也在思考:如果我简单自学 4 个月就能找到工作,那么科班生通过学习之后岂不是更容易?何况在学历和计算机基础都不占优势的情况,HR 很大概率不会选择录用我。加之在打听到培训班一般不会讲算法和数据结构之后,索性就沉下心来去继续学习前端以外的知识,比如数据结构和算法,HTTP 协议,设计模式等。

跟着 FCC 刷完它的初、中、高级算法之后,我对 JS 很多的 API 有了更深刻的理解,并把全部题解写成了文章发到知乎和简书上,虽然现在看来属实写得不怎样,效率太低。原因是我缺少一些前置知识,便买了一本《学习 JavaScript 数据结构与算法》,再去有名的刷题网站 LeetCode 刷题。

从 10 月份开始一直到 12 月底,我看完了《JavaScript 设计模式与开发实战》与《HTTP 权威指南》中跟 Web 相关的部分,了解到真实的前端开发工作是要跟后端人员通过接口的形式进行数据传递,也明白企业级项目并不是我之前写的那种面向过程式代码,会思考怎么封装、复用。

再回过头看自己以前写的代码,恍惚间感觉自己提升了不少,也消除内心的迷茫,更加坚定要走软件开发这条路。

项目与简历

从完成自学到工作还有最后一道槛,那就是做一个拿得出手的项目,写一份漂亮的简历。其实 FCC 准备项目已经很出色,同时百度前端学院也有许多不错的项目可供选择。我做过一些 demo, 包括 2048、贪吃蛇、飞机大战等小游戏。

image-31
image-32

2017 年可以称得上前端三大框架崛起的一年,你不会其中一个,都不好意思去面试,所以我不得不抽时间看看 Vue 官方文档,并完成了一个简单的案例——Vue ToDoList。

image-33

尽管做了以上这些,离真正意义上的前端开发还是缺点味道,于是我找到了我的大学朋友。经过半年他已经从 UI 转岗到了产品经理,在我三番五次要求之下,他给我看了一些他们以前外包的项目,有完整的需求说明、UI 设计稿,有些还能直接访问。这就是我想要的真实项目。

于是我对着设计稿自己实现,尽量把自己想象成一位真正的开发人员:这个特效我会怎么实现?这里的布局为什么不用这样?遇到不会的地方,我就记录下来,然后通过搜索来解决。这样如果面试官问我自学过程中,或者项目中有遇到什么最难的问题,我也能对答如流。

完成了项目的准备,这里简单说下简历。对于没有做过什么项目的小伙伴来说,我强烈建议你用前端代码写一份响应式简历,然后通过 GitHub Pages(一种网页寄存服务,可以让任何人看你做的页面) 让面试官可以访问到,这样既能展示你的个人信息,也侧面让面试官康康你的代码实力,一举两得!(PS:更多关于项目与简历的详细细节,请关注我的 B 站个人账号:宇哥在学习)

持续学习与成长

前端真的是一个看上去简单,实际上知识点复杂且多样的职业,如下图:

image-35

我当初找到第一份工作的时候,干活用到的技术真的就只有 HTML、CSS、jQuery、Bootstrap,连 ES6 都很少用到。到了 17 年中旬, Boss 直聘前端岗位技能要求 Vue、React 二者至少掌握一个,且熟悉其生态。

为了以后能有更好的就业机会,在公司技术体系已经稳定的情况下,我主动向领导申请,采用当时流行的 Vue + Vuex 技术开发单页应用,并利用空闲时间和周末,去一些技术平台(掘金、Segmentfault)看教程文章,按照样例代码一行一行地敲。

在半个月内,我做了一个简易版的 demo,并向同事们和领导演示其效果,讲明白这套技术相比之前的方案有了哪些改进和提升。得到老板的肯定后,我的方案被应用到新项目。

得益于这段经历,我成功跳槽,直接涨薪资 4K。我清晰记得第三轮的面试官问过一个问题:“你自学了 8 个月,现在才工作了半年多一点,就独立负责过公司项目的技术选型,是什么在支撑着你?

我回答到:“坚持学习和自信”。

在转行学习程序开发之前,我内心是比较自卑的,也不太敢在公众场合发表自己的观点,怕被质疑和嘲笑。但是这段自学的经历给我带来了非常大的改变,从没有像自学编程一样坚持一件事情长达 8 个月,收获了别人的肯定,最重要的是我变得更自信。

在 18 年初,我尝试去一些大厂面试,但因为专科学历被拒绝了,这时才想起大学时我报名了一个自考本科。那会儿我人在深圳,为了拿到这个毕业证,除了学习工作上用到的知识,还要拾起自考课程和寻找一些考试相关资料,于是我每个周末都去图书馆,和那些考研的奋斗小伙伴们一起学习。

因为自考的院校在成都,所以每年的 4 月、10 月,我都要坐飞机回成都参加考试。终于在 19 年 5 月考完了所有课程,拿到了我梦寐以求的本科毕业证,同年参加了学位英语考试,算是弥补了我一生的遗憾吧。如果后面有机会我希望能再去读一个在职研究生,认识更多优秀的人。

最后想说的话

这就是我零基础转行 Web 前端开发的经历。

我现在也尝试做一名 UP 主,这个决定从 19 年中旬就有了,现在终于迈出了第一步。

这是我做的一个视频,我在视频中留了三个问题,希望小伙伴们可以想一想。

image-36

不管你是否想要从事编程工作,想做什么就全力以赴去做,不断学习,分享你的成长。即使大多数人不看好你的决定,你也要坚持,用结果证明给他们看。