一个前端er写在2015年末的话
转自:http://www.cnblogs.com/vajoy/p/5040365.html
写惯了技术类的文章,这种总结和唠嗑型的我基本也就在年末才来一篇。说实话,这种轻松类的文章往往比技术类的要受欢迎的多,因为其受众更广,看起来也不烧脑。
说来愧疚,这一年其实产出有点低,大致就写了不到二十篇技术随笔,特别下半年入职腾讯后就更少有时间动笔了。
但再忙也没打算摒弃写文章的习惯,一来是为了自己沉淀,二来也是希望自己能为国内的前端分享出点贡献——这想法虽然有些滑稽,却也是我本人确切真实的想法。有时会想着自己能给这个社会带来、留下些什么,如果没有揭露相对论的能力,那么写点文章我还是得以胜任的。
就我个人而言,今年发生了蛮多事情,但今天不讨论私事,纯粹作为一名前端er来侃侃前端这块的一些趣事儿,或者说我的一些拙见。
前端的大环境
自从09年 Node 出来后,前端的内容愈来愈丰富,各种技术日新月异迭代起来乐此不疲。
如果你想学习Node,可能会入手《Node.js实战》一书,然后试着捣弄 Express。殊不知现在有很多人已经玩上了 KoaJS,嘲笑着还在使用 Express 的民工,紧接着是用上 thinkJS 的人翻着白眼谈笑风生。
前端自动化工具也是撕逼的厉害,从 Grunt 到 Gulp,从 Bower 到 jspm 和 webpack,仿佛一夜间 Grunt 上那上万个插件包就都统统过气。
哦对了,谢谢谷歌和脸书,ng拉起了五花八门的前端 mv* 框架潮,React的组件化概念也颠覆了常规web开发的理念。
还有新面世的ES2015,让我想到个好笑的事情——babel迭代到6的时候,各大前端技术群里风声鹤唳的,因为相比旧版本,babel6的配置变得太多了,又缺乏(中文)文档,导致一堆手贱升级又不懂配置的码农哭晕在地板上。
另外 Phonegap、React Native、Fuse 等的出现也让前端日渐渗透进了移动应用端,噢别忘了现在通过 node 还能开发桌面级应用呢。
有人说这是前端最好的时代。
我觉得对前端er来说,这或许也是个挺操蛋的时代——要去了解的东西实在太多了。
前段时间 Aaron 在群里吐槽,表示近些日子前端的变化让他都要崩溃了(当然是句玩笑话,真正会让他崩溃的应该是他当日的猪肉没卖完)。
有个朋友不久前告诉我,说他买了好几本小说在看,我当时的表情是这样的:
原因很简单——我已经很久很久很久没有涉猎过非技术类的书籍了,要知道我的书架上每天都有几本厚厚的技术书对着我说:“还没把我看完啊?啥时候看我啊?今晚上我好吗?”。。。我又哪有闲暇时光去看其它的小说。
所以如果现在有张白纸(当年刚毕业的时候,我的第一位上级是这么形容我的)说他要从事前端的工作,我会笑着摸摸TA的头温柔地说道:“请你吃点屎冷静下好吗”。
武器或内功
前段时间成立了个分享小组NZOO,大熊在里头挥着旗帜带大伙搞Node,原生的Node。然后北川君站起来了,说他觉得更希望带动小组直接分享一些现有的主流框架,而非把学习成本花费在原生Node上,原因很简单——来钱快。
北川君在公司是个领导级的人物,所以很好定位他的思维——一切以开发效率为主、以钱为主。
这并非只是一个日常观点小碰撞,我觉得有必要好好思考思考,自己现在在学的是什么、想学的是什么。
我在上家公司的时候,给他们部署了gulp前端自动化工程,带起了sass、avalon 等一些他们没应用过的、开发快也更好维护的新技术,效果是,显得你很牛逼 —— 如果你擅长使用一些新颖好用的新工具,那么常常能很直观地给项目带来利益(效率或性能上),那么这会成为你职场上的一个助力。事实上对于许多中小型企业而言,他们更注重于敏捷开发,那么懂得“班门弄斧”会是一件重要的事情。
对于大公司而言就不一定了,像我现在所处的部门基于历史原因基本都还在使用 Grunt,有时业务需求一负责你是找不到对应的 Grunt 插件的,会考究你的原生代码书写能力——自己写出一个插件来作为解决方案,而不是去 npm 上搬个擦屁股的救兵。
作为一名老前端,肯定会用过许多主流的工具,比如 jQuery 及其各式插件,比如 Vue 比如 React,但很多时候我们就是那么习惯性地用着,可能没想过了解下它的源码、实现方式——这在我后期想起来是种略为毛骨悚然的事情。
如果说把各优秀的前端工具/框架当作一把锋利的兵器,那么阅读源码、了解它们的实现方案便是内力的培养。
很多人可能工作了不短时间,但技术不见增长,一个较大的原因还是“懒”——啥功能都懒得自己写,直接拿起插件生搬硬套,搞的页面性能差不说,自己也不懂扩展和维护,不知其中一二。
其实说白了,武器的练习跟内功的培养其实也不冲突,你可以一手抓,只是往往罩杯较大可能没法一手掌握,会比较吃力,那么还是建议你审视下自己的职业规划,是兵器能带给你更多的利益,还是内功能让你更强大,然后做出权衡。
如何学习
关于本人“两年前还在群里问js对象里的冒号是什么意思”的经典范例常常会被群里的人拿出来做谈资笑料,北川这死不要脸的还说他给下属洗脑的时候还把我当例子了。
今天下午也有个孩纸私聊我问我是怎么学习的,才能从小白变V神(虽然我墙裂觉得后面加个“经”字才合适)。
虽然离“大神”还有挺长的摸索距离,但。。。咳咳。。。稍微吹下牛我还是可以的。如果涎皮赖脸地总结下我的学习经验,我大致会归纳为这么几点:
1. 拒绝插件
不要遇到一个交互效果就想着扒个插件来用,想想它会怎么实现然后试着去写出来。遇到困难了不着急,参考下别人的插件是怎么实现的。
个人觉得“写插件”是每个前端小白要初步进阶所必须试着去做的一件事,它对你的提升可以是很大的,不仅仅是有助于你在技术点上的认知,也有利于提升你的JS语感。
2. 加入一个氛围好的技术群/团队
如果你身边没有这么一群喜爱技术的小伙伴,那么找个氛围好的群加进去吧,让大神带带你或者跟小伙伴一起同步交流,学习起来自然也不孤单,还有人不断激励你前行,何乐而不为呢?
3. 多利用时间
“多看书多看好文章”这种废话我就不说了,但请你不要每天把精力花在看肥皂剧上然后又埋怨没时间学习。
时间总是可以挤出来的,你可以在你上厕所的时候想想Ajax原生请求怎么写,或者像我之前像个傻逼一样把Node API打印出来拿在路上边走边看。
当然也不要把时间都花费在学习上,有时间多陪陪妹子多出去走走聚聚,程序员的日子不应该太压抑。
不过我也检讨一下,上周有三天时间沉迷于我厂新游怪物猎人OL上(卧槽我真的不是打广告),结果第三天玩着玩着,向来讨厌浪费时间的我突然觉得自己是不是神经病了(反正就这个念头),接着立马把游戏卸载了。。。
4. 学!英!语!
不久前很多话题讨论说,英语是最没必要掌握的课程,建议教育部革除其作为三大主课程之一的身份。对于这批可爱的网友,我建议他们可以去叙利亚好好地旅游放松下。
起码就IT行业而言,英语是非常重要的技能,特别当许多新技术出来的时候,基本只有查阅英文文献才能找到解决方案(babel6就是个好示例)。
所以如果你的英语能力不够好,努力地去提升它吧,装个有道词典划词来看文章,争取能看懂外文的大部分意思。
总之这点不是开玩笑,阅读英文文献对于码农来说是非常受益的事情,另外遇到问题你也得以去 github 提个issue来解决。
5. 多沉淀
试着开个博客吧,认真地记录下那些你在项目中遇到的问题和解决方案,或者用心地去查找、梳理你感兴趣的技术点然后记录下来。
它会耗费你一些时间精力,但也能催动你更深入地去了解、探讨某个知识点,巩固你对它的记忆。也可以作为将来反过来查询的工具书。
6. 干掉让自己焦虑的那些东西
在职业生涯初期,作为小白总会有许多未接触过的技术盲点,有时候工作来了或者前往面试,都会由衷地担心起来,为自己知识的欠缺、胜任与否而焦虑。
我个人及其讨厌这种“焦虑”甚至“害怕”的感觉,一旦你感到这块的压力,一定要大胆地把它挖掘出来,然后一个个干掉它。
什么意思呢?比如当你觉得“我好像不会写原生的Ajax”、“跨域的方法我貌似没法都答上来”的时候,就尽早去找资料学习和了解,一步步干掉知识盲点,这样你只会愈来愈自信。
要记住只有你才是最了解自己弱点的那个人,只有你才是能拯救你自己的那个人(卧槽你拍电影啊)
有必要进大公司吗?
我觉得,作为一名搞IT的码农,没进过BAT总会有些遗憾(我也经常拿这个激将Aaron来深圳),所以如果有能力还是试着来这边镀镀金,或者说镀个经历。
他会让你了解一个大公司是怎样运作的,会让你视野变得很广阔,这里也有很多前人的知识沉淀或课程分享,身边也都是优秀的小伙伴可以交流和碰撞idea。
也会让你走上加班不归路(哼我设为斜体字了你们肯定看不到这一行)
但是如果你是应届生,我建议是先别急着进大公司。
原因很简单,大公司分工太细了,常规招你进来只做专才,你会在某个领域逐步精通,但放开整个前端面而言,会很欠缺实践。
说实话,我觉得大企业细分工作的形式,会让部分一直待着的员工,即使他们很优秀,跳槽去一家中小型企业的话,可能也没法很好地胜任前端一职。因为很多中小企业要求前端得是全能的——切的了图写的了样式编的了脚本,今天让你写个手势插件,明天让你搞个跨域通讯,后天让你负责个走spa的hybird。
有能力进大企业的应届生,往往都能在中小型企业里逐渐成为技术主导,会负责各种各样的工作,遇到各种各样的问题,自己手动编写各种各样的模块,这能给你带来非常丰富的从业经验(当然也会有所压力)。
在大企业的话,所能主导的部分自然会变少,因为有许多大牛早已帮你写好了各种业务模块,项目也早已确定好了相应的技术选型,而我们更多的是在上面做二次开发。
所以总的来说,能在外面有个几年实践和磨练再进大公司,会是我个人觉得的比较合适的选择。
年度书籍推荐
不吹不黑,我厂AlloyTeam成员曾探先生在今年发行的《javascript设计模式与开发实践》一书,是我个人认为的今年最佳的前端书籍之一。
本书结合了大量的业务实践来娓娓道来js各大设计模式的原理和应用,能让你更好地了解、掌握这些思想。
另外本书的语言组织能力也非常出色,用了许多生动形象的例子来帮读者了解一些生涩的概念,相比之下,现在世面上某本译作简直是disaster(那本书被我扔在上家公司都懒得收回了)。
这本书比较适合中等级别的前端朋友来涉猎,能让你收获很多意想不到的知识或解决方案。