LIVE:
小柚子:一直定位自己是前端工程师,但现在技术知识这么多(再看ES6),是否需要一个专门的方向或者说定位呢?这次的Live希望能帮助到刚入前端两年的我。
确实需要定位,但是我也是建议大家选之前需要慎重考虑自己的兴趣爱好,比如物联网智能硬件,比如视频,比如社交,比如电商,比如企业级应用开发,不同的领域因为业务的区别,需要的技术和积累都不一样,选一个有发展的前景肯定对自己来说是有很大的优势的,比如之前几年前端疯了一样去学H5开发,去学Hybrid开发,就是因为大家看到了移动互联网的发展趋势,当年我也是其中一份子。所以在掌握当前工作所需技能之后,业余时间去学习一些喜欢领域的知识或者做一些技术积累,比如组件库,比如一些简单的第三方包,都是可以给自己下一次切换领域增加砝码的。
RickyGAO:大牛们,能不能分享一下自己平时获得新知识的途径,以及如何掌握新知识,讲心智运用到项目中,谢谢。
刚入门的时候我是看书和看论坛结合的,后来我发现论坛里大家说的东西都换汤不换药,后来就只看一些经典的国外的技术书籍了,而现在我获取新知识,前端方面的主要是通过阅读源码和源码相关依赖来获得的。如何运用的话,我觉得分2个维度,一个是抽象能力上的技能,这是可以随时随地发挥的,比如业务代码的抽象,组件的归纳等,而一些新api,新特性,如果业余用不到,可以自己尝试做些小尝试的demo,踩踩坑,也算是一个学习,以后项目用到了,就有了提前的技术储备。
微词:2年前端,有java基础,全栈怎么规划,想一直coding不转管理现实吗?我是说30岁之后。
其实我不推荐全栈,全栈只适合小公司,而小公司一直coding是一个完全不可能的事,主要是体力,30岁之后,创业公司的工作量和大公司还是差的挺多的。所以想一直coding的意思就意味你要进入一个比较精神的领域,不是依靠体力解决问题的部门,比如一些公司的基础架构组,基础研发部这种部门,我理解上是可以不转管理coding到30岁的。而这些部门的要求都是多长一精。
lingzhiqiannian:能分享下技术转管理路线时遇到的一些问题和解决方案吗?
可以先看看我专栏写的2篇系列文章。 https://zhuanlan.zhihu.com/p/21779628 https://zhuanlan.zhihu.com/p/21807979 然后我简单说几句,主要是刚转管理的人可能遇到的一个比较典型的问题就是不会分配任务,说白了就是喜欢亲力亲为,这是技术转管理人员最常见的一个误区,你能力强,然后一些核心技术实现都自己亲自来写,这其实是不好的,因为一个是大家容易形成依赖你,另外一个是技术得不到传承,团队其他人得不到锻炼。所以其实一般的开发任务可以适当分配,核心的技术难点,给一些中高级工程师来攻关,适当提醒和指导,因为团队管理的最终目标是团队里的每一个人都像leader一样,而不是一个team只有leader最强,搞清楚团队目标,提高团队技术能力才是正道。
啦啦啦:开发目前主流前端的框架,需要局别哪些知识和经验?
目前主流的前端框架分为几个大类,我在前端开源项目那场live中有提到,我区分了4个类:系统,框架,插件,工具。框架类的话,就是大家比较熟悉的,一个解决特定场景下的,面对开发者的,并且有生态链的框架库。比如react,vue,jquery以及他衍生的项目,一些模块加载器也可以归纳与这一类项目,但是像包管理器的话我更倾向于工具类项目。如果你要自己独立开发一个vue,我劝你还是不要这么干,首先要知道一个框架的解决问题是什么,然后再考虑去做一个框架,这样才有意义,如果完全是一个100%的vue功能的框架,开发出来也没意义。当你知道自己的框架要解决什么的时候,需要几个方面的知识积累,一个是原生js维护一个项目结构的概念体系,比如如何设计多类继承,你的框架中的类继承方式选择什么,如何维护扩展性等等设计模式相关的知识,二一个是开发环境的问题,我推荐纯js框架使用rollup来进行模块开发,然后就是git和github的一些玩法,npm的玩法,如果还想了解更多建议参加我那场live,说的比较细致。
最爱constance:工作两年,主要使用bootstrap框架,h5cssjsjq感觉自己在行业没有竞争力,想提高自己,希望指明道路。
首先从重构做起吧,把项目从老的开发方式切换到新的技术栈和开发方式上,可以参考我这篇文章:https://www.zhihu.com/question/30683321
bluesky:问一下现在node在实际项目中的应用。
实际工作中,nodejs主要用2个地方,一个是前端团队的工程化和开发环境的搭建上,一个就是作为某些平台的中间层,来包装web端,用rpc方式来调用服务接口实现业务逻辑,也就是所谓的大前端。还有一些用法会做一些独立的高并发服务,socket服务,还有就是一些前端团队的内部系统的开发。
我的十年:前端工作一年多,想进大厂,请问需要哪些素质。
https://github.com/xiaojue/careerLive/blob/master/data/qq%E7%BE%A4%E5%92%8Clive%E7%9B%B4%E6%92%AD%E9%97%B4%E9%97%AE%E9%A2%98%E6%B1%87%E6%80%BB.md#uhey爝神老师请问工作3年的非科班前端想要备战bat面试应如何着手准备工作目前处于中级前端 1年和3年如果实力在我看来主要是项目经验积累不同,但是准备工作都可以参考这个回答。
jessy:正在学习前端,想知道做的深入是不是需要了解后端。
肯定是需要了解的,至于了解多深,我觉得至少要明白后端框架mvc的一个原理,请求从前端到后端经过了多少流程,命令行工具开发,网站后端优化的一个思路,数据库不同的选择,还有简单的一些增删改查要会写。我觉得拿nodejs都可以玩明白,并不是很难,也许半年左右时间就可以看会了,如果工作中有机会接触也许就几个月,当然需要有人带。掌握这些概念后,很多理论上的东西都是可以反哺前端的,比如优化的技巧,比如分层的技巧,还有就是可以帮team做一些自动化工具和系统。
lamar-aquameo:工作一年,想知道怎么提升。
https://github.com/xiaojue/careerLive/blob/master/data/Transcript.md#part-04 参考这4个明确吧,然后指定符合自己的计划,希望能帮到你。
evans:前端是否应该学习一门后端语言,如果学习应该选择哪一门后端语言比较友好。
当然应该学习,我觉得php和nodejs都挺好的,不建议学习java。。php比nodejs高级一些,nodejs更底层些,如果你不想鼓捣lamp这些开发环境之类的,nodejs也不是不可以拿来入门后端。
console:对已有项目重构还是学习工作中不用的框架哪个收获多一点。工作中用什么方法能更好的提升自己。
我觉得还是重构收获多一些,但是,有时候可能你不知道怎么重构才是最好的,所以需要多阅读不同风格的代码和项目来提高自己的代码审美。这也是学习的过程,可以看书也可以直接看好一点的代码,不同风格作者的代码。工作中我的提升方式大体都是这样,看优秀的项目,学习借鉴转换收纳成为自己的东西。
Qber:macbook是前端最方便的生产力工具吗?
我从工作到现在,09,10,11年都是windows,12,13是ubuntu,13,14,15,16,17是macbook,我觉得,是……,而且我非常后悔买晚了。
小柚子:一直以为只要一直学习就能获得好的工作,然后积极性就慢慢没了,两年也每一份好工作,迷惑。
我在我第一场 前端开发工程师如何自我提升中说了这个问题,其实学习是需要得到正反馈的,无论是乐趣,还是待遇,还是公司光环,还是团队认可,只有不断让自己找到正反馈才能不断的坚持,保持积极性,比如我写这么老多回答只为了心里踏实,和能帮助大家一点是一点,我是能收获到成就感的,工作方面也是,当你不断的充满正反馈机制的学习下,我相信这样运气也不会差,我个人的经验是一个人每年都会有几次运气好的时候,让你来进行机会选择,积累和抓住这些机会,可能就能帮你改变人生。。(有点鸡汤了)
特立独行的猪:从设计转行,前端经验2年半,计算机基础知识并不扎实,技能树只局限于前端,应该如何规划。
和我很像,我觉得更多的是如何转变自己的思维上下手,还有就是设计本身并不是短板,他可以帮助你在职场获得其他方面的好处,比如做的晋升ppt更好看,比如对用户体验更关注,对细节更关注。至于职业规划,其实我的方法论https://github.com/xiaojue/careerLive/blob/master/data/Transcript.md#part-04 是一个通用的规划技巧,可以适当针对你目前的情况来做调整。
马博:随着前端技术飞速发展,更新越来越快,前端的核心是什么?到底怎样才能轻松的应对发展迅速的前端技术?之后的规划应该这样?全栈还是产品经理?
我个人的经验,前端的核心就是完美的用户体验,这也是为什么前端之前都是和UED组在一起的,说白了前端还是面向用户端的开发,只有性能流畅了,交互体验好了,才最能展示前端的技术价值。发展迅速的前端技术,他们解决的问题一直没变,就是解决越来越负载的胖客户端开发,所以面对技术选择的时候,尤其是复杂问题的时候,要把问题和选择最小化,就像代码不超过100行bug最少一个道理,面对技术选型也是,这样的话也不会困惑到底学,而是自己需要什么,用什么。之后的规划可以一直做技术,也可以转项目管理,技术团队的管理,或者产品经理都是不错的选择,全栈就算了,除非打算创业,我个人觉得只有创业适合全栈。
匿名用户:对于js高级程序设计入门的初学者来说,书中的有哪些知识点是需要初学者先学习然后结合掌握的实际情况作出项目的。
我觉得22章之前都是可以完全0基础学习的,当然你得先了解最基本的js,css,html是什么,干什么的。从23章之后可能就开始深入拔高了。要是我说的话,初学者能把前15章看明白就很厉害了。后边的平时用的机会也不大,可以选学或者结合实际项目使用。
egoist:大三UI学生找实习公司会问会不会vue,react,但是我只会js,jq,html,css,继续学习js还是框架?
vue和react还有jq的差距,可以看看我这边文章:https://zhuanlan.zhihu.com/p/23508136 了解一下来龙去脉后,其实vue学起来,蛮简单的,把之前的一些项目重构成vue的就好了。练习时间不会超过2周,我相信干活没什么问题。所以找工作的时候这也不是一个特别难的问题(vue的生命周期图解也记得搜一下看看,理解他整个实例运行机制)。
芦苇:实习前的项目经验,实习时的项目经验,实习后的项目经验,很像听听对这方面的说辞。
实习前的项目经验积累主要来源于大作业和个人业余项目,实习时的项目经验主要是一些打杂或者简单业务逻辑的编写,主要是细心和对第一次接触专业QA的时候可能会有些招架不住,但是了解了一般公司的QA套路后,就慢慢适应了,实习后的项目经验可能离开公司后就没有实战商业项目的机会了,那么其实又回归了大作业,毕设和业余项目了。所以有点自己的小项目也是挺不错的,我记得我在阿里的时候,一个比我小一届的同学,现在在阿里数据平台,他上学和实习的时候一直维护一个项目,就是做了个小的业余项目,实现了微博,人人网,豆瓣,facekbook,twitter,饭否等这些平台的授权登陆或者模拟登陆,然后通过他的平台同步消息。我觉得其实很多小项目都来源与平时生活的观察,自己找合适自己的小项目的一些思路。
人笨嫌刀钝:我感觉现在js作用域,闭包,浏览器兼容不重要了,es6,mvvm框架,构建工具更重要了,实际工作和面试中是这样吗?
看是什么级别的前端,有些公司是只要能干活就行,那么闭包,作用域,兼容性其实框架大部分都帮你做好了,但是高级前端,一定是需要的,工作中需要,面试时也会适当考察。不过你说的这些,我面实习生的时候也会考察。。。主要是对原型链和作用域链的理解,这个属于常识我感觉,其实更高级一些的是类的多种继承方式,优缺点,在项目中你是怎么组织代码的,可能更重要。
人笨嫌刀钝:现在随便看一个前端开源项目,都有测试驱动,持续集成,工作中的实际项目都是怎样做的?
业务驱动的大部分都是只有功能测试,只有框架类型的才会有完善的测试驱动,和UI打交道的很少有人做到测试驱动,大公司也没有。 持续集成的话,有些公司有有些公司没有,主要看公司是否崇尚敏捷开发那一套,但是我个人认为,软件项目适合,web项目并不适合。实际项目中如果做持续集成,说简单点就是不区分大的迭代版本,每个开发者对自己的代码都有测试用例保证,提交的就是可运行的代码,测试部门也必须随时跟着持续测试回归,这么一个流程,而很多公司因为部门大,业务多,并且不好写测试用例保证代码质量,只能依靠人来测试,那么持续集成就很难推动。我觉得这更适合高精尖的小team来玩。
珠玑之间多沧桑:全栈怎么看,后端转全栈?
全栈的概念我个人认为目前为止还没有一个明确的定义,所以要我说,还是先深度优先为好,全栈很容易发展成什么都会点什么都不是特别强的一个尴尬境地,对于管理者来说这样很不错,对于想一直钻研技术,解决问题的人来说,这其实是一个非常错误的选择,当然除非不做技术了,去创业,但是那个比做全栈还难。 后端转全栈我觉得主要还是在于客户端开发那一块,而且你说全栈到底包括什么,我个人理解全栈是连UI层面都是可以搞定的人,我觉得后端转前端可以,转全栈不是一个明智的选择。就我目前来看。
uhey:爝神老师,请问工作3年的非科班前端想要备战BAT面试应如何着手准备工作?目前处于中级前端。
工作三年,单纯说工作年限的话已经符合去面试BAT的能力了,其实很多人1-2年就可以去了。准备面试的话,看你个人的情况,如果是一个中级开发或者资深开发的岗位,需要准备的点确实比较多,不同公司的面试风格也不一样,我说说我个人的经验,有些部门可能偏向基础,笔试题目肯定是都要做了,一般就是HTML,CSS,JS三个部门,有些公司会先来几道逻辑或者算法题,所以备战的全面一些,可以在面试前几周,集中看下不同公司的面经,补基础的话,建议看看《javascript权威指南》,css方面建议多看看兼容性方面的经典bug,和一些新出的属性,掌握下概念,还有bfc这些其实每天都用,但是说起来比较高大上的概念,重绘重排的机制。然后html多看看语义化相关的,和一些比较生僻的meta。最后就是算法和逻辑方面,主要是了解下算法复杂度的概念,临时抱佛脚的话就多看看递归和一些常见的排序题目,查找题目,还有不常用的一些数据结构的书,建议买几本js方面算法和数据结构的材料看看,最后就是把之前三年总结归纳出来的项目经验,技术难点,方案,好好自己熟悉下,这是2面一般会问的。最后就是DOM的API,建议原生的过一次,因为笔试的时候如果写不出来就尴尬了,动画,正则也得临时临时温习下。基本准备到这个层面,我觉得就够了,其他就是看你的临场发挥,表达沟通能力了,有时候也会看运气,所以多面几家总会有收获。
然后就是说前端非初级的晋级路线,我建议大家一个办法,就是多去思考团队中效率低的那部分工作,如何使用程序来替代和改善,这是一个方向,还一个方向就是在项目代码中找到系统瓶颈或者优化点,进行局部重构,养成自己的代码风格和尝试把公司项目中一些不涉及业务的部分进行抽象,沉淀下来作为自己的业余开发项目,工作和提升互相结合。比如我之前做过一个类似兔展一样的h5建站的项目,然后我就把一些和业务无关的部分进行了归纳做出了https://github.com/xiaojue/EasySlide 这个过程技术和思考方式都会得到锻炼。
吕思远:最近老师们都在看什么书
别人看什么书我不清楚,我看的书分几类,一类是大学的计算机教材,我买了一套全的,正在复习,补补基础。一类就是算法和数据结构的书了,更多的是在补算法的经验这一块,毕竟经典算法的变种太多,只有多刷题才可以。所以可以理解成,我主要在刷基础题。这也是我非科班出身一直的痛,我倒不是说我要把这些补到多强,而是说至少我不能一点不了解,更多的优势可能高级前端都是在于项目经验和解决问题的能力。现在有时间就做做题,也挺好的,要不脑子会越来越渣。