阅读 2117

2016年前端年末撕逼

最近一期的《程序员》刊登了一篇前端年度技术盘点文章《2016年前端技术观察》,作者是曹刘阳(阿当)。
关注过 2016 年前端微博网红圈的同学肯定知道,阿当基本把新技术都吐槽了一番。然而这次的文章,就像 @贺师俊 所说的

(这篇文章)是从CSDN/程序员这个老牌程序员媒体上发表的,就让前端圈之外的人误以为阿当的观点是前端行业的主流看法或者至少是有很大影响力的意见。这会误导其他技术人员(包括技术管理层)和非技术人员(如产品、设计)。
大部分前端从业者是不赞同阿当对新技术的批评的。

但是作为一个有着「实事求是」精神的程序员,你在批判一个人或事物的时候,是不是应该先了解一下他或它。我们在反驳阿当之前是不是应该先看完他的文章?

可是啊,

原文一共一万两千多字(加代码)!为了需求加班加点的程序员有时间看完吗?

我本着「我不入地狱谁入地狱」的精神,把原文简化到 1314 字(这个数字是什么意思……),并放在知乎「如何评价真阿当的文章:《2016年前端技术观察》?」这一问题下面,以飨吃瓜群众。希望群众们知道阿当在说什么,以及前端大神们反对的是什么。

简化文如下。

看之前先看我的总结:

阿当文章实在太长,但是主要论点只有一个,就是注重基础,反对新技术。后半句显然不对(虽然文中列举了很多反对理由);前半句看起来对,但是论据有问题。
论据主要有
1 你水平不行,用不好新技术
2 你精力不够,只能先学基础
写议论文重点是可靠的论据。
次要论点就是「我当年很牛逼」。

以下是我自己理解的,以阿当的口吻说的,大家不要以为真的是阿当说的(不保证还原了原意)。

2016 年我喷了 Sass、React和Angular,被前端各种布道者鄙视,于是我们互相伤害起来。
但我研究的技术可比你们学得这点东西多多了。
我以我的经验,认为这些才流行几年的玩意儿,是值得怀疑的。

  1. 有些玩意是高手发明出来给高手用的,小公司的几个前端玩得转?
  2. 你们这些布道者只说优点不说缺点是什么意思?安利你听说过没。
    所以前端新人们,你们要长点脑子,别听风就是雨。

关于 SCSS 和 LESS

优点你们都吹得那么好,我偏说缺点。
直接能运行在浏览器里的 CSS 你不用,加一道字符串变化在中间挡着,一来增加上手门槛,要学新知识;二来新的语法增加新的复杂度;三来这玩意有传染性,我想用你的代码我就必须也用 SCSS/LESS。
而且,你 SCSS/LESS 依然没有解决你想要解决的问题呀!
所以我认为弊大于利。

跨界、CoffeeScript、TypeScript和ES6

前端你为啥这么在意语法糖?你个前端不好好研究优雅的用户体验,去研究什么语法糖,你忙得过来吗?
CoffeeScript 是 Ruby 社区搞出来的,TypeScript 是 C# 社区搞出来的,它们都是非前端社区的产物,迎合的也是非前端的工程师群体的编程习惯。适不适合前端,走着瞧。
最终你们这些前端看上了 ES6,但是你们这些前端在语法还没成型的时候就用 Babel 来转译是不是有点太激进啊?
学学 jQuery,通过原生 JS 来加语法糖,稳定过渡。你们前端咋这么猴急呢?

关于Node

Node.js 作者本人就把这玩意儿当个玩具,你们前端居然当个宝。
前端没有拿着玩意写后台,而是那它做脚本。
写写脚本就算了,前端居然还妄图一门语言统一前后端。然后整天布道什么「全栈」。
可是孩子呀,你一个跟 DOM 打交道的人能理解后端那些概念吗?你们就知道个 JS,连数据库也只喜欢长得像 JSON 的 MongoDB。
半吊子想当架构师。
你们看看现在有几个公司用 Node 做服务器啊?服务器端 Node 完败。
你们这些不会写 shell 的人就老老实实用 Node 写脚本吧。
但是你们写脚本也要有个限度好不好?看看现在的前端工具流有多复杂了啊。而去年的工具今年你们就抛弃了。
孩子气。

关于跨界、全栈、公司定岗

前端这么乱,不就是因为前端没主见吗,尽听别的圈子扯。
CoffeeScript 是 Ruby 社区的;LESS 也是 Ruby 社区的;Node 的作者就是一个票友,平时根本不用 JS;Angular 是 Google 的服务端团队搞的;React Native 是为了做原生 App;全是跨界的!
他们解决的是他们自己的问题,对你有没有用你不想想?
你引入任何一个中间层都会有弊端,你不知道吗?
你用技术要在在乎其缺点。

全栈。
你想做全栈我不反对,但是你要看看公司给不给你机会呀。
你以为你学了 Node 公司就愿意你去开发后台?你有这个能力吗?
你以为你学了 React Native 公司就愿意让你开发 App?你有这个能力吗?
你真的比得过人家专职团队吗?
全栈是顶级高手团队才有的,Google、Facebook。在小公司还是安心做前端把。

关于前端的核心竞争力

前端你不要拿自己的弱项跟别人的强项比了,找死呀。
你拿 Node.js 跟 Python 后台比得了?他们学起 Node.js 不甩你一条街啊?
你拿 React Native 跟 iOS 开发比得了?他们学起 React Native 不甩你两条街啊?
用 Java 写安卓应用的程序员什么时候找死跟 Java 后台程序员抢饭碗了?
用 C++ 写桌面应用的程序员什么时候找死跟 C++ 服务器程序员抢饭碗了?
就你能啊?
你前端的核心竞争力应该是搞清楚浏览器上面的东西!
HTML标签、CSS,JavaScript,Form2.0、Websocket、离线缓存、Webworker、Border-image、Canvas……
这些东西是有难度的。你让一个后端开发写个 CSS 垂直居中并说出优缺点你看他会不会。要想破头啊。这东西靠经验啊。
你不好好看核心,去学一些乱七八糟的是什么意思?
那么什么是核心呢?HTML、CSS和JavaScript
现在的那些个前端布道师,不讲核心专讲新技术,又是几个意思?

关于Angular,后台,SPA

这是给服务器同学用的,如果你的团队以服务器开发人员为主,你再用这个吧。
你们这群没主见的前端,追捧这个干什么?根本就不是给你用的好吗?Angular 2 一升级你是不是又傻眼了,怎么后端又改用 TypeScript 了?
你去追前端基本功呀!
另外 Angular 真的好吗?其实后端程序员可以自己找前端同学封装一些更轻量的框架。(你们前端不行?当我没说)

关于React

React 组件化的思路,我是认同的。Flex 的组件化方案比 HTML 不知高到那里去了。React 组件化 是对 HTML 很好的扩展。
但是 React 太重了,条条框框太多了,把简单事情搞复杂了。
我推崇「轻框架 + 组件化 + 面向对象」。你们不好好改进原来那一套运行得不错的方案,为什么非要去追新,而且还一年换一个星来追。
如果 React 就火个几年,后面的前端新人不学 React,你这个 React 项目谁来负责?你怎么跟公司交代?用新框架重写?!
你作为个人学习去玩玩 React 我是鼓励的。
关于抽象和面向对象,你真的掌握了吗?封装、继承、多态、设计模式、解耦、API设计这些真的都熟练了吗?我接触过的前端,绝大多数同学都毫无概念。来看看我的代码。

关于SPA和Web Site

SPA 不是说你动态加载页面和数据就叫做 SPA 的。SPA 强调的是功能。你要用新技术做出新的功能。现在中国有几个是真正意义上的 SPA 页面?网页游戏、在线IDE、网页版PhotoShop之类才是真正的 SPA。
所以别老是说什么你在做 SPA。

React Native和PhoneGap

不看好。除了开发成本低,没有任何优点。但是哪个公司是因为开发成本低成功的?

关于微信小程序

这玩意既不是 HTML 5 也不是 Native,不看好。

关于前端的缺人和高薪水

现在前端多,只是因为前端太少,跟新技术没关系。
同时 HTML 5 的应用场景变多了,所以需要更多前端了。
等前端足够多了你再看看你的工资。
最终工资高的,还是基础知识好的人。

写在最后

虽然我写了这么多,但也有可能,全是错的。

完,结合这篇文章一起看,效果奇佳:《在 2016 年学 JavaScript 是一种什么样的体验?》。

由于原答案的立场问题(站在阿当的立场喷前端),很多人贬,所以虽然是高票答案,但是并没有排在前面。

你们啊,太年轻,这样玻璃心不好,吐槽都接受不了,将来怎么和大神谈笑风生?你说是吧。


有人问我的观点是什么。

其实经常看我视频的同学都知道,我的态度一项都是,管它什么技术,先学会皮毛,再了解原理,最后对其进行吐槽(批判)。

我对不了解的东西一向是不敢批判的。

  1. 任何一项新技术,你都搞清楚其优缺点和使用场景。

  2. 没有完美的技术方案。

那么阿当的观点到底对不对呢?

全文一万多字,总有几句话是对的,你说是不是?

而且本文中吐槽前端的话,用来自省,是非常有用的!

请关注知乎专栏:zhuanlan.zhihu.com/study-fe

评论