关于前端的那些事
1. 前端的尴尬
目前,前端的地位及受重视程度,相比前几年有了极大的提升。但尴尬之处仍存在,具体体现为:国内大部分有互联网业务的企业确实不需要专业前端,专业前端的就业面及需求量相比 JAVA、PHP 等开发工程师而言明显局限。
对大部分有互联网业务的企业而言,它们的互联网产品,开发工程师或者视觉设计师自己写一写 table 可能就够了,甚至其产品都是外包公司做出来的。即便需要前端也只是充当切图的页面仔,涉及到 JS 也只是实现一些简单交互。有的从业者甚至通过搜索引擎,搜出一些模板、代码片段,修改一下来满足需求、应付老板。这导致了相当一部分从业人能力平庸,被一些程序员同行概括认为前端技术难度有限,职位可有可无。
前端地位的尴尬返回来也导致学校教育上的漠视,在互联网技术快速发展的当下,迟迟不开设前端对应的专业课程。我在大二时就被当时拥有博士学位的数据结构老师点名批评:“就你天天研究的那些网页的东西,一点技术含量都没有,随便找个同学培训他一周 DreamWeaver 就能全学会!”微博微信上大学同学众多,堂主不会说谎话。
不过现在似乎有点改观,自从学校知道我这个挂科大户、反面典型来到淘宝工作后,我就变成了就业典型。甚至毕业前几个月院长还专门咨询过我,开设前端对应的课程,哪些书籍是适合作为教材的。能通过自己的就业对学院的教学改革产生一点点布道的作用,我现在还感到高兴和欣慰。
那么,前端的技术含量到底怎么样?是不是真的像其他人说的那样,企业不值得为其单独设立一个职位呢?
2. 企业中的前端
个人观点,其互联网业务仅作展示窗口作用的,可能确实不需要设立专业的前端职位。如企业展示类网站、政府网站等,其运营业务的核心渠道不基于互联网,其互联网产品更多承载的是品牌推广手段多样性的作用,其网站产品的开发完全可以通过外包来实现,顶多只需要设置1、2 位运营编辑人员即可。
而对于那些核心营生基于互联网的企业而言,专业前端的职位就是必须的。因为前端作为一个职业存在的价值主要体现在:“叫专业的人干专业的事,解放并提升了产品方的生产力”。翻译成人话就是,前端解放了交互、解放了视觉、解放了开发,并用其专业技能提升了客户端的用户体验。
说解放了交互及视觉,是因为从此交互只专注于操作体验,视觉只聚焦于艺术呈现,而不用附带还要做切图切页面的事,且你叫交互、视觉去写要具备专业编程能力的 Javascript 语言他们也很难搞定。
说解放了开发是指开发可以将精力都投入在诸如底层系统架构、算法优化、数据处理等核心业务上,而不同再去写页面套页面,且你叫专业开发去捣鼓需要具备极强人文修养的 HTML 和 CSS,他们多半也会崩溃的。
说提升了客户端的用户体验,是因为,你找出一个能同时搞定 HTML 语义性、CSS 兼容性、JS 优异交互、整体性能经过优化、结构样式及脚本具备优异扩展性支持、且界面还原精确到 1 像素的交互、视觉或专业开发给我看看,有一个我们团队要一个!
3. 前端的工作内容及技术含量
作为前端开发工程师,我们中的绝大部分(极少部分的前端工程师的工作内容是面向底层库的开发,为其他前端提供更便捷的开发工具),在日常的开发实践中,确实鲜有要用到算法的情况。如此好似低端,却不意味着做好就容易。
相比字面意思理解性较差的 F2E (Front End Engineer,前端开发工程师),我们中绝大部分的工作性质更准确的形容应该是 UIE(User Interactive Engineer,用户界面开发工程师)。我们要处理的事务包括但不限于:产品界面的在浏览器端的展现、前后端数据的通信以及基于 DOM 操作的交互体验。
因前端编码手段过于灵活,质量参差的 HTML、CSS 和 JavaScript 可能都可以满足当前的产品需求。可若一旦涉及可用性、扩展性、细节控、性能优和兼容性,质量不佳的代码劣势立现。如,对很多人最不重视的、认为最没技术含量的 HTML:一个优异的 HTML 结构,且不论其本身就具备的高优雅性及可读性,更可以节省一大半的 DOM 操作;且具备良好的可扩展性,避免未来因需求变化而导致的大规模结构重构;更能避免绝大部分的 CSS 兼容性问题 —— 我就不提什么模块化复用性、搜索引擎优化和盲人阅读器的那些事了。
另外因前端职业成型晚,技术迭代快(且这种迭代属于技术累加式而非替换式,使得越往后入门的新人需学习的东西越多),产品兼容问题多(想做到 “write once, run anywhere" 是F2Er共同的梦),校园教育缺失,自学成本高、最佳实践积累少、职业思维模型需跨技术与人文等种种因素,都导致前端职业修养的养成成本更高,靠谱的人才稀少。
所以说,“糙活也能用,细活养成难”的现实一是阻碍了很多从业者的进步,二也造成了行业上认为前端“没难度级别低”的错觉。
但错觉终究是错觉,互联网的快速发展会帮助大家逐渐纠正这一认知。前端现在不论作为一个职业,还是其背后代指的一干技术与思维,都依然显得青稚,需要积淀与成熟。但请相信前端成熟的路不会更类似其他职业的开发——我会告诉你一个好的前端应该具备很强的人文气息么?人文这东西说不清道不明,但可以肯定它属于是感性的一类,正如 HTML 和 CSS,看似简单,却绝非简单,一如文学创作,语境的形成不取决于语法,却依赖于开发者自身。