前言:
前言:
来,新一期的专访又来了,早读君在很早很早刚学前端的时候就有看过@三水清的博客,今天专访的内容非常接地气,来看起来~~
正文从这开始~
1)先自我介绍,网名,你大学的专业,在公司所服务的团队,现在负责的项目
我是王永青,网名三水清,09年开始参加工作,算是一个前端老兵了,先后在新浪微博、腾讯工作过,现在在百度负责手机百度(以下简称手百)前端和运营团队,团队主要负责手百的垂类和结果页的前端工作,另外负责手百快速搭建运营活动的Tiny运营组件化平台、运营API平台,还有手百广告运营位管理CMS和小流量实验平台
2)开源轮子介绍,为什么想造轮子?从造轮子过程中学到了什么?推荐一些工作上常用的轮子
其实我写过不少开源的项目,其中比较出名的就是nodePPT了,另外还有node版本的spider和实时打点服务器等,没有开源的东西也不少,比如chrome的购物插件。
很多项目源自自己的需求,比如:我找电影麻烦,就做了电影网站;逛购物网站麻烦,就做了个chrome购物插件,找到想买的东西就提示我;想做个分享,觉得用PowerPoint做页面效果演示不方便,就写了nodePPT;甚至有时候觉得别人写的东西用起来不方便,就自己fork下,然后改动一下....
在造轮子的同时,你会发现有很多自己不会的知识点需要学习,于是查资料解决问题。所以造轮子是学习的过程,并且是非常好的学习过程。
3)有什么机遇让你走上前端这条路的?这过程中你是如何学习的?
我接触计算机比较早,三年级拿过市里的LOGO画图比赛一等奖,那时候真的很傻很天真,自己连圆周长是360°、五角星的角是72°都不知道,竟然凭背公式就能画出一个个的图形,从这个时候开始就喜欢上了计算机。
大学没有考上计算机系很沮丧,不过大二的时候买了台电脑,当时很流行的是校内网(人人网前身),涂鸦板可以填写css和注入js,发现很多好玩的效果,于是一开始是模仿,后来遇见不明白的内容就上网查,查到的都是别人写好的现成代码,看不懂就去图书馆借基本的语法书看。当时玩校内网学到了很多知识,后来一起网上玩的朋友也出了不少牛人。
在这个前端学习的过程。首先要有兴趣,其次要有目标。我学习一个新东西都是直接找项目来做,遇见不会的问题再找解决方案。当时我想把涂鸦板的代码分享给玩校内网的人一起用,就做了个涂鸦板代码网站。这个过程中,除了前端知识外,还学习了利用dedeCMS建站,也会了一些简单的php脚本。参加工作之后一直到现在,都是没事喜欢做网站玩,所以这些年,学会了简单的抓取、数据处理、检索服务,从前端到php知识都得到了很快的提升。
还有一点是要勇于放弃存量,寻找增量。拿抓取来说,一开始我用php来抓取,正则匹配内容。后来学习用node来写抓取,直接用DOM选择器来抓数据。最终我将抓取的选择器写到conf.json文件,扔给spider一个url,程序会根据配好json的选择器,自动将数据处理完返回一个只有想要数据的对象。
所以我认为最好的学习方法是:动手去做项目,而不是看代码,看代码不会发现问题,只有用起来,才会发现问题,然后想办法去解决问题。
4)现在前端的更新速度很快,在广度跟深度上,你是如何看待的?以及如何突破自己的瓶颈?
互联网这个行业,不像医生、会计这些行业,随着工作经验加深,自己越来越得心应手。互联网行业要不断学习,只有不断充电才能跟上行业发展。
前端现在新技术越来越多,让人眼花缭乱,很多新技术还没来得及使用,可能就成了过去。
对于刚刚踏入前端行业的新人,一般的感受是觉得新技术就是前端技术,所以新人对新技术都有涉猎和研究,甚至可能在找工作的时候对于不使用react/angular的团队都打心里鄙视。对于前端新人,面对新技术,我给的建议是:打好基础,切忌眼高手低,当你真的参加工作,你会发现可能切页面会占用你80%的时间。
对于老司机,面对新技术会很彷徨,担心现在不学习,以后会不会被淘汰,但是要学习又不知道从哪里下手,最可怕的是学习完之后,还没在项目中实践呢,发现这个技术又成为过去时了。。。所以对于老司机,我建议:选择性学习,利用自己的经验,进行类比学习,搞明白其中的原理,知道新技术的优劣,如果有机会可以在自己的项目中尝试,也可以利用新技术的思想来解决项目中遇见的问题;但在没有完全搞明白的之前,不建议放到重要项目上使用,更不建议新技术没成熟、生态没有建设完善之前,就开始用新技术颠覆以前的架构。
5)瓶颈问题
首先要知道自己是不是遇见了瓶颈,当你发现做的工作没有挑战性,经常做的是重复性的工作;还有的朋友会私下找我:说自己很迷茫,工作久了之后,觉得自己还有很多不足,但是又不知道从哪里下手学习,不知道如何改变现状,甚至连个有效的学习方法都没有。如果你也有这些问题,那你就要考虑下自己是不是遇见了瓶颈的问题了。
怎样去突破瓶颈,我结合自身和团队发展,说以下几点意见:
1. 很多前端可能不是科班出身(大学也没有对应课程),所以算法和抽象能力可能不如科班出身的强;前端应该更需要注重抽象能力,将遇见的重复性工作进行抽象。手百现在活动特别多,有日常活动、电视合作、日常生活服务运营、电影上映等各种运营活动,以前是one by one的做,后来我们将常用的功能组件化、常用的接口API化,满足PM需求的同时还形成了公司内部的两大平台。所以抽象是很重要的,如果没有这些事情做,可以考虑从小事情着手,比如:以前经常copy的代码想办法模块化化,这时候可能会学习到AMD、CMD的库,还会找到一些grunt、webpack、fis的打包工具和模块化管理器;以前经常copy的文件想办法写个工具来解决,这时候可能就需要nodejs知识来写工具。
2. 如果做的工作和项目没有挑战,可以尝试找一些有挑战的项目来做,或者完全陌生的技术项目来做,不断挑战自己,强迫自己学习和运用新知识来解决问题。说到这里,举个例子,在团队分享的时候,我会要求分享的同学找自己不会的知识点给大家分享,不要讲基本的用法、语法,要讲网上不好找不到的知识点,或者直接放到项目中遇见的问题能否解决,保证自己先完全搞明白,然后分享时不被人问倒。
3. 要学会运用工程化的思想解决问题,这是个很重要的事情,前端早已经过去那种“刀耕火种”的时代,现在可谓是进入工业革命时代了,需要用工程化来武装自己。刚加入手百的时候,前端项目是很乱的,甚至连个打包工具都没有,更没有一套工程化的解决方案。我们团队在满足版本迭代的同时,将工作标准化、模块化、工程化,形成了自己的js框架和组件库,并且有一套针对移动端的解决方案。在这个过程中不仅仅自己得到提高,而且团队整体技术水平和视野也得到很大提升。
4. 多参加交流,跟优秀的人和团队一起做事,发现自己的不足,通过他人提高自己。
扫描二维码关注前端早读课