怎样学习Web开发

本帖子已过去太久远了,不再提供回复功能。如何在一年之内通过自学找到Web开发工作 - 知乎专栏
你正在使用一个过时的浏览器。请以查看此页面。
{"debug":false,"apiRoot":"","paySDK":"/api/js","name":"production","instance":"column","tokens":{"X-XSRF-TOKEN":null,"X-UDID":null,"Authorization":"oauth c3cef7c66aa9e6a1e3160e20"}}
{"database":{"Post":{"":{"title":"如何在一年之内通过自学找到Web开发工作","author":"yubolun","content":"原文链接:原文作者 (Software Developer at Vretta Inc. One of the FreeCodeCamp Toronto Campsite Leaders.)背景说明文中提到的FreeCodeCamp(以下简称FCC)是全球最火的Web开发学习平台,鼓励Learning by Doing的学习方式。你可以在这里学习到前端、后端、数据可视化等几乎涵盖所有的Web开发知识。通过完成一个个循序渐进的开发小项目,像打游戏闯关一样来学习。你还可以加入聊天室或论坛和同学们交流,还可以加入学习小组,现在全球160多个国家已经有超过1000个学习小组,几乎覆盖了全球所有主要城市,国内各大城市也几乎都有自己的学习小组。FCC在Github上的Star数在一年之内就超越了曾经最火的Bootstrap两倍(bootstrap用5年获得了10w的star,fcc用一年获得了16w的star)我之前在知乎上安利FCC的回答在三天内就获得了500+赞。由此足以说明这个项目的火爆程度。这是全世界学习Web开发最好的地方,Learning by Doing也是最好的方式。而且这一切都是免费的!学成之后你还可以参与为公益组织开发Web应用,作为你的项目实践经历,帮助你更好地找到工作。官网:中文网:提高你的学习效率当一个人决定自学写代码时,他面临的最困难的问题是什么?事实上人们通常根本不知道学什么————选择什么语言?怎样去学习?通过什么学习才是最有效率的……人们总会先搜索一下自己想学的东西,也必然会搜到很多在线的编程教学。接下来我们基本上都会在这些资源里面挑选尝试几种,最后选择一种最适合我们的。有的人喜欢教程指引,有的人喜欢教学视频,有的人喜欢读文档等等……这听起来很正常也很有道理不是么?不。事实上,有且仅有一种学习方式的效率要远超于其他方式。废话不多说,接下来我将介绍并说服你,为什么你一定要选择这种学习方式。在实践中学习我猜你可能也预料到我会这么说。首先,请把你的成见放到一边。我并没有说你必须抛弃所有别的学习方法。所有的在线教程和教学视频自然有他们各自的功效,待会儿我也打算展开来介绍一下。先举个例子,有时了解一种新的技术或框架,阅读教程文档就是最有效的办法。问题的关键在于,我们总会(至少我自己是)把时间耗在那些让我们感觉轻松的学习方式上。即使到了我们该独立完成一些事情的时候,看视频跟教程简直是太轻松了,就好像把饭递到了我们的嘴边。而且让我们自我感觉良好,我明明是在看教学视频啊?我明明是在读教学文档啊?我不是在学习么?谁敢说我在浪费时间?我明明是在填补知识上的空白!更可怕的是我们总倾向于相信这样的学习方法是最有效的。享受安逸,不思进取是人性的弱点。我也自欺欺人了很久。把你的头脑放清醒动手做项目……听起来并不新鲜,我们内心深处都明白这是利用自己时间和精力的最好方式,能够让我们更快地达到自己的目标。但我们为什么不愿意去做呢?懒惰……我在 (要是你正在被惰性折磨可以读读)中谈论过懒惰,所以让我来解释一下为什么我在这个问题上如此坚决,然后说服你把精力集中到开发项目上来。就好像黑客帝国里的男主角一样,面前摆着红色和蓝色的两个药丸。我们可以选择继续蒙蔽自己,在自我感觉良好和安逸的幻象里继续自欺欺人;也可以选择吃下红色的药丸,然后面对现实,不断接受更难的挑战才能取得真正的进步。(如果你还没有看过黑客帝国,那你最好还是去看看)下面是我在实践中总结的,一些可以帮助你立即着手开始完成开发实践项目的建议。事实上你需要的时间可能远远少于一年(难以置信?)我并不是信口开河,而是和很多Free Code Camp多隆多学习小组的成员聊天,以及遍布全世界的学员们的经验总结得出的这个结论。我发现在大多数情况下,学员们都能够在完成FCC的前端开发认证之前就找到工作。他们开发了一些课程中的项目,然后开始投简历,很快就找到了一份Web开发的工作。如果你一直关注着FCC的频道,你一定能够找到很多类似的案例。(译者注:我所了解到最快找到工作的案例是一位来自大连网名叫做浮生的同学,仅用了一个月在FCC上学习前端开发,同时投递简历,就成功地在拉勾网上找到了一份8K每月的工作)需要注意的是,不同的地区对Web开发者的需求不同。以多隆多为例,这儿有无数的前端开发者岗位等你应聘。(译者注:北上广深一类的也一样,需求还是很大。)FCC官方建议你应该完成总计2080小时的课程学习。这样你掌握的知识和技能也能让你应聘到更高级的职位。我们来计算一下:FCC的前端开发认证课程总计约478个小时,具体完成多快因人而异,一些在此之前有基础的同学完成可能快一点,但我们仍然把478小时作为统计上的平均用时。为什么你需要的时间少于一年呢?从统计上来看,我们大约需要学习9个月。每月按30天计算一共是270天。478小时/270天大约是每天学习1.8小时。这个结果意味着我们每天只要拿出不到2小时的时间学习前端开发,9个月后就能胜任相应岗位的工作了。我知道对于有些人来说,每天拿出两个小时的空余时间学习也很苦难,但大部分人还是有可能抽出足够的时间的,时间比较紧的人可能需要更久学完,但在周末和假期,或者是挤时间,我们总能凑足学习的时间。如果你想知道该怎么找时间来学习编程,不要犹豫直接来上找我,我很乐意帮你。我自己就花了大概14个月的时间才学完。这篇文章解释了其原因————我犯了所有我在文中提到的错误。当我在给你建议时,其实也是在提醒我自己。我们都是一样的。我在完成FCC的前端课程之前就找到了工作,但我知道FCC可以提升我的技能,所以就回来继续完成课程中的项目。我在我的一些文章中附上了我的Codepen链接,如果你仔细查看就会发现我的进度到底有多慢。所以我们一起来完成FCC的课程吧!在我最近学习编程的所有计划里,完成FCC的任务是最优先的。这篇文章写给你也写给我自己————来鼓励我们克服苦难,提高效率,更快达到我们的目标。保证你掌握了一定的基础我确信,在你刚开始学习的时候,必然要通过一些教程和在线交互学习来奠定HTML/CSS/JavaScript的基础,学习编程的思维方式,熟悉一些最核心、基本的知识点。如果什么都不了解就开始尝试做项目,必然会很有挫败感。但是掌握基础的时间也不要拖太久,入门其实真的挺快的。我当初学习HTML/CSS/JavaScript的时候,通过不同的途径学习了很多相似的内容,想着这样也许会让我对知识的掌握更全面。它们确实有所帮助,但我后来才意识到,这些资源挡住了我去学习更具挑战更有趣的知识的脚步。不要陷入死循环,反复地浏览那些你已经了解了的内容。不要半途而废当你刚开始开发项目的时候,肯定会遇到很多坑。只要你坚持住,过一段时间你就能克服这些困难,但很快你又会掉进另一个坑。我们每个人都没法逃避这样的事情。每当处于这种境地时你就会浑身难受————那么就做点别的事情吧,暂时逃避一下,等我掌握更多知识的时候再回来处理,我会回来解决它的。休息是有必要的。但是我们怕休息会逐渐转变为懈怠,走向学习编程从入门到放弃的道路。为了避免惨剧发生,我们不做实践项目的时候,可以去学习一些相关的教程和在线课程。人总是很容易懈怠。你不去学编程也没有人会提醒或者批评你。只有你自己才知道到底是怎么回事(胆怯、逃避、懒惰),而下定决心完成开发项目的也是你自己。相信我,宝剑锋从磨砺出,梅花香自苦寒来。想想拿着中英对照的两本书学外语的人是怎么过来的,他们就是持之以恒地读下去而已。不要好高骛远仰望星空是不错,但我们还需要脚踏实地。我总是听人说:“我想要开发一个在线应用,人们可以在上面为他们的宠物创建账户,上传照片,支持地理定位还有别的……我最近才刚开始学写代码,但我已经准备好实现我的想法了。”每每听到这里我整个人都斯巴达了。我可以很容易地预见这类人先是定下宏伟的目标,充满激情举步维艰地做着努力,逐渐发现他们的才华配不上他们的野心,然后开始感到失落,直到半途而废。最糟糕的结果是这样的人最后放弃完成开发项目,甚至从此放弃学习编程。所以我推荐从简单的小项目入手,每当你完成一个,都会积攒起成就感,并且对大项目的结构也能有一个更好的了解。例如一位作家打算写一部鸿篇巨著,必然要先通过写一些小故事,聆听人们的意见,提升文笔水平,待万事俱备之后才能真正开始。从哪里找到练手的好点子我所了解的最好地方就是FCC了。以前每次我问我的开发者朋友,我着手开发的第一个项目应该是什么?他们总是没有一点新意地回答我说做一个TO-DO List(待办事项)应用吧。要是我们还继续开发TO-DO List,总有一天它们会淹没整个互联网。(译者注:有一个项目,收集了用所有js框架开发的待办事项应用)FCC提供了很多有趣的小项目,按照从易到难的顺序排列。更妙的是每个小项目都专门教你掌握特定的知识点。例如检验你对HTML/CSS的掌握,教你怎么使用API,锻炼提升你的js技能等。FCC是你尝试开发实践项目最好的地方。你完成的每个作品都能够在社区中得到反馈,在你完成之后也可以看看别的同学是怎么实现相同的功能的。另外你也可以通过搜索引擎寻找酷炫的练手项目。(译者注:)先规划后动手每当你着手开始一个项目的开发时,先把你要实现的功能列出来。可以通过罗列用户需求的方式,例如“当用户点击播放按钮时可以播放音乐”“用户可以输入邮箱密码登录也可以通过Facebook登录”。你的代码最好也保持一定结构,在你正式编码之前。可以先写一些“伪代码”————其实就是用文字描述你开发项目的每个功能模块。基本示例//当用户打开页面时,抓取他的地理位置信息 \n//发送位置信息请求天气API \n//获取返回信息 \n//将温度展示在页面上 \n//根据天气改变背景图片\n但也要把握一个度,不要事无巨细地长篇大论,描述清楚每个关键点就足够了。有一个很恰当的例子————你在学校写论文的时候,总是要先写提纲,首先是介绍观点,然后通过三个要点来论证你的观点,最后是结论。写代码前先列提纲有助于你理清思路,避免遇到不必要的麻烦。遭遇挫折很正常像我之前说过的,踩坑受挫是很正常的事情。这并不能证明我们的智商有问题,只是我们还没接触过一些知识罢了。不管是在学习还是在工作中,你总有受挫的时候。你越早坦然面对越好。这将有助于你更快取得进步。编程本身就是一种创造性解决问题的思维。假若你没有遇到难倒你的问题,一定是因为你没去迎接挑战。旱鸭子是学不会游泳的!最最最重要的,一定不要怀疑自己的智商。我遇到过很多人,他们最开始轻松加愉快地完成基础的HTML/CSS/JS小任务,每天能刷30-40关,然后遇到了初级算法题,结果每天只能做1-5道题,之后他们就开始怀疑自己的智商,认为自己不够聪明,不适合当程序员。我曾经也是一样。我觉得肯定有人不当回事地就通了关,我难以接受自己缓慢的学习进度。现在我想通了:我能给你的建议是:保持循序渐进你需要找到位于“你能轻松解决的问题”和“企及不了的难度”之间的练手项目。(译者注:就像在用Keep运动软件训练时说的:身体很累但还能坚持,强度就是合适的)我已经谈论了很多不断重复学习简单知识的危害,现在让我们来看看反面:困难的事情。当你面对困难的任务时,你首先应该想到的是试着去完成它。从最基本的结构开始,尝试写出代码。要是你遇到了一连困扰你三天的难题,那么先把它放到一边,在找一些类似但是更简单的事情来做。我的体会是,当我在做别的事情时,尚未解决的难题仍然在我的潜意识里,我时不时的会思考解决它的方法。也许在我洗澡或者洗盘子的时候,灵光就突现了!虽然这也时灵时不灵。但我想表达的观点是:不断接受小的挑战才能逐渐取得进步,其余的都是浪费时间。适应能力我想和你们分享一个我最喜欢的词:适应力————一个系统在不崩溃的前提下经受冲击的耐受力,在必要的时候修复,在可能的时候提升自身。适应能力是作为开发者(或者希望取得成就的人)必备的一项品质。准备好面对困难、迎接挑战、接受对你作品和设计以及解决方案的批评,未雨绸缪。你会怯场么?去你的当地社区给大家教Web开发基础吧,或者报名参加一些讨论会。你对你没被聘用的面试结果感到失望?你总是担心太晚开始学习编程了?对你完成了的项目感到不满?回顾一下:你能从中吸取到什么教训,下次才能做到更好?怎么弥补你的短板并变成强项?例如,你可能会担心,已经在别的领域工作了好多年再转行当程序员是不是太晚了。换角度思考一下,也许编程行业就是需要接纳来自不同背景的人。是你的到来让IT行业更加丰富多彩!要是你听到一个声音说“你不会画画,”那么不管怎样你开始画吧,然后那个声音就沉默了。————文森特·梵高这里推荐你看一些励志书籍。(译者注:原文列出三本英文励志书,书店最不缺的就是励志作品,随便看几本打打鸡血吧!)为每一天都制定目标为了更快进步,你需要每天都取得一定进展。不要制定结果目标(例如今天要完成某项功能的开发),为每天确定一段固定的编程时间,每天不要超出半个或一个小时。我知道你可能会急功近利定下每天编程3小时的目标还尝试着坚持下去。但这注定是不能长久的。有一个合理的时限————例如每天半小时,你知道你肯定能够达到这个目标,而且你可能还有多的一个半小时用来学习编程。这种感觉很棒,因为很多时候你都算超额完成了。设定时限目标不仅仅是一种心理暗示。试想你有一个重大任务需要完成,你不停的延误直到最终期限将至,你好不容易拼命完成了,结果差强人意,但你整个人都精疲力竭了。要知道,自学的时候除了你自己,没有人会督促你。假如你设定的是结果目标的话,你并不能保证自己每天都完成某项功能的开发,而一旦你完不成,便会有挫败感。负面情绪的累积慢慢也会打消你学习编程的热情。对于时限目标来说,你每天都在取得进展。没有人在意你今天是否完成了某项功能的开发,重点是这一天你确实投入一定时间去学习了。这才是保持你动力的源泉。另一个妙处是,每当你坐下来写代码,各种点子和解决方案就会思如泉涌,就好像写文章来了灵感一样。这比你强迫自己坐下并抱有不切实际的期望强多了。复制代码纯属浪费时间在我们着手开发一个项目的时候,经常会不知道从哪里开始,或者遇到我们自己解决不了的困难————这些时候你都会有一股强烈的欲望,去看别人到底是怎么把那些代码写出来的。这样就能理清自己的思路,并把它们变成自己掌握的知识。但事实上并不会这样。不要拷贝别人的代码再自己稍微改改,一段,一个字都不要。如果是项目的完整代码————一开始绝对不要看。如果是你在StackOverFlow上查到的代码片段,确保你真的明白理解了之后,在尝试着自己写出来。这时你就会发现,即使你已经看了明白了,动手去写的时候依然不会轻松。就像学习绘画一样,这就是临和摹之间的区别。练习的时候必须独立自主。照着模板和现成的答案,你学不会任何东西。有的人随便写个Python脚本就把你照抄的这些工作自动化完成了。要是你陷入了这样的误区,一定要把关注点转移到真正的挑战上。再说个题外话。当你觉得很难理解一个问题时,试着去把它教给别人,至少是说出你自己的理解。通过这样的形式,在帮助别人的同时,你的理解慢慢就加深了。(译者注:能够教给别人是最高级的学习。)照抄会让你失去独立学习理解的机会。最好的解决办法是跟着相关的教程去学习。但一定不要就此逃避困难,不要回避挑战。转头去面对那些让你头疼的问题。只有当你自己完成了某个项目才有资格去看别人的代码。这时候你就可以尽情窥视了,还能学习开阔思路。每个你独立解决的问题都是你成长路上的进步和飞跃。不要分散你的精力每当你在开发一个项目中遇到瓶颈时,你总会想着先把它放到一边再做点别的。你又会感觉良好一段时间,直到你新开展的项目也遇到了障碍。这样你手头就有两个未完成的项目了,如果放任就会陷入恶性循环。解决的办法就是,在同一时刻最多只开展两个项目,当其中一个遇到了问题实在解决不了就去做另一个,另一个也遇到问题就放在再回头来看这个。一定不要再分散你的精力了。(译者注:这就好像做作业的时候,写写语文再写写数学就不会那么痛苦。)如何写好简历光凭你在简历上写的“我熟悉JavaScript,有四年工作经验”,人力真的很难了解你的真实水平。(Talk is cheap, show me the code!)写再多废话都不如你发布在网上的项目或者在线的个人简历。这至少能让人相信你确实会你提到的那些东西。但也不用太担心,并不是说全靠你的这些小项目别人就要考虑录用你。只是为招聘的人提供一个评估你技能的参考。不需要在你的简历里吹得天花乱坠,老板们更关心的是你真正能够做什么。有在线作品的好处是:老板一眼就能看明白你确实有两下子。他们能够通过你的项目了解到你在不断进步。他们知道了你还算是一个敢于把自己作品公之于众的开发者。根据我的了解和切身体会,项目经验是找到工作的最关键要点。面试时你要更努力在面试中,你很可能被问到要如何解决一些现实问题/如何开发一个投入使用的应用。面试官问这类问题只是想了解你解决问题的思路,并不是要你立马拿出理想的解决方案。有时他们甚至会抛出一些无法解决的问题来看你的反应。你需要通过大量的实践练习来应对:其实每一个大的项目都是小的功能模块的组合。另外你还可能遇到很多需要你动手编码的小题目。这是我之前在面试我现在的工作时被考到的一个例子。代码虽然写得不怎么样,但我能够完成它,全凭之前在学习的经验。取得真正的进步这就是你没法通过教程学习掌握的东西。你感觉学完了教程就好像掌握了某项技术的所有关键。可当真的让你用这项技术去开发个项目时你就傻眼了。为什么总是这样?因为教程已经是编写教程的人对某项技术的理解(译者注:学习教程就好像吃别人嚼过的),而且一篇教程根本不可能归纳所有要点。不断地遇到困难克服困难才能不断进步。害怕开展新项目怎么办?我自己就是这样。每当我完成了一个小项目时总会沾沾自喜一会儿,可当我读完下一个题目的要求之后,就开始有点胆怯了。我开始思考我要从哪里开始?我该先干什么?我上一个项目到底是怎么搞完的?我啥也不懂!这里有一些办法解决这样的窘境:首先,看看那些你已经完成的项目吧,它们当初看起来也很令人畏惧。可是不管怎样你都克服并完成了。回顾自己过去取得的成就可以让你重新获取自信,迎接新的挑战。另外就是把一个项目拆解成一个个的小问题去解决。从小问题入手很容易就能开展了。不要完美主义你并不是要创造什么惊天地泣鬼神震惊整个业界的大发明。你要做的只是完成题目的要求,通过开发项目来学习编程技术/语言特性/框架功能……然后再尽力改进你的项目,外观设计也罢,功能品质也好。但也要适可而止。你并不是在参加国际艺术锦标赛。你只是通过开发这些小项目来练手学习,不要被它们吓着了。欲速则不达。要是我在写这篇文章开始时就担心写好写不好,写得不够好,我就写不到这里了。我只是知道这是一个人们都比较关注的话题,我自己也需要总结一下我所了解的,最后能够帮助一些人解决他们在编程学习过程中遇到的实际困难,这就足够了。要是所有的事情都必须完美,还会有素描在艺术界的容身之处么?正是不完美才造就了独一无二。(译者注:这里最好的例子应该是断臂维纳斯。)保持你的创造力不要死板的好像你开发出来的项目必须和题目的示例一样。编程不只是科学更是艺术。对于前端开发来说就更是这样了。假如你正在开发,你完全可以选择自己最喜欢角色的经典台词作为内容。假如你正在开发一个游戏,你可以随意设计界面和音乐。特立独行,释放真我!在你的项目里烙上自己独特的符号。除了满足题目要求之外,剩下的事情怎么做完全取决于你。这是我之前开发的一个,对比一下题目上原本的示例,你完全可以发挥自己的想象力。Web开发,编程,都给了我们充分的自由,永远不要局限自己。成为你想成为的人,做你想做的事,面对生活中的所有都是这样,包括写代码也一样。有个性的东西才有感觉!想想超现实主义画家毕加索。一般单独看画你能认出来是谁画的么?但毕加索的你一眼就能看出来。偶尔可以放松一下做开发项目的间隙也可以放松一下,但你不能放纵自己。一般休息最好不要超过一个星期。在这期间你可以看看别的教程或者在线课程之类的。最好是和你现在所学知识或者你在项目中需要用到的知识相关的内容。另外在上班通勤,上不了网的时候看看编程书籍或者教学视频也都挺好的。确保你再次坐下写代码时,你是真的把心放到了实践项目上。获得你开发项目的反馈开发实践项目还有一个好处,就是你可以把你的作品分享给别人,获取真实的反馈。但要注意别把你的小项目发给那些爱吹毛求疵的人。试着去找一些真正的开发者,或者比你稍微厉害一点的同学。让他们看看你的代码并给你一些建议。哪里可以提高,哪里写的比较好,哪里不是。这对你的学习进步大有裨益,因为从别人的角度可以看到那些你遗漏了的东西。我个人亲身体会到,相较于看视频、读书、参加在线课程这些方式,动手做实践的学习效率是最高的。希望你在学习过程中也能获得相同的体会。译者的话:我在这里只能保证通过实践项目来学习,learning by doing是最高效最有效的学习方法,fcc也为此提供了一个最优的平台,但最后通过这种最好的学习方法,真正能够掌握到多少还是要看你自己的努力,这就好像原来上学的时候同样的老师,同样的教学环境但是有成绩好坏不同的学生一样。不要好高骛远,不要心浮气躁,不要自欺欺人。学习使你快乐,祝你好运!","updated":"T09:40:03.000Z","canComment":false,"commentPermission":"anyone","commentCount":79,"collapsedCount":1,"likeCount":790,"state":"published","isLiked":false,"slug":"","lastestTipjarors":[{"isFollowed":false,"name":"卢小杰","headline":"","avatarUrl":"/v2-1f98b265bb5e622b7113_s.jpg","isFollowing":false,"type":"people","slug":"lu-xiao-jie-38-41","profileUrl":"/people/lu-xiao-jie-38-41","bio":null,"hash":"5f0dc23c6ec4a9e3ec48d5","uid":329200,"isOrg":false,"description":"","isOrgWhiteList":false,"avatar":{"id":"v2-1f98b265bb5e622b7113","template":"/{id}_{size}.jpg"}},{"isFollowed":false,"name":"李大树","headline":"\"There is no duplicate thing under the sun.\"","avatarUrl":"/v2-bbbf5bc17ccae0bad1075fe_s.jpg","isFollowing":false,"type":"people","slug":"li-wei-ge-16","profileUrl":"/people/li-wei-ge-16","bio":"\"后锋\"而不折衷的建筑学徒","hash":"41baaa1fd6ef40ed0aa61e93","uid":76,"isOrg":false,"description":"\"There is no duplicate thing under the sun.\"","isOrgWhiteList":false,"avatar":{"id":"v2-bbbf5bc17ccae0bad1075fe","template":"/{id}_{size}.jpg"}},{"isFollowed":false,"name":"大雨治水","headline":"","avatarUrl":"/c1bb6a4abacecb1ff0bbf838ab3a4e08_s.jpg","isFollowing":false,"type":"people","slug":"da-yu-13-42","profileUrl":"/people/da-yu-13-42","bio":"产品运营!设计","hash":"4d4cf69a92a7e5d36eb92fe8e5dc87aa","uid":008000,"isOrg":false,"description":"","isOrgWhiteList":false,"avatar":{"id":"c1bb6a4abacecb1ff0bbf838ab3a4e08","template":"/{id}_{size}.jpg"}},{"isFollowed":false,"name":"李晨","headline":"","avatarUrl":"/bba30ec612f06d1c33daa75e505e62dc_s.jpg","isFollowing":false,"type":"people","slug":"li-chen-31-92","profileUrl":"/people/li-chen-31-92","bio":"走走,看看。","hash":"e4e11f711be88ad3fa7cbd6","uid":32,"isOrg":false,"description":"","isOrgWhiteList":false,"avatar":{"id":"bba30ec612f06d1c33daa75e505e62dc","template":"/{id}_{size}.jpg"}},{"isFollowed":false,"name":"王梦亭","headline":"The time you enjoy wasting, is not wasted.\n不悔经行处,只恨太匆匆。","avatarUrl":"/43e357c08c7e74d2ad3ec7_s.jpg","isFollowing":false,"type":"people","slug":"bai-yi-27","profileUrl":"/people/bai-yi-27","bio":"脑洞清奇的文艺中二病。","hash":"1ef8ffcdfc1f3","uid":925100,"isOrg":false,"description":"The time you enjoy wasting, is not wasted.\n不悔经行处,只恨太匆匆。","isOrgWhiteList":false,"avatar":{"id":"43e357c08c7e74d2ad3ec7","template":"/{id}_{size}.jpg"}},{"isFollowed":false,"name":"wei shi","headline":"写字。画画。篮球。足球。跑步。看书。。。。。等等。。。","avatarUrl":"/36bec50a31841fabd29d4_s.jpg","isFollowing":false,"type":"people","slug":"wei-shi-33-77","profileUrl":"/people/wei-shi-33-77","bio":"爱好广泛","hash":"a52fdeb1a701adc0613d","uid":017300,"isOrg":false,"description":"写字。画画。篮球。足球。跑步。看书。。。。。等等。。。","isOrgWhiteList":false,"avatar":{"id":"36bec50a31841fabd29d4","template":"/{id}_{size}.jpg"}},{"isFollowed":false,"name":"青森","headline":"","avatarUrl":"/v2-d0f3cf841e64d52b2d68e62b54ef11c0_s.jpg","isFollowing":false,"type":"people","slug":"qing-sen-29-70","profileUrl":"/people/qing-sen-29-70","bio":"前端学习者","hash":"83f1d44abd6","uid":232500,"isOrg":false,"description":"","isOrgWhiteList":false,"avatar":{"id":"v2-d0f3cf841e64d52b2d68e62b54ef11c0","template":"/{id}_{size}.jpg"}},{"isFollowed":false,"name":"Kevin","headline":"","avatarUrl":"/989e70cbcadfab2c55023ec_s.jpg","isFollowing":false,"type":"people","slug":"kevin-36-79","profileUrl":"/people/kevin-36-79","bio":"web","hash":"786e23d6ea053dff0ce055cfdb96d62f","uid":102000,"isOrg":false,"description":"","isOrgWhiteList":false,"avatar":{"id":"989e70cbcadfab2c55023ec","template":"/{id}_{size}.jpg"}}],"isTitleImageFullScreen":false,"rating":"none","titleImage":"/fbf0bebcaff94cd19dc488b3_r.jpg","links":{"comments":"/api/posts//comments"},"reviewers":[],"topics":[{"url":"/topic/","id":"","name":"前端开发"},{"url":"/topic/","id":"","name":"前端入门"},{"url":"/topic/","id":"","name":"Web 开发"}],"titleImageSize":{"width":1280,"height":720},"href":"/api/posts/","excerptTitle":"","column":{"slug":"icode","name":"从零学习前端开发"},"tipjarState":"activated","tipjarTagLine":"好好学习,天天向上","sourceUrl":"","pageCommentsCount":79,"tipjarorCount":12,"snapshotUrl":"","publishedTime":"T17:40:03+08:00","url":"/p/","lastestLikers":[{"profileUrl":"/people/hai-wan-72","bio":"搬砖~","hash":"e482dcca8bad836f9d67d115","uid":110800,"isOrg":false,"description":"","isOrgWhiteList":false,"slug":"hai-wan-72","avatar":{"id":"v2-aeabe90c142d","template":"/{id}_{size}.jpg"},"name":"海湾"},{"profileUrl":"/people/fei-le-lai-68","bio":null,"hash":"718c1e16e7d3e7ef6f85e","uid":222200,"isOrg":false,"description":"年少不得我,前路任驱使。","isOrgWhiteList":false,"slug":"fei-le-lai-68","avatar":{"id":"da8e974dc","template":"/{id}_{size}.jpg"},"name":"废了来"},{"profileUrl":"/people/njzyblog","bio":"非淡泊无以明志,非宁静无以致远。","hash":"bd6cd4b0f687d0bf2ed7350","uid":80,"isOrg":false,"description":"","isOrgWhiteList":false,"slug":"njzyblog","avatar":{"id":"v2-96966b26cdd3cafc5ecd093e","template":"/{id}_{size}.jpg"},"name":"njzy"},{"profileUrl":"/people/wei-feng-tang-tang-57","bio":"神出鬼没","hash":"bfbfb4ad6911","uid":356000,"isOrg":false,"description":"每天帅醒","isOrgWhiteList":false,"slug":"wei-feng-tang-tang-57","avatar":{"id":"v2-37f92d98fedb29e7cdb5b4","template":"/{id}_{size}.jpg"},"name":"Hey-J"},{"profileUrl":"/people/zhu-meng-xing-chen","bio":"大三,找前端实习","hash":"35b3ffd6868717acecd4a9","uid":110900,"isOrg":false,"description":"","isOrgWhiteList":false,"slug":"zhu-meng-xing-chen","avatar":{"id":"v2-874ce8aba5c6cc1125d4ddaa8ad0b4c3","template":"/{id}_{size}.jpg"},"name":"小人物vs大梦想"}],"summary":"原文链接:原文作者 (Software Developer at Vretta Inc. One of the FreeCodeCamp Toronto Campsite Leaders.)背景说明文中提到的FreeCodeCamp(以下简称FCC)是全球最火的Web开发学习平…","reviewingCommentsCount":0,"meta":{"previous":{"isTitleImageFullScreen":true,"rating":"none","titleImage":"/a5a21713fbeabfc44c36d7_r.png","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"前端开发"},{"url":"/topic/","id":"","name":"前端工程师"},{"url":"/topic/","id":"","name":"网站推荐"}],"href":"/api/posts/","excerptTitle":"","author":{"profileUrl":"/people/yubolun","bio":"","hash":"83a3b10a446f936a77f07f78870b5eec","uid":96,"isOrg":false,"description":"","isOrgWhiteList":false,"slug":"yubolun","avatar":{"id":"5a6f5a9ca7fecba72f27bade8ac47881","template":"/{id}_{size}.jpg"},"name":"余博伦"},"column":{"slug":"icode","name":"从零学习前端开发"},"content":"原链接:前端开发的技术进步很快. 前端开发者的重要职责之一 是了解最新推出的工具, 最新的潮流以及开发流程.每天都有成千上百的前端文章发布出来, 你不可能把他们全读了. 我们认为你应该用聪明的方法来跟上最新的方向, 因此我们创建了这个\"食谱\"我只是根据原链接的内容结构重新收集了这些国内的资源推荐。如果你英文不错,而且想要紧跟国际流行趋势,那么也可以去关注原链接里的那些推荐资源。关注大牛Follow cool people -
-找到最好的在线资源Find the best sources参加各种线下活动Attend conferences总结出你自己的学习方法Get your own sources阅读新闻,阅读标准,看看大牛们最近都在做什么,总结出属于你自己的方法。其他前端资源收集列表","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T10:49:16+08:00","url":"/p/","title":"如何紧跟前端流行趋势","summary":"原链接:前端开发的技术进步很快. 前端开发者的重要职责之一 是了解最新推出的工具, 最新的潮流以及开发流程.每天都有成千上百的前端文章发布出来, 你不可能把他们全读了. 我们认为你应该用聪明的方法来跟…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":0,"likesCount":0},"next":{"isTitleImageFullScreen":true,"rating":"none","titleImage":"/955f6b57aa98a313fefea_r.png","links":{"comments":"/api/posts//comments"},"topics":[{"url":"/topic/","id":"","name":"Web 开发"},{"url":"/topic/","id":"","name":"高效学习"},{"url":"/topic/","id":"","name":"前端入门"}],"href":"/api/posts/","excerptTitle":"","author":{"profileUrl":"/people/yubolun","bio":"","hash":"83a3b10a446f936a77f07f78870b5eec","uid":96,"isOrg":false,"description":"","isOrgWhiteList":false,"slug":"yubolun","avatar":{"id":"5a6f5a9ca7fecba72f27bade8ac47881","template":"/{id}_{size}.jpg"},"name":"余博伦"},"column":{"slug":"icode","name":"从零学习前端开发"},"content":"原文链接:作者: Software Engineer具备高效的学习能力和编程能力同样重要。作为一名开发者,即使你的精力被微信、微博、知乎(译者注:原文是Hacker News,Twitter,Reddit,Facebook)分散,你每天在工作中都需要学习。在上班的时候你经常会遇到新的代码库和技术挑战。回家看看开源项目和别人的作品,也需要你跟进他们的进度。技术发展变化非常快,你会发现你无时无刻不在追赶着新的工具、语言、框架的潮流。常言道:学如逆水行舟,不进则退。在过去的一年里,我从一个连Chrome调试台都打不开的小白,变成了一个在一流电子货币加密公司的开发工程师,我非常快地掌握了编程的能力。但是,学习对我来说并没有那么轻松。坦白来讲,在学习的过程中充满了煎熬。有太多的未知和不确定。“这样我怎么坚持的下去呢?”我想。“要是每天学习写代码这么痛苦,我会疯掉的,看来我对编程并不感兴趣吧?”“要是我感兴趣的话不应该觉得轻松点么?艺术家搞创作的时候需要绞尽脑汁么?作家也会江郎才尽么?运动员也会遭遇瓶颈么?我们去做自己感兴趣的事情时都会觉得难受么?”“学习不该使我快乐么?”学海无涯有捷径么?有是当然有。学习新的编程知识是很难受的,因为它需要你自律和努力。但你可以痛并快乐着。怎么才能获得学习的快乐呢?很简单: 我改变了我对学习的看法。学习并不是困难的而是有趣的。请容我在接下来的篇幅里娓娓道来。万事开头难学习写代码最难的就是开始。试想一下你要学习的第一门编程语言。你首先要了解它的语法和格式。你还得理解值、类型、操作符、控制流、函数、高阶函数、作用域、闭包、递归等等……这就好像是学杂耍——一上来就让你耍18颗球一样。最早我用了好几个礼拜才理解了闭包到底是什么玩意儿。我读文档的时候感觉我理解了,当我准备应用一个闭包时,就又不知所措了。这是很普遍的,作为一名老师我了解到:想要理解一个新的概念,往往需要你尝试一次、两次甚至更多。但只要一个人坚持的足够久,总会有豁然开朗的时候。就像当我读完了无数有关闭包的博文、Stack Overflow和文档之后的体验。每一段我阅读过的材料都让我有了一些新的理解,直到最后我完全理解了闭包。理解闭包对我来说意义深远,因为成就感鼓励了我继续前行,后来我甚至自己写了一篇解读闭包的博文。学习是过程,不是结果如果我们把“学习”视作我们必须完成的一件事,我们就会急功近利。这样我们才能赶快完成好在课余时间去玩玩别的。只可惜学海无涯,学无止境。要是你把学习当作一场赛跑,你永远也到不了终点,反而会带来失落和失望。相反,如果你把学习理解为一种过程,你就能体会和感受到一点一滴的进步,这也将鼓励你继续前行。学习就好像锻炼一样。太剧烈了会受伤,你的伤痛会一直持续,甚至恢复之后你也忘却不了那种痛苦。以后每次运动的时候你都会记起。除非你每次的痛苦都能得到缓解,你慢慢的习惯和适应了它。最后你获得了强健的体魄和有型的身材,这也将鼓励你继续锻炼下去。运动是一个积极效应的循环:这在学习上也同样适用。学习可以渐入佳境试想你在构建你的第一款Web应用。最一开始你只能面对一屏幕空旷的代码编辑器。开发工作对你来说像是不可能完成的任务。你什么都不懂,在你真的能开发出来个什么玩意儿之前还有太多东西要学。令人欣慰的是,你还是勇敢的去尝试了。从现在开始,你每次只关注和完成一个小点。首先是构思你的应用。你要做个什么出来?目标用户是谁?有什么困难?之后,你开始画一些你脑海里构思的草图。并拿给你的朋友或者发到网上给别人看,再慢慢改良它。再然后,你去搜索那些最适用你开发这个应用的工具、框架、语言。脚踏实地的,你绞尽脑汁去完成你的目标。有时候你可能写写代码。更多的时候是在处理Bug和暂时解决不了的难题。有时候你实在烦的不行,那就休息一下。或者别的时候你不想写代码,但是可以去看看相关的文章资料。最后,经过几周的努力,你终于为你的构想打好了基础。这时,开发你的应用感觉上就不那么痛苦了。你从之前的努力中获得了成就感,接下来你只需要完善功能就好了,就像你之前已经做过无数次那样,这根本就不是事儿。你把一项令人痛苦和胆怯的工作转换成了循序渐进,享受其中的工作。这就是成长,这就是进步。不管是编程、跳舞、跑步、阅读:他们都不轻松,而且学习是没有止境。你要享受你付出其中的过程,享受随之并来的痛苦。你慢慢会理解到那不能称得上是痛苦——而是一种个人努力的成就感和自我满足。换句话讲,煎熬和享受都是相对的。记住这个循环:一种学习技术的方法下面我介绍一种我所掌握的学习方法。可这并不是什么终极秘籍,如果你有不同的意见,可以在评论区提出。我们拿如何学习来举例。明确你学习的目的首先:我要先搜一下有关React的文档,了解一下这个框架的背景和它想解决的问题。明确“为什么”对于你的学习是非常有帮助和意义的,他回答了下面这些问题:它的独特之处在哪里?学这个对我有用么?它主要是为了解决什么问题?它只是昙花一现哗众取宠的小玩具,还是能够从此改变我对编程的理解?了解核心概念其次:我会认真读完文档里的介绍和示例。到目前为止我还没有上手尝试。阅读一项技术的核心概念一定要在动手实践之前。这对你之后的学习至关重要。这也使我避免了在不知道React是个什么玩意儿的情况下就稀里糊涂地用它,搞堆Bug出来。尝试编码之后,当我有一种我已经了然于胸的感觉时,就是我上手实践的时候了。我开始跟着视频教程试着用这种新框架编写一些非常简单的小东西,或者跟着文档里的教程指引写写代码。遇到坑我不可避免地会掉到坑里。读文档当然小菜一碟,可是自己实践的时候就完全不知所措。这时我开始有半途而废的念头。但遇到困难正是应该迎头而上的时刻。没有付出哪儿有回报。只有懦夫才会放弃!接下来我开始做这些事:首先我需要确定一下我到底遇到了什么Bug,之后假设几种导致它的可能性,即使我还不太了解,猜猜也罢。接下来离开电脑跟前,稍微放松一下换换心情换换气。可其实心头上总是难以放下那个我没有解决了的问题。接下来我根据我的假设开始调试——而不是直接去网上搜答案。要知道,全凭自己的思考获得答案是一种非常难能可贵的体验。即使你犯了很多错误,它也能加深你的印象好下次不再犯。如果我的假设被验证了,那么万事大吉!反之,我就会去搜文档,博客,或者Stack Overflow或者任何其他可以辅助我的资料。当我阅读这些资料的时候,我会把那些可能帮到忙的信息记录下来。还是没有办法?没关系,即使我搜的这一大堆资料对解决目前的问题没有帮助,我也通过阅读学到了很多,而且它们也有可能解决我之后会遇到的问题。直到这时,我才会在知乎上提个问题(译者注:原文为Stack Overflow)或者问问同学同事。与此同时,我会不断地重复研究这个问题,它总有被解决的时候。有时候这个过程可能只需要几秒,而有时候需要几个小时甚至更久。无论怎样,在这个过程中你都能学到很多东西。在编程中解决Bug就好像在隧道里寻找射灯一样。你总会找到它,可是沿途你会发现和了解更多有关隧道的信息。在学习上,这些了解正是你的收获。调试错误其实是一个了解和发现的过程,享受它吧。温故而知新在学习的过程中,我开发了一些简单的小东西,跨过了一些坎。就像你所了解的,这过程肯定纠结,我需要用这个新工具进行更多实践。所以接下来我会在开发一些练手小项目。不是好高骛远地去搞一个大项目,而是做一些可以构建我应用的基础模块。例如我在网上看到一个用React写的有增删改查功能的待办事项应用。那么我可以做一个另外一种形式的增删改查的,确保我能根据参考项目的逻辑写出来的,而不是可能会出错让我受挫的应用。掌握熟能生巧,所以我不停地构建小项目,知道我感觉我已经掌握了它的核心概念。最后,我开始试着不看文档和示例把所有的知识梳理起来。直到这时,我才会开始完全独立地做自己的项目。在整个学习过程中,我不断地挑战稍微难一些的任务,但也不至于难道打击的我不想干的程度。最后,我会在这项学习让我厌恶之前,赶快转移注意。学习使你快乐通过一些努力和方法,学习编程可以变得非常有趣。最初它看起来很复杂,我想这也是为什么很多人不敢开始的原因——并不是因为它无聊,而是因为它困难。通过不断地联系这种学习方法,它将会形成一种肌肉记忆。你不用太努力去想它。你只需要驾驭挫折和享受成就。就好像变魔术一样,学习变得轻松多了。你是如何学习掌握新知识的?欢迎留言分享!","state":"published","sourceUrl":"","pageCommentsCount":0,"canComment":false,"snapshotUrl":"","slug":,"publishedTime":"T02:04:36+08:00","url":"/p/","title":"掌握学习方法——作为开发者最重要的能力","summary":"原文链接:作者: Software Engineer具备高效的学习能力和编程能力同样重要。作为一名开发者,即使你的精力被微信、微博、知乎(译者注:原文是Hacker News,Twitter,Reddit,Fac…","reviewingCommentsCount":0,"meta":{"previous":null,"next":null},"commentPermission":"anyone","commentsCount":0,"likesCount":0}},"commentsCount":79,"likesCount":790,"FULLINFO":true}},"User":{"yubolun":{"isFollowed":false,"name":"余博伦","headline":"","avatarUrl":"/5a6f5a9ca7fecba72f27bade8ac47881_s.jpg","isFollowing":false,"type":"people","slug":"yubolun","bio":"","hash":"83a3b10a446f936a77f07f78870b5eec","uid":96,"isOrg":false,"description":"","profileUrl":"/people/yubolun","avatar":{"id":"5a6f5a9ca7fecba72f27bade8ac47881","template":"/{id}_{size}.jpg"},"isOrgWhiteList":false,"badge":{"identity":null,"bestAnswerer":null}}},"Comment":{},"favlists":{}},"me":{},"global":{},"columns":{"icode":{"following":false,"canManage":false,"href":"/api/columns/icode","name":"从零学习前端开发","creator":{"slug":"yubolun"},"url":"/icode","slug":"icode","avatar":{"id":"1a8fcada9ebb","template":"/{id}_{size}.jpeg"}}},"columnPosts":{},"postComments":{},"postReviewComments":{"comments":[],"newComments":[],"hasMore":true},"favlistsByUser":{},"favlistRelations":{},"promotions":{}}

我要回帖

 

随机推荐