前端的本职

本文摘自 勾三股四 更早时期的 不老歌 博客。

这周末好忙,前后参加了两个前端交流活动,一个是关于前端MVC和Node.JS的,一个是HTML5的。其实说到这里,我不得不重新审视一下我称呼这两个活动为前端交流活动是否合适。

在周六的前端MVC技术交流过程中,有位多次参加这一交流活动的同行,若有所思的谈到了这样一个话题:感觉这些东西已经不是前端了。说罢,又补充道,不是前端,而是JavaScript。随后大家的话匣子被这句话彻底打卡了,开始了热烈的讨论,不过这个话题没有讨论太多,很快焦点就转移到了MVC的好处在哪里、按照MVC分工有什么优劣、分工好还是不分工好之类的……不过我后来一直在惦记着这个问题,也非常理解这位同行的想法:前端不就是展示页面么?以前大家都把焦点放在了界面上,放在了特效上,放在了浏览器兼容性上,现在哪里来的这么多数据通信、逻辑处理、对象模型?这还是“前端”么?

MVC也就罢了,紧接着Node.JS来了。主讲人石头津津有味、慢条斯理的介绍着如何通过Node.JS,用前端工程师熟悉的JavaScript搭建一个博客后台……我又深深的陷入了思考。如果说MVC还有前端的影子的话,那么说Node.JS也是前端,会不会太扯了?我们身为一个前端工程师,到底应该去做什么?创造哪些价值?

还没把这个问题想清楚,又参加了另一个活动:HTML5 Code Jam。看到了五彩斑斓的HTML5世界:Canvas、WebGL、Audio、Notifications、LBS、WebSocket……LBS和WebSocket已经是完全跟前端没有关系的东西了,Canvas、WebGL虽然是界面展现层的东西,可这些都是纯编程出来的,都是枯燥的物理碰撞、矩阵变换、坐标计算,这跟Win32绘图、OpenGL渲染有什么差别呢?HTML5带给我们的,远不止是前端的世界,更是应用软件开发的世界。

我突然感觉,作为一名有计算机相关专业背景的前端工程师,我已经在这种模糊的定位中生活了很久。也许相比起传统的Win32开发、网站后台开发、新兴的Objective-C开发来说,前端开发都算是“档次”最低的。在这种长期的潜意识刺激下,当我们遇到了琳琅满目的JavaScript APIs的时候,一种找平衡的心态油然而生。我觉得HTML5在引领技术革命的同时,也抓住了这群每天被以iOS开发暴发户为首的一群传统开发者鄙视的前端开发者的“用户需求”:借HTML5抬高自己的身价,跟Native开发平起平坐,同时跟其他前端划清界限。

但是事实上,要想真的跟Native开发平起平坐,你需要的不是熟练的JavaScript,而是传统开发的眼界和思路。而对视图和样式是否敏感似乎又变得不太重要了。一个写得来Node.JS、WebSocket、LBS的人,搞不定传统前端中基本的三列布局,是很有可能的事情。

那你们说,作为一名前端,还要不要去学HTML5了?

我觉得,如果你想专注在真正的前端领域,看一看新的HTML标签跟属性,还有CSS3,还是很有必要的,其它的东西简单了解一下就够了。与其花时间深究数据结构和算法、网络通信与分布式计算、数据库管理等这些高深的编程知识,我们不妨多看看用户体验与界面设计,了解一些图像处理软件的“切图”技巧,再多多品味生活,寻找一些前端的灵感和技巧。

如果你是以程序员自居的,那么你真应该认认真真的积累一些传统应用程序的开发经验,深入的学习一些软件工程的理论和数学理论,以及产品本身所涉及的相关专业的理论,把这份工作当做一次纯粹的编程。

两者兼顾当然也是可以的,总之,要清楚这是两件事就对了。

希望我们今后在讨论HTML5的时候,也不要忽视真正的前端,正确看待前端的本职工作,正确看待自己的身份。比如在前不久刚刚结束的WebRebuild.ORG年会上,当我们看到久违的已经略显生疏的“网页重构”四个字时,再想想最近一年我们周围的变化,很有趣。

最起码我今天觉得前端和HTML5是两件事了

向本文提出修改或勘误建议