为了成为一个前端开发者,你一定要可以在没有工具的情况下工作。于是我成为了那些旧式互联网‘猎巫人’的众矢之的。
我并不是说你应该抛弃你手头用的工具,只和CSS,JavaScript打交道。相反,我是说你应该能够这样来做。这就是我对前端工程师的定义。如果有必要,重申一下:这是我从根本上认可并坚持的。
总而言之,Adrian Holovaty发推聊了我演讲里激进的PPT,这正是这场长达36小时暴行的开端。于是乎,我成了一个老旧,愚钝,自大的人,连我的网站都是一坨翔...嘛,我就不赘述整个清单了。喷子就是喷子。
不过,我并不为之所动。如果这在1999年,我肯定就是了。同时,我也了解到,如果我引起了这么大的反应,这也说明我碰到了一些重要的东西。
敏感话题
有这样几点值得我们注意。这样说吧,如果我表达了这样的观点,你可能有以下三种反应:
你同意我的主张(我也很惊讶在众多吐槽的同时还有这么多人同意,我特别想指出的是Jen Strickland 的推特)
你不同意我,并提出反对意见(有少数这样的,后文有个例子)
你觉得我就是有点犯蠢懒得应对。
但更多的反应却不是以上情形。我意外地触发了一些敏感话题。客观来说,我本来就是希望激起一些东西看看会有什么发生。
例如Yehuda Katz的一系列回复,我不想羞辱他,但他的回复真是怒气和争论的标准复合体。在他严肃的讨论观点里,下面这条值得引用:
在我看来,很多人可以开始编程而不用知道全景,这件事本身就是一个巨大的成功。
但与此同时,他又说我的观点有腐蚀性,我站在道德的制高点,意图羞辱开发者。(小提示,读者你也可以不引用别人的名字只是列出观点)
我不确定自己是否同意他的论点,但至少这是一个我可以同意或者不同意的观点。这才是讨论,2117个“你好渣”不是。
我对前端开发者的定义
我今天的目的不是讨论他的观点,而是退一步并提出一个更基础的问题:什么是前端开发 你如何定义?它需要哪些知识储备和技能?
对我而已,前端开发者是这样的一个程序员:不仅能编写HTML,CSS,JavaScript代码的,更要在能够深度理解浏览器的基础上写代码。
这意味,为了日常编写代码,你需要理解以下内容:浏览器的基本工作机制,CSS如何渲染,Javascript如何运行,以及常用的浏览器兼容性。
这是个高标准严要求,但我甚至都没有提到页面的可访问性,图形和界面设计,复制编辑功能和客户端-服务器通信的部分。你也许不能做到在以上每一点都是专家,但起码应该了解它们的基本知识。
因为如果你没有这些知识,你能做什么?尽管理论上说,这些条件也许可以妥协,但现实常用做法是:直到这个网站可以在你最喜欢的浏览器里工作为止前使用各种工具对其改进。在我看来,这不够好。一年半我就曾经说过,以后也会尽可能多的重申。
Amy Hoy就一针见血的指出:
我想很多前端开发者实际上是讨厌Web(害怕CSS,害怕纯JS)所以就妖魔化这件事,像害怕科学怪人一样。
我认为这就是部分原因所在:为什么我的发言惹得这么多人生气。如果我错的太离谱,人们反倒不会说什么。总有一个接近真相的原因,Amy说的就是。我不妨把“害怕浏览器”加到原因列表中去。
其他定义
对于不同意我观点的人,我想说:请你们定义一下前端开发者,请清晰的描述出他们应该做什么知道什么。
很可能会遇到两种定义:一种和我的相符合,另一种更倾向使网站或者web应用可以更好更快的部署而无需过多关注技术。
也许这两种人都有市场,我说不好。不过能理解浏览器工作的开发者总是有一些优势的,因为他们懂得更多。但这并不意味着对另一种类型就没有需求。
况且,还有一种观点是Web将在未来的5(或者10)年里发生巨大变化,参见Kenneth Auchenberg的演讲 A future without browsers,还有 Peter Gasston在Fronteers 2016的演讲。
这可能是真的:我尊敬的一些人深以为然,我自己还需要在这方面有所研究。如果这是真的,这确实可能会改变Web开发者的定义。即便是使用Facebook的引擎开发,也有可能有人依然需要浏览器,浏览器可能只是不再是面向用户的软件而已。
对此我有两点反驳意见(尽管这值得更多的系列文章来讨论而不是只有两点的列表):
这事发生还早的很。现在我们都还需要传统意义上的web开发者。
这个进程在西方远比在亚洲慢的多,部分原因是用户对网络(和浏览器)有一个心理预期,也部分因为用户们难改的惯性。
这些都可能导致对web开发者会完全不同的定义。这点你需要注意。
然而,无论如何,问问你自己:什么才是前端开发者。
【文章转载于:扣丁学堂微信公众号】
网友评论