6

碎碎念

又一个忙碌的一周结束了。好像每天都挺忙的,是真的很忙。

还真没想到我现在正从事着我在大学里面最为惧怕的一项工作:编程。之前听同学说编程好难啊,整天对着黑白屏都看傻了,又或者听同学讲他某某的亲戚因为编程的工作强度太大,每天都没时间吃正餐,只能吃方便面,一个月后被发现死在了自己的卧室里面。种种的道听途说让我觉得编程是一项我以后碰都不想碰的工作。

本科是水利水电工程,期间开了一门Fortan,还记得当时上课就没听过,自己在下面看其他的书,考试的时候去背课后题,最后还及格了。

14年本科还没毕业的时候决定考研究生,报考的是某校的车辆工程,不过在复试的时候被无情的刷掉,到现在我都无法忘记面试的时候有个老师给我说的:你什么都不懂,我要你何用。当时还觉得挺气愤的。后来被调剂到了现在的学校,专业变成了机械工程。所在的实验室是以硬件为主,不过好几个项目都是软硬件结合,软件主要是做web,好几个网站都在线上跑着。

来实验室之前和导师有联系过,导师让我看《自控原理》《单片机》,当时没来学校的前1个月,还在家那边的图书馆泡了一个月,买的单片机的板子自己跟着教程自己写着玩。没错,从那时时候我开始对coding转变了态度。

9月份刚进实验室的时候,内心有点自卑的,因为1个月的自学并没有什么卵用,特别是自己看着实验室的小伙伴们都这么厉害,自己心里也很着急。当时老师问我想做硬件还是软件,当时啥也不懂的我,选择了硬件,然后就开始通往硬件工程师的漫漫长路,每天要跟着本科生一起上课,去补各种专业基础课,课后就泡图书馆自己消化。这样的日子持续了大约3个月,终于我忍不住了,有一个晚上我给我爸打了个电话,我说我不想读了,这他妈的是上的什么研究生,我想退学。那时候我开始怀疑我当时考研时候的决定,为什么当初脑子抽风,放着好好的水利水电的研究生不考,非要去跨一个八竿子打不着的车辆工程,嗯,当时脑袋一定是被驴给踢了。我还记得当时是周五的晚上,我给我爸说了自己的近况之后,老爸说没关系,可以回来重新考本专业的研究生,也可以去做生意。爸爸不管对于我的什么决定都是非常支持的。后来我说那我下周一的时候给老师提退学的事情吧。

周末在图书馆泡了2天,考虑到当时已经11月了,再去考研究生的话,时间估计是来不及的。如果等第二年再去考的话,当时还想着去gap year,然后再回来准备。我也不懂为什么会有一种研究生情结。但是感觉自己都23了,这个时间不想白白浪费。最后还是决定先留下吧。读完这半年再说吧。

后来不知什么原因,实验室的项目需要我参与到软件里面。恩,没错,是做web。某一次碰头会之后,师兄给我说了个网站www.w3cschool.com,这便是我通往为FE的第一步。写了htmlcss之后直接通过浏览器运行就能看到结果,这对于初学者来说还算蛮友好的。我对FE的兴趣也是从这个时候开始,于是........

某个凌晨,大神师兄在津津有味的看着动漫,我轻拍他的肩膀

“我决定了,我要主攻web了”。

“嗯,那就搞撒。”

我的笔记本上记录的是2014年12月22日,是我正式开始学习FE的时间,还神奇的开始做笔记了。

Asp.net与E-charts

1月--2月

我接触的第一个web项目是和硬件结合的,更偏向于展示性的网站,交互性比较少,硬件通过GPRS将数据发送的上位机,然后上位机将数据存入数据库,前台去拿数据然后展示。当时的开发工具是visual studio,这一宇宙上最NB,没有之一的IDE,但是当时写的我好痛苦啊。没上SSD,2G内存的笔记本跑起来真的是开软件要5分钟,输入一个字母要1分钟的节奏。而且当时项目是没有线下调试的环节,还不知,或者,直接上服务器上撸。

学习HTML和CSS不到半个月的时间,我被安排去学习E-charts.没想到刚学FE居然直接从数据可视化开始,更不知道后来因为数据可视化顺利找到了第一份实习工作。当时完全不懂js的我,当然看不懂这些代码是什么意思,它们又使如何被移植到网站上面去的,虽然有教程但还是不会呀。

恩,不看js怎么能看懂这些?

然后就去图书馆借了《javascript DOM编程艺术》《javascript权威指南 第六版》(最好结合着英文原版看),《javascript 高级程序设计》 然后就开始撸js了。

不要问我怎么学js的。 无他,唯手熟而

在一直学习原生js的过程中,顺带着学了下《锋利的jQuery》,原来js还可以这么写。这种链式写法读起来好流畅有木有。

通过在网上找的资料和书上的内容学习js的过程中,最不能理解的就是Ajax,前台页面到底是怎么从后台把数据拿到的啊?通过什么方式进行数据传输的啊?不懂啊。

哦,后台是个什么鬼,百度下原来是服务器,那服务器是怎么和前台进行通讯的?

带着疑问从图书馆借了本《计算机网络自顶向下方法》回家过年。家里的环境太安逸了,完全不能自主学习。

计算机网络与Node.js

3月--4月

从家里过完年来学校是2月底,这个时候我已经意识到我早已和机械工程无缘了,从此开始无尽的逃课,还记得院长开了一门《机械优化设计》,当时结课考试的时候,我师兄和院长一起监考,答完题把他卷子交到他手上走了,院长问我师兄说:这谁的学生啊?怎么从来没见过来上课。师兄帮我开脱说是哪位导师的学生,然后平时因为项目的时期挺忙的。 最后查成绩的时候,老师还是高抬贵手给了及格分。

这个时间段,除了继续学习js外,就开始补计算机网络的知识。关于计算机网络我记得涉猎过《图解HTTP》《HTTP权威指南》, 于是对于各种通讯协议有了一个大概的了解。

然后这个时候,我拿出实验室项目的代码开始看了。这个时间再去看Ajax真的是so easy,因为项目中的Ajax都使用的jQuery封装过的,因此直接通过查阅相关的API,代码读起来也不是那么吃力。

当时的项目的后台.NET,随着整个实验室项目的推进和业务需求的转变,使用.NET再去构建整个后台变的不那么合适。

这个时候师兄让我去尝试下Node.js

The Node Beginner Book是我看的第一本关于node的书,内容一直在实时更新。内容大致介绍了js如何搭建一个简易的basic Http server,以及server如何处理HTTP Request,异步回调等。光是把http server搭建起来了,这个时候可以开始写你的前台代码然后和服务器进行通讯了。注意到你百度的时候出现的信息提示框了吗?每当你输入内容的时候,都会向服务器请求数据,然后服务器返回匹配到的数据然后展示出来。搭起basic http server这些实现起来也不是什么难事了。

N-blog使用node.js搭建的一个简易的blog.里面的内容很丰富,你可以从中了解到以下方面的知识:

  • NPM

  • 模块化编程

  • CMD同步加载规范

  • Express 后端MVC框架

  • 路由

  • cookie + session

  • middleware

  • MongoDB NoSQL

  • ejs 后端渲染模板

  • mongoose ORM

  • Async 异步流程库

既然你都将Http Server已经搭建起来了,现在就是你尽快掌握Chrome devtool调试工具的时候了。通过控制台来查看HTTP Request和HTTP Response,来完成前后端接口的调试工作。
Chrome devtool不完全指南

期间还使用node.js写过爬虫,独立开发了一套空调控制系统,前后端是我一个人独立完成的,基本上把所有之前的知识全部都给用上了,反正就是边踩坑边进步。

cnode国内最活跃的node社区
howtonode订阅node文章

4月--5月

前半个月的时间用node + mongoDB + express + ejs自己撸了个blog,不过什么界面什么的都是模仿别人的,而且当时根本就没写什么学习笔记。因此虽然撸完了,代码终究还是被我封存起来了。what a pity!

百度

5月-7月

IFE百度前端学院
是一个由百度人力资源部校园招聘组、百度EFE团队联合出品的、面向在校大学生以及对前端技术有兴趣的前端在线学习平台。到现在为止一共开了2大期的内容。

  • 春季班

  • 夏季班

春季班的课程学习非常的系统,从最开始的html+css+js的基础知识到后面的js的
一些特性

  • 作用域和作用域链

  • 闭包

  • 基于原型的继承

  • OOP

  • constructor

  • this

以及js和浏览器打交道的DOMBOM

和设计模式(个人感觉这部分的内容等到学习到一定程度后再去掌握),等这些掌握的差不多了之后就有个小型的todo项目实践。再包括初级和中级班课程四涉及到了移动端css预处理器xss,前端性能优化模块化编程,前端构建工具(FIS,Grunt,Gulp)等。

特别是任务3的内容,我一共重构了3次,第一次是面向过程的写法,第二次是OO写法,第三次是使用了seajs模块加载器来实现模块化编程。

这段学习的时间里面,我开始尝试了写blog 个人专栏 写blog这个脑力活,对我来说略感吃力,小学语文没学好,有时候为表述某个内容需要措辞很久- -。不过写blog的作用是不言而喻的,会极大的加深你对某些知识点的理解程度。

夏季班的内容更多的偏向实践性质了,比如我说参加的其中一个班是数据可视化的班,这次是接触的更加底层的库:d3.js,我瞬间喜欢上了这个库,原来js还可以这样玩。在我开始玩d3.js的时候已经7月底了,8月初的时候就出去找实习工作,凭着之前学的一些数据可视化的内容顺利找到了自己的第一份实习工作,也就是我现在一直在百度实习的team。

AngularJs

其实在我刚学FE6个月的时候,我已经接触过了AngularJS,ReactJS这些非常火的前端MV*框架,通过google去看别人是怎么玩这些东西的,不过因为没有什么实际的项目支撑,所以一些内容是无法在踩坑的过程中理解的,比如依赖注入,数据绑定采用什么机制等。刚开始接触这些东西的时候可以仅仅是植入一些概念性的东西,一些更加深入的东西可以放在具体的编码过程中去深入体会。

我8月26号去B厂实习的,直属leader负责整个前端项目架构,我和另外一个实习生负责一些细化的编写工作,team的前端架构是bower + grunt + RequireJS + Angularjs + oclazyload + d3.js,拿到这些代码的时候我就兴奋了,一个大型的项目原来是这样构建起来的,于是开始如饥似渴的学习,白天在公司上班,晚上回来消化白天学习的内容,刚去的2个月我感觉自己的进步真的是飞速,10月初,国庆来了之后,我去面试搜狐UED的FE,然后是我拿到的第一个offer,当时还有点小兴奋,才学了FE10个月就拿到一个还算ok的offer。

11月到12月中旬应该是我忙成狗的一段时间,这段时间我的毕设(主要负责WEB端)开始了,还是使用node作为后台,前端使用Angularjs,这次没用使用后端进行渲染,而是交给了AngularJS,来进行今后端的分离,这次算是第二次体验了一把伪全栈,前前后后将整个项目构建完毕以及自测调试和硬件设备的联调工作,每天按3个小时的编写,大概持续了将近一个月。最后验收通过的那种感觉还是让人感觉蛮爽的。

12月在team的工作基本上就是重构和工具链的升级,比如将grunt换成gulp,以及利用Angularjs高版本的新语法,比如controller asBindToController, Component等进行部分的重构。这个月的收获其实不仅仅是这些,还包括leader对我代码的review,让我代码的编写质量和效率有了更高的提升。

1月初,开始着手新的项目,上一个项目我算是在中间插了一脚,这个项目基本就是我从一开始就参与。前端架构使用了npm + gulp + webpack + es6 + angularjs + oclazyload

关于我参与的项目架构我会抽时间撸出来。

2016

前段时间和一个前辈交流,他告诉我FE实际上带有一半PM的属性XD。刚开始看到这句话的时候还不是很理解,后来晚上回去睡觉的时候才觉悟了,作为一名FE,你的工作不仅仅是写一些业务逻辑代码,交互,用户体验,性能优化blablabla....

对于2016年上半年(毕业前)有一个大致的展望:

  • 个人博客上线

  • 尽可能多的涉猎设计方面的书籍

  • 更加深入的学习AngularJS(已经开始看AngularJS的源码)

  • 玩玩Ardunio

  • 继续坚持写blog,不限于技术类文章

2015对于我来是人生的一个转折点,2016年发光发热。

找工作

不知道有多少人能看到最后。

最后是找工作环节,帝都某大学机械工程研究生,2016年7月毕业,现在还在B厂实习。希望找一个FE的坑,坐标希望是北京,如果你们不考虑我不是科班出生,没有很好的编程基础,如果你们的后端是node那就更好啦,我很有欲望去学习服务器的内容,如果你们FE的队伍人数大于3人那就更好啦,我喜欢和别人去交流FE学习心得。弹性工作弹性工作弹性工作....。


苹果小萝卜
5.1k 声望356 粉丝

Github: [链接]