这几天回顾一下,从微博到知乎,新人老人,js流派,css流派,双流派,意图跨界抢地盘的各路其他门派友人,从站队和言语,性情如何一目了然。特别有意思的是老人如何选择在新旧几代人更新换代时行为和态度上的策略。还有吵架套路也各有特色,非常有意思。
说站队,主要有三队人吧:
[第一队人]:喜欢不明觉厉靠信息不对等为主要手段闯名声的。
比如用node做伪服务端路线,以及不实用也很难落地的react全家桶路线的,等等等等,反正一个明显标志就是巴不得天天出新名词,管它利弊权宜,你听不懂就对了,管它是不是在其他社区早就有相同的技术方案了,有了node这神奇的处女地,建功立业绝好机会啊(借前端懒人居多es语法熟这一个王牌就够它师出有名了),把别的社区的冷饭在前端圈苦于知识杂、需求变动多而无暇扩展知识广度的前端码农们面前吹捧一番,然后再说说以前如何如何苦有了我们以后会如何如何苦尽甘来。和邪教骗信徒一个套路,先吓唬你再给你解决方案。
社区要立足需要人气,这么个经典套路别的社区也大多会玩上一遍。只说好的方面,不提node不成熟会有很多坑,而前面左转的某成熟社区也有稳定解决方案,虽然可能缺了点为前端量身订制的东西和热情,至少多了不同选择不是?知乎上有同学拿我11年对node“微微一笑"说事,我是真的笑了嘛,看到node的版本号和当时的模块列表,我转头就回去继续看python了。"人生苦短,我用python",这入教口号确实打动我了,(鬼知道后面移动平台python神教上不了舞台)。10年我跟风折腾ror时,被坑苦了,语言,环境,框架,ide,说多了都是泪。转到python后顺风顺水。你要是我,会愿意放着成熟的python在一边,陪node淌坑吗?击攻我11年对node"微微一笑"的同学真的读懂我的笑了吗?如果要揣测动机的话,node先锋们知识广度应该是够的呀,明知不可避免会遇到这么多坑也依然无私陪他闯?如果有私的话,私是什么?看官自己想想吧。
另外,github上喜欢奉献的同学会不会同时也会是node先锋?我是实用主义者,追求的目标是性价比,是懒。打着帮工程师提高效率的同学为啥不基于python贡献下力量?难道node出来前,前端真的没有用脚本工程化前端的探索?克军07年就带我们中国雅虎的前端团队玩ant打包发布了。我为啥特别服克军?因为他的嗅觉敏锐领先我们全国的前端圈很多年。不服的看看网上盛传的前端知识拓扑图,那是他差不多十年前画的!在我心里他是国内前端第一人!不喜欢炫技,有扎实的基础,宽阔的视野,比这些争着抢着走捷径争名声的新人和老人不知道强多少倍。我说我没兴趣上github攒星星,是因为我真的没兴趣,靠,刺激到一些玻璃心了,说我暗讽他们沽名钓誉,你妹的,自己心里有鬼好吧,越有鬼越敏感。之前我喜欢看克军的博客,看他写自己的心得体会,发现他情商超高,和曾经有幸和他共事的日子亲身感受到他为人态度的谦和,发自内心的那种,不是装的。知道真正在国内掀起前端交流大会的第二届D2举办方是谁吗?雅虎。而主持人是谁吗?当时中国雅虎前端的leader克军。这么好的聚光灯,在自家地盘上克军一个分享名额也没给自己留。对比生怕别人注意不到自己的某些聚光灯控,知道什么叫真的低调地有才吗?这些天在辩论观点时,不忘积极教我做人的同学,我也教一回你们--向克军学习下。
有同学攻击我说,"克军玩react就不是跟风了,其他人玩就是了"。克军是在react native之前就开始在玩react的,而react native之后才开始玩的同学相比,差距有多大,您自己去品吧。再想想我前面提到的超前的嗅觉。(虽然我仍然不理解克军遇到了什么特殊的业务需求要用react解决,他的团队合作是否需要特殊定岗?)
[第二队人]:中立的喜欢教做人的老人。
他们其实懂我说的点,他们跟我一样经历了那个时代。但他们不愿意再强调基础的重要了,可能觉得谈这个有点逆势而为,显得low掉身价?至于我关注的传承问题,他们的答案出奇的一致,优胜劣汰市场自己主动选择。不知道是不是因为他们在互联网大牌公司待着,有公司招聘光环和个人品牌光环的帮助,感觉不到招人有多难的痛。
知乎上有同学说我打着传承,指导新人的旗号,揣着卖老刷存在感,甚至扯新同学们后腿让他们跟我一样拒绝"新时代的工业标准"。这真的是。。。我挨个批评了一堆所谓新标配或未来之星,也都一一"分别"解释了原因呀,为啥我解释起来一个一个分开说说了半天,而大部分反驳我观点的同学却喜欢用"时代变了,以前的解决方案全没价值","你自己不学习还一堆理由","要如何如何做人"来草草打发我呢?倒是跟我说说以前的解决方案是啥,优点是啥缺点是啥,新方案怎么就好了,相比旧方案哪儿好?另外恳请反思下:举的例子的适用场景是特例,还是普适?
说回态度中立的老人,可能无奈后生可畏,积极逼宫,本也没有对我太多恶意,却也不得不表个态表示对小朋友们折腾的支持,“扎挣去吧,未来是属于你们的”,然后显得高风亮节,自己全身而退,小朋友们也一副未来主人翁的愉快,心满意足地等着时代交替。
可是,传承呢?《无懈可击的web设计》和《响应式web设计》为代表的css技巧流派呢?sass能完成这个传承?有同学说旧的技巧淘汰了,不用学。这要分情况的呀,说他被淘汰了得先知道他有什么吧?为了兼容而生的css hack是淘汰了,但滑动门,垂直居中类的实用技巧呢?css3的确是有了新的解决方案了,但具体是什么,新同学清楚吗?工作中没有这些技巧没吃过绕远路的亏?这可不是孔乙已的五种茴字写法,css每种实现方案都有它的优缺点,甚为精妙!当我走出web前端去玩其他GUI方案,flash,wxpython,canvas2d,webgl和android nativeUI时,才深深地发现css是浏览器送给前端工程师最好的礼物,各种场景下css语法表达的简洁和性价比到了一种艺术品的高度!新同学可曾好好对css下过苦功?因为上手简单显不出逼格所以没兴趣?里子比面子重要,页面可以没有js,但离不开css。js可以有dart之流远运地尝试挑战下,你见过谁提出替换css?
说css呢,有些同学别搅混水提sass,不但解决的不是同一件事,精通成本也完全是天差地别!学了sass就解决了css精通问题?别转移话题了,严肃说css的时候往sass上带的滚一边玩去,自欺欺人说节约了大量时间,你妹,花在css设计上的时间用多久,花在sass上节约的那点时间能比吗?GUI编程的痛,写ruby的能懂吗?他一前端外行能解决得了你花在布局思考上的痛。知乎上说"就你知道前端痛点,凭啥这么自信,众人皆醉你独醒"的同学,我还真就知道,就凭我八年多一线身经百战的前端经验,而且我挑战的各类项目的经验绝对高含金量。你当人csser不说透的原因是他们听不懂我的话?是人家长久以来被鄙视惯了,自卑了,好不容易有个时髦的看起来有点逼格的工具出来,不拿过来撑撑门面就被鄙视链鄙到底了。csser也是守着宝不识宝,没办法,技术广度普遍不够造成的。css2时代,csser担心门槛低,精熟成本也不高,别人一旦学起来没核心竞争力,这个我理解。可是css3时代不一样了啊!时代变了,css3如果要精熟,非下血本不可!css的壁垒今时不同往日了。
特别搞笑的是这两天一服务端的伪前端用了bootstrap和angular做了些后台之后,硬是跟我叫板了几天,说啥css不重要,有css框架呢,说除非是“特立独行”的UI需求才有css的价值,甚至还有同学拿“汇编和c”来类比”css和bootstrap”,问我手写css凭什么有优越感,还理直气壮问我“切页面的不是美工吗?”。我是真心哭笑不得,所有前端都应该知道这是多大的笑话,您是零几年穿越过来的?说了这么久严肃的,这个梗各位前端同学就当个笑话调节下气氛了。这也侧面看得出来一部分服务端同学的无知无畏和对csser深入骨髓的鄙视。应该是特例,不冤枉所有服务端同学。
js的组件和基于Widget的OOP编程的传承也面临挑战。服务端编程没有事件层,加上有mvc框架一放,基本上大部分需求不需要在应用层做OO设计。而前端不同,website那种形式,前端所谓架构和重用,不过是准备好个组件库再用jq之流的类库屏蔽下浏览器接口兼容性问题和改良下语法糖就行了,分散在各个web page下的应用层加个requirejs做做动态加载,就基本可以解决大部分常规需求了。对框架和OO都没有硬性需求,所以前端框架和工程化工具都不是刚需,jq得以称霸前端框架这么多年。但这些年并不是没有适合spa的框架啊,多人合作来玩spa都没问题。
我在知乎上说我有不是mv*的spa解决方案,答案就是基于widget的OO编程。某右同学轻描淡写地说OO widget编程经过验证不适合前端。胡说八道,谁验证的?怎么验证的?YUI,ext,dojo等一众前端框架这么多聪明的脑袋得出的解决方案,你说淘汰就淘汰了呀?这可是深知前端痛点根正苗红的这几天回顾一下,从微博到知乎,新人老人,圈内人和意图跨界抢地盘的人,从站队和言语,性情如何一目了然。特别有意思的是老人如何选择在新旧更新换代时行为和态度上的策略。还有吵真前端大神们出的解决方案啊!!特别是我的前端精神导师YUI3,一支10来人的团队,包括json之父道格拉斯(js界公认精神领域)和js高级程序设计作者zks(雅虎首席前端工程师),全日制带薪来开发YUI3,文档,sample,api查询一应俱全,要知道当年雅虎公司还没失势呢,团队成员说是全球最顶级的没人不信吧?周边工具yslow,expressor,online combine一应俱全,核心core层不只兼容了浏览器的DOM和event差异,把模块化,动态加载和语法糖扩展全给做了!
不等es6出来就只能生活在js那种简陋的语言环境下?只有babel这种解决方案?jq都可以通过库的方式重定义DOM接口,YUI为什么不能通过类库的方式改变es语法?我说babel是个笑话,一方面它的成本高,又是node依赖又是编译的,还有团队合作成本,和维护调试的坑,为了解决一个旧问题,引入更多新问题,换个性价比更高的思路行不行?再说了,不用es6会死啊,它就这么工程化必须品啊?es4曾经也这么想,es3的人民多水深火热等着我去解救啊,结果es4自己死了,es3活了这么多年,真讽刺。我倒不是说es6会重演es4的历史,环境变化太大了,我想说的是es6没那么必要。用得着为了盼这救星拔苗助长吗?这不是为了解决问题创造问题也要解决问题吗?更何况es6能用了,它就废了,一个过渡工具犯得着我去学吗?我反正没这自虐需求,谁爱学谁学。
再说说spa这种需求,基于组件+OO vs mvc谁才该是GUI编程主流。10年我在自己思索前端的mvc之道,通过对比服务端的mvc方案,我找了个能说服自己的前端变通方案,具体是什么这个暂不细说了。然后11年初开始至14年底,我在日常工作中一直使用这套方法,完成了数不清的大小规模spa,运作非常良好,完美解决了我的所有需求,包括多人合作。代码组织方式是组件+OO。服务端mvc模式是成熟的,这个没什么好说。客户端呢?除了web搞了个mvc,哪个客户端不是基于组件来开发的?桌面,web富媒体flash,游戏,据我所知有GUI的地方就是靠组件来组织的。像素显示,事件监听,属性和view的对应,这样才高内聚啊,才能通过公私有将细节封装起来呀?mvc倒好,上来切三大块,你视觉上看起来是一个东西,代码上分到了三处,即使分别做封装,那事件呢?组件模式很简单的问题,到了mvc模式无端变复杂,还是自己作的,一了解发现终作甬者是服务端背景,再一问适用场景,答曰后台。又是后端,又是后台,发现没,和bootstrap何其相像?人后端同学跨界来解决后台应用场景来了,php啊,java啊涌上去可以理解,你个主战场在各种变化的前台的前端开发同学去跟着兴奋个什么劲啊,生搬硬套到前台来坑多还是利多,先习惯下组件+OO的套路,再多做几个前台场景的实战,再来回答这问题好吧?从09年底在新浪开发web聊天室开始,到14年底我放弃做h5游戏,我的正职工作基本以spa为主。angular的书我买过两本,没看完我就看不下去扔书架上堆灰去了。什么时候问angular的应用场景时,不再回答后台,我就开始重新关注angular。
我司的一个应届生小朋友买了本巨厚的angular高级程序设计,我问他你看过css方面什么书吗?他说没有,我说你为啥看这本angular呢,他说流行啊,很火。
[第三队人]:当然是和我相同观点的人了
首先感谢微博和知乎上支持我的同学们。风向压力非常大的时候,你们仍然支持我,这比第二队中立的同学要付出更大的勇气。
我虽然没有在一线写码了,但目前为止还从未离开过前端圈,所以知乎上某些拿"你离开一线,你脱离群众了"做文章的同学,消停一下吧,我过往的经验,加上这一年我实际接触到的或网上,或合作,或面试的非我自己团队的前端人数,足以让我自信拎得清形势的。
第一队的同学人似乎很多,而且不少人喜欢用大词吓唬人,用教做人而不是说事来反驳我。谢谢,我不买帐。我的工作经历,见过的人和事很丰富了,一般人唬不到我。而我又不喜欢揣着明白装糊涂。所以,呵呵。
第一队的同学人多,但猪队友多,毕竟不同技术背景不同意图而聚到一起的杂牌军居多嘛。而我方有影响力能帮我说上话的大拿虽不多,但都是神队友,特别感谢一下克军、知乎上匿名并始终不肯私信我帐号的知音,以及自称中立搅屎棍但却明明是站在我边的某处女座杀手,你的几次神配合,特别是“充话费送ruby”这个段子,我笑了一天。对了,看官们,我处女座,看到较真起来觉都不睡的我,以后是不是小心点别惹处女座?
【特别声明】:以上言论中除了克军,我都尽量没指名道姓,对不对号入座,您随意。我也不是什么大牛大神,搞得我话都不能随便说了,不然话不投机的同学动不动就误人子弟的巨剑砍过来了。我只想诚实地说出我的看法,纯属一家之言,经验和眼界有限,难免有失偏僻,我说得对不对,看官您自行判断。对未来预测准不准,这个就更不敢负责了。对未来预测准不准,这个就更不敢负责了。对未来预测准不准,这个就更不敢负责了。重要的事情说三遍。