简要背景

我是一个非科班出身的程序员,而且是连续跨专业者,用一句话总结就是:16 届本科学完物流,保送研究生转交通,自学前端开发的休学创业者

17 年休学创业,正式开始学习前端,离开创业公司后,我又回炉深造,期间一直没有放弃前端开发的自主学习,在 19 年秋招(20 年毕业)大战中也收获了一些 offer。

列举一部分 SP(Special Offer):

  • 美团(专注吃喝玩乐的 O2O 互联网公司)
  • 小米(2019 年世界 500 强中最年轻的公司)
  • 顺丰(物流行业中高端市场扛把子)
  • 云从(人工智能行业四大明星独角兽之一)
  • 一加(中高端手机市场新贵)

具体的薪资水平,都是在传统的物流和交通行业之上的,可以上一些平台比较。

找到满意得工作后,我现在想通过自己的努力,帮助到有志于从事前端开发工作的各位朋友,收获适合自己的 offer。

大学教育赋予了我们的自学能力,只要感兴趣,肯用心,转行吃碗热饭是可以的。

下面我将仔细讲述亲身经历得故事,不堆砌词藻,但求真实,也许会给你带来一些启发。

经历不可复制,经验却可以流传。

在校求学

本科专业是物流工程,研究生专业是交通工程。本科期间我只学过 VB(Visual Basic)和 R 语言。研究生没有上过任何计算机课程,全靠自学。

当然,也在本科期间参与过大大小小的科技竞赛,数学建模比赛,对物流专业的管理学知识渐渐兴趣不大。于是,在保研深造的时候,我选择了一个更偏工科的专业——交通工程,我当时清楚地认识到自己的计算机知识有限,当时就没有选择正儿八经的计算机专业。

不过读研有个好处,可以自己选方向。我选择了数据可视化作为研究方向。数据可视化和计算机是紧密结合在一起的。现在看起来,我的选择是正确的。所在的实验室完全就是在和计算机专业的同学抢饭吃,毕业的师兄师姐从事的工作基本上也是和计算机打交道。有点遗憾的是,从事互联网行业的师兄师姐并不多。我是组内为数不多想去互联网行业发展的同学。

纵观本科和研究生的求学经历,我一直有清晰的目标,本科的目标就是拿到好学校的深造offer,研究生的目标就是拿到互联网公司的offer。学校里的教育只是给我增加了许多见识,认识了很多朋友,他们分布在各行各业,透过他们的眼睛,我看到传统行业的薪资待遇和晋升机会存在天花板。

所以早些确定自己的目标很关键,现在还很迷茫的同学,应该好好静下心来,思考一下自己未来三年要做什么,未来五年要做什么。只有把一切都思考清楚了,才会有清晰的目标,剩下的就看执行力。当然,坚持执行是最难的部分。

学校里的学习时光是很宝贵的,很容易被我们浪费。我曾也有一段时间迷茫过,保研结束以后,觉得没有什么事情做,我选择用来做兼职,白天去肯德基打工,晚上去做家教挣钱。

虽然那段时间没有用家里的钱,实现了经济独立。但是如果让现在的我来选择,我一定会用来学习计算机。

李笑来在《财富自由之路》中提到,未来人类必须要掌握的三大技能:英语、计算机、理财。我相信他的判断是正确的,看完他的描述以后,我注意到,身边的少儿编程教育开始兴起,现在就连潘石屹每天都在学 Python。

所以非科班的朋友看到这篇文章后,应该计划着多多少少学一点计算机知识。如果想要吃 IT 这碗饭的,更应该花时间在计算机知识的积累上。切莫在课外兼职、游戏娱乐上花过多的精力,切切。

总结来说,我的大学就一个“忙”字,打比赛,写论文,搞科研,做公益,大学四年下来奖证书塞满了一个鞋盒。

虽然不是计算机专业的,但我掌握了连夜突击学习,查找资料的快速学习的能力。

临近大学毕业,我又瞄准了另一个新鲜玩意儿——创业,而且是认真地做,真枪实弹地做。

参与创业

我的经历有一些特殊,休过学,创过业,和一群人吃过大锅饭,睡过大通铺。当时自己带电脑,买二手显示器,每个月领500元补贴,全情投入到创业中。合伙人一起哭过,喝醉过,争吵过,最后分道扬镳,现在各自安好。

早在 2016 年 4 月份,我大学即将毕业,临时决定跟同届的校友同学一起创业。我们从一个小小的微信公众号做起,那年 7 月份在哈尔滨设立了一家小公司。后来公司发展得不错就搬到了北京,12月份设立了新的公司,叫做北京优尼沃特科技有限公司。公司的业务主要是面向考研学子的互联网教育,为此我们做了一个品牌叫做云逸未来。

当时的互联网流量红利还在,QQ 群还能拉新,分享一些盗版视频和考研资料,就为我们微信公众号积累了 30 多万粉丝。于是,我们哥儿几个想把事业扩大一点,说不定就财富自由了。

公司势头发展得很好,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 自己填)。

不多说了,让我们一起向上生长吧!

自学前端开发,现在手握大厂offer,我的故事还在继续的更多相关文章

  1. 【前端福利】用grunt搭建自己主动化的web前端开发环境-完整教程

    jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发者.假设你如今还不知道grunt或者听说过. ...

  2. 记拿到鹅厂前端开发暑期实习offer的经历

    #想起来时的路 在真正拿到腾讯实习offer之前,也是看过不少人的面经,心生向往.很早在入前端坑之前,我就想着大四的时候有机会要尝试去腾讯里实习. 大一入门语言就是C++,这让我很无奈,所以我很快的就 ...

  3. web前端开发培训和自学 哪种选择更适合你

    web前端相对于其他软件开发是比较容易入门的,但是如果深入学习就比较困难了,这门技能需要从业人员掌握一定的设计.代码.交互技能和一些SEO技能,容易入门还涉及这么多知识和技能,那学习web前端开发到底 ...

  4. 自学WEB前端能不能找到一份前端开发工作

    关于自学WEB前端能不能通过社招找到一份互联网公司WEB前端开发的工作,有无数的人问出这样的问题,答案没有标准的,只能从概率去考虑.有的人可以,有的人不可以,有的人自学就业的概率就是高,有的概率就是低 ...

  5. 【Web前端开发】---自学转行roadmap

    [Web前端开发] 自学转行roadmap: ● html/css ● 京东项目实操 ● javascript 基础 ● webapi ● javascrip高级 ● jquery基础 ● Ajax ...

  6. BAT 前端开发面试 —— 吐血总结

    更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了腾讯和阿里的内推及百度的实习生招聘,在此总结一下 一是备忘.总结提升,二是希望给大家一些参考 其他面试及基础相关可以参考其他博文: ...

  7. Web前端开发好学吗?谈谈一位学姐的前端工程师之路

    我的第一篇博客....... 我是一名工科女,因高考失利与理想的院校擦肩而过,从而选择了机电专业.毕业后找工作时才发现机电专业的工作并不太适合我.我的父母也支持我转专业求职,但这个过程有时会让我迷茫. ...

  8. 移动端web前端开发

    移动端浏览器现状 视口 meta视口标签 二倍图 移动端主流方案 移动端技术解决方案 移动端常见布局 1.流式布局(百分比布局) 2.flex布局 3.rem适配布局 1)rem单位 2)媒体查询 3 ...

  9. 新技术新框架不断涌现,目前学习web前端开发都要掌握什么?

    web前端开发由网页制作演变而来,随着web2.0的发展,网页不再只是承载单一的文字和图片,各种丰富媒体让网页的内容更加生动,网页上软件化的交互形式为用户提供了更好的使用体验,这些都是基于前端技术实现 ...

随机推荐

  1. 使用Git和Github来管理自己的代码和笔记

    一.Github注册 1.先注册github.com的账号,官方网站: https://github.com/ 2.登录 3.创建仓库,仓库分公开的和私有的,公开的是免费的,私有的是收费的.我现在创建 ...

  2. Integer类入门学习

    Integer类 它是一个类,是 int 基本数据类型的封装类. 基本API Integer 类和 int 的区别 Integer 是 int 包装类,int 是八大基本数据类型之一(byte,sho ...

  3. 超简单!pytorch入门教程(四):准备图片数据集

    在训练神经网络之前,我们必须有数据,作为资深伸手党,必须知道以下几个数据提供源: 一.CIFAR-10 CIFAR-10图片样本截图 CIFAR-10是多伦多大学提供的图片数据库,图片分辨率压缩至32 ...

  4. mysql中的表操作

    ------------恢复内容开始------------ 创建数据库 create database 数据库名 切换数据库 use 数据库名 建表: create table 表名 ( 字段名1, ...

  5. asp.net保留两位小数

    1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo();provi ...

  6. CentOS8安装fastdfs6.06

    目录 一.准备环境 二.解压并编译安装 1.解压下载好的包 2.编译安装 2.1.编译安装 libfastcommon 2.2.编译安装 fastdfs 2.3.安装 nginx 和 fastdfs- ...

  7. 1077 互评成绩计算 (20 分)C语言

    在浙大的计算机专业课中,经常有互评分组报告这个环节.一个组上台介绍自己的工作,其他组在台下为其表现评分.最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平 ...

  8. 用实例理解设计模式——代理模式(Python版)

    代理模式:为其他对象提供一种代理以控制对这个对象的访问. 在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 代理模式分为: 静态代理 动态代 ...

  9. 09_$.ajax()参数详解及标准写法

    1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...

  10. Python库的安装(Windows/Linux通用)

    pip安装 最简单的安装方式,自动下载并安装. pip:包管理工具 安装步骤 执行安装命令:pip install <package_name> wheel安装 在网速较差的情况下适用. ...