本环节为Q&A环节, 分享嘉宾 Daniel Ehrenberg,响马,玉伯,Hax。流程是对大家想要了解的关于前端的一些问题总结了六条,嘉宾对问题依次给出回答。


一. 优秀的前端需要什么样的基本素质或者能力模型

61576459564_.pic_hd.jpg


Hax: 这个问题的话,从传统的基本素质来讲—“像素眼”(一片笑声),比方说设计稿跟你现在的实现有什么差别,一眼就能看出来,所以这个可能是其中之一(递话筒)。


响马:我接触后端比较多,后端不需要考虑人是怎么看他的,只需要解决问题就行了。前端工程师跟后端有很大的差别,前端工程师的话情商要高一点。


玉伯:就说一个点吧,一个优秀的前端应该充满着好奇心,对某些事喜欢去折腾,这并不是说前端爱折腾,而是折腾的背后有着好奇心。


Dan:需要交流的更好一些,因为有些事需要跟后端工程师去交流。



二. 您是如何培养自己的思维能力?


IMG_1341.JPG


Hax: 我觉得就是可能所有的问题不单单只看一个结果。而是说我需要去重新思考一下,比如我们看到一个产品,我不一定直接去看源码,而是我如果自己来实现的话会怎么去实现它。带着这样的想法,甚至我会实现一个demo。然后我再去看它的源码,看它的实现方式与我的有什么区别。找到我跟作者的差距,然后去锻炼思维能力。


响马:我想讲的是对于一个工程师来说,我们要成为一个好的工程师,那么对于这么一个设定,我们应该怎样去思考问题。其实每个人都会有成长的过程,当我们往前走时,会发现我们慢慢被自己局限住。所以我们需要跳出去,去考虑产品经理是怎么想的,设计师是怎么想的,运营、商务、老板是怎么想的。就是说,我们需要看更多的东西,我们要把自己变成一个越来越宽的人。当前面学习发展过程中,我们需要深入,但是当发展到一定程度的时候,我们需要跳出来,需要读更多的书,学更多的东西。所以这是我想说的。


玉伯:我发现问题越到最后越难回答了,刚才很多我想说的响马已经说了(一片笑声)。第一个我们需要对不同的角色多沟通,了解他们是怎么想的。第二个再展开一下,我们要有些时间去看些书,哪怕是传记也好,很多人的传记可以看到他们的成长经历,包括他们成长过程中的一些思考,看他们是怎么想的。还有一些认知升级的书,比方说《达克效应》,知道自己不知道的。就像这些书籍有时候看看还是对自己很有帮助的。当然在看完之后,也要在自己实际做项目过程中去想,去关注核心。然后多看书,多在项目中多实践


Dan:可以看一些技术基础的知识,这样有更好的技术和应用。不应该只用API,而去了解他们底层的原理,这样你可以更好的去应用。你不需要知道全部的原理,但是知道一些可以对自己的 coding 能力有帮助。


三.  以前的前端和现在的前端区别,背后的思考

IMG_1343.JPG


玉伯: 这个问题核心是当年的前端是什么,现在的前端是什么。这个问题对我来说的话,当年我选择前端,很大原因是前端真的是跟人机交互的一门技术。前端有个特点,就是写完代码之后,在浏览器上一运行,它就能够看到效果,它跟用户、跟交互是息息相关的。所以就它的及时性、好玩性,就及时反馈性。这个就是当时前端的一个特点。现在的前端这么多年过去了,它依旧没有变,还是跟用户打交道。无论是它的稳定性、流畅性,依旧关注于人机交互领域,所以对我来说,前端依旧没有变。


响马:再强调一下,我是伪前端阿(一片笑声)。我们当时是从 DOS 那个年代开始写程序的。当时写的前端用户界面实际上都是文字。从最早我们用文字拼出一个用户界面,去响应用户的键盘和鼠标,然后一直到 windows3.0 ,再到 windows95,一直到互联网来了。我们那时候还没有浏览器,我们用 TCP/IP 去做客户服务器的代码,其实在我们的印象里还没有一个很准确,很狭义的概念。当时的程序员基本上都是全栈程序员,但这些年我们发现前端的变化其实很大,因为前端终端的运算能力,以及应用场景会越来越复杂,所以对前端的要求,对用户的要求也越来越多。呃... 刚才的问题我已经忘了是啥了(回头看问题,台下爆笑),前端后端这个词很难去具体的定义,它本身就不是一个具体的行业的词,因为我们的编译器也有前端后端。我们很多领域都有前端后端,所以在场景下我觉得前端可能被定义在跟用户交互的这一端。我们再讲一个例子,工业设计是不是前端?我们设计物联网是不是前端?设计一款手表是不是前端?所以说所有跟用户交互的部分都是前端。不要把我们的视野局限在 Web 上。不要把视野局限在 App 上,我们应该是一个工业设计的行业,而不是一个写代码的前端行业。这是我所定义的前端。 


Hax: 嗯 我来讲一下,对。我就是局限在 web 上的前端(台下爆笑、鼓掌),在一开始的时候,前端包括所有的客户端,包括响马老师刚才讲的,从未来的角度看,前端可能会有物联网方面。那,我为什么选择局限在 Web 的前端。是因为 Web 有一个特别不同的设计,举个例子,一个网页我想去控制它所有的表现和所有的行为。多少年以来,我们一直觉得还不够,还不够,所以我们去做一些比较 Hybrid 4或者其他的方案。但我们也要看到,Web 给你的另外一个好处是什么,Web 一开始它是基于 Web 标准,并且它给到的是一个相对更高抽象的东西。很多时候你代码写好之后你不去改变它,比如写一个 input ,它有一个 type=password 这样一个东西。它只是一个抽象的表达,它是密码输入的一个地方,当你在手机浏览器上打开发现可能是不一样的,比如它使用了不同键盘。当你把 type 改成 date 或是其他组件,一些古代浏览器是不支持的。让你直接填文本,但是一个现代浏览器就会弹出一个漂亮的 date-picker 组件。所以为什么我只局限于做 Web 的前端,因为我很懒,我写好之后不用做任何事情。只要浏览器升级了,我就省了很多时间,用户体验也高了。另外一种可能性, Web 的方式其实是综合性的方式,它是一种结合。不仅是工程师的实现,浏览器的实现者,包括用户他也会选择一些插件,共同形成最后的体验,这也是 Web 的一个非常有趣的地方。这也是为什么我要选择成为一个 狭 义 的 Web 前 端(回头看响马老师)。


Dan: 其实我并不是一个你们认为的前端,我只是一个标准的制定者,为了让大家有更好的体验,所以我现在在做一些 JavaScript 代码。因为我之前是没有去工作的,我花了一些时间去做一个叫 Factor 5的代码,但是这个语言对于大家可能很难去使用和理解,后来工作后在公司花了四年的时间,重心放在了 Linux 的核心上。现在觉得大家在JavaScript 上写代码更加容易。


四. 带团队的改变


IMG_1345.JPG


Hax: 我没带过团队..(爆笑),嗯,也不能说完全没带过,就是说最早的时候,当我刚开始工作的时候,反而带过一些小团队。虽然我现在不带团队,我经常看别人带团队。然后在吃饭的时候听 team leader 各种吐槽,我就坚定了自己不要带团队的想法(一片笑声)。开个玩笑哈,带团队是个困难的问题,因为当你一个人的时候,你只需要管好自己就行。但是当你带团队的时候,你要为所有的人思考,你要思考整个团队的产出是什么,怎么让团队做正确的事情,同时你要为团队的每个人去思考,思考他们的强项、弱项在哪,他的职业生涯该如何规划,他应该在这里做什么,并且把这些东西和团队的目标相结合,所以这是一件很难的事情。 所以我还是不要带团队,我管好自己已经很不容易了(爆笑、鼓掌)。


响马:我再看一下阿(回头),我觉得这个问题上我跟 Hax 的性格很像,当时为什么我去从事计算机,从事技术。有一个很大的问题,我觉得人太烦了。天天去琢磨别人怎么想的,你说这事烦不烦。后来带同事开公司,也会遇到一些问题,很多时候你思维的速度永远会超过你时间的局限,永远做一个事情会超出你个人的时间的。所以你要跟别人配合,我的解决方案是什么呢? 我找了一个人帮我带团队(台下鼓掌)。这就是我的改变,谢谢。


玉伯:(两边嘉宾起哄,这个,这个是真正带团队的)ok,带团队从最开始12、13年的几个人到现在有将近 200 号人。但是看到这个问题的时候我自己也在想,带团队之后有什么变化,其实我自己变化不多,因为自己一直在做前端。在做前端的时候一直在做开源这块,从 Kissy 到 SeaJS。开源的纯天然优势就是不是一个人在干活。包括社区的运营,然后把一个项目达成。我没有接受过团队管理的培训,我所有的经验都是来自于做开源项目。以开源项目的方式去运作一个团队,像其他人有说,开会。我觉得开什么会,提个 Issue ,对吧(台下爆笑、鼓掌)。就因为在开源社区里,不光我自己的项目,包括很多优秀的开源项目,我会看到他们是怎么运作的。我会很强调团队里边去异步交流,高效协同。这些都是来源于开源社区。第二个变化,从我之前亲力亲为去做一些事情,逐步转变为团队怎样去运作,我应该建立一些什么机制,通过一些机制,能让一些好的事情涌现,好的东西能得到一些鼓励。另一方面,比方说阿里内部很多组织结构图,会把 leader 放在上面。但在我心中,我一直觉得我是躺在最下面的那个。组织架构图其实应该是反过来的,我在最下面,然后是我的DD,然后是各位同学。然后你在下面默默的做一些事情就好了。我没有改变的是一直在做一些开源,变的就是去更多的想机制、流程的事情。


Dan:我的工作组织叫 TC39,我并没有做一些leader的事情, 在我的组织/公司里,人人都是平等的,是一个扁平化的组织。还是有很多需要沟通的地方, 你要跟别人说是不是做完了这些事情。 我需要给别人一些动力,并且在新的同事进来以后,我能告诉他们应该怎么做完。我会多花一些时间,然后他们也都会有成长,有更多时间去提交他们的代码。


五. 如何对技术保持热爱,前进的动力


IMG_1347.JPG


玉伯:这个问题本身就是答案,就是因为对技术热爱,所以会驱使往前。 为什么会对技术热爱,也确实发现有时候看过往,会发现技术是份力量,是整个社会创新的最大动力之一。 有时候无法想象,比如说我在 2007 年,当时买的第一个比较贵的奢侈品是 Iphone1 ,我有时候整理旧东西,会把它们拿出来做对比。我到现在都还记得,07年第一次拿到这个 Iphone1 的时候是多么欢欣喜悦,觉得这个产品非常好,非常流畅,但是现在把它充上电,打开再去玩的时候就感觉,这么慢!但是我觉得苹果还挺牛的,经过了11年之后,我的 Iphone1 依旧可以开机,依旧可以用,也挺强的。虽然它的体量很差,但是很好玩。一个产品经过11年,科技就变得这么发达,那我们可以想象,我们继续往前走,在前端体验这块,现在是19年,到10年后,我们生活中每个物件的体验,会达到一个什么程度,所以我很好奇,整个过程中,不管作为亲历者也好,推动者也好,我想看看这个变化是怎么发生的,这个事情就挺有意思的。这个行业每隔5年 10年,能有很多让你想不到的惊喜。


响马:这个问题,我们在座的这些(嘉宾)回答起来结果可能都比较雷同,我说点不一样的吧。还是我刚才说的,我们在跟别人聊天,打交道的时候会觉得挺费劲的,要想他到底是怎么想的。这个东西很烦对吧,每天你工作晚上回家最想做的东西是什么? 就是打开电脑写程序嘛(台下爆笑!鼓掌)。写程序本身就是个很放松的过程。我在知乎上写过一个文章,以前我年轻的时候可以连续写程序写30几个小时,就坐在那一直写,然后点外卖,那时候外卖叫 「一个小时」,然后继续写。别人会觉得说,阿 你怎么这么辛苦啊。我会说,没有啊,我觉得挺好玩的,就其实,很多事情就这么简单。你说它,也说不上坚持,也算不上驱使,就是他自己会这样做。


Hax:对,我觉得是这样。我想讲点我自己的,我一直对一些事情很好奇,为什么它是这样设计的,它有没有其他设计的可能。比如说,我们在公司写代码会经常出现一些 bug ,我会很好奇为什么会出现这个 bug,到底是哪些因素会导致这个 bug,我们有哪些方法可以防止这个 bug 再发生。这样的事情对我都是驱使的力量。比方说为什么我会进 TC39,它是一个比较有趣的事,我经常会跟大家分享一些 JavaScript 新的特性,在分享之前,我自己会搞明白它为什么被发明出来,它解决了什么问题。在两年之前,当时有些新的特性做出来,跟 Dan 也有关系,因为是他做的提案,我记得是 class fields,这是一个很有意思的东西,实际上我当时做了一个演讲,我想解释为什么它会设计成这样,因为它前面有个井号, 很多不喜欢它。当时我花了点时间去研究它为什么要去用这个井号,为什么是这么设计,而不是那样设计,然后我把我的理解去分享给大家。在这个过程中,有些问题我是没有得到解答的。并且我会有不同的想法,不同的观点,可能跟 Dan 不一样,最后我发现一个问题,如果有个地方需要解决的话,我们就得参与进去,我们参与的有点晚,可能它已经是 Stage3 的提案了。不管我们在这个事情上怎么处理,但至少,我觉得那是一个驱动力,驱动我们去做这些事情,驱动我们去参与一些事情。而今天,阿里巴巴,华为,360都参与进来,更多中国公司,有这样的人,这样的想法。这些人可能想法不一样,但我们更多的是非常热爱这个东西。


Dan: 关于刚才Hax说的 class fields,我会在别的时间分享,因为它有一点点复杂。关于它的 TC39 的规则,我也有很多的好奇心,也喜欢很多这样的情况,并且跟其他人一起解决这样的问题。我之前就跟 hax 认识,也很想跟大家分享相关这些信息。我觉得只执着于技术本身也是很有意思的事情。


六. 心路历程


IMG_1348.JPG


Hax:有几件事情对我的决策有关键性作用,第一件事情是这样的,当年有一次,我还很年轻,我发现 FireFox 的 JS 行为跟 JavaScript标准 里的行为不一致,当时我给 FireFox 提了一个 issue ,大概5分钟之内,Brendan Eich (JavaScript之父)就回复了我,这是我第一次对 FireFox 提 issue,我当时得到了这样一个反馈,我就很惊喜,我从来没有想说我提了一个 issue ,JavaScript 之父对我说:对,你提的这个问题是对的。这是对我非常正面的鼓励,你去参与这样一个事情,你会得到一个很好的鼓励。第二个事情,也是很多年以前,我对前端的看法一直是相对比较固定的,一直到有一个框架,叫 IE seven,这个IE7并不是微软的 ie7,而是一个框架,他这个框架做了什么事情呢? 他在 IE seven 里用了各种方法使得你在 ie6 的环境里也可以用 web 标准去写,比方一些 JS 的新特性,本身不支持,然后让它支持,包括一些 CSS3 的一些特性。这其实就和今天的 polyfill 比较像,但是当时还没有人理解什么叫 polyfill 。这让我一下思路就被打开了,哇,前端原来还能这么做。今天可能大家都习以为常了,但当时好像是 200x 年的事情了,我觉得我非常震惊了,我从来没想过,原来我们的代码可以这样写,原来我们在工程上还可以这么做,虽然那个方案当时也有很多局限性,但它让我改变了对很多东西的一个看法。最后一个事情就是 加入 TC39,在这里我学到了很多东西,包括从 Dan 身上也学到很多东西。


响马:这是一个大题啊,我也站起来说吧(台下大笑)。刚才我说到一点,建议工程师一定要在不同层面上去拓宽自己的视野。刚才我本来想到一些关键的点,但是我一听老贺一说,也感觉不那么关键了(一片笑声)。我换一个点,在我刚毕业的时候,那时候信息获取没有现在这么方便,还没有互联网,当时我在南京,我把做项目能买的技术书都买了,然后我觉得这个行业好像我已经走到头了。呵,当时很自大。后来一次偶然机会,在95年的时候,因为机缘巧合在南京买到第一套 MSDN 宇宙版 1/4版,什么叫 1/4 版,是当时一个国企买了一整套,买了一年。我付了一部分钱拿了一套回来。这套 MSDN 当时很厚的一沓光盘,这套 MSDN 给了我很大的帮助,我埋在家里,什么也没干,看 MSDN 看了一年。虽然现在不是很重要,但当时这套光盘把我的思维一下子就打开了。你看到的不再是做项目买的一些书,那些书可能都是一年前甚至几年前的技术,那一年我学会了 code page , 学会了 unicode, 学会了怎么给windows 打 hook等等,所以结论只有一个,无论我们从事的领域是什么,无论我们的兴趣方向是什么,时不时的把自己视野打开一些,打开以后会看到更大的世界。


玉伯:这个问题很大,我也站起来说。这个题目更多讲的是历史的一些东西,刚才我脑海里一直在想,对自己来说。可能最核心的点是什么。大概有三个点吧,


第一个是在研究生阶段,我申请退学。我在大学和研究生学的都是物理,而且是比较 boring 的基础物理,天天推公式,做一些东西。后来到北京读研的时候,就感觉自己在实验室,从研一到研二研三,整个一个目标就是发 paper,然后毕业。我就很好奇为什么要发 paper,因为很多很多 paper 按照导师自己的话说都是一万个 paper,可能有 9999 个都是炮灰,那我为什么要去做炮灰,还是在国内去做炮灰,因为当时在国内做基础研究的要发像 Science 和 Nature 的文章概率还是很低的。这块的优秀人才在本科阶段已经到海外去读了,所以我感觉自己走在一条失败的道路上。对待物理的话当然内心还是有热爱的,甚至有些时候还想再回去读个博。但确实会发现整个基础物理的研究让整个人生会感觉很黯淡,有这个感觉。我就在想我做什么事情的时候会感到幸福,我发现在实验室最快乐的时光就是帮自己和师兄师姐写代码的时候。当时是用 C 写科学计算的一些东西,比方解方程,在某种特定情况下,找到一种新材料,去做实验,去做拟合,但是光有数据,不会写代码,那你连 paper 都发不上去,但是我对 paper 没兴趣,我对写代码有兴趣,然后当时选择了退学。就从物理所去了软件所,其实并不是换专业,是真的退学。从学生变成了软件所的职员,当时待遇还挺好的,作为一个第一份工作,还有寒暑假,我觉得很好玩。当时我的老板,还是习惯叫他导师,经常会把我误认为是他的学生,就有次看到就说: 小王,你坐在这里干嘛,你应该去上课呀。 不会把我当成软件所的职员,这种状态确实很舒适,在软件所做了很多事,关于计算机理论基础,工程快速学习,但同时我发现,在这里边非常的安逸,安逸到好像觉得没什么意思,而老板还是把我当成学生,就觉得没什么成就感。


然后是我的第二个选择,08年从北京到杭州,当时想着去互联网公司去看一看,机缘巧合就到了淘宝,在淘宝对我来说是很大的一个变化,才知道原来写代码可以写成这么苦逼的(台下爆笑、鼓掌)。08年到淘宝很快进入到项目室闭关,从当时做的交易线,二期开始做,到后边的三期四期到五彩石,一直在闭关。也是很开心的事情,但当时也是苦逼过头了,就想着去赛马(阿里内部的赛马机制),虽然最后赛马失败了,这段经历现在回想起来也没什么。这算是我关键的一个点。


第三个点是对我影响很大的一个人,当时是支付宝的 CTO,叫鲁肃。他作为整个支付宝的 CTO,他当时在跟淘宝的 CTO 做交流的时候,我发现他的 PPT 里边竟然有两页在讲前端。我觉得这个很有意思(台下鼓掌),所以最后的选择是去支付宝,跟随了鲁肃,他是一个非常谦卑的人,13年为什么我会留下做 PC 端,而不去 「来往」,或者留下转IOS,很大原因是是鲁肃给我说的一句话:「不动如山,其疾如风」。这是《孙子兵法》里的一句话,意思就是当你“不动如山”的时候,其实是你可以成长和走的最快的时候。所以当时因为这个原因,13年选择留下并且一直跟着鲁肃,去做前端的中后台,当时前端的中后台做的人很少,而且很苦。中后台前端是很有技术含量的,当时也没有大前端,也挺好奇的。在13年开始往这方向走的时候,也有人说这个 「大中台,小前台」。包括现在什么产业互联网,互联网的下半场都会往企业级产业互联网这方面发展。发现自己就莫名其妙的踩了这么一个风口。这个风口就是企业级前端开发,就是不在光环里的中后台前端开发。我到现在也会觉得中后台前端开发是非常有技术含量的。而且才刚刚开始,真的要做好的话完全不逊于 C 端,而且后续会影响到大量的 C 端。这就是我想说的。


Dan:之前没有互联网,在我13/4岁的时候想要学习编程,我的第一门语言是Python。当时会想为什么它是一个 statement,应该是个 function 。Python3.0已经可以用函数了。我在大学的时候选择去做一个程序员,跟着教授学写代码,这样比较专业。让我觉得有些挫折的是,我并不觉得我们在开发一门语言,所以我在谷歌流浪了四年,有机会做一个语言的编程。


总结


从一开始晚会的破冰环节,大家都积极的参与,到后面的随机抽问题,再到lightning talk环节。不管是嘉宾还是台下的小伙伴都越来越放松,嘉宾们也讲的越来越多。是一个非常棒的体验。


对于大佬们的分享,我尽可能去还原,而不是直接总结经验。由于个人英语水平和阅历有限,所以他们所说的很多技术点我都不太懂,比如文中用上标标记的地方,关于Dan的分享这块都是靠翻译小姐姐的陈述来整理。但整体看下来,也不会影响到他们传达的想法。通过这次分享学到了很多,无论在前端还是其他领域都值得很深的思考。


最后,希望明年D2再见👏(码字不易,求赏个稻谷吧~)


彩蛋🎉(大佬出场):