分类
原创作品 短篇 随笔

前端开发的乐趣

这篇文章写于2018年,因为一些原因停留在草稿状态两年之久……
偶然间翻出来,发现自己对前端开发的喜好不减当年,实属幸事。

——我是鸽子,咕咕咕咕

我与前端开发

掐指一算,我做软件开发已经12年了,算上社团、兼职、实习的话时间会更长一些。其间做过ASP也做过JSP,做过Java也做过Javascript,做过服务器端也做过移动端,做过商业软件也做过大众网站。很多做技术的朋友都表示技术做久了会枯燥,我是很理解的。但对我而言,唯独前端技术,我竟一直能从中找到乐趣,可谓技术人之幸。

列举这十来年染指过的技术自然也是一种乐趣,但如果没有一个主线,无论读者还是我都会腻的。在这篇文章中,我希望能触及一些前端开发的共性。

前端开发最大的乐趣,还是它的“看得见、摸得着”。

“看得见”

人机交互从20世纪70年代进入图形用户界面时代,之后一直飞速发展,我们对计算机、智能手机的最初印象都是图形化的操作界面。这些设备里所包含的各类系统、应用程序,大部分都不为最终用户所知,只有通过前端程序绘制的界面才能被用户看到。编写代码、编译运行,前端程序就会转化成为图形化界面,显示在设备上、投射到前端开发者的眼中;开发者根据看到的图形,调整代码进而调整界面,直至交付满意的作品。左脑主导编码、右脑感知图形,每个前端程序都可谓是左脑右脑的一次深度交流,某种程度上,这一过程类似艺术创作。比如开发一段CSS动画,前端开发者需要根据运行的动画效果,反复调整时长、关键帧等参数,最终发布一段也许只有10行左右的代码,这过程也有些像是画家作画。曾经有幸跟一些很优秀的图形界面设计师合作过,他们设计的界面,当然他们对设计稿的代码实现也有很高要求,“像素精确”。

“摸得着”

我还记得自己小时候第一次打开WPS for DOS用方向线控制光标、第一次打开Win95的画笔用鼠标涂鸦、第一次打开属于自己的《联想之家》寻找里面各个应用入口的那些激动。后端看到的都是数据、日志、报表,人能介入的只有输入和输出,而前端搭建出的每一个按钮、链接、页签都是可以被用户点击的。正所谓人机交互,用户在每一次点击或键入后都会预期发生一些事情,精心设计过的前端交互体验会给予用户良好的正反馈,并进一步实现用户期待的功能。移动互联网时代的到来,人们从大屏幕转移到了小屏幕,触屏更是颠覆了以往键盘鼠标的交互方式。经典电影《少数派报告》里面类似AR加隔空触控的人机交互设计是空前的,而相关技术,如VR、AR、MR、体感、智能穿戴设备等的研究开发也正一步一步证实着其可行性。这样以来“摸得着”的手段,必将进一步多元化,广义来说,这都是前端的范畴。

前端技术的受限与不设限

从技术特性来看,前端开发貌似有其局限性,但我认为,前端技术领域是客观受限,主观不设限的。

前端开发是更加受限的,需要平衡“可以做”和“不可以做”的边界。一个Win32应用可以做大部分事情,一个Android App能做的事情会少一些,而一个Web应用就只能做浏览器和用户允许它做的事情。遥想当年,为了在浏览器里做一个在线Word编辑功能,还要用户在IE上安装ActiveX插件,而现在开发类似功能已经不会用这么“不Web”的方式了。前端开发者清楚浏览器能力的天花板,但往往苦于产品经理或其他需求方异想天开的需求,当团队建立共识时,设计开发工作才能顺利起来。而浏览器的能力也在日新月异的进化,想到几个月前还在跟同事讨论到底是在后端运行一个生成PDF的服务,还是在浏览器端用JS生成PDF。WebAssembly这类技术的标准化也很令人期待。另一方面是运行环境的限制。后端开发一个服务要考虑纵向扩展和横向扩展,要考虑数据库的CAP,但毕竟硬件资源是可以自主扩展的、软件环境也是可以自主配置的;但前端以Web前端为例,开发者是很难控制最终用户的浏览器环境的,不同浏览器品牌、同一浏览器的不同版本、甚至同一浏览器在不同系统上的版本,由于Web标准化的历史和现实原因,存在着各种各样的差异,前端开发者要用相对精简的代码兼容多个浏览器,以保证其Web页面或应用可以正常为大部分目标用户提供服务。Android App更是要考虑不同系统版本、不同厂商的不同机型、甚至是不同的网络环境。这些方面都导致前端领域出现大量所谓“奇技淫巧”,相信这也只是一个阶段性的问题,随着Web标准化、移动系统的反碎片化的进展,这些痛点必将减轻甚至消失。

只要前端开发者不止步于“切图工”,前端开发的领域可以很广阔。诸如前端工程化、模块化、组件化、多端代码复用、前端架构设计演化等等。

结语

文章不长,最初撰文的目的只是表达自己对前端的喜好;对于现代前端开发的各个领域,有很多都值得展开讨论,我也自认为自己在这些领域的一些经历和想法多少会有些价值,希望之后有机会写下来。

最后想提到的,关于人。前端开发是极具外部性的。有不少的技术人性格偏内向,我见过不少前端开发者在工作或生活中所表现出的腼腆,就像是标签一样表明着他们的身份。但我同时也发现这群人,包括我自己,骨子里想用自己的作品去影响用户、成就用户,并最终获得用户的赞许和认同。只要我喜爱,只要我坚持,这又何尝不是我实现年少时憧憬的成就自我、改变世界的一条可行之路?