半年谈 —— 初心

为什么选择前端?

这是一个在面试当中被问及频率很高的问题。虽然如此,我对这个问题也并没有深入的思考。在入行半年这个节点,我有机会能够认真的考虑一下自己究竟为什么选择了这个行当,毕竟这是一个决定了自己将来能不能在这条路上坚持下去的严肃问题。

这个问题可以分解成两个小问题分别来回答,第一是为什么选择了写代码?其次是为什么选择了前端这个方向?下面一个一个看。

为什么选择了写代码

这个问题无需过多解释,写代码(多数时候)是一个让人兴奋、使人愉悦的过程,这种感觉懂的人自然懂,不懂的人解释的再形象也无济于事。

  • 对于喜爱编程的人来说,编程是世界上最有趣的事,比下棋有趣得多!因为你可以自己制订游戏规则,而你制定什么样的规则,也就会随之出现与此规则相符合的结果。
  • 在电脑世界中,你就是创世者,你对所发生的一切拥有最终的控制。
  • 你可以建筑一个这样的房子,有一个活板门,既稳固又实用。但是每个人都可以看出一个仅仅以坚固实用为目的的树上小屋和一个巧妙地利用树本身特点的美妙小屋之间的差异。这是一个将艺术和工程融为一体的工作。编程与造树上小屋有相似之处……

对于 Linus 的这一段描述,只有两个字能形容:贴切!

另外,与程序打交道也远比与人打交道要省力气 —— 在有自助设备的情况下我绝不会去光顾人工窗口。

为什么选择了前端方向

关于为何选择了前端,仔细思考下来可以总结为两个方面 —— 「炫耀」和「懒惰」。你可能会觉得这两个形容词都是贬义,没关系,下面就好好聊聊这两个方面你就会对这两个词有新的认识。

炫耀

首先是炫耀,炫耀指的是从各方面特意强调自己(放个概念先,请原谅我还没有从写论文的思维中走出来……咳咳)。在我看来,炫耀是一种与生俱来的性格特征:小学的校园中总是有同学会「不经意」的把自己穿着新鞋子的脚翘的高高的,期待得到大家的注意;穿着新衣服的同学总是会十分「碰巧」的经过他关注的那个女孩子身边,期待得到她的夸赞 —— 这都是炫耀的行为。这当然这种物质上的炫耀发生在小孩子身上让人觉得童真、可爱,而发生在成年人身上就让人觉得可笑、厌恶了。成年人虽然不再去炫耀物质,但他们有了更多东西可以去炫耀。

说了这么多,炫耀到底跟前端有什么关系呢?没错,前端就是一个让你有东西去炫耀的行当 —— 每一张页面、每一个动画、每一处交互、每一颗图标都是你炫耀的资本,因为它们看得见摸得着。

你要知道,当一个局外人试图对这个专业性很强的行业有有一点了解的过程中,「看得见、摸得着」是多么重要。试想一下一个程序猿向他的七大姑八大姨介绍自己工作时的场景:

前端程序猿
人:小猿,听说你在帝都/魔都/X 都上班,是做什么工作的啊?
猿:做前端开发。
人:哦,这个前端开发具体是做什么的啊?
猿(掏出 Pad,打开公司网站):哝,这就是我做的!

后端程序猿
人:小猿,听说你在帝都/魔都/X 都上班,是做什么工作的啊?
猿:做后端开发。
人:哦,这个后端开发具体是做什么的啊?
猿:做 Java/PHP/Python。
人:#&@~%^=…………

以上内容纯属 YY,请勿对号入座。

成长在 Windows 普及的年代,其实在心中已经埋下了一个观念 —— GUI 程序才是程序,什么图形用户界面都没有的东西也能叫程序?当然,这种观念伴随着学习的深入已经逐渐远去了,但对 GUI 的偏爱却保留了下来,成为我选择前端的一个原因。

懒惰

有人可能想到了,GUI 编程也不仅仅只有前端一条路,现在流行的移动 APP 不也满足炫耀的需求吗?回答这个问题就要谈到选择前端的另一个原因 —— 懒惰。

说到这里就不得不谈到前端开发门槛之低:学习其他任何一门语言,你至少需要一个执行环境 —— 解释器之类的东西。而对前端来说,你根本不需要执行环境,或者说前端的执行环境是每台 PC 的标配 —— 浏览器。这对其他任何一门语言来说都是不可想象的。

想象一下在一台普通的个人电脑上使用 JavaScript 和其他任何语言同时做一个 DEMO,当其他人还在下载安装编译器、虚拟机,还在很苦逼的配置着环境变量的时候,你已经写好了代码,轻巧的双击打开得到了结果。这是一件多么大快人心的事情。

前端代码写起来就是这么方便快捷,也许你会从执行效率、兼容性这些方面进行批判,but who cares?我只要保证自己写起来爽就足够了。是的,我就是懒惰的不愿去花时间处理那些复杂的环境问题,而前端恰恰就是这样一门给你这样体验的语言,因此这是我选择前端的另一个原因。

虽然当下的前端自动化已经高度依赖 node 环境,想要安稳写代码的话也必须要搞定 node 的相关配置。但 node 的配置与其他语言比起来还是要简单很多。特别是看到那些 Java 后端每改一次代码都要花上几分钟编译的时候,还是有种发自心底的窃喜。

更好·更快

说了这么多,你可能还是觉得「炫耀」和「懒惰」仍然是贬义词,其实不然。

首先,炫耀必须要有一定的资本,这就要求你要把你的作品完成的高质量。试想如果你在炫耀的时候搞出个错误,那岂不是直接打脸?因此,炫耀就推动你把作品做的更好:除了要保证可靠性,还要进一步的去打磨每一个细节,仔细调整每一处间距、配色、动画,保证能够以最佳的姿态呈现给世人。这里炫耀意味着更好。

其次,懒惰必须依靠一定的技巧,这就需要你在技术上的突破和思维上的创新。在我看来,前端程序员是所有程序员中最会「偷懒」的一群人,作为前端程序员,我们习惯于利用工具来解决问题,把所有哪怕一丁点重复性的劳动都交给程序来解决 —— 写一次代码就好 —— 而自己则专注于创造性的部分。虽然懒惰但却高效,这里懒惰却意味着更快。

::after

强行吹逼也是不容易。总之以上就是我总结得出的选择前端的原因,剩下的事情就是脚踏实地的努力前进。