招聘前端的时候,对于非科班候选人,确实会更倾向于自学的而不是培训的。原因是前端真正需要强化的能力,大部分培训班基本不教。
个人认为,对前端来说,重要的能力有以下几条:
第一,编程基础和bugfix能力。
这个跟其他领域是一样的,你要做程序员,至少要能熟练编写代码并排除故障吧?
编程能力,一方面来自于对基础知识的学习。给你一个可选字符串集合,和一个输入错了的字符串,你如何筛选出用户可能想输入的字符串?这种问题你想解决,你就得学习最小编辑距离的相关知识,这个逃不了的。
另一方面,编程经验的积累也很重要,这个就需要你平时多积累。让你写个登录框,如何完成各种规则的校验(有同步的,有异步的),如何让你的登录框可以从外部配置各种校验规则?这种问题你编程经验多了,脑子里自然就会有个概念。
bugfix能力主要来自于三方面:
第一,你得有编程经验、debug经验,对于常见问题有经验的程序员猜也猜个八九不离十。
第二,你得理解程序的运作机制,背课文没用,你在console里打开vue源代码,从哪里打断点看什么变量的值,有助于你判断问题原因?你得理解vue的机制才能做到。
第三,你得有逻辑思维,初中物理的控制变量法学会没有?有些人面对稳定复现的bug一筹莫展,连基本的“注释掉一半代码”都想不到,这就是逻辑思维有缺陷。
以上这些,培训班普遍都不太重视,培训期间代码量偏少,练习项目过分单一,导致毕业生缺乏编程基础和bugfix能力。
第二,工具选择和工具使用能力。
有npm这个大宝藏,其实大部分底层功能都不用我们自己开发,现成工具有的是。但前提是你得知道自己的目标是什么,找到那个合适的工具,并且看懂工具怎么用,最后引入项目并把项目跑通。
有些人,首先就卡在不知道自己的目标是什么。面对一个功能需求,不知道如何做技术分解,不知道如何定义问题。npm和github检索先不说,百度搜索你得会用吧,问题的关键词你得能想出几个吧?
还有些人,英语糟糕透顶,连npm包的readme都看不懂,你跟他说就用这个包,他也不知道该怎么用。有问题你让他去看看issue,他连issue这个单词是啥意思都不知道。
另外还有些人,就像当年用windows你让他改一下注册表他永远不会改的那种人一样,一个包引入项目,别人摆弄摆弄就能通,他怎么摆弄都不通,构建失败都解决不了。具体原因也不知道是啥,可能就是不太会用电脑吧。
以上这些,培训班一般也不会教,至少不是重点。像英语这种需要积累的能力,培训班更不会涉及。
第三,把一个程序“从头到尾写完”的能力。
这里我就得说说自学的好处了。一般来说,为了学编程,大家总要写一些项目作为练习。自学的好处就在于,一个靠谱的自学者,他写的项目往往是自己琢磨出来的。这有助于锻炼一个核心能力——就是在你写程序之前,你先得想明白你到底要写个什么程序,这就是所谓的“从头”。
很多时候领导给我们提需求,不是简单地说给你个需求清单,你把里面的需求点都给你实现掉,而是说,他有个模模糊糊的想法,你去调研一下,给个方案出来,写个原型做个POC;或者他看到一个问题,比如网站加载太慢,让你去解决一下。遇到这种场景,你就得从头开始琢磨,把问题定义清楚,目标树立好,并分解为几个维度,各个维度给出解决方案,然后一个一个实现掉。
到这儿还没完,领导的想法实现了吗?问题解决了吗?如何证明?如何量化?你的程序能发布了吗?单测覆盖率合格吗?文档写了吗?别人能用吗?……这些就是所谓的“到尾”。
往大里说,这就是“产品思维”——先明白要做啥,为什么做,再去考虑如何做,最后把事情做完整,并给出评价方案和结果。
以上这些,培训班当然就更不会教了,导致的结果就是毕业生面试的时候可能表现还行,但是到了岗位上“拨一拨转一转”,带这种新人特别累。反倒是自学的人,至少有一部分人,由于他们自己琢磨项目,懂得参考开源产品,最后自己能用上自己的项目,这方面能力会有很大的提升。
其他的诸如沟通能力、审美能力、写作能力等外围能力就不谈了,反正培训班也不会教。
所以总体来说,同样的学历背景、经验水平下,招聘方更青睐自学者,并不意外。
小编是个多年开发经验的程序员,懂前端、Java、Python。年初整理了一份最新的WEB前端学习教程,无论你是计算机专业想往前端开发方向发展,还是零基础想要转行做程序员,都可以通过教程学习。现在这份教程作为粉丝福利,分享给大家,只要关注我私信“前端”即可获取。