前端好学习么
2023-04-26 · 百度认证:重庆猪八戒网络有限公司官方账号
其实前端学习没有好不好学这么一说,学习本身就是不断的突破,遇到问题和解决问题这样的一个过程,想要学好肯定都是有难度的。
昨天在我在国外网站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上看一些热门的库,那里有很多问题可研究。在你之前,那些优秀的工程师从来没遇到过这些问题。我知道这不容易,但这是个好习惯。我还没见到过哪个编程问题在视频中比在出色的书或文章中写得更好。而且要注意,很多做这些课程的人并不一定是优秀的程序员;即使他们是,他们也不见得是好的老师。
我不是说“不要使用视频”。有很多视频帮了我大忙,帮我理解概念,解决问题,以及看怎么使用一些技术。但是不到最后,不要用这个资源,不要依赖它。比如我自己很喜欢AndrewMead的React课程,但如果我没有自己去研究,一遍遍尝试,那我看到过的内容都没变成我自己的。靠着某个视频,了解关于某个软件特定版本的例子,只是不得已的替代方案。
(你觉得真正的编程大牛会整天开直播给你讲怎么写入门代码吗?)
11)调试和版本控制。这对于学习语言和计算机基础是最重要的,也是工作环境中最需要的东西。其次是工具的使用。如果你掌握Java,那么学习Spring比学习docker和git要容易得多。但你可能会花95%的时间来编写Spring代码。又比如你掌握Python,你可以在一个周末学会Django,但需要花更多时间学会调试错误的Python代码。关于IDE也是,知道5个IDE不如熟练使用1个。这些未必是初级职位的必备技能,你可以不去了解它们,但这个东西是长期有用的。
(调试debug和版本控制是区分新手与程序员的重要标志,对求职也很加分,参考开发5分钟,调试2小时-你的问题在哪里?)
12)不要试图一次学习太多东西。小步走,但要稳。我犯过这样的错,并且付出不小的代价。不是说读Hennessy和Patterson的著作没用,或者说关于设计模式的阅读是无用的,也不是说看Youtube视频、有趣的技术讨论、阅读行为驱动设计没用,但是还记得第一点吗?你必须明白什么是首要的,扎实走好每一小步。如果你和我一样,充满好奇心,那很好。但是,先找到一份工作,在一个舒适的环境中,拿着一份薪水,跟着资深开发者学习,然后回家尝试用Rust编程,看关于不可变性的谈话,难道不是更好吗?
13)小贴士1:如果在你正式找工作前有6至7个月的准备时间,我推荐学下C语言。这是一门很小的语言,但可以教会你很多。这么说吧,如果我在花4个月学习另一门高阶语言之前,先花2个月学习C语言(每天至少4小时),并且解决一些Leetcode上简单和中等难度的问题,我会成为一名比现在更优秀的程序员。现在技术太多,高阶语言中有大量“噪音”。
你很快就会从“我怎么样从input到output”这样的问题上被引诱到别的关注点上,而这却是写一个完整代码最最基本的步骤。我知道编写“input”和“output”一点也不酷,但还记得第一点吗?我们需要尽快找到一份让自己能挣钱的体面工作。学习C语言,可能起初比较慢。但当你学习下一门语言时,你最后会发现和使用C语言解决问题是一样的,只不过要使用无数的API。
14)小贴士2:学会管理你的时间。你整天坐在电脑前学编程,顺手刷一刷各种网站很有诱惑力的,但这些都是在浪费时间。如果你能把时间管理好,那你的准备时间可以大大缩减掉几个星期甚至几个月。
15)小贴士3:休息,社交,恋爱,娱乐,照顾自己,这些都超级重要。一个人坐在那里,整天看着博客,盯着VisualStudio,对你的精神健康没有好处,而且会让你和别人格格不入。努力学习,懂得自制,但是在生活的其他方面也要自制。因为一旦这个平衡被打破,其他地方也会出问题。
就写这么多,如果写太长了,请不要介意。希望有人会觉得这篇文章有帮助,且这只是我个人的见解,可能会有很多人不赞同。
2024-05-04 · 百度认证:陕西新华电脑软件培训学校官方账号
1.持续学习: 前端技术在不断发展,新的框架、库和工具层出不穷。要保持竞争力,需要持续学习最新的前端技术和趋势。
2.深入理解: 除了掌握基本的HTML、CSS和JavaScript,还需要深入理解前端开发的原理、设计模式和最佳实践。
3.项目实践: 通过实际项目的实践,可以巩固知识、提高解决问题的能力,并且能够在简历上展示自己的技能和经验。
4.开发工具和技巧: 掌握各种前端开发工具和技巧,如代码编辑器、调试工具、性能优化等,可以提高工作效率和代码质量。
5.设计和用户体验: 前端开发不仅仅是编码,还涉及到设计和用户体验方面的知识。了解基本的设计原则和用户体验可以帮助构建更好的用户界面和体验。
6.团队合作和沟通: 在实际工作中,前端开发工程师通常需要与设计师、后端工程师和产品经理等团队成员合作,因此良好的沟通和团队合作能力也很重要。
虽然成为一名精通的前端开发工程师并不是一蹴而就的事情,但通过持续的努力和实践,你可以不断提升自己的技能水平,成为一名优秀的前端专家。
- 官方电话
-
官方服务
- 官方网站