给前端新手们的建议

前端界的现状

首先,当下越来越多的大学生开始关注前端了解前端了,这使得3年前还是一个比较新的工种的前端工程师变的异常火热。前端这几年确实爆发的非常快,我认为最主要的还是得益于移动互联网的发展,市场上对于多种端适配的研发人才变得需求量激增。那么当下的前端界是一个怎样的氛围呢,我个人觉得是有一些浮躁的。前后端分离、单页应用、混合型App、前端工程化等课题是当下的时代讨论最多的前端主题,直接伴随着的是 react, angularjs, vue 等前端框架的广泛流传,webpack, gulp, browserify 等工具的产生,coffeescript, less, sass , typescript 等语言替代方案的产生都表明前端技术正在百花齐放,此时我冷不丁的思考一下,上面讨论的技术对于前端这一专注UI展现层开发的技术方向有多大的好处,除了工作效率及工程化程度的提升之外还有没有其它的价值,本人觉得这些东西的出现很是时候,表明着咱们的前端技术更有体系了,但是冷静下来,我觉得有点太过华丽了,作为前端工程师我们是不是应当更多的去专注视觉和交互的展现,其它的精力再投入到工程化、效率的提升上面去,我觉得前端界的现状应当用下面这句话来概括,百花齐放但又极待返璞归真。

iOS困境引发的思考

最近在IT界有这样一条特别值得令人关注的信息,iOS工程师开始陷入难以找工作的怪圈,尤其是初级的iOS工程师,在北京基本找不到工作。网络上的分析和评论铺天盖地,提炼一下有那么几个观点我非常认同。

首先,iOS是一个相对来说容易入门且工程化程度很高的工种,这就导致大量的培训机构批量生产大量的iOS工程师投放到市场上,最终导致新手iOS工程师供大于求。

其次,iOS工程师不好找工作,并不是所有的iOS工程师都不好找,很多工作3年左右的出色的工程师还是会被抢,这说明初级的iOS工程师跟市场要求差距太大,不足以承担工作,培训机构跟市场的差距不是一星半点的大。

最后,任何技术,如果大家仅仅关注实现层面,就像培训机构里教的那样,只是拿来主义完成一个又一个所谓的项目,但并不对项目所用到的技术、踩过的坑进行总结和提炼,这样你只能算是了解技术表面,即使你做100个这样的项目你也无法进步,真正出色的团队招聘的是人,而不仅仅是一个职位,更多的期待是希望你能在完成工作的同时给团队带来进步。

那么对于我们这些前端新人来说,应不应当有危机感?必须要有。当前这个时期,前端技术体系正在日趋完善,培训机构也已经开始进行批量的初级前端工程师生产,这是初级前端所面临的一大压力。其次,前端技术是一个看似简单的技术,实际上一个出色的前端工程师,不仅仅要具备基本的编码能力,同样应该具备对交互的感觉、视觉的审美、产品的理解等,总而言之,培养解决问题的能力而不是专注技术表面。

前端新手应当这样培养自己

毕业之前

这个时期建议着重锻炼基础知识。主要就是 HTML / CSS / JS 方面的技能,在这里推荐几个资料,《Head First HTML / CSS 基础教程》、《JavaScript DOM编程艺术》,此外还推荐大家着重学习一下 jQuery ,最好能翻一翻源码,熟悉熟悉最基本的兼容性写法。另外,我个人的一个经验是,大部分大学都没有系统的前端课程,但如果有其它语言的课程,大家在学习的过程中可以注意培养一下自己的编程思想,我就是学Java出身,Java对我的面向对象思想的建立起到了很好的作用,实际上 JavaScript 也是面向对象语言。熟悉了后端的开发方式之后对未来是有很大帮助的,因为一个出色的前端工程师应当具备后端能力。

毕业1-3年

博览众长,精于一技,是这一时期最好的努力诠释。身为前端工程师,不仅仅要具备编码能力,同样应当具备视觉审美以及交互感知能力。编码能力主要是前端开发的脚本编写和页面制作,视觉审美和交互感知主要体现在对设计稿的理解和表达上,大多数设计稿都是静态图片,但交到前端工程师手中,我们就应该通过自己的技术将其优雅动态的展现出来,使其具备良好的交互性。同样前端工程师作为与用户最接近的技术工程师,自然要对自己所负责的产品的价值有清晰的认识,这又对前端工程师的用户思维提出了要求。此外,与后端工程师的配合也需要前端工程师应当具备基本的后端技术知识,总结来说,一个出色的前端工程师应该是一个懂技术懂设计懂产品的角色,他是技术但更是产品与用户之间的桥梁。

说了这么多,其实就是想表达一个观点,在刚毕业到工作3年的这段时间里的前端,应该去了解和学习后端、设计、产品方面的一切知识,然后专注前端技术的修炼。后端层面要知道http状态、后端的mvc和后端缓存、数据库以及服务器的基本知识,起码跟别人讨论的时候你得知道人家在说什么,设计层面要具备基本的PhotoShop使用能力,要有吹毛求疵的精神,要严格按照设计尺寸来开发页面,这是一个前端的基本职业素质,有时自己也可以做做设计就更棒了。产品层面多阅读一些书籍,推荐阅读《人人都是产品经理》、《从0到1:开启商业与未来的秘密》这类书籍来消化消化产品思维。

当然更重要的还是前端技术层面的一些建议

  • 建立自己的github账号与博客,不断沉淀自己的学习心得,这是最基本的方向,只往前走却不知道积累对于个人提升来说是非常低效的
  • 有 Taste 精神 ,意思就是说,对于现在各种层出不穷的前端框架要保持饥渴的精神,要去主动尝试,玩一玩,体会体会,让这些前端框架真正成为自己解决问题的工具,真正的工程师是用技术解决问题,而不是为技术所累,推荐这个项目给大家了解 http://todomvc.com/
  • 多参与一些火热的技术社区,比如 前端乱炖,cnodejs.org,D2前端技术论坛,jsconf.cn , segmentfault 等,无论是线上还是线下多与人交流进行思想碰撞不失为提升自己的一个好方式
  • 信息获取层面多去关注一些一手信息,类似 html5weekly 的邮件订阅,github上的 explore 等

毕业3年之后

目前本人就处在这个阶段,当前最关注的前端趋势是工程化和组件化。前端技术目前来说还是比较散的,在这个时期我觉得应当要培养整合能力,就是把繁杂的前端技术整合起来做成一个真正完备的前端解决方案的能力。而且我发现在每一个大型前端团队里,都有属于自己风格的前端技术体系,像我们团队目前就是 React Web App 流派,还有的团队直接是 node.js 前后端分离流派,我觉得能够不断总结提炼属于自身团队风格的解决方案提升团队研发效率和体验应该是这个时期着重锻炼的。

前端界的展望

未来前端界的发展应该还是一段百花齐放的时期,最后会逐渐走向统一。百花齐放应当是每一个团队都有自己的技术风格,无论是node.js的前后端分离流派,还是纯json交互的前端webapp流派,还是一个前后端都搞的大前端流派, 都有其自身存在的意义。在这之后应当是有一个大一统的前端技术栈,包管理应该是npm,代码应该是 es6/es7, 而更多的精力应当是集中在视觉和交互的传达以及良好性能的实现上,但个人觉得前端想要统一,想要有过去j2ee,或者 iOS 如此完备的工程化体系,还是有一段很长的路要走,这也是前端的魅力所在,不折腾就会死的技术方向。当然,一个人的精力有限,百花齐放的情况下,有的花可能昙花一现,有的花可能历久弥香,所以拥有一双智慧的眼睛,选择好适合自己跟进的方向也不失这个时代的一个好选择,但还是希望广大的前端人勿忘初心,时刻注意着视觉的展现和交互的表达,因为我们是UI开发工程师,还有,提升自己的项目能力、学习能力、沟通能力是每一个前端新人或者说每一个研发新人都应该具备的警觉。