前端工程师已经不是一个陌生的词汇,但是,什么是前端工程师这一问题确让很多人“陌生”。前一段时间,我和朋友聊起前端工程师,他告诉我,他们单位的前端工程师很让人无奈。我问其“为何让人无奈”,回答说:招了两个前端工程师,居然一个会PhotoShop的都没有,连基本的美工都不如。听到这番回答,我也陷入了一种无奈——如果前端工程师都会PhotoShop,那么要美工有何用呢?然后,进一步深究,前端工程师和美工什么区别,撇开这个不谈,前端工程师到底是做什么的?如果搞清楚这个问题,我想现在的前端工程师可能会有很好的发展,而国内前端工程师的尴尬境遇也会得到较好的理解了。
曾经,我在51Job上看到招聘Web前端工程师的信息,要求氛围两大类:技术类和理论思想类。技术类要求必须理解HTML、CSS、Javascript等前端技术(还有其他技术,在此就不一一列举了);理论思想类要求学习或者研究过“市场营销”、“心理学”、“消费者行为学”等类似学科。看到这些,我也感悟到一些东西......
正如软件分层的思想一样,在软件工程不断发展的今天,软件工程中角色和岗位不断地细化和专业化,自然,不同角色所关注的领域也会变得愈加集中。软件可以分为三层(用户接口层、业务逻辑层和数据访问层),在每一层中,都可以有该层的领域专家。业务领域的行业专家,能够帮着开发团队和用户更好的分析、发掘和构造业务流程。同样,处在用户接口层的专家也应该能够支撑该层的良好构造。而我们所理解的前端正是“用户接口”领域的感念,而实现这一概念的,也正是前端工程师。
用户接口的概念是什么,这个词恰恰反映了这个概念:是系统与人(或其他客观存在)进行通信的渠道。常规上理解可能就是应用程序的界面。但是,良好的用户接口不仅仅是美丽的界面。正如人与人之间的交流,漂亮的面貌不一定有好的内涵,也许一个美女一开口就可以把人雷个半死,那么这就无法继续沟通下去了。所以,一个美丽的界面,鼠标一点击就报错,我们只能放弃使用这样的软件。然而,良好的接口也不仅仅是良好的可交换性和可操作性(这其中包含了让人使用舒服的界面),有些时候,如果UI做得好,甚至能向使用者传达出一种“精神”或者一种“理念”和“文化”。记得我曾经在中午午饭之后,浏览网页,无意中看到了一个国外的餐饮网站,该网站的网页映到我眼中的时候,我的口水就出来了(当然有那么一点夸张),但是,网页的风格、包括布局、色泽、图片等等都非常的吸引人的胃口,可以讲,这个网站的设计者用了做美食的思路来构思和设计这个网站的。所以,他直接向我传达出“美食”这个概念,甚至通过视觉(实际上只能通过视觉,但是这比通过味觉和视觉共同刺激更加困难)直接刺激我的大脑。
我用上面这个例子想要说明的是:处在软件上层的前端,正式对用户开放的接口,而前端工程师在具备良好技术支撑的基础上,需要对该系统的受众做出必要的分析。前端工程师要能够分析这类用户的需求,这些需求有时不仅仅是业务需求,对于人,就应该考察“交互行为”。这类似于人与人沟通的场景。系统的功能都设计并实现了,业务逻辑也写好了,并且没有问题,剩下的就是考虑如何将这些东西以有效的方式传达给用户。而“传达”需要通过界面,通过界面上各种交互操作和动作,包括:用户发起系统响应的动作、系统主动发起的动作以及系统引导用户发起的动作,这种往返于人和系统之间的动作和数据往来构成了基本的交互。页面所展示出来的,就是一个场景,如果两个人面谈是所处的咖啡厅或者广场。有了基本的场景,那么如何友善且积极地向用户呈现自己,为用户提供各种交互服务,这些就必须在前端实现,作为构造前端的工程师就应该考虑这些问题了。
我参与过几个Web项目和Windows项目的开发,当然包括UI部分的设计。我不是一个前端工程师,因为还没有谁是标准的前端工程师,因为没有经验,或者仅仅站在技术和系统的角度考虑问题,所以我曾经设计过非常生硬的节目,也有乱糟糟的界面。我想没有多少人喜欢和一个木头人交朋友,也不想和非常啰嗦的人畅所欲言。所以,界面的好坏成了系统成败的关键。那么什么是失败的UI设计呢,我总结了以下两句话:
1.用户很清楚自己要做什么业务操作,但是界面中就是没有找到他需要的功能。
2.用户本来很清楚要做什么业务操作,看到界面后就不清楚自己该做社么了。
当然,上面是两个极端的例子,但是,“用着不是很顺手,操作不流畅”,“提示信息看不懂”,“不知道该填写什么数据”等等类似的用户反馈也不绝于耳。所以,现在重新考虑界面设计和实现时,就不能仅仅站在系统的角度,以程序的思想来构思前端了。
所以,前端工程师需要做什么呢?我总结来说:首先前端工程师还是要具备各种前端开发技术。如:HTML、Javascript、AJAX、CSS、Silverlight、Flash等等。这些是前端工程师手中的工具。一个木匠,只有精通于工具,才能雕刻出华美的木器。其实,我觉得前端工程师不一定要会PS,要懂得切图这些与Image相关的东西,因为,我认为前端工程师的关注点应该是“不断探索如何将系统功能和服务更好的传达给使用者,并通过良好有效的交互表达系统的意图,乃至其中所包含的文化或理念”。其次,前端工程师还需要了解软件系统的直接用户,以及他们的作业场景和操作习惯,甚至是用户的心理。当用户在使用系统时,界面上的各种变化对用户的心理和行为是有影响的,同样我们也应该能够分析出用户这样操作系统的行为及他们的想法,从而,利用这些知识影响用户、引导用户,使系统能更加顺利的与用户进行交互。当然,把软件做成像人一样只能是很难的,但是,我们要是能够做到系统成为用户工作中的好助手,有的是做成艺术品,那么这就很成功了。
当然,前端二字虽然简单,但是一个“端”字了得。这已经不仅仅是界面的问题了。甚至都需要考虑该如何“端出”界面给用户。特别是现在,移动终端的涌现,移动办公、移动应用、智能设备等等这些,我都在日后的开发中,都需考虑。未来企业应用,不仅仅是一个Web2.0就可以搞得定的,社会基础设施不断丰富的今天和将来,用户必定会站在更多的“端”去享受各种应用,而怎么“端”才能让用户满足以及具备吸引力也是需要我们来考虑的。
以上,是我个人对前端以及前端工程师的拙见,我没有打算全面说明前端的各种问题,因为我根本没有这个能力,所以,在日常工作中的这些感受我还是敢于端出来让大家批评的。