不要只知道蒙着头写代码,想要学习成为一名优秀的前端开发者,你还有许多代码之外值得关注的问题。

学好英语

一定要学好英语,虽然英文不好也可以学会前端。但你一定会遇到比英语好的人更多的困难。因为你只能看中文的教程和书籍,学习框架和工具只能依赖中文文档,交流问题只敢去中文社区。而前端 99% 的工具框架都是歪果仁发明的,国人发明的火起来的框架工具 Vue/FIS 等,两只手就能数的过来,并且大部分也是在国际社区里火起来的。还是英文的资源更权威丰富,甚至 Vue 的开发者尤大本人都不愿意浪费他陪老婆孩子的时间来教你学英语:

中文的学习资源虽然也足够丰富,可是质量良莠不齐。初学者根本无法分辨一个教程的好坏,甚至其中有没有错误,假如选错了学习资料,很可能就会被误导。而假如你英文好,就可以直接去看官方的教程文档,这是绝对权威可靠的。

工作中遇到的框架选型没有中文文档怎么办?遇到了某个库本身的 Bug 没有中文资料怎么办?遇到这类情况周围又没人帮你的话你会寸步难行。这时你没有挫败感么?不会觉得自己很 Low 很弱么?

英文不好你写代码的时候甚至需要用拼音给变量命名,看不懂术语和缩写,别人给你解释 Java 和 JavaScript 之间的区别还需要靠周杰和周杰伦。

所以请一定学好英文,否则即使你学会了前端开发,也无法在前端开发工程师的路上走很远,很多问题你无法解决,跟不上最新的流行趋势,遇到困难都需要依靠别人,你看到的教程资源都是那些懂英文的人吃剩下的,那么你自己的技术水平也永远要屈居人下。

话说回来,前端相关的英文也并不难,高频的词汇也不会超过托福雅思。而且对于一般人来讲,你只要能看懂英文文档大意就可以了,另外和歪果仁交流其实也不是什么难事:

学会搜索

你要知道这个世界上有着和你一样千千万万的前端学习者,并且每一个人都是从入门到熟悉到精通一步步走过去的。别的不敢保证,编程学习的资源在网上异常丰富,你遇到的问题 101%(多 1% 不怕你不信)绝对也有人遇到过。所以只要你善用搜索,一定可以靠自己找到问题的答案。

例如知乎上存在着大量重复的问题,而且这些问题每天都不停地在出现。很多人都选择无视搜索这一强大的功能,遇到问题连思考都不思考张嘴就问,殊不知他遇到的问题别人可能几年之前就遇到过,而且已经得到了很好的解答。

你看或不看,答案就在那里。

绝大多数人一提到搜索引擎就只知道百度,你在百度上搜个“前端开发”很有可能就此被带到培训机构的沟里去,学习效果无法保证,被坑钱是肯定的。编程类其实有相当多的优质资源都可以免费获取到,打个比方我每天免费分享给大家的学习教程,翻译的国外文章,完全也可以拿着它们去当每月10k学费的培训班教材。

至于具体怎么用,正好锻炼一下,用你的百度去搜吧。

当然也有可能你虽然烦百度的广告,可是又离不开它,我再附送一个百度去广告大礼包,下面这个回答里有百度去广告版本的 Chrome,也有可以直接安装的插件链接:

百度搜索有那么多缺点,大家为什么还要用呢? - 余博伦的回答 - 知乎

如何输入搜索关键词?学习知乎体其实有非常大的帮助,例如

  • 如何学习前端开发?
  • 学习前端开发是一种什么样的体验?
  • 前端开发工程师月薪十万难么?(此为恶搞)

搜索诸如此类的问题,你可以找到大量优质的答案。此时此刻我又忍不住要分享一点点干货,除了搜索引擎之外,你还可以在别的优质站点搜索:

学会提问

学习一门技术的过程中,我们免不了有拜师学艺的想法。知乎优秀回答者啊,前端大神啊,或者是一个学校的师兄师姐,搞开发的同学等等。

作为一名小萌新你就像个好奇宝宝,你满脑子都是各种各样的问题,遇到见过的没见过的都想随口问一句。殊不知可爱的好奇宝宝和烦人的熊孩子之间没有什么不可逾越的鸿沟。

如何提问?如何能够让人愿意解答你的问题?如何不烦人?

这就需要你运用到各种提问的技巧。首先请教问题,心一定要诚,知乎上有一种关闭问题的原因叫做“代为完成的个人任务”。你不能把自己遇到的所有问题都当成是别人的问题提出来,人首先要靠自己,在自己靠不住的情况下再寻求别人的帮助。

在你真正需要提出一个可以提的问题时,也需要真诚。你不能不假思索地随便写一个疑问句。

举个实际的例子,你在项目中遇到了一个实现轮播图组件的需求,你不知道JS该怎么写。你不能像一个乞丐一样提问说:

轮播图组件该如何实现?(求求各位大大行行好帮我写个轮播图的吧)

然后问题描述是空的,就好像拿着一个空碗一样等人施舍。

你应该抱着探讨的态度虚心求教,并且善用一些语言的技巧,最后附上自己对这个问题的初步思考,例如:

轮播图组件的实现有哪些方式?

问题描述:下面是我初步实现的一些代码,可能还有一些bug,我也试着在网上找过相关的组件了,可是搞不清哪种才是最优的方案,还望各位大大能够指点一二。

这样一看你的档次就高了起来,你不是求别人告诉你,而是和别人平等地探讨问题。这样回答你的人也可以拥有一个更平和的心态,让他觉得他的回答不是施舍赐予,而是平等的学术讨论。你也就能获得更具价值的答案。

其实关于如何提问,有一篇2001年的文章已经回答得非常好了。在这里分享给大家,与诸君共勉:

学习方式

很多新手学编程都喜欢看视频,每次看完都似乎仿佛好像可能理解里面讲的是什么了。回头你让他写代码,他一行都写不下去。

学习习惯比较好的可能会选择看书或者读文档。在这里我有必要声明一下,即使纸质文本和视频讲解的是完全相同的内容,学习文字也要比视频的效果好很多。

看书是主动学习,看视频是被动学习。主动翻页和视频进度条自己走(只有人拖条看A片,没有人拖条看教程)是完全不同的两种效果。你可以自主把握获取知识的速度和节奏。

当然我也不是说完全摒弃看视频的学习方式,从视频中你也可以获取到文档书本中获取不到的信息。例如别人是如何写代码以及遇到问题时是如何思考的,另外可能就是治你不愿意主动学习的懒病。

现在还有相当一部分人喜欢通过订阅知识分享平台来学习,例如知乎/掘金/开发者头条/简书等等。不可否认的是你确实可以从中获取相当丰富的知识,可惜大多数人从来都是看题目点收藏,根本不读内容,更别说在读完之后点个赞了。而且事实上你在这些知识分享平台获得的也是碎片化的信息,本质上和你刷微博朋友圈没有任何区别,只是逼格高一点点罢了。

就像你正在读我写的这篇文章一样,你确实能学到点东西,可只适用于茶余饭后的消遣。它不足以支撑你系统掌握一门技术。

所以想要真正扎实掌握前端知识体系,必须去读书,看文档,辅以看视频、刷知乎等等。千万不能本末倒置。

动手实践

其实动手实践也应该包含在学习方法里,它的意义是如此重要,所以我把动手实践专门划分在一个段落里。上述的主要是理论知识的学习,而我们要认清编程本质上是一门技术,一门手艺(我当然承认编程其实是一门艺术)。一定要能够动手做出实际的东西,写下一行行代码才算你真正掌握。

否则你只能拿着书里学到的那些名词术语装装逼而已。在交流群里胡侃半天,结果别人问你造过什么轮子,开发过什么项目你就傻眼了。现在前端岗位招聘动不动要求两年三年经验,你要上哪里找去?

一定要有自己的个人项目,一定要写自己的技术笔记,有条件也可以为开源项目做贡献。

只看书没有任何用,光看视频也然并卵。

一定要不停地实践实践实践!

一个只实践不看书的有可能会成为一位大神(在实践中就能学会很多),但一个只看书不实践的只能成为一个喷子。

一定要记住:

学而不练则忘。

认清就业现状

前几年可能还好,现在所有人都知道前端工资高。互联网泡沫没破的时候,应届毕业生第一次定岗就有能拿 20k 的,这都是真实发生过的事情。可就像你买彩票几乎不中奖一样,你从来不能把未来寄托在幸运之上,你需要有与之相匹配的实力。否则你即使遇到瞎了眼的面试官能拿到 Offter,在正式的工作中你也没能力保住岗位。

现在所有人都意识到了互联网行业赚钱,有点技术梦想的,不甘现实蹉跎的都想要通过学前端找到高薪工作。学法的学医的学会计的送快递的挖矿的,感觉 360 行有 361 行(多一行不怕你不信)都想转前端。

前端的工作机会确实多,需求量也确实大。可也得分清场合地域。

应聘难度从易到难为:

非互联网公司但有 Web 开发需求的<互联网小型创业公司<知名网站、应用<BAT

待遇薪资当然也是一样的序列。所以你需要认清自己的目标,找准自己的位置。最底层的页面仔工资真的还不如一个送外卖的,但与此同时,当然也有能让你实现财务自由的岗位。

坚持不懈&当断则断

学习可以很愉快但从来都不是一件轻松的事情。程序员的进阶之路尤其如此,就像你知道山口山升级的那一声是如此清脆响亮余音绕梁,但那需要你刷多少本,杀多少怪才能听到那么一声一样。

你学习的计划和安排可以很明确,但这并不代表它很简单就能实现。你会遇到无数的挫折,你需要解决无数的 Bug,你更需要无数的练习,才能达到你期望的目标。

你可以找一份码农的工作锻炼自己,但这仅仅是锻炼,你不可能当一辈子码农。

如果你真的喜欢编程,喜欢前端,那么在你写下每一行代码的时候一定能体验到那种快感。而如果每一篇教程都让你难以理解,每一行代码都让你痛苦不堪,千万不要强迫自己。

因为你可能并不适合编程。改变命运的方式不止这一种,高薪的岗位也不止这一家。条条大路通罗马,人要对自己好一点,如果发现自己真的不适合,那就早一点放弃,节省下的时间还可以用来实现你生命中的其他奇迹。

但假如你真的热爱编程,喜欢前端,无论前路多么坎坷,请你一定坚持下去!

Q&A

Q: 看完了前端的编程书籍,看的时候感觉理解了,可是写代码的时候还是没有任何长进怎么办?

其实一些比较经典的推荐书籍安排都很好,每个讲解的知识点都有相应的代码实现。请你不要只是看过去,看书的时候打开你的电脑,把每一个示例都敲一遍。读完一个章节之后也试着用代码写写每一章的知识点,相信你会有一个不一样的体验的。

Q: 学习前端需要了解算法和数据结构么?

算法和数据结构一般都是面试的时候装逼用的,也可以在程序员之间相互吹逼时使用。但无论如何作为一名合格的前端在面试的时候拿 JS 写个快速排序还是应该做到的。在实际工作中一般运用不到什么算法和数据结构的高级知识,等到你真正有机会用到的时候,你自然也成长到那一步了。

Q: 为什么要熟悉原生 JS,我 jQuery 用得很溜不可以么?

不是所有技术栈都包含jQuery,jQuery虽然适用于很多场景,但并不是万能的。你不能把自己的技术实现全部都建立在一个别人开发出来的库上,那样你只是会用一个工具,而不是懂一门编程语言。

太过于依赖 jQuery 别人只敢让你去写业务实现,而技术选型一类更高层次的活你根本都没资格接触。

Q: 非计算机专业想要学习前端开发从哪里开始?报培训班靠谱么?

现在国内哪所大学有专门教前端的专业?前端从业者大部分都不是科班出身好么,计算机专业的都去搞数据分析和机器学习了,怎么稀得做前端开发这么 LOW 的工作(此处为自嘲)。所以有千千万万的前端开发从业者和前端入门学习者和你是一样的,不要以为自己是什么特殊群体,保持一颗平常心。

培训班也相当于是一种被动学习,并不是说报培训班没有一点作用,只是大多数情况下你报班只会得不偿失。自制力好的人不需要报班通过自学也能小有所成,而懒惰的人即使培训班毕业了也找不到工作。

培训即使有效果,高昂的学费也是把你钱的坑了。我免费分享给你这么多教程,你连个赞都不点,我从来和你要过钱么?

Q: 我正在学习前端开发,想要早一点找到相关工作怎么办?

那么你就先去找工作,看工作的职位描述对你的技术有什么需求,根据你目标岗位的技术需求来学习。我们拿拉勾网的前端开发技术要求来举一个具体的例子:

  • 熟练掌握 HTML5、CSS3、JavaScript 开发
  • 这一条表示你要有扎实的 HTML5/CSS3/JavaScript 基础
  • 熟悉 W3C 标准与 ES 规范,熟悉 Web 语义化
  • 你需要了解一些 Web 相关标准
  • 熟练掌握盒模型、常用布局以及浏览器和移动设备兼容性
  • 能够熟练使用 CSS 构建页面,能够处理好各类屏幕大小设备的兼容性
  • 熟练使用至少一种 JS 框架,掌握其原理,能独立开发常用组件
  • 熟悉 Angular/React 一类的框架,并且用这类框架开发过成型的项目
  • 熟练使用各种调试、抓包工具,能独立分析、解决和归纳问题
  • 熟练掌握 Chrome 调试工具一类应用软件的使用
  • 具有至少一门服务器端编程的实战经验
  • 你得会 Python/PHP/Node.js 一类的服务器端语言,并且能够独立搭建起 Web 应用的运行环境
  • 具有性能优化经验
  • 了解客户端/服务器端缓存,CSS/JS 代码优化一类的性能方面知识
  • 熟悉各种常用设计模式和常用 MV*框架
  • 了解掌握设计模式和 Angular/React 等框架

然后再根据每一条要求去学习相关的知识,准备相应的实践项目。准备好就去面试吧,如果面不到就再回来继续好好学,千万不要急功近利。

如果还有什么其他问题,欢迎在评论区提出。有任何好的意见建议,觉得我说的有什么不对的地方也欢迎在评论区指教。