半年谈 —— 认识

前端开发是一个什么样的工作?

这又是一个面试高频问题,同样也是一个非常关键的问题,因为认识决定了行动,进而影响了最终的结果。

前端工程师完全是互联网快速发展、企业分工进一步细化的产物。向前倒推十年,还完全没有前端开发这个概念,Web 这一领域基本只有一个工种 —— 网站制作。而今天,一款 Web 产品需要设计、前端、后端、运维等部门通力合作才能完成。

前端开发就是由网页制作进化而来,虽说如此,网页制作和前端开发的工作已经完全不可同日而语。鉴于目前网页制作仍有巨大的市场需求,以及(或许是)人们对前端开发的误读,所以我个人将广义前端开发分为两类:网页制作和 Web App 开发,而我个人理解中的一般意义上的前端开发特指 Web App 开发。

网页制作无需多言,80% 的工作是还原设计稿,另外 20% 也许是使用 JavaScript —— 其实是使用 JQuery —— 做些简单的交互或效果,或是做些简单的性能优化,基本就足够了。而对于 Web App 开发,上面的工作只占 20%,在这 20% 之外的工作才是前端开发工程师更重要的价值所在:除了最基本的前后端分离,还要负责前端组件化、前端工程化,进行自动化测试等等工作,把整个站点的效率、可用性和稳定性提升到一个新的水平。

简单来说,我更倾向于把前端开发同 iOS 开发、Android 开发归为一类:它们同样都是通过应用在后端和用户之间搭建起一个展示信息以及交互操作的渠道,它们有各自依托的平台 —— 浏览器、iOS 及 Android 平台,它们使用不同的开发语言 —— JavaScript、Objective C(Swift)、Java,但它们提供的都是相同的功能。这才是前端开发最核心的意义所在。

这就是前端开发的全部了么?乃义务!作为前端开发的主要语言 —— JavaScript 的扩张速度超乎任何一个人的想象,这门语言的设计者 Brendan Eich 怎么都不可能想到这门语言在十几年后居然已经跳出了浏览器运行环境,成为了一门后端、甚至于跨平台的开发语言(如果他能想到,肯定会多花点时间把 JavaScript 设计的更好些)。Node.js 的出现再一次颠覆了很多人对前端的认识,为「前端」打开了一扇新的大门。JavaScript 语言的独特设计使得 Node.js 在一些业务场景中具有明显的优势,伴随着其自身的不断完善,Node.js 会得到越来越广泛的应用。

附赠吐槽

常听到有人说前端圈子太浮躁。我个人也经常会逛一逛 Segmentfault 问答社区,不可否认浮躁的风气在其中体现的可谓是淋漓尽致,「XXX 功能如何实现」这类「我提需求,你写代码」的问题比比皆是,提问者并不是针对一个复杂的需求或算法找不到解决思路,而完完全全就是一副张口等人喂的姿态。像手风琴导航、Tab 标签这类需求根本没有很复杂的实现思路,只要认真学习一点基础完全能够独立实现。对于这种情况,我想说就我个人而言完全不会把这些人划归前端领域,他们充其量也就算是个做网页的 —— 你不能指望一个买菜大妈的驾驶技术向专业车手看齐,哪怕给她一辆一级方程式赛车。