今天(5月16日)作为第八个提交者提交了任务五十:RIA微型问卷管理平台 这样一个综合性的大任务,宣告我的IFE春季学期课程学习顺利完成。其实任务五十并不复杂,现在再让我来做,可能一周不到就写出来了,但是做任务只是一个引导,而在做任务的过程中学到了知识和思想,开阔了视野,从一个对前端一无所知的小白,到现在掌握了基本的前端编程能力、对前端的整个生态圈、当前热门技术和发展趋势有了一个初步的认识,为自己继续成长打下了坚实的基础,这才是最大最重要的收获。当然,满满的成就感也是很让人开心的!
总结一下2月18号回上海以来的学习轨迹,以及对这个过程中看过的书做个点评,书名标为蓝色表示推荐,红色表示不推荐:
2月18日-3月1日 混沌期
这段时间处理各种杂事,还投了个百度测试岗的面试面了下,失败(面试官上来就拿出纸笔让我写算法,毫无准备的我当然挂了)。这次面试让我有了深刻的危机感,是时候抓紧打造自己的技术实力了。本来我是打算随大流走Java路线的,但是实验室完全接触不到,自学的话又一直有一种不得其门而入的感觉,很是烦恼。然后在知乎上探索前端路线的可行性时,偶然看到了一个安利ife的回答,去github看了一下去年的ife题目,觉得很感兴趣,最重要的是,有老司机带着一步步入门,这样的机会可遇不可求!于是深思熟虑之后,正式决定走上前端工程师之路。
3月2日-3月13日 摸索入门期
在极客学院看了两天视频之后,意外从2015年的ife课程资料中找到了慕课网,瞬间觉得前者逼格略低,果断转投慕女神。把js基础过了一遍,同时开始看我的第一本入门书——红宝书《JS高级程序设计》。红宝书写得非常好,行文流畅,环环相扣,由浅入深,看了前几章js就算是初步入门了。当然经典看一遍是不够的,现在刷完了ife的题,我打算重新拿出来读一下。《DOM编程艺术》半天就看完了,而且内容陈旧,大呼不值啊!《精通CSS》买回来没怎么看,翻了翻觉得内容还是有些旧了,而且各种奇技淫巧,让我没有兴趣认真读它。《锋利的jQuery》对于jq入门是本好书,现在各种框架兴起之后jq用得越来越少了,但应用还是很广泛,个人感觉花点时间学一下还是值得的。《编写可维护的JS》让你养成代码的规范意识,推荐。《JS设计模式》哦天啊,译者这行文都是什么鬼?没法愉快地读下去。另外刷了一些2015年的ife题目,就这样看着书写着代码,迎来了今年的ife开班。
3月14日-21日 第一阶段(HTML、CSS)
ife2016正式开班,虽然报名方式略羞耻——对着手机百度大喊“我要参加百度前端技术学院”(==!),但总算是顺利组好了队,5个人的队伍里,一个武汉大学研三学长,已经在鹅厂实习;我;另外三只都是大三的计算机、软院学生,天南海北。然而事实证明这样随机组的队并没有什么凝聚力,做到中后期就剩我单刷了,不过这是后话,在14-21号为期一周的HTML,CSS学习中,队员们进行了频繁而愉快的交流。然而标记语言写起来对于计算机科班出身的我来说终究有些无聊,特别是在书写后面那些比较复杂的页面时,感觉就一个累(当时还不懂less、sass,毕竟naive啊)。
3月22日-4月10日 第二阶段(JavaScript)
终于,期盼已久的JS之旅开始了!一直觉得JS是一门神奇的语言,掌握了它就等于掌握了网络世界的魔术棒,可以变幻出无穷的精彩表演。对于计算机专业出身、长期使用C++,Java的我来说,脚本语言简直不要太爽,各种静态语言的死板限制被解除了,写起代码有如野马奔腾的快感。但是JS语言设计的理念与C++、Java还是有很多差异的,如作用域、原型链、闭包、this等概念那是专业前端必须扎实掌握的。红宝书看的我似懂非懂,幸运的是在图书馆借到了一本《你不知道的JS》,五星级推荐!!!认认真真过一遍之后,我在后续的编程实践里再也没有被这些概念所困扰。这个阶段后期开始涉及设计模式了,鉴于之前买的书太坑,我又买了一本《JS设计模式与编程实践》,腾讯AlloyTeam出品,文笔通顺,举例适当,好多设计模式一点就通,比动物园那本不知道高到哪里去了,然而代码经验匮乏的我看得仍然吃力,那种“每个字都认识”的感觉让我暂时放弃了精读它的打算,等以后有一定的积累再回头看吧。
这段时期恰逢暑期实习招聘高峰,身边的同学都在忙着四处投简历面试,而我觉得自己实在太水,不想浪费自己和面试官的时间,所以一门心思写我的小火箭绕行星飞。当这个简单的小游戏做出来的时候,还是颇有成就感的,前端就是这样,总是让你成就感满满,越写越劲头十足~
4月11日-4月28日 第三阶段(组件开发)
这个阶段是为下一个阶段的大任务做准备,到了这个时候,JS代码已经写得比较熟练了,更多的是培养组件化思想,注重代码风格的整齐优雅。其中日历组件的开发是最有挑战性的,逻辑相对复杂,而且因为我用的jQuery,大量的DOM操作、字符串拼接模板等让我觉得这个实现怎么也称不上“优雅”,好在整体的封装性还不错,在下一阶段稍加改造就成为了真正可用的组件。这段时间读的书有蝴蝶书《JS语言精粹》,总的来说讲得还不错,但是感觉其中很多点在别的书里也有涉及,而且一些观点我认为有失偏颇(如主张不使用this),所以看书的时候自己也要判断,不能听得风就是雨,是吧。《JS模式》这本书也属于推荐级别,但是仍然看不透彻,还是那个问题,实践、上规模的实践太少啊。
4月29日-5月16日 第四阶段(综合练习)
大作业!看着长长的需求列表、交错的数据和视图关系,心里掂量这玩意用原始的方法开发的话,光是维护DOM和数据的一致性就够呛,组件之间的关系也不好处理,就算勉强写出来了也很难维护,更难扩展,因此引入框架进行模块化的开发方式乃是理所当然。同时还有css预处理、构建打包等知识要一并学习,有点多啊。第一周,按兵不动,恶补前端工程化的知识。入手了一本《JS Web应用开发》,看了前面两章之后对于工程化的前端开发流程有了一个基本的了解,然而总的来说感觉像花了钱买了一本博客集,不是很推荐该书。框架选择从Vue.js入手,因为它简洁、学习曲线平缓、而且中文文档写得好(因为是中国人做的框架,支持一下尤雨溪大神,顺便推荐他的知乎账号,关注之后可以被带逛很多干货),适合我这种急于学出个结果的beginner。大概5月5、6号开始,一边看文档一边写代码,逐渐把各个组件写了出来,vue-router、webpack也逐一上手。最后一天做了些debug工作,OK,提交!做出来之后回过头看,觉得大作业难度也不过如此。当然这只是个雏形,真正应用到生产环境的话,还有很多功能要添加,以及性能、安全、用户体验等方面的诸多考虑,有赖今后继续努力了!
这两个多月还有一个深刻的体会,就是有效的交流真的可以带来学习效率的倍增。IFE交流群是一个技术氛围浓厚的地方,每天看看聊天记录都能有所收获,即使只是一个新的技术名词,也为我打开了一个新的窗口,通向更广阔的世界。百度最近名声不太好,但是IFE真的是毫无黑点,祖名大大和他的团队是尽心尽力在办好这个学院,在此表示感谢!
下一步的学习方向:node.js、ES6、如何写出更好的代码(红宝书、狗书、Effective JS、Ninja等)、计算机基础补牢(自顶向下、算法、操作系统)。奋进吧FEer!