本文仅供学习交流,请勿用于商业用途。非商业转载请注明译者和出处,并保留本文原文链接:http://www.ituring.com.cn/艺...编者按:通往360的酒仙桥路真正名副其实的“堵车”,难道是因为大公司吸引人才的魅力?面试那天,正好遇到大学毕业生面试大军。这么想着,李松峰老师特意下来,领着我直接进了办公楼。他真有种“走后门”的感觉。之后,李老师带我去了360著名的“南瓜车”休息区,感觉就像坐了“公共电梯”。很快,传说中的月影映入眼帘。笔记本加手机,嗯,够专业!真正进入面试的时候,月英的发言和逻辑完全颠覆了我之前对技术人员的偏见。后期整理虽然乏味,但时不时能被他渊博的知识和独特的视角唤醒,揉揉眼睛又是睿智的一瞥。月英(本名吴亮)早年是微软亚洲研究院的访问学生,曾在金蝶软件有限公司担任核心开发工程师和项目经理,曾在百度e-web开发项目经理。商业部门。曾任盛大创新院搜索主题研究所高级研究员。目前担任奇虎360副总监,360技术委员会委员兼前端技术委员会主席,最大前端团队——奇舞剧团组长,w3ctech顾问。多年来,他一直致力于JavaScript技术和Web标准的推广。曾活跃于国内最具影响力的JavaScript专业网站——无忧脚本(www.51js.com),并担任JavaScript版版主。我平时喜欢文学、写作和围棋。他是畅销书《JavaScript王者归来》,热门技术文章《写给想成为前端工程师的同学们》《前端动画原理与实现》等的作者图灵专访:我知道月影在前端很有名,图灵社区很多评论也感叹他们终于有机会采访月影了。你是什??么时候第一次接触到JavaScript的?我接触的比较早。如果我开始写网页,那时候我还没有上大学。我上高中的时候,1996年左右,我们家上网比较早,是第一批网民。当时自己写了一些网页,只是简单的用了一些HTML,不是很专业,只是玩玩而已。那时候很流行个人站长,我也跟着做了。后来接触到了动态网页技术。我记得我用Perl写过聊天室、留言簿等页面。基本上不是很系统,随便玩玩。那时候还是以C语言为主,写了一些小程序。我上大学的时候,学校没有专门的前端专业,但是需要在俱乐部做一些网页,包括一些其他的宣传。毕业后,我的第一家公司是做ERP软件的深圳金蝶。有意思的是,我们班有半年的轮岗实习期。分配到分公司后,我不仅接触开发,还做售后、售前等各种事情。半年后回到总部,参与了总部正在开发的一个内部web系统。当时也考虑过是用.NET还是Java,最后选择了Java。当时觉得Java比较合适,因为这种企业级系统用Java比较成熟,而金蝶是Java实力很强的公司,所以我也学了Java。说到web系统,就免不了要用到前端,而我也没有系统地研究过前端,所以就用了java的一些前端框架。后来发现用后端程序员用的Java工具开发前端不方便,于是又回到了标准的HTML、CSS、JavaScript,开始系统地学习JavaScript,比如看犀牛书(《JavaScript权威指南》),以及对剧本的担忧。专访图灵:是的,他还是51.JS论坛的版主。因为经常发一些技术知识,参与一些讨论,比较活跃。专访图灵:应该说IT行业重视共享和开源?是的,说到技术,我很看重分享,这是互联网行业的精神。在互联网的早期,它可能比现在更纯粹一点。虽然现在的互联网,表面上有一些开放的精神,但其实很多时候这些产品已经商业化了,更多的是讲流量、变现、价值。希望技术同学能继承早期互联网时代那些草根站长的互联网精神。没必要为了流量做产品。回归初衷,我觉得通过技术做产品,分享给大家,享受分享的过程,是美好的。专访图灵:你的微博昵称“十年痕迹”让我想起了纳兰性德的那句“十年痕迹十年心”。不知道是不是出处?是的,的确是出自纳兰容若之口。虽然我是理科出身,但其实我喜欢文学,尤其是古诗词。像诗经、楚辞、宋词、元曲,我都会涉猎一些。小时候经常背诵的唐诗宋词虽然大部分都忘记了,但是这些诗词接触起来还是挺美的。把它作为一种爱好与朋友分享,自己享受,或者写下来,都是很有趣的。专访图灵:从《十年的痕迹》、《月影》到你写的《JavaScript王者归来》的名字,可以看出作为“技术界的一股清流”,你非常喜欢文学。除了文学,你还喜欢写作和围棋。我曾经写过一些技术和非技术文章。这几年文章比较少,但是我会坚持写技术博客。图灵访谈:你如何平衡生活和工作?其实刚毕业的时候,平衡的不是很好。因为从事着自己爱好的工作,所以很开心。我脑子里没有工作和生活分开的概念。平时下班后想写代码之类的。但后来我渐渐意识到,自己还是需要多陪陪家人,周末锻炼身体,休息旅游,合理安排生活。这方面我很有代表性。以前不注意这些,现在关心的是体育锻炼。周末固定时间去游泳锻炼身体,也在家做饭。专访图灵:其实图灵出版过一本书,名字叫《程序员健康指南》,但是它的知名度远不如技术类书籍。在你这边,我们应该多注意吗?应注意卫生问题。你们中的许多人可能已经意识到这一点,但很难改变多年来养成的习惯。体育锻炼非常重要。中午去公司健身房做一些不太剧烈的运动,比如在跑步机上慢跑一会儿,即使是下楼走走,散散步,也能保持更好的状态,工作效率更高。不要觉得自己年轻,身体好,所以这些都无所谓。工作一段时间后,每天熬夜、久坐,你会感到不自在。如果我现在带队,我不希望我的同学因为工作的原因身体出现问题。我鼓励大家锻炼身体,原则上不鼓励过度加班。做产品研发,所以项目是周期性的,有忙有闲是常态。如果比较忙,周末可能会加班,占用一部分时间,但是项目上线的时候,后面会有一个调整期,所以可能会比较空闲,个人学习的时间也比较多。专访图灵:有人说前端门槛低,截个图,做个动态,拼个页面就可以了。你认为一个好的前端开发者应该具备哪些技能?要把前端分成两部分:一是专业领域,一是业余领域。其实我并不反对降低前端的门槛,因为前端实在是太好用了,它的重要性决定了它的受欢迎程度。举个简单的例子,如果回到20年前,谁会想到几乎每个人,甚至是家里的小孩,都能熟练使用电脑。在20年前PC刚出现的时候,这是不可想象的。那时候只有专业人士经过专门培训才能使用,现在门槛已经变得很低了。个人电脑和家用电器一样,已经成为每个家庭必备的工具。它影响和改变着我们的生活方式。前端也是如此,以后太重要了。以前我们可能只是把前端看成是在浏览器上展示UI的东西。未来,随着互联网(IOT)和万维物联网(WOT)的快速发展,包括全虚拟现实在内的各种智能终端可以帮助我们做很多事情。像智能手表、智能手环、智能家居等,需要越来越多的终端来与人交互。智能全自动洗衣机可能是大家使用的第一个智能设备,未来的发展方向就是将这些设备结合起来。举个简单的例子,我喜欢边吃早餐边看新闻节目。如果我的智能电视可以在我打开微波炉加热牛奶时自动为我切换到早间新闻,那会怎样?这其实是一种非常生活化、个性化的需求。如果物联网足够发达,没有受过太多专业训练的人也可以实现这种类似于简单编程的活动:通过一些图形,或者一些简单直观的方式来控制不同的品牌、不同的厂商。家电来完成这种自动化逻辑。这也是未来前端普及的方向。另一个是更专业的领域,就是如何在这些家电的底层和人机交互的界面上做出更好的展示,更酷的东西。比如最近3D打印的话题很火。事实上,3D打印技术和显示屏的工作原理本质上是一样的。在浏览器上显示一个网页,你可以理解为在浏览器界面上定时、快速、不间断地打印内容,但是速度非常快,一秒钟可能打印几十次。所以CSS中的媒体查询包括打印机。从2D打印到3D打印,最大的问题是我们需要一个3D表示模型,这对CSS和JS都是更高的要求。以虚拟现实为例,3D眼镜,还有我在上海科技馆看到的球幕电影,未来可能会作为个人视听产品走进我们的家庭。在这种情况下,如何在这种穹顶上展示元素,其实需要更专业的技术。所以前端的水很深,我们要分专业和不专业。最近奥运会举办,大家可能比较关注体育,所以我就用体育赛事来类比一下,来说明一下“门槛级别”的问题。对于入门门槛高的领域,你可以把它想象成跳水和体操,因为不是每个人只要身体状况好,就可以上单杠、双杠上几圈。体操需要专业训练才能达到。进入门槛低的领域就像跑步赛事。只要身体健康,四肢健全,任何人都可以跑步。但我们也知道,业余爱好者的跑步不同于专业运动员:毫不夸张的说,奥林匹克赛场上的专业运动员,在赛场上可以精准地控制每一块肌肉,而且追求非常细致,属于毫秒级的提速,这不是一般人可以做到的。所以,跑步项目的金牌内容其实和跳水项目的金牌内容是一样的。前端类似于跑步。您可以使用记事本和简单的标签编写网页。很简单,但是从专业的角度来看,一个专业的产品可能需要专业的前端工程师去追求毫秒级的性能提升和像素级的设计。手稿修复。这是一种敬业精神,只有真正从事这个行业,进入这个行业的专业领域才能感受到;只有经过多年的积累和实践,才能做到这样的专业。专访图灵:如何理解“计算机不仅是一门科学,更是一门艺术”?相对于其他领域,其实前端领域对这句话的感受应该更强烈一些,因为前端就是要做一些界面,做一些用户体验好的东西。工作时如何操作这门艺术来满足用户的口腹之欲?计算机科学是一门本质上是生产力的科学。提高生产力的一个很重要的方法就是合理的抽象。只有将功能抽象得足够高,才能使这个功能模块适用于更广泛的领域。编程的技巧并不多,不管你是面向对象,面向过程,还是函数式编程,无论你使用哪种设计模式,本质上都是在做抽象的工作。当你将现实生活中的模型转化为数学模型并体现在程序中时,可以提高生产效率,这也是程序最核心、最本质的价值所在。但是前端很难做到这一点,因为每个人的操作习惯不同,每个人想看到的东西不一样,每个产品传达给用户的东西也不一样。人类活动非常自由。你不能抽象。如果对个性化的要求过于抽象,它们将更像机器而不是人性化的。当你对人友好时,你实际上不能对机器友好。这是一个矛盾。在前端用户交互领域,一直存在这样的矛盾。无论是模块化开发,还是使用MVC、MVVM等框架,我们都只是在做有限的抽象:将一些复杂的交互活动一个一个地拆解成原子,包括HTMLRaised标签、属性、CSS样式。本质上,它对渲染层进行了一些原子拆分和抽象。但这种抽象是有限的。在服务器端,可能有一个通用的方法论和一个很好的算法来解决这类问题。但是在前端,几乎没有一套方法可以解决所有的交互问题。单靠程序的思维是解决不了前端问题的。它需要运用各种知识,将人机交互体验提升到一个新的高度。我一直坚信一个观念,程序员的工作就是创造,写代码不是为了完成一个固定的工作。如果只是完成固定的工作,这些工作是没有意义的,未来肯定会被人工智能取代。前端真正解决的是和人打交道的问题,所以区别特别大。专访图灵:移动互联网的到来对前端开发者产生了不小的影响。前端开发者应该如何面对挑战?我曾经给团队定下的目标是“从前端到后端”。前端人员不要只关注浏览器,以后要关注移动端,更多的终端。前端开发目前已经形成了一些比较成熟的方法论,可以应用到其他领域。比如我在做手机开发的时候,发现iPhone和Android其实都有自己的布局。比如Android有自己的布局,有通过xml的布局。没有前端背景的Android工程师,即使是一个简单的布局,也会用非常繁琐的方式来实现。比如在移动界面底部放一个bottombar(固定高度的bottombar)。考虑到不同型号手机的屏幕高度不同,没有从事过前端开发的Android工程师可能会使用一些更复杂的布局组合来实现;但是对于前端来说,其实只需要使用线性布局,把中间布局的高度设置成自适应,然后把最下面的挤出屏幕,然后负margin向上浮动,可以完美解决这个问题。过去,前端和后端以及其他编程领域之间的交流很少。很多前端工程师并没有从服务器端学到一些更高级的东西,web服务器端和手机端原生应用的开发者也没有从前端学习。事物。现在,这种情况正在慢慢改变,界限会越来越模糊。各种分辨率的屏幕、终端,甚至一些其他的设备,比如非显示设备,包括各种传感器和执行器,其实都可以用前端方法论来解决交互问题。专访图灵:作为最大的前端团队“梦幻舞团”的负责人,您主要支持哪些业务?主要支撑公司业务,还有众诚翻译、泡米图等实验性产品。至于公司的业务,我们其实支撑了很多产品线。专访图灵:这么多年的技术管理经验,能分享给想从技术转管理的年轻一代吗?其实很多公司都会给一些技能比较好的学生一些机会。但是据我了解,我觉得有些人可能更喜欢做技术,愿意深入技术,写代码。如果我带一个技术团队,优势其实是技术。从管理的角度来说,这么多年坎坷坎坷,经历了很多事情。我觉得做管理其实比做技术更难。你必须处理很多琐事。如果你是一个喜欢专注、专心做一件事的人,刚开始做管理的时候会觉得很痛苦,但是慢慢就会习惯了。如果你立志要做好前端这个行业,那么一个团队肯定能做得更多。专访图灵:那你觉得做技术经理是不是一定要和你一样擅长技术?其实没关系。关键问题是,管理需要对技术的大方向有很好的了解,对趋势有清晰的认识,有一定的知识广度。擅长技术的管理者要避免狭隘,要开放,不要让自己的技术成为整个团队发展的天花板;避免保守主义,相信其他新技术。我相信一个技术经理一定有他独特的一面,但即使技术不够好或者不够自信,你也可以承认这一点,敞开心扉,鼓励团队中的技术人才发挥他们的价值,甚至招或招培养一个技术人才来一起带领团队。此外,还有工程师在微博、知乎上抱怨经理“不做生意,搞政治斗争”。在我看来,大部分都是误会。因为很多技术经理都是技术出身,相对来说大家比较简单。造成这些不适的可能真的是经理的管理水平。你可以和他好好聊一聊,他可能连自己都没有意识到。对于团队来说,团队成员之间的沟通,领导对团队成员的绝对信任,团队成员对领导的支持和帮助,其实是非常重要的。不是所有的人都天生能面面俱到。无论是技术还是管理,都需要帮助。图灵访谈:当团队面临多项目集体建设时,如何处理项目间共享组件的问题?齐舞团有自己的公共平台,例如公共组件库和公共编译部署工具,用于所有项目开发过程。这些是根据360的流程特点为业务定制的,可以适应大部分业务的基础建设需求。反过来,从业务中收集到的需求,也可以不断完善公众平台的建设。公共组件由各业务根据实践汇总提交。当然,我们不必说所有的群体都必须使用相同的标准和相同的方式来做生意,因为互联网产品有很大的不同,包括PC、移动和嵌入式(嵌入到桌面软件中),混合编程.每个产品的特点都不一样,选择最合适的工艺即可。不能为了技术规格而制定规格。相对来说,我比较看重产品技术方案的成熟度,包括文档、StyleGuideline、codereview、在线质量、潜在风险等等。另外,我认为组建团队的一个重要原则是多元化。通过为不同的产品选择不同的技术,团队成员也会有更高的自由度。在开发一个特别大的项目,或者带领一个特别大的团队,尤其是团队成员水平参差不齐的时候,你不得不采用统一的架构来规范。或许这种架构并不是最合适和性价比最高的方案,但是它有一个非常大的优势,就是保证技术人员不会写一些破坏性的东西来破坏整个项目。专访图灵:如何支持技术人员的职业发展?技术人员的发展有几个阶段,即学习、沉淀、分享和影响。具体来说,你要先学习,然后在工作中积累,积累了一定的知识后再分享,然后建立自己的影响力。影响力对个人职业发展有很大帮助,齐武剧团鼓励中高级工程师具有一定的个人影响力。确实,有些同学可能会偷懒的时候,陌生的舞团人太多了,没办法一个一个照顾。但是还有一种情况。有的同学个人是愿意的,但是最近项目太忙,没有时间去规划和发展自己。这个时候我们就要介入,否则他就完全被业务牵扯进来,对他个人的发展一点好处都没有。我们可能会通过分配资源、增加人员、与业务方沟通或其他管理方式来解决问题。我想这也是团队管理的价值所在。更多精彩,微信加入图灵专访!
