原文:
给一位打算从事前端,但是又有疑惑的在校大学生的回信
抱歉这么晚才回复这个邮件,主要是觉得你的问题有典型性,想要详细一点给出答复。
所谓的前端,在不同的公司,定义是不同的,工作内容也会有差异,有的还很大。比如有很多公司,没有专门的前端分类,所有的都属于开发人员,一些比较传统的公司,还有一些人数较少的小公司会是这样。又比如有些公司,前端人员的职责仅限于静态页面和交互效果,然后把这些东西交给业务开发人员去编写业务的JS代码。还有一些公司,前端除了PC和移动端的Web,还包括各种移动终端的开发。
这些种种不同,都是各公司自身的业务特点决定的,大体上比较适合各自的业务场景,越大的公司,内部的分工可能越明确,所以也就有了你看到的,有比较偏向JS的,有比较偏向CSS的。
个人选择什么方向,我觉得需要问自己两个问题:
一是你是一个怎样的人
这个的意思是,你觉得自己学js和css的时候,哪种觉得更轻松愉快,容易领悟。一个人选择自己最容易领悟的方面去学习,会事半功倍。
一是你希望成为一个怎样的人
人的一生,实际上很大程度是职业细分的过程,每个人在他工作的前10年,都可能会逐步深入到某些领域,他的知识广度可能会逐步增加,但能够深入的,往往在一两个分支上。
从大的方面看,最初的软件体系基本都是以服务端为主,客户端通过字符界面去进行操作,后来桌面程序迅速发展,再后来Web兴起,最近各种终端的流行,更加促使广义的“前端”这个领域有更多的发挥空间。整体来说,后端的发展趋势是服务化,前端的发展趋势是多样化。因为消费者的促进,前端的需求和发展会是非常乐观的,无论在其中选择哪个细分方向,只要努力下去,成为这个领域的专家,肯定都会有所成就。
目前,在很多公司,搞CSS一般还没有独立职位,或者即使有,暂时比搞JS的还是稍微弱势一些,正如前端部门一般比后端部门弱势,但这种状况会好转的,每个领域都会得到适合自己的发挥。
关于原生JS和某些库的学习,我的观点是这样,除了一些很特别很怪异的点,对于语言本身的常规用法是需要都掌握的,其实也不多,常用到的就那么些。一般说的原生JS,是包括JS语言本身,还有它对DOM和BOM的操作,比如元素的创建移除,事件的添加等等,这些应该都需要懂。至于说对于某个库的学习,更重要的是学习它的思维方式,每看一个例子,就先想一想如果自己写,会把代码写成怎样,再与真实的例子进行对照,举一反三,这样的学习会是很快的过程。
现在这个时代,各种浏览器还在混战,但低版本IE的淘汰已经成为了必然,如果是现在开始学习,一定要着眼于将来,多看看CSS3各子集的规范,了解ES新版本的特性,因为世界迟早是它们的。对于低版本浏览器的兼容,一般都会有成熟的解决方案,当遇到具体问题的时候再去看也可以。
很多人看待前端,是把它当作一个很浅的层面来看的,其实前端的人多了解一些别的领域也是有好处的,从中能得到很多领悟,比如软件工程,设计模式,它们对不管什么方面的开发人员而言,都是很好的指导。
一个成熟的前端开发人员,他应当有比较宽的知识面,同时至少在某一两个细分领域有专注的研究和见解。平时在日常生活中,也可以多注意观察一些产品,对自己正在做的整个产品有深刻认识,对生活常识有充分了解,有时候也会有助于减少开发过程中走的弯路。
能够对自己的未来有所预期,并且主动寻找学习的途径,这说明你有很好的开始,在前端这条道路上认真走下去,相信会有美好的未来。