‘壹’ 前端好学习么
其实前端学习没有好不好学这么一说,学习本身就是不断的突破,遇到问题和解决问题这样的一个过程,想要学好肯定都是有难度的。
昨天在我在国外网站reddit上看到一篇文章,作者分享了他自学编程 9 个月后找到工作的经历。文章不到一天就得到3千多赞,2百条回复。我看了下内容,非常中肯,其中有不少建议也是我在编程教室屡次提过的。所以我连夜翻译了出来。原文略长,我做了适当的缩减。另外加上了一点我的想法(括号内斜体字)。虽说国情有不同,但本质是相同的,对想要入行的朋友很有参考价值。
长话短说,2017年12月,我处于人生的十字路口,无论是继续完成看不到尽头的化学硕士学位还是重新寻找自己的出路都令我感到纠结。那时我写了一些代码(也就几百行 Python),感觉不错。我决定靠着积蓄来学习编程,直到找到一份开发的工作。
回顾这个漫长而艰难的旅程,我想分享一些经验,它是如何开始以及如何结束的。我的观点没有特别的顺序,虽然我会先写一些我认为最重要的。
1)设定一个非常精确的目标。我是指现实的目标。这是你旅程中最重要的方面,你需要对终点线有清晰的认识。你学习编程,是因为想解决一些实际问题吗?也许你想要自动处理你工作/生活中的一些任务,也许你想破解游戏,也许你出于好奇心,也许你喜欢学习新事物,又也许你是一个想开发应用却没有资金的企业家。而本文中,我主要针对想要通过学习编程找工作的角度来谈。
2)如果你的目标是找工作,就盯着就业市场看,而不是 Twitter 和 Medium 上的热点。还记得第一点吗?你必须设定一个非常精确的目标。诸如“我想成为一名开发人员并从事游戏行业”这样的目标就过于模糊。你的首要任务是什么?是寻找一个真实的开发工作,还是在游戏行业工作?如果你在游戏行业找不到工作怎么办?你的城市没有此类公司,或者你达不到游戏公司的要求怎么办?其实不论你学习哪种编程语言,我敢说将来某一天这些知识都可能用在游戏开发上,只要这是你的目标。你将需要学习大量的新东西。但是你有解决问题的能力和编程知识才能迈出第一步。
你是一名自学成才的开发人员,不是 MIT 的优秀毕业生,找到一份异地的工作会更难。我在2017年12月犯了一个错误:我认为首要任务是找到一份前端开发的工作。但我没意识到,在我的地区 C#/php/Java 的工作与前端 JS 工作的比例为9:1。因此,请查查你所在地区的公司,看看它们的职位和要求。
(如果你的目标是转行,不妨从初级职位先入行,再不断调整到你期望的方向)
3)永远永远不要假设在编程中什么更难什么更容易。当我决定学习前端时,我这样做了。这是一个巨大的错误。不好说前端比后端更容易,或是更难。关键是,你也无法知道自己会更喜欢什么,更适应什么。所以不要假设。永远不要认为 JavaScript 比 C 更容易或是更难。不同工具对于不同问题的有不同的复杂性,你还没有到能区分什么“更难”什么“更容易”的程度,我也是。就别去衡量。你能说清,从现在开始的24个月内,在某平台上提升渲染和网络性能比优化基于地理空间数据预测天气的算法“更容易”吗?你确定在复杂的实时应用程序中管理状态比编写着色器或教电脑如何翻译或绘画更容易吗?你根本就不知道。所以,千万不要做这种无脑的假设。
4)坚持学习。你有多少时间学习编程?你是学生吗?还是失业了(就像我一样)但是有足够的积蓄来投入学习。你的目标要符合实际,但要坚持。每天写1小时代码会比每周写一次7小时的代码会使你成为一个更好的程序员。
5)不必懂得职位所需的一切。对于框架和库尤其如此。顶级公司非常关注数据结构和算法,这表明你可以思考并解决问题。更具体地说,无论你选择何种编程语言(Java,JavaScript,C#,Python 和 PHP 中的任何一种都可能找到工作),尽可能地学习它的基础知识。我学习了前端开发。我觉得这需要从 html 到 dom,学大量的库,transpiling,webpack 等等。但实际上,在求职面试中,这些话题很少被问起,他们只想知道我是否真的了解 JavaScript。我申请了3个前端 React 工作,没有人关心你是否知道 React 的调用(我的意思是,如果你学习 React,你应该至少具备它的工作原理的基本知识),但成为一名优秀的 React 开发人员所需的核心知识就是了解 JavaScript。如果你了解 JavaScript 和 dom,那么学习 React 只需要一周的时间。否则你永远不会成为一个好的 React 开发者。高阶函数,this 绑定,这些是 React 开发人员每天需要真正面对的问题和知识,其余的都是谷歌搜索。这同样适用于任何其他语言。如果没有扎实的语言基础,各种 bug 会让你一筹莫展。仅仅读过一些东西,并不意味着你吸收了它,更不谈掌握它了。一个会 10 种技能/工具,但并不真正精通一个的人,很难取得别人信任。
6)尝试寻找一个导师。Slacks, IRC, Discord 上很多人比你有经验,你也许能找到愿意长期帮助你的。感谢 freenode 的 javascript 频道所有成员对我学习的帮助(特别是 ljharb,slikts,stennowork,liste,innovati,zsoc,cjhonson,qswz,GreenJello,sillyslux)。请注意,我不是让你们去联系这些人,他们在讨论组中提供帮助而不是一对一。两个建议:1.不要考验导师的耐心和意愿。如果你一直在问可以搜索或书上查到的基本问题,他们会厌烦并懒得回答你。2. 程序员,包括你在内,都希望别人认可自己的聪明,我认为这是理性人的本质。你可以利用这一点,比如:如果你进入聊天室并写“平心而论,我觉得在座各位不会绑定箭头函数”,你会得到20个回复。而如果你问“箭头函数怎么用?” 可能不会有任何答案。
(一个过来人的建议和指导对于学习非常有帮助,这是任何书本、教程或者视频都无法达到。关于这点,参与过编程教室码上行动的各位同学应该深有体会)
7)了解什么是编程:将数据作为输入,对它做一些处理,生成一个输出。这就是每个程序所干的事情。把两个数字相加:输入数字 -> 处理 -> 输出总和。在屏幕上渲染3D模型:相机+顶点矩阵 -> 处理 -> 屏幕上的2D图像。在网站上设置你的个人资料图片:数据输入+地址 -> 处理 -> 来自服务器的响应。这就是编程的全部,一切都是为了计算。数据 -> 处理 -> 数据。不过我对数据结构和算法知之甚少。我不太能实现归并算法或实现复杂的数据结构,在面试中也没有真正要求它们。知道时间复杂度和不同数据结构的应用对于我的面试来说已经足够了。但在其他公司和职位上可能会有所不同。
8)了解程序员做什么。他们通过代码解决问题。作为程序员,你需要解决问题(通常由你自己创建)。不能解决代码的问题,那要你何用。如果你认为跟随 youtube/udemy 上的一些废话视频可能会让你成为一名程序员,那就大错特错了。看别人替你解决问题意味着你没有提高问题解决技巧。所以当你无法理解某些代码时,别急着谷歌或问人。要知道,这就是你要面对的工作。善于解决问题,有些可能是语法问题(如前所述),有些可能与性能有关,等等。学会使用调试器。代码只是想法的实现,习惯用铅笔和纸编程。定义好你的问题,输入,输出以及如何从一个到另一个。整理你的代码,看看你乱七八糟的面条代码,看看你凌乱和命名不佳的函数和变量,超过几百行就难以维护的代码,试着改进它。
9)掌握计算机的基本常识。认真脸。你起码要了解冯·诺伊曼结构和内存模型,这些几小时就能学完。哪怕是通过维基网络、Youtube 或者是一些博客,至少做下这件事。搞懂内存模型和调用栈,你的代码水平将会提升,你也会码得更快。你再也不会搞不清:为什么你不能修改一个字符串,或者为什么是通过引用而不是值来传递非基本类型。这对提升你的学习速度,加深你对计算机运行原理的了解具有重要意义。
10)不要跟着视频学习。你需要做得事情越高级,越小众,你能使用的资源就越来越少。你要习惯用谷歌也搜索不到多少信息的情况。你将会需要使用文档很少或者为零的程序库,需要查看代码来搞清楚为什么这个库改变了那个对象类型,或者运行情况和预期不同。去 Github 上看一些热门的库,那里有很多问题可研究。在你之前,那些优秀的工程师从来没遇到过这些问题。我知道这不容易,但这是个好习惯。我还没见到过哪个编程问题在视频中比在出色的书或文章中写得更好。而且要注意,很多做这些课程的人并不一定是优秀的程序员;即使他们是,他们也不见得是好的老师。
我不是说“不要使用视频”。有很多视频帮了我大忙,帮我理解概念,解决问题,以及看怎么使用一些技术。但是不到最后,不要用这个资源,不要依赖它。比如我自己很喜欢 Andrew Mead 的 React 课程,但如果我没有自己去研究,一遍遍尝试,那我看到过的内容都没变成我自己的。靠着某个视频,了解关于某个软件特定版本的例子,只是不得已的替代方案。
(你觉得真正的编程大牛会整天开直播给你讲怎么写入门代码吗?)
11)调试和版本控制。这对于学习语言和计算机基础是最重要的,也是工作环境中最需要的东西。其次是工具的使用。如果你掌握 Java,那么学习 Spring 比学习 docker 和 git 要容易得多。但你可能会花 95% 的时间来编写 Spring 代码。又比如你掌握 Python,你可以在一个周末学会 Django,但需要花更多时间学会调试错误的 Python 代码。关于 IDE 也是,知道 5 个 IDE 不如熟练使用 1 个。这些未必是初级职位的必备技能,你可以不去了解它们,但这个东西是长期有用的。
(调试 debug和版本控制是区分新手与程序员的重要标志,对求职也很加分,参考开发5分钟,调试2小时 - 你的问题在哪里?)
12)不要试图一次学习太多东西。小步走,但要稳。我犯过这样的错,并且付出不小的代价。不是说读 Hennessy 和 Patterson 的着作没用,或者说关于设计模式的阅读是无用的,也不是说看 Youtube 视频、有趣的技术讨论、阅读行为驱动设计没用,但是还记得第一点吗?你必须明白什么是首要的,扎实走好每一小步。如果你和我一样,充满好奇心,那很好。但是,先找到一份工作,在一个舒适的环境中,拿着一份薪水,跟着资深开发者学习,然后回家尝试用 Rust 编程,看关于不可变性的谈话,难道不是更好吗?
关于招聘:
13)人脉 > 经验 > 知识。
大多数公司都是长期招聘,但没对外公布,可能他们的网站上连个“联系我们”都没有。所以在找工作时,人脉至关重要。我强烈建议你加入当地线上的社区,线下的更好。我寄出的简历全都没有回应,我得到的所有面试机会都来自我认识的人。当对方知道你是个开发者时,可能会对你说,“你感兴趣的话,我可以把你的简历递给我的头儿。”
如果你是自学的开发,那求职可能有些难(不过这个视地区和职位而定)。尽管你技术很强,知识丰富,但你的简历上没有经验可写。只是说我会 Python,没人会给你面试机会,因为你没法证明。招了你可能意味着公司要赔钱。养着几个不产出还拿工资的开发者,人力部门不如做一些别的事。我知道技术过硬却没法展示是怎样地痛苦,但现实就是这样。
所以人脉之后,第二重要的是有经验。你有两个选择:参与开源项目(写点有用的库/模块,哪怕提交一个好的修改也能加分)或者开发一些人们会用到的东西,甚至是给别人免费使用。我选择了第二种。我为我们市的一个足球俱乐部开发了一个应用,这个俱乐部需要通知球员周日哪些青年球队会来比赛。这个应用算不上好,但每周数百人都要用到。
你能用代码解决一个现实生活中的问题,满足人们的需求,已经很了不起了。我还给我叔叔写了一个短租网站,没有实时预定的复杂数据库,但是解决了他的问题。就算它有很多反模式,影响大吗?可能你做了一个精致的 Instagram 复刻版,代码也更清晰,但是会有人用它吗?其中有你的原创吗?可能你有一部智能电视,你总是要把硬盘里的各种节目拷贝到电视机上来看,为此感到心累时,有想过做些什么吗?
你有一个路由器,还有一个可以安装软件的程序的电视机。不如花一个月写一个粗糙简陋,但却有用的 app,可以让你的电脑和电视进行数据传输。这些写到简历上也很好看,因为他们给你机会来谈论你是怎样解决问题的,比如你什么地方做得好,什么地方做得不好。我的第一个 React app 没有用状态管理器,随后我遇到很多由此导致的问题,维护代码也越来越难。
我遇到了问题,解决它,而且能知道我的解决办法是好是坏。看看你的周围,你能做哪些事情来帮人们解决问题?从你自己的问题开始,继而关注别人的,哪怕是做免费服务。而你用 Django+PostgreSQL完美复刻 Twitter 有什么好谈的呢?
(很多人说学完基础不知道做什么,但其实身边处处都可能用到编程。我们也举过很多例子,公众号Crossin的编程教室里回复关键字项目)
最后就是你的知识,而且这很重要。如果没人帮你递简历,说你是个优质资源,那知识就是你最后的王牌。你发布了两个安卓的应用,简历上至少有东西可写。可能你回答不了被问到的问题,但如果给你时间,你总能做出一个产品。所以知识成了你唯一的资源,但不那么有力。当你坐在一个 10 年经验的人面前,说着“value”而不是“variable”,别人就对你的水平有所了解了。假设没人推荐你,没人用你写的代码,你的 GitHub 上是一堆刚初始化或者废弃了的项目,或者是从教程里复制来的一些片段;假设你被问到一些基础问题(其实也是最难的),而你不能自信地给出一个清晰的答案,谁会付你钱呢?
14)小贴士1:如果在你正式找工作前有 6 至 7 个月的准备时间,我推荐学下 C 语言。这是一门很小的语言,但可以教会你很多。这么说吧,如果我在花 4 个月学习另一门高阶语言之前,先花 2 个月学习 C 语言(每天至少 4 小时),并且解决一些 Leetcode 上简单和中等难度的问题,我会成为一名比现在更优秀的程序员。现在技术太多,高阶语言中有大量“噪音”。
你很快就会从“我怎么样从 input 到 output ”这样的问题上被引诱到别的关注点上,而这却是写一个完整代码最最基本的步骤。我知道编写“input”和“output”一点也不酷,但还记得第一点吗?我们需要尽快找到一份让自己能挣钱的体面工作。学习 C 语言,可能起初比较慢。但当你学习下一门语言时,你最后会发现和使用 C 语言解决问题是一样的,只不过要使用无数的 API。
15)小贴士2:学会管理你的时间。你整天坐在电脑前学编程,顺手刷一刷各种网站很有诱惑力的,但这些都是在浪费时间。如果你能把时间管理好,那你的准备时间可以大大缩减掉几个星期甚至几个月。
16)小贴士3:休息,社交,恋爱,娱乐,照顾自己,这些都超级重要。一个人坐在那里,整天看着博客,盯着Visual Studio,对你的精神健康没有好处,而且会让你和别人格格不入。努力学习,懂得自制,但是在生活的其他方面也要自制。因为一旦这个平衡被打破,其他地方也会出问题。
就写这么多,如果写太长了,请不要介意。希望有人会觉得这篇文章有帮助,且这只是我个人的见解,可能会有很多人不赞同。
基础小白自学前端推荐一些比较不错的学习网站
‘贰’ 前端开发需要学习什么应该怎么学
目前前端开发主要通过自学和报班学习两种途径学习,自学的难度高一些。
自学的话,要先规划好自己要学哪些知识,从哪里入手,有困难如何解决。机构学的话,就要选一个靠谱的机构。近几年,前端的发展还是非常好的,市场需求大,加上学习起来也相对简单,有众多人选择并学习。
学习的内容包括:
①计算机基础以及PS基础
②前端开发基础(HTML5开发、JavaScript基础到高级、jQuery网页特效、Bootstrap框架)
③移动开发
④前端高级开发(ECMAScript6、Veu.js框架开发、webpack、前端页面优化、React框架开发、AngularJS 2.0框架开发等)
⑤小程序开发
⑥全栈开发(MySQL数据库、Python编程语言、Django框架等)
⑦就业拓展(网站SEO与前端安全技术)
想要系统学习,你可以考察对比一下开设有IT专业的热门学校,好的学校拥有根据当下企业需求自主研发课程的能,建议实地考察对比一下。
祝你学有所成,望采纳。
‘叁’ 前端工程师写在年末的一些话
写惯了技术类的文章,这种总结和唠嗑型的我基本也就在年末才来一篇。说实话,这种轻松类的文章往往比技术类的要受欢迎的多,因为其受众更广,看起来也不烧脑。
说来愧疚,这一年其实产出有点低,大致就写了不到二十篇技术随笔,特别下半年入职腾讯后就更少有时间动笔了。
但再忙也没打算摒弃写文章的习惯,一来是为了自己沉淀,二来也是希望自己能为国内的前端分享出点贡献——这想法虽然有些滑稽,却也是我本人确切真实的想法。有时会想着自己能给这个社会带来、留下些什么,如果没有揭露相对论的能力,那么写点文章我还是得以胜任的。
就我个人而言,今年发生了蛮多事情,但今天不讨论私事,纯粹作为一名前端er来侃侃前端这块的一些趣事儿,或者说我的一些拙见。
前端的大环境
自从09年Node出来后,前端的内容愈来愈丰富,各种技术日新月异迭代起来乐此不疲。
如果你想学习Node,可能会入手《Node.js实战》一书,然后试着捣弄Express。殊不知现在有很多人已经玩上了KoaJS,嘲笑着还在使用
Express的民工,紧接着是用上thinkJS的人翻着白眼谈笑风生。
前端自动化工具也是撕逼的厉害,从Grunt到Gulp,从Bower到jspm和webpack,仿佛一夜间Grunt
上那上万个插件包就都统统过气。
哦对了,谢谢谷歌和脸书,ng拉起了五花八门的前端mv*框架潮,React的组件化概念也颠覆了常规web开发的理念。
还有新面世的ES2015,让我想到个好笑的事情——babel迭代到6的时候,各大前端技术群里风声鹤唳的,因为相比旧版本,babel6的配置变得太多了,又缺乏(中文)文档,导致一堆手贱升级又不懂配置的码农哭晕在地板上。
另外Phonegap、ReactNative、Fuse等的出现也让前端日渐渗透进了移动应用端,噢别忘了现在通过node
还能开发桌面级应用呢。
有人说这是前端最好的时代。
我觉得对前端er来说,这或许也是个挺操蛋的时代——要去了解的东西实在太多了。
前段时间Aaron在群里吐槽,表示近些日子前端的变化让他都要崩溃了(当然是句玩笑话,真正会让他崩溃的应该是他当日的猪肉没卖完)。
有个朋友不久前告诉我,说他买了好几本小说在看,我当时的表情是这样的:
原因很简单——我已经很久很久很久没有涉猎过非技术类的书籍了,要知道我的书架上每天都有几本厚厚的技术书对着我说:“还没把我看完啊?啥时候看我啊?今晚上我好吗?”。。。我又哪有闲暇时光去看其它的小说。
所以如果现在有张白纸(当年刚毕业的时候,我的第一位上级是这么形容我的)说他要从事前端的工作,我会笑着摸摸TA的头温柔地说道:“请你吃点屎冷静下好吗”。
武器或内功
前段时间成立了个分享小组NZOO,大熊在里头挥着旗帜带大伙搞Node,原生的Node。然后北川君站起来了,说他觉得更希望带动小组直接分享一些现有的主流框架,而非把学习成本花费在原生Node上,原因很简单——来钱快。
北川君在公司是个领导级的人物,所以很好定位他的思维——一切以开发效率为主、以钱为主。
这并非只是一个日常观点小碰撞,我觉得有必要好好思考思考,自己现在在学的是什么、想学的是什么。
我在上家公司的时候,给他们部署了gulp前端自动化工程,带起了sass、avalon等一些他们没应用过的、开发快也更好维护的新技术,效果是,显得你很牛逼
——
如果你擅长使用一些新颖好用的新工具,那么常常能很直观地给项目带来利益(效率或性能上),那么这会成为你职场上的一个助力。事实上对于许多中小型企业而言,他们更注重于敏捷开发,那么懂得“班门弄斧”会是一件重要的事情。
对于大公司而言就不一定了,像我现在所处的部门基于历史原因基本都还在使用Grunt,有时业务需求一负责你是找不到对应的Grunt
插件的,会考究你的原生代码书写能力——自己写出一个插件来作为解决方案,而不是去npm上搬个擦屁股的救兵。
作为一名老前端,肯定会用过许多主流的工具,比如jQuery及其各式插件,比如Vue比如
React,但很多时候我们就是那么习惯性地用着,可能没想过了解下它的源码、实现方式——这在我后期想起来是种略为毛骨悚然的事情。
如果说把各优秀的前端工具/框架当作一把锋利的兵器,那么阅读源码、了解它们的实现方案便是内力的培养。
很多人可能工作了不短时间,但技术不见增长,一个较大的原因还是“懒”——啥功能都懒得自己写,直接拿起插件生搬硬套,搞的页面性能差不说,自己也不懂扩展和维护,不知其中一二。
其实说白了,武器的练习跟内功的培养其实也不冲突,你可以一手抓,只是往往罩杯较大可能没法一手掌握,会比较吃力,那么还是建议你审视下自己的职业规划,是兵器能带给你更多的利益,还是内功能让你更强大,然后做出权衡。
如何学习
关于本人“两年前还在群里问js对象里的冒号是什么意思”的经典范例常常会被群里的人拿出来做谈资笑料,北川这死不要脸的还说他给下属洗脑的时候还把我当例子了。
今天下午也有个孩纸私聊我问我是怎么学习的,才能从小白变V神(虽然我墙裂觉得后面加个“经”字才合适)。
虽然离“大神”还有挺长的摸索距离,但。。。咳咳。。。稍微吹下牛我还是可以的。如果涎皮赖脸地总结下我的学习经验,我大致会归纳为这么几点:
1.拒绝插件
不要遇到一个交互效果就想着扒个插件来用,想想它会怎么实现然后试着去写出来。遇到困难了不着急,参考下别人的插件是怎么实现的。
个人觉得“写插件”是每个前端小白要初步进阶所必须试着去做的一件事,它对你的提升可以是很大的,不仅仅是有助于你在技术点上的认知,也有利于提升你的JS语感。
2.加入一个氛围好的技术群/团队
如果你身边没有这么一群喜爱技术的小伙伴,那么找个氛围好的群加进去吧,让大神带带你或者跟小伙伴一起同步交流,学习起来自然也不孤单,还有人不断激励你前行,何乐而不为呢?
3.多利用时间
“多看书多看好文章”这种废话我就不说了,但请你不要每天把精力花在看肥皂剧上然后又埋怨没时间学习。
时间总是可以挤出来的,你可以在你上厕所的时候想想Ajax原生请求怎么写,或者像我之前像个傻逼一样把NodeAPI打印出来拿在路上边走边看。
当然也不要把时间都花费在学习上,有时间多陪陪妹子多出去走走聚聚,程序员的日子不应该太压抑。
不过我也检讨一下,上周有三天时间沉迷于我厂新游怪物猎人OL上(卧槽我真的不是打广告),结果第三天玩着玩着,向来讨厌浪费时间的我突然觉得自己是不是神经病了(反正就这个念头),接着立马把游戏卸载了。。。
4.学!英!语!
不久前很多话题讨论说,英语是最没必要掌握的课程,建议教育部革除其作为三大主课程之一的身份。对于这批可爱的网友,我建议他们可以去叙利亚好好地旅游放松下。
起码就IT行业而言,英语是非常重要的技能,特别当许多新技术出来的时候,基本只有查阅英文文献才能找到解决方案(babel6就是个好示例)。
所以如果你的英语能力不够好,努力地去提升它吧,装个有道词典划词来看文章,争取能看懂外文的大部分意思。
总之这点不是开玩笑,阅读英文文献对于码农来说是非常受益的事情,另外遇到问题你也得以去github提个issue来解决。
5.多沉淀
试着开个博客吧,认真地记录下那些你在项目中遇到的问题和解决方案,或者用心地去查找、梳理你感兴趣的技术点然后记录下来。
它会耗费你一些时间精力,但也能催动你更深入地去了解、探讨某个知识点,巩固你对它的记忆。也可以作为将来反过来查询的工具书。
6.干掉让自己焦虑的那些东西
在职业生涯初期,作为小白总会有许多未接触过的技术盲点,有时候工作来了或者前往面试,都会由衷地担心起来,为自己知识的欠缺、胜任与否而焦虑。
我个人及其讨厌这种“焦虑”甚至“害怕”的感觉,一旦你感到这块的压力,一定要大胆地把它挖掘出来,然后一个个干掉它。
什么意思呢?比如当你觉得“我好像不会写原生的Ajax”、“跨域的方法我貌似没法都答上来”的时候,就尽早去找资料学习和了解,一步步干掉知识盲点,这样你只会愈来愈自信。
要记住只有你才是最了解自己弱点的那个人,只有你才是能拯救你自己的那个人(卧槽你拍电影啊)
有必要进大公司吗?
我觉得,作为一名搞IT的码农,没进过BAT总会有些遗憾(我也经常拿这个激将Aaron来深圳),所以如果有能力还是试着来这边镀镀金,或者说镀个经历。
他会让你了解一个大公司是怎样运作的,会让你视野变得很广阔,这里也有很多前人的知识沉淀或课程分享,身边也都是优秀的小伙伴可以交流和碰撞idea。
也会让你走上加班不归路(哼我设为斜体字了你们肯定看不到这一行)
但是如果你是应届生,我建议是先别急着进大公司。
原因很简单,大公司分工太细了,常规招你进来只做专才,你会在某个领域逐步精通,但放开整个前端面而言,会很欠缺实践。
说实话,我觉得大企业细分工作的形式,会让部分一直待着的员工,即使他们很优秀,跳槽去一家中小型企业的话,可能也没法很好地胜任前端一职。因为很多中小企业要求前端得是全能的——切的了图写的了样式编的了脚本,今天让你写个手势插件,明天让你搞个跨域通讯,后天让你负责个走spa的hybird。
有能力进大企业的应届生,往往都能在中小型企业里逐渐成为技术主导,会负责各种各样的工作,遇到各种各样的问题,自己手动编写各种各样的模块,这能给你带来非常丰富的从业经验(当然也会有所压力)。
在大企业的话,所能主导的部分自然会变少,因为有许多大牛早已帮你写好了各种业务模块,项目也早已确定好了相应的技术选型,而我们更多的是在上面做二次开发。
所以总的来说,能在外面有个几年实践和磨练再进大公司,会是我个人觉得的比较合适的选择。
年度书籍推荐
不吹不黑,我厂AlloyTeam成员曾探先生在今年发行的《javascript设计模式与开发实践》一书,是我个人认为的今年最佳的前端书籍之一。
本书结合了大量的业务实践来娓娓道来js各大设计模式的原理和应用,能让你更好地了解、掌握这些思想。
另外本书的语言组织能力也非常出色,用了许多生动形象的例子来帮读者了解一些生涩的概念,相比之下,现在世面上某本译作简直是disaster(那本书被我扔在上家公司都懒得收回了)。
这本书比较适合中等级别的前端朋友来涉猎,能让你收获很多意想不到的知识或解决方案。
弱弱地说下,这本书是打从心里的推荐,在群里也有很好的口碑,俺的推广可收不到曾探先生的推广费(曾探先生在看我文章么?下面有我二维码哦)
今晚就唠嗑这些,如果说了一些不中听的大话,诸位看官笑一笑就可以了~
愿后续新的一年能继续奋力前行,共勉~
‘肆’ 前端学习需要学些什么
前端学习的主要内容包含三个部分:基础部分、设计部分还有代码部分。学习前端课程推荐【达内教育】,该机构致力于面向IT互联网行业培养人才,达内大型T专场招聘会每年定期举行,为学员搭建快捷高效的双选绿色通道。感兴趣的话点击此处,免费学习一下
【达内Web前端课程】主要分为五大阶段,真实上线、中大型电商项目,帮助学员学到真材实料,课程内容更贴近企业工作内容。
第一阶段:服务器端技术 课程内容包括:项目导入、数据库和 SQL、JS 基础、Node.js、阶段项目。
第二阶段:前端核心技术 课程内容包括:HTML 基础、HTTP&AJAX、阶段项目、CSS 基础、CSS3 高级、响应式 &Bootstrap、阶段项目。
第三阶段:前端进阶技术 课程内容包括:JS 高级、BOM&DOM、阶段项目、jQuery、阶段项目项、Vue.js、阶段项目。
第四阶段:H5 移动端开发 课程内容包括:Vue.js 组件库、阶段项目、H5 高级、阶段项目、微信、阶段项目、HybridApp。
第五阶段:框架技术 课程内容包括:Angular 生态系统、阶段项目、React 生态系统、阶段项目、Python Web、毕业项目。
想了解更多有关前端学习的相关信息,推荐咨询【达内教育】。该机构是引领行业的职业教育公司,致力于面向IT互联网行业培养人才,达内大型T专场招聘会每年定期举行,为学员搭建快捷高效的双选绿色通道,在提升学员的面试能力、积累面试经验同时也帮助不同技术方向的达内学员快速就业!达内IT培训机构,试听名额限时抢购。
‘伍’ 我看过一些基础视频,前端会不会淘汰
文章略长,没耐心的小伙伴可以直接跳到文末,三句话概括全文。
事情起因是这样的,有团队做了一款可以直接生成网页的手机APP发布了,某知友就慌乱了,觉得前端工程师会被AI所代替,开始纠结学习前端还是后端。
“手机APP可以直接生成网页,取代了前端工程师的一部分工作,随着APP的进一步开发使用,前端开发的行业空间将更加狭小,是不是就意味着,前端开发正在面临淘汰的局面?”
前端真的会被淘汰吗?
答案案是否定的。诚然,按照人类现在的发展趋势,未来所有工作都将被AI取代,但是计算机行业肯定也要在后期才会被取代,有限取代的必然是一些流水线上固定岗位的重复工作。
很多人会有这样的想法,有以下几个原因:
1、大部分人对于前端工程师的误解
一个转换网页的APP的出现就能引起这么多人的猜测和恐慌,足以说明很多人对于前端开发的认识和了解是不够清晰的。
真正的前端开发并不是傻瓜式的网页生成可以取代的,在这个前端开发快速发展的互联网时代,你还认为前端开发只是切网页的,那你就大错特错了。
来看一则招聘启事:
专业性的方面分析完了,我们再来看看侧面因素,为何一个看似门外汉提出的问题会有60万人响应呢?这让我陷入深思,行内都知道,2017年开始前端突然崛起,大批大批的IT人员或者非IT人员转行做前端,这60万人中,学艺不精者,心态浮躁者应该占了大部分,那就引出下面第二个观点。
2、行业内大批学艺不精者造成市场饱和假象
由于前端工程师的入门门槛较低,很多人认为HTML、CSS、JavaScript并不是很难掌握的语言,似乎只要花一点时间,无论是谁,都可以通过网上教程或者书本入门。
许多人怀着追求高薪的想法入行,其实也没什么错,但是无法安心学习,浅尝辄止,会一点皮毛便不再深入研究,所以即便有大量的前端工程师涌入,公司对于技术扎实的优秀工程师的需求仍然只增不减。
整个互联网在不断发展,前端开发技术也在不断进步,前端开发市场会越来越广泛,人才需求当然也不会止步于当前,所以不论现在还是未来,整体市场都不会饱和,只会低端饱和,高端缺人。未来优秀前端开发工程师将成为市场争抢的资源。而淘汰的并不是前端,应该是落后的技术和不合格的开发者。
10 年前的前端工程师熟悉所有 IE6 bug,只要你说得出表象,他就能告诉你这个 bug 叫什么名字、成因是什么、如何能够绕过去同时保持跟其它浏览器兼容。
10年后的现在,这样的技术是显然被淘汰了的。
3、前端开发技术日新月异,那么前端开发攻城狮的未来又在哪里呢?
随着前端技术发展,那些小规模移动App市场被一些巨头把持,小规模App生存空间将越来越小,PC信息导航类网站(网址、购物、论坛、生活)由于移动优先、智能推荐的现状,也同样面临更加狭小的生存空间。
还有一大变化是,大量工作需要前端来做:
日常办公软件(复杂应用,并且慢慢从桌面程序演化为Web):Office、Email、文档管理、产品设计、项目管理、代码编辑器大数据/AI配套软件(复杂应用,并且慢慢从桌面程序演化为Web):需要大量的后台系统来做数据分析/机器学习播放器/游戏:H5代替Flash,如Web Audio、Web Video、Canvas容器/DSL/内核/小程序:支付宝/微信/钉钉容器,内核(也就是UC、QQ浏览器内核),及其自定义DSL(如果将来手机的底层能力都可以上浮到小程序,很有想象空间)产品信息展示类网站(炫酷应用):各种智能设备官网、大企业官网。
文末小编总结一段话,概括所有问题。
前端开发近十年都不易被撼动或取代,重要程度逐年增长中,吸金能力亦然。从业者应该注重自身知识巩固和新知识的更新迭代。找准时代发展方向,努力钻研,勇于创新能让你走在时代最前头。
‘陆’ web前端,遇到不懂的问题,一般怎么解决
今天为大家整理和分析一下初学web前端的朋友总会遇见的几个问题以及我个人理解的解决办法。
1 能听懂,写不出来
我相信这应该是所有初学者的问题,就是看视频的时候,能听懂,但是到自己独立去写的时候却写不出来,就像我们总说说起来非常容易,但是做起来很难。这个是非常重要的一点,就是我们要掌握一个非常恰当而且适合自己的学习方法,这点非常重要,因为根据我的经验,接触过很多初学者,学着学着就放弃了,然而失败的原因基本都是相同的,只要一直坚持下去,基本上能学下去的都会成功的学成,这是我自己的感觉,至于学习方法要看你自己适合什么,也可以加我的前端群像我请教。
2 学完了之后就忘记
我们解决第一问题,就会立马迎来第二个问题,比如我们的HTML标签和一些css的属性,我们用浮动去实现一个效果,但是过了几天之后发现,这个我怎么不会用了,就在脑海中,但是怎么都想不起来,这里我给大家说的是,你学习的每一个知识点,必须而且以及一定要跟三个案例以上,只有应用到实处,才能更好的记忆,在你学习之后的知识点,要不断的温习前面的东西,不然一定会忘记。
3 看书看不懂怎么学
我接触过很多的新手说,我买了一个本从入门到精通的书,其实我想说如果你觉得看了一本书就可以学好前端找工作,那这个工作好像谁都可以做了,我个人在初学的时候是一本书没看过,但是我却看过大量的技术书籍,这个都是在我学完了一遍前端,学了一遍java之后才看的,因为这个时候我才能看懂,对于我之前学习的一些没有太懂的东西,进行了一个知识的补充,一个新手区看专业人士编辑的专业书籍,我真的很难想得到,有几个人能看下去一本几百页的书,而且能看懂,所以我个人建议新手学习不要看书,反正对我来说没有什么效率。
4 学了之后怕找不到工作
Web前端开发相对于后端来说确实是简单不少,而且就业率也是非常高,但是很多新手对这个行业太不了解,以为学了之后就能找到多少钱的工作,完全忽略了自己学了之后,到底学的怎么样,什么水平,有点不太现实,这个行业工资确实高,一个具有三年前端开发经验的人基本工资都会在15000以上,但是却不是那么好拿的,还是看自己自身的竞争能力怎么样。
以上的四个问题可能是初学者学习前端关心的几个问题,这都是我个人经验用白话文总结的,说的不是很好,大家见谅,这是我的web前端资料分享交流群 :113485407
初学的新手有什么问题可以在群里问我,学习的疑惑什么的,群里有很多初学前端的新手,非常适合初学者,也可以管我要学习资料,都是免费分享的。
‘柒’ 自学web前端开发知识要明白的几件事
今天小编要跟大家分享的文章是关于自学web前端开发知识要明白的几件事。学习web前端编程技术肯定是以就业拿到高薪工作为主要目的的,可是高薪不会那么轻易拿到,这是一个最简单的道理。没有付出就没有回报,在整个学习web前端编程技术的过程中,你需要付出时间、精力、金钱。废话不多说直接上干货。在开始学习之前你需要做到以下5点,下面来和小编一起看一看吧!
第一:需要达到什么样的技术水平才能就业?
既然是为了就业,你就要知道学习web前端编程技术需要达到什么样的技术水平,才能获得一份web前端开发的工作。就好比高考的一个分数线,你是否能被大学录取,要看你能不能过分数线。软件公司录用你,也是有一个标准,所以首先你要知道学习web前端编程技术应该能达到什么样的水平才能就业。
目前行业就业标准:需要有项目开发的经验,一年经验web前端开发项目经验以上,进公司一周后可以参加项目模块的开发。
第二:明确web前端都应该学习什么企业需求的技术
IT行业技术更新的比较快,所以我们肯定是学现在企业需要的技术,而不是一些已经淘汰的技术。所以作为一个零基础开始学习web前端的人,你应该了解你现在需要学哪些技术,这些将是你要攻克的内容。
第三:合理的学习周期计划
合理的学习计划周期,你要学一个专业很强的技术,你肯定不能盲目的学,肯定是要把所有的内容进行分块来学。每天的内容都是固定的。学习编程有一个词语叫做“循序渐进”。不能急也不能拖。每天学习的量要差不多,然后完成每天的知识,并且把它掌握,每天做多少练习,完成什么作业,都要明确。
这要根据你的学习能力接受能力以及每天付出多少时间来学习制定的合理周期。
第四:有一个指导你的技术大佬
如果决心想学好web前端编程技术,就需要在前期有一个技术好的人指导你。全程靠自己自学web前端编程技术的人其实心里是并不想学好的。大部分都是不想付出就想得到回报的。
因为web前端编程技术专业性很强,前期是必须有人带的。主要是因为遇到问题无法解决,解决起来效率非常低,也会越学越迷茫,最后导致浪费时间。缺少跟专业的人交流的过程,毕竟高薪不是随便拿着,如果每个人都可以靠自己自学会web前端,那你应该是985、211这种学习能力很强的人。
由于不是这个行业的人,对于编程学习的方法一无所知,所以一定会造成走很多弯路的结果,最后导致放弃。
第五:意志坚定形成每天的学习习惯
以上4点都解决之后,剩下的就是半年如一日的每天学习了。根据我接触的人来看,大部分的人都会在中途放弃,主要原因就是渴望值很低,你想要得到一个东西,你必须非常渴望,并且付出很多东西,大部分人都不是这样的,所以坚定自己学习web前端编程技术的决心很重要。
以上就是小编今天为大家分享的关于自学web前端开发知识要明白的几件事的文章,希望本篇文章能够对正在从事web前端工作的小伙伴们有所帮助,想要了解更多web前端知识记得关注北大青鸟web培训官网,最后祝愿小伙伴们工作顺利,成为一名优秀的web前端工程师。
文章来源:原创曲墨每天学编程
‘捌’ 马上就2021年了,在前端行业中如何提高自己的竞争力
第一,获取相关信息。
可以通过浏览招聘信息或者询问身边从事前端工作的朋友来对HTML5大前端以及前端开发的工作内容进行一个初步了解。一般来说,前端开发工程师的工作包括:使用HTML、CSS、JavaScript等专业技术和工具将UI设计稿实现为用户PC端、移动端网页等网站产品,同时处理相关端口的视觉和交互问题等。
第二,打好学习基础很重要。
Web前端入门学习的基础内容有HTML5和CSS3,其中包括PC端网站布局、Weapon页面布局两方面。JS交互设计是重点学习部分,这部分需要熟练掌握JavaScript基础语法、JavaScript进阶、JavaScript高级编程、Conquer经典案例等内容。再有前端框架也是重点知识点,现在比较主流的框架有Cue、React、Angular,熟练运用框架可以提升开发效率。
第三,理论结合实践。
紧跟潮流发展也很关键,现在微信小程序和小游戏越来越流行,掌握相关技术点可以在岗位竞争中更具优势。比如熟悉React Native技术对于小程序开发很有必要,它可以实现熟练开发出匹配项目需求的功能。
第四,找对适合自己的学习方式至关重要。
根据企业的要求,规划一条科学合理的学习路线图。请你看下面学习路线图,完全是针对企业定制化人才需求规划。避免小白踩坑。
第一阶段:前端页面重构
内容包含了:(PC端网站布局项目、HTML+CSS基础项目、WebApp页面布局项目)
第二阶段:JavaScript高级程序设计
内容包含:(原生 JavaScript交互功能开发项目、面向对象进阶与 ES/ES应用项目、JavaScript工具库自主研发项目)
第三阶段:PC端全栈项目开发
内容包含:(jQuery经典交互特效开发、HTTP协议、Ajax进阶与PHP/JAVA开发项目、前端工程化与模块化应用项目、PC端网站开发项目、PC端管理信息系统前端开发项目)
第四阶段:移动端项目开发
内容包含:(Touch端项目、微信场景项目、应用 Angular+Ionic开发 WebApp项目、应用 Vue.js开发 WebApp项目、应用 React.js开发 WebApp项目)
第五阶段:混合(Hybrid,ReactNative)开发
内容包含:(微信小程序开发、React Native、各类混合应用开发)
第六阶段:NodeJS全栈开发
内容包括:(WebApp后端系统开发、一、NodeJS基础与NodeJS核心模块二、Express三、noSQL数据库)
第七阶段:大数据可视化
内容包含:(大数据可视化化基础与实战、一、数据可视化入门、二、D.js详解、三、其他JS库)
第五,学习web前端注意事项。
1.不要以看书学习为主,学习编程不是数学语文那么容易,你看看例题就会了,更需要的是别人的讲解,你自己看书上那些专业的文字,只是凭你自己意识理解的那样来,但是一般情况下我们都理解不了,毕竟我们不是出书的人,最好的方式就是找视频进行学习,找好的视频进行学习,然后在配上别人的解答,再加上自我的主动学习。
2.当你学习的时候,可能会出现学了就忘记不住的情况,我见过很多这样的情况,包括自己曾经学习的时候也是这样。打个比方:比方说我们在学习英语的时候,一天学习20个单词,但是过了一周之后,我肯定会忘记之前学过的单词。那么记住这些单词最好的办法就是应用于对话当中。我们学习web前端也是这样,同一个标签或者属性,或者是JavaScript的语法,只有你不断的见到它,并且应用它,让它都认识你了,这样你就扎实的掌握了,所以实际应用非常重要。
3.学习方法决定了你学web前端的效率以及你可以走多远,学习编程非常依赖一个好的学习方法,有太多人因为学习方法不对最终导致放弃,所以让各位一定注意自己的学习方法,每个人的学习方法不一样,但是大多数人错误的学习方法都是相同的,所以这方面一定要找。
‘玖’ 前端主要都需要学什么
Web前端开发工程师主要进行网站开发,优化,完善的工作。需要掌握以下技能:
必须掌握基本的Web前端开发技术,其中包括:CSS、HTML、SEO、DOM、BOM、Ajax、JavaScript等,在掌握这些技术的同时,还要清楚地了解它们在不同浏览器上的兼容情况、渲染原理和存在的Bug。在一名合格的前端工程师的知识结构中,网站性能优化、SEO和服务器端的基础知识也是必须掌握的。
必须学会运用各种工具进行辅助开发。除了要掌握技术层面的知识,还要掌握理论层面的知识,包括代码的可维护性、组件的易用性、分层语义模板和浏览器分级支持,等等。可见,看似简单的网页制作,如果要做得更好、更专业,真的是不简单。这就是前端开发的特点,也是让很多人困惑的原因。如此繁杂的知识体系让新手学习起来无从下手,对于老手来说,也时常不知道下一步该学什么。
代码质量是前端开发中应该重点考虑的问题之一。例如,实现一个网站界面可能会有无数种方案,但有些方案的维护成本会比较高,有些方案会存在性能问题,而有些方案则更易于维护,而且性能也比较好。这里的关键影响因素就是代码质量。CSS、HTML、JavaScript这三种前端开发语言的特点是不同的,对代码质量的要求也不同,但它们之间又有着千丝万缕的联系。
‘拾’ 如何才能学好前端开发
现在前端开发是一个很火很热门的行业,小编在这里为大家详细解释一下这个高大上的行业!
在国内大学课程里面,几乎没有前端开发这门课程,无非就是一些网页设计之类的课程,但那些课程无论是老师讲还是学生听,都是敷衍了事,这个我深有体会,我相信大家一定也有同感!所以,目前前端开发主要是通过自学,和参加正规的培训!对于培训来说,一般会分为初级、中级、高级等级别,因为凭我们自己很难掌握这些技能。但是自学是很困难的,毕竟是一个人自己摸索,网上看上去有很多视频可以学习,但是那些视频很多都是过时的,像js和h5这些想要自学根本学不会,更何况以后深入学习还要掌握框架构造!很多小伙伴就根本找不到学习的方向,最后白白浪费了自己的时间和精力!所以对于有条件的小伙伴,个人推荐最好是系统的学习一下!
那么我们应该怎么学习前端开发这门技术呢 ? 现在很多小伙伴喜欢在互联网上找视频资料学习网页制作,但是光看视频你是不可能学会网页制作的,没有人指导你,而且很多视频已经过时了 ,并没有什么用! 如果你真的想学习网页制作这门技术,你可以来这个裙,前面是四 九 四,中间是0 6 4,最后是 9 3 4 ! 在这里有最新的HTML课程 免费学习 也有很多人指导你进步,不需要你付出什么 只要你有一颗学习的心就可以了 。
传统web从业者为什么必须学习前端开发技能?——学习前端开发是晋升和加薪的捷径。传统web从业者,只要精通html+css,简单的JS效果,切切图,写写网站等就可以了,而如今的前端开发不再只是一个简单的网站,现在越来越多的云计算应用程序,比如web QQ接近我们经常使用的QQ的功能。以前用java 、J2EE、 .Net 、Object C等高级语言开发的应用程序也越来越走向web化、云端化。 BS架构应用程序已逐渐成为主流。时代变了,用最犀利的前端技术武装我们的大脑的时代已经来临!
1、想要跟上潮流,想要掌握最新技术,做高精尖人才升职加薪,必须学习前端开发最新技能,毕竟做前端的就得跟上时代的潮流,如果有小伙伴想要学习前端开发,个人认为潭州学院还是蛮不错的 !相比于线下的培训班,潭州无论是学费还是学习时间,都远远比线下的培训班更加实惠,而且只要有电脑,有网络就可以进行学习!
2、前端开发的就业方向及薪资情况。
记得有人说过,未来不再有互联网公司,因为未来所有的企业都会有互联网部门,而互联网世界离不开前端开发,像淘宝、阿里巴巴、支付宝、腾讯、京东、新浪微博等等大型的基于互联网的企业与产品,都需要优秀的前端高级开发人才。
不仅仅是互联网企业,随着O2O模式的越来越普及,传统企业越来越互联网化、云端化,前端开发人才需求越来越多,人才缺口高达上百万。
招聘网站上现在的前端开发工程师的平均薪酬已经达到了12926元,需求巨大,前景广阔,薪资还高。
3、你适不适合学习前端开发?
如果你已经有了传统web基础(css+div),那么是时候提升你的前端开发技能了…
如果你没有接触过web前端开发,那么如果你经常上网,冲浪,希望要了解互联网世界背后的故事,可以先从web前端开始了解,因为这是开启互联网世界大门的钥匙…
web前端JS课程的核心特点。
web前端课程的核心特点是:我们不仅仅要学会制作一个网页,一个特效。
更多的是我们要用web前端开发传统应用程序,我们做pc端,移动端,各种响应式,web 游戏,web 企业管理系统,web 移动程序,开发一个大规模项目,html5游戏,甚至用js开发传统高级语言才能做的数据库交互,不用后台语言,就靠我们js做后台,流行大趋势……
4、课程模块介绍。
未来需要什么,我们就需要学什么:
模块1:基础入门阶段;
模块2:web移动开发– html5、 css3、
模块3:html 5 游戏— html5 、canvas;
模块4:用js去做传统java 、.NET、 PHP才能做的数据库操作,服务器编程。— ajax 、node.js;
模块5:大型BS、云计算、项目开发(比如淘宝,京东)–面向对象、设计模式、大型项目分层架构思想(比如MVC,MVVM)、js框架、web前端架构、js组件;
5、学习方法、薪资目标。
【两大基础,内外双修】
两大基础:js基础(蹲马步,基础中的基础–函数,事件,语句等)、面向对象(基础)。内外双修:
【内】掌握面向对象编程思维,模块化编程思维,大型项目分层编程思维,大型项目团队如何合作;
【外】学习一些前辈总结出来的最佳编程实践:设计模式,比如能够保证全局唯一的单例模式,创造万物的工厂模式,模拟现实中介的中介模式,代理模式,以及所有业界都在谈,都在吹,都在用的依赖倒置,依赖注入,面向切面编程等。
结语:十年前,随着iPhone的兴起,iOS开发火爆中国。当年的行动者,如今已经成为百万富翁!今天,随着HTML5等WEB前端技术兴起,前端开发的大潮已经袭来!赶快行动,让青春不留遗憾,占领行业制高点,主动权就再你的手中!