编程难学吗


小学作文 2019-07-23 01:10:03 小学作文
[摘要]一:[编程难学吗]那什么是编程,编程难学吗?近年来大学最热门的专业无疑是计算机,而在中小学基础教育这块儿,编程热也是方兴未艾,连奥巴马也提出“编程要从娃娃抓起”。当我看到才小学二年级的女儿,都已经在学校学编程了,而七年级的儿子也才刚刚开始接触Scratch(MIT开发的简易编程环境),不禁有点按捺

【www.shanpow.com--小学作文】

一:[编程难学吗]那什么是编程,编程难学吗?

近年来大学最热门的专业无疑是计算机,而在中小学基础教育这块儿,编程热也是方兴未艾,连奥巴马也提出“编程要从娃娃抓起”。
当我看到才小学二年级的女儿,都已经在学校学编程了,而七年级的儿子也才刚刚开始接触Scratch(MIT开发的简易编程环境),不禁有点按捺不住。于是靠教编程谋生的我,生平第一次动了让13岁的儿子系统学编程的念头。
为什么要学编程?
现在任何行业都离不开计算机,会编程这项技能,在求职时就如同90年代会英语一样抢手。
学编程,不是为了将来当程序员。
而是为在自己行业里获得更多的机会, 比如说做财务的,工作中少不了和excel表打交道,即使对每个菜单功能都很熟悉,还是有需要定制一些专门的查询功能,这时编程就是不可或缺的技能。
也是因为计算机对今天我们的生活而言,就如同汽车对出行的重要。开车即使有定期去车行保养,学习汽车相关的知识,万一出行途中汽车发生故障也不至于惊慌失措;而且说不定因此感兴趣了,钻研进去,自己尝试做个升级改装也未尝不可。学编程,也是同理。电脑或是手机无论硬件还是软件,总会有出问题的时候,会编程的人可以自己做简单故障定位,也可以作为兴趣爱好在闲暇时间里做个网页,写给APP什么的。
【1】编程,学什么?
每次聊起学编程,被问到的第一个问题往往是“学哪种编程语言好”。
回答这个问题之前,我想问你,觉得自动档和手动档的车,哪种好呢?
当前初学者中最流行的Python和Javascript 就像自动档车,编写简单,强大库函数支持广泛应用;而最为经典的C语言就像手动档,难学难用,还需要通晓编译原理、操作系统和计算机体系结构,当然也最能体味驾驶的乐趣。
以前总觉得C语言对初学者太难了,这个想法今年5月在安大略省高中编程赛被彻底颠覆。一支由三个分别是五年级,七年级和八年级亚裔男孩组成的队伍特别醒目,年龄比其他选手小很多,却在由各个学区优胜者组成56支高中编程队脱颖且出名列第九。这三个孩子就是用C语言写的程序,C语言也是他们唯一接触过的编程语言。所以初学者具体学什么语言,因人而异。
思维指导行动。未来人人都会写代码,但程序设计是否简洁高效,就得在思维上见高低了。十年前,卡耐基梅隆大学计算机教授Jeannette Wing 提出Computational Thinking “编程思维”的概念,指出通过学习编程,内里培养的其实是认识问题和解决问题的思维方式,而这种思维方式可以跨界应用到其他领域的学习和实践中。
也就是说和编程语言相比,编程思维是内功心法,在此基础上,学习和使用哪种语言,犹如使用哪种兵器,只是工具层面上的东西。
【2】什么是编程思维?
编程思维的四个组成模块。
编程思维本质上来说,就是能够把现实生活中的复杂问题,逐步拆分成可理解的小问题,(Decomposition 拆分),接着根据已有的知识和经验,找出新问题和以前解决过的问题的相似性,举一反三琢磨出规律(Pattern Recognition 模式识别),然后将问题里涉及的数据抽象(Abstraction)到数据结构(变量,数组,链表等等),把数据处理过程可重复执行部分抽象(Abstraction)成函数模块,通过循环执行,最后根据前三步的分析成果,设计步骤,写出算法(Algorithms),从而解决问题。
编程思维本身是一个非常抽象的概念,下面我举个例子来详细解释一下它的四个组成模块。
【3】编程思维1-2-3-4
我们都听说过这样一个故事:数学家高斯在三年级时候,老师要求从1 2 3开始一直加到100,其他同学都费劲的一个数一个数的加,只有小高斯注意到了这些数可以两两配对,相加和为101:
1 100=101
2 99=101 等等
一共有50对,最后的和可以用乘法来做:(50X101)=5050
高斯的上述解题思路充分体现了编程思维中的拆分和模式识别,再进一步延伸,就可以概括出求任意范围【a, b】连续整数求和公式:(a b)x (b-a)/2。
把原题扩展一下:
假设你有100张扑克牌,依次编号,从1到100,打乱洗牌后,突然发现少了一张,怎么知道少掉的是哪张?
下面我们试着用编程思维一起来一步步的解决这个问题。
第一步拆分:通过一张一张的查找,先在这堆牌里找1,再在剩下的牌里找2,然后再找3,依次下来,最后总能发现哪张少了。这种方法的局限是如果牌张数少还行的通,如果张数多,费时费力的,但符合一般人的解题思路。
第二步模式识别:如果能联想到高斯的求和题,所有牌的面值总和应当是5050,将手上的牌一张接一张的加起来,假设得到的和是5040,用5050-5040=10,很快知道少掉的那张牌是10.这种方法比起前一种,明显棋高一着。
第三步抽象:扩展到现实生活中,假设有一副扑克牌,少了一张,如何快速定位少的是哪张?
一般情况下,我们都会重新理牌,先把4张Ace都找出来,再把四张2放在一起,依次下去,最后总可以看出哪张牌的哪种花色少了。
这种常规方法效率很低,如果联想到我们刚刚建立的求和模型,是不是可以用来更为快速有效的解决这个问题?粗看每个数字都有四种花色,不唯一,好像不适用。
但是如果我们能解决如何把扑克牌花色和数字映射到计算机可以处理的数据的问题,就可以试用刚才的求和模型了。这也是考验抽象的能力的时候了。
不妨按花色来,设红桃A 为1 , 红桃2 为2 ,依次到K是13,然后方块A为14,到方块K是26,以此类推,黑桃A到K是 27到39,梅花则是40到52。
这样一来问题就转化成了有52张扑克牌,依次编号,从1到52,洗完牌,发现少了一张,请问少掉的是哪张?是不是就可以很容易的套用第二步里总结的求和解题模型了?
再试想你有一千,一万,甚至上百万副扑克牌,每副都少一张(不尽相同),怎么能快速定位的少掉是哪些牌呢?
只要你能设计出快速定位一副牌里缺了哪张牌的计算方法,无论多少副牌,计算机都能在一眨眼的功夫,全部准确无误的给你找出来。计算机相对于人脑,有存储容量大和处理速度快的优势,所以计算机最擅长的就是重复劳动。能够让计算机从事高效的重复劳动的前提,是人先思考和分析怎样把复杂工作分解成多个可机械重复执行的模块,然后才可以通过程序让计算机来处理。而这步比写程序本身来的重要的多。
第四步 算法:当要处理的数据映射到合适的数据结构,可复用的处理模块也都分辨识别出来后,下一步就是利用条件,循环,子程序模块,来规划出程序设计步骤,从而解决问题。
所以说,编程思维的核心,不是编程语言,也不是语法,甚至不是算法或数据结构本身,而是如何分解问题,从中发现规律,建立解决问题的模型,并映射到合适的数据结构和算法上,然后才能根据算法写程序实现。在此过程中,前两步分解和模式识别,其实完全隶属数学思维范畴,也是编程思维的基础。而抽象和算法才是编程思维所独有的。 也是在孩子学编程过程中,最需要强调的。
【4】编程思维,怎么学?
从以上对编程思维的解析来看,培养编程思维的前提条件是有扎实的数学,尤其是代数基础。数学基础还没打牢,就开始学编程,无异于建造空中楼阁。
在孩子有一定代数基础的前提下,抽象思维和算法这两部分应该是编程思想的重点,也是难点,那么该怎么学呢?
如果对这方面有兴趣的话,我建议你了解AP College Board新推出的一门课程叫 AP Compute Science Principles,这门课过去四年在不少大学里已经试点开设,旨在教授编程思维和计算机科学中的核心基础内容。我打算让儿子自学的斯坦福的CS101课程也是因此而产生的。而AP Compute Science Principles这门课程从今年秋天起也会在高中开设,这是计算机教学领域里非常值得期待的一件事情。
回到学编程的话题,能够让孩子主动心甘情愿的学任何东西,大都满足两点要求:“有趣”和“有用”。因为有趣,才能激发其好奇心,去探索思考。因为有用,才能从中获得成就感,成为进一步学习的动力。
遵循以上两点,我给儿子制定了如下的编程学习计划。
第一周: http://lightbot.com/hocflash.html 这款基于Flash的可编程游戏,不用来学编程,单纯作为益智类类游戏来完也很有意思。 从最初的顺序执行指令,到后来引入条件,循环,和子程序,是训练编程思维的好工具。 其中子程序部分,非常考验孩子有效分辨可复用编程模块的抽像能力。
同时阅读Blown to Bits的部分章节 http://www.bitsbook.com/excerpts/ ,全书的PDF版可以在链接里免费下载。学习编程,首先需要回答为什么要学的问题?这本书通俗易懂的介绍了作为信息技术主体的计算机如何改变着人类社会的方方面面,引导孩子在信息爆炸的时代里辩证的看待各种新兴技术及其影响。
第二周:介绍编程思维,可以用我上面所举的找扑克牌的例子,看看孩子能否结合他玩lightbot游戏的经历,对编程思维有所认识。
第三周开始:使用斯坦福大学的CS101在线课程开始自学。
https://lagunita.stanford.edu/courses/Engineering/CS101/Summer2014/about
该课程以Javascript作为工具,教授编程思想和计算机技术中的核心基础内容, 课程以视频和在线练习结合的方式,自学模式下,预计六周完成。而这门课虽然不是专门教编程的课,但是涉及的编程都是孩子们普遍感兴趣的数字图像处理实验,相信不少孩子会喜欢。
下图是一些学生在学这门课程过程中,用JavaScript写的程序生成的Fractal(分形)图像。
顺便提一下编程语言,我一直比较倾向于初学者学JavaScript,JavaScript作为Web客户端的主流编程(脚本)语言,可以在浏览器里直接运行,孩子写几行代码,就可以在计算机或智能手机上查看效果,即简单直接,又有用有趣。
以下为该课程涵盖内容:
The nature of computers and code, what they can and cannot do
How computer hardware works: chips, cpu, memory, disk
Necessary jargon: bits, bytes, megabytes, gigabytes
How software works: what is a program, what is "running"
How digital images work
Computer code: loops and logic
Big ideas: abstraction, logic, bugs
How structured data works
How the internet works: ip address, routing, ethernet, wi-fi
Computer security: viruses, trojans, and passwords, oh my!
Analog vs. digital
Digital media, images, sounds, video, compression
我把每章节内容从头到尾过了一遍,总体难度适中,如果家长能够给予适当的指导和帮助的话,初中生自学不成问题。如果孩子通过以上两个月课程,对编程产生兴趣的话,那么下一步,就该系统的掌握一门编程语言了。
【5】学了编程思维,然后呢?
没有实践的思维,只是空想。学完编程思维之后,还是有必要深入的学习一门编程语言,在实践中应用编程思维解决问题。学习编程语言,网上有大量优质资源,孩子可以用来自学。
我在教学中常用的有以下几个
Codecademy 好处是常用的编程语言的教程都有。缺点是Bug不少,明明按照要求输入完全正确的代码,服务器端老是显示代码错误,让孩子非常沮丧。遇到这种情况,多试几次,如果还是不行,鼓励孩子到Q&A论坛上看其他人是如何解决这样问题。
虽然编程可以自学,条件允许的情况下,几个程度相当孩子一起学,互相交流,互相帮助,共同进步的效果会更好。前文提到我在省高中编程竞赛时遇到秒杀很多高中生的三个用C语言的小男孩,当时很感兴趣的追问他们是在哪里学的编程。原来他们每周课后两次到附近的高中Woburn CI,参加由那里学生组织的编程俱乐部。编程俱乐部以师傅带学徒方式运作,大孩子教小孩子,有经验的帮助新手。虽然没有老师指导,但是这种以共同兴趣为基础的互助氛围里培养出来的孩子居然完胜那些经过两三年正规编程训练的大孩子,真是很让人深思的事情。
本文为头条号作者发布,不代表今日头条立场。

二:[编程难学吗]编程难学吗?怎么样才可以学习好,程序员真的好做吗?

编程难学吗?怎么样才可以学习好?程序员真的好做吗?
编程难学吗?
你有兴趣吗?你若没兴趣何必学习。没有兴趣切莫学习编程,编程学习完全靠着兴趣走下去。任何行业的技术,你若没有兴趣你就不要去选择。因为很容易就放弃了!!!
很多人刚刚开始学习的时候也不知道自己为什么学习,学习应该有自己的目标如:黑客,写程序,赚钱,兴趣等。。只有自己喜欢的东西才会去追求,没有自己喜欢的东西何必去追求呢。学习编程的最重要的还是兴趣,只有你有兴趣了困难都不是什么事情了,在学习中找到自己想要的快乐。哪学习起编程来就简单了
怎么样才可以学习好?
从不懂到懂是有一个过程的,而这个过程说漫长不漫长,不漫长也漫长。学习方式不一样效果也不一样。有人教速度快上很多,没人教速度会慢上很多,学习编程最多的就是问题。
想学好编程,最重要的一点就是多练习。只有多练习才记得住代码,多练才可以知道他的逻辑,方便以后理解。
很多人会问,学习编程要会英语吗?要会数学吗?英语是方便记单词和阅读一些国外的源码,进入外企要会英语。国内的软件开发不用会英语也行。
我不会数学能学习好吗?
知识没有人天生就会的,都是学习来的。你愿意花费精力下苦工就可以学会。有一些公司要求你会高数。
学习编程最难的是在心里,很多人都说编程难学。其实是因为自己心态不好导致的。世上无难事只怕有心人。做任何事都需要用心,只有用心才可以做好。
程序员真的好做吗?
程序员说难不难,说简单不简单。收入方面是很高的,研究时间花费得比工作时间还多。程序员技术的提升是和工资待遇相关的。
工作做的是效率,不然你每天都会陪着别人加班,程序员上班时间是9点-6点。很多人说他天天加班,原因只有两个;一个是自愿,一个是公司赶项目。不然不会加班。工作做不出效率,不加班别人帮你做吗?
工作做好了没人会说你,你技术好了效率自然会提升。程序员学习群:424632975:不想付出就有回报的,哪你肯定在做梦。

三:[编程难学吗]为什么编程这么难?!


大数据文摘作品
作者: Erik Trautman
编译:Shan LIU 、Niki、新知之路、笪洁琼、亭八
对每一个决心学习编程的程序员来说,入坑之前,你也许只是一个“穿着正装在办公室里上班”的人。
你的学习历程可能是这样:如同一片树叶,开始被各种建议拽着走,直到学完了每一个你能想象到的在线课程。
最后,虽然你成功拿下了一份软件开发的工作,但也对程序员有了新的认知:“那些看似正常的程序员们其实都是些“反社会”的怪人,鬼才知道他们经历了什么样的精神创伤。”
一份常见的编程学习过程:先从Ruby着手。很快,开始穿梭在Scala, Clojure和Go等其他语言中了。学习了Emacs,接着是Vim,甚至还了解了Dvorak键盘布局。接着又学习了Linux,甚至还涉猎了Lisp,以及用Python编过代码,后来一直在命令行驻足半年多。
一起来看一下学习编程要经历哪几个阶段:
阶段一: 手把手蜜月期
我们从小就听说过编程如何难学的谣言,就像那些拿来吓唬小孩的无稽之谈,最后把孩子们逼去学了社会科学一样。而另一方面,“学会编程”运动的推广效果确实十分成功,因为它让人们相信,这一行并没有那么高的进入壁垒,而且学习编程毫无坏处。像Codecademy,Treehouse,以及Code School这类机构,以最温柔的方式告诉普通大众,一定会教会任何人学会编程,并让其成为一名资深的开发人员。
所以,对于进入编程这行抱有过高期望的人,真的没有办法去责怪他们。 
在很大程度上,这些介绍性的工具手牵手地引导我们穿越那些可怕的参数、条件语句、早期的编程语法阶段,确实给了我们很大的帮助。当我们征服了一个又一个游戏化的挑战,自信心也开始迅速膨胀。我们觉得最终一定可以做到,这并没有什么难的,我们以为自己已经成为一个开发者了。
(图例纵轴为信心值,横轴为能力水平,虚线区间展示了蜜月期信心随能力增长而增长的曲线图)
但问题是,我们这个时候的状态正处在“手牵手蜜月期”的阶段,我们以为很快就要走到终点了,但其实只是走了一部分,路才刚刚开始……
规划前方的路
在我们深入了解到第二阶段之前,一起来看一看宏观的局面。在这篇文章里,会介绍一段典型的编程学习之旅必经的四个阶段,以及应该如何应对。我们将了解资源的密度以及所需知识的广度这两大要素是如何定义这段旅程的。
就业准备之路可以用下图曲线表示,它描绘了信心水平如何随着能力增长而变化。
(图例“编程信心与能力”:纵轴为信心值,横轴为能力水平,虚线从左至右依次分割出手牵手蜜月期、混沌悬崖、绝望沙漠、令人兴奋的上升期四个阶段,第5条虚线标志着工作准备就绪)
下面将会介绍在剩余的3个阶段会面临的独特挑战,这是每个阶段的核心内容:
1. 手牵手蜜月期:这是一个充满喜悦的、非常容易取得成功的过程,借助精雕细琢的资源,你会解决那些看似很难,但在网络导师的强大支援下完全是可以攻破的问题。你会掌握基本的语法结构,对于取得的成就很开心。
2. 混沌悬崖:这是一个痛苦的自我实现的过程,比蜜月期难过得多,你会觉得凭自己的力量似乎什么也做不了。你的首要挑战是不断地调试,同时你还不太知道该怎么问正确的问题,来找到一种可以积聚能量的办法。
3.绝望沙漠:这是一段很长又很孤独的旅程。在广袤的沙漠里,没有一条清晰的道路,每一个方向似乎都是正确的。你总是绕圈圈,对于穿越沙漠所需的资源如饥似渴。请小心来自“海市蜃楼”的诱惑,它好比沙漠里的汽笛声,会让你误入歧途。
4.令人兴奋的上升期:终于,你找到了一条穿越沙漠的路,对于如何构建应用软件有了自己的理解。但是你的代码仍然像是地窖仓库,脆弱得像纸牌屋。网站的良好运行给了你信心,你掌握了一些有用的模式,朋友们认为你的界面很酷,但你根本不敢直视界面底下糟糕的代码,最终你还是不知如何得到“可应用于生产环境”的代码。那么怎样才能填补这段距离一份真实工作所需能力的空档?
在过去几年间,我们采访了成百上千名优秀的开发人员,反复听到了相似的故事。而发布这篇文章的目的,就是希望大家在设计学习路线的时候,既要眼观六路又要做足计划,以绕开前人踩过的坑。
阶段二: 混沌悬崖
当我们在第一阶段细数着自己获得了多少徽章与完成了多少挑战的时候,自信心和能力也在不断增长,这被叫做“过度不理智的尖峰”。在这个悬崖险境一面,很多高手都跌在了里面,从而跌落到“编程太难学”的阵营。想要跳跃这个险境,需和第一次坐在电脑前一样,打开文本编辑器,从0开始,在没有任何“浏览器内置编辑器”、搭建好的代码、或是暗示性的帮助下,尝试创建一个项目。
不要再想着上几个特别的教程来拓展能力,没有任何一个人可以在不飞离对面的前提下触及天空,必须要要经历在一张空白文本文件上施展魔法的过程。
(图例纵轴为信心值,横轴为能力水平,虚线标亮的第二个区间-即沿曲线顶点向右下滑-为第二阶段“混沌悬崖”)
这个时候,我们的信心会跌落谷底。有时会为了达成一个几乎不起作用的解决方案日思夜想,仍然感觉缺失一些东西。如同在一场消灭BUG的战役里面,这些BUG与星舰战将相比都让后者显得十分和蔼可亲。我们开始感觉每次胜利都是因为在谷歌搜索时运气好而找到了答案,解决问题的信息开始一落千丈。
Buuuuuuuuuuuuuuuuuuuuug!!!
从教育者的角度,以及对于这一行的从业者来说,这是让人十分恼火的阶段。编程可能并不适合每个人,但我们希望你取得进步,因为有时看似最不可能的故事却成为了最伟大的成功事迹。当这个手牵手辅导期结束,学生们被推下悬崖被迫飞行,有太多高潜力者在还未学会挥舞翅膀的情况下,低空盘旋不一会,就撞向了挫折的岩石。
最可怕的是,你还没有走到实质性内容上。混沌悬崖这个阶段对你来说还为时尚早。当你最终消灭了足够多Bug以结束“埃及的第八次瘟疫”才标志着第二阶段的尾声,这还只是刚刚开始。
对于那些真正有志于投身该行业的人来说,跨越“混沌悬崖”通常是决定倾其所有地去开启新生活的关键点,然而有太多人没能坚持过来。即使坚持了下来,你又要踏入“绝望荒漠”的阶段。
两个关键点
所以究竟什么代表着某一阶段和下个阶段的不同呢?为什么第二阶段(混沌之崖)相对于第一阶段(手拉手蜜月期)这么烦人?理解这些会帮助你明白,如果你有上述的相似经历,那完全不是你的错。
大体上,在每个阶段有两个关键因素:资源密度和知识体系。在我们了解阶段三之前,先来看看这两个关键因素究竟是什么。
因素一:资源密度
如之前所说,刚开始时,仿佛有千千万万的资源在等你去深入了解编程。而且事实正是如此,搜索一下“学习编程”,会找到很多有用的工具、文章、视频和教程。 不幸的是,在之后阶段资源的饱和度很快开始降低。任何人从初学者到中级阶段都能感受到,可用资源在学习编程与独立应用阶段的差距非常大。
当知识量累积到阶段三的时候,这个问题更加严重,这也是为什么我们称这种情况为“绝望的沙漠”。但一旦你克服了这个阶段并且开始明白你真正想问什么,那么你的资源又会很快充裕起来,你开始有效利用技术工具,例如编程的博客和屏播。所以,这一阶段的关键就是明白真正想要问什么。
下图是资源密度在每个阶段的分布(更密的线代表更多的资源):
因素二:知识体系
现在我们来谈一个相关的话题:知识体系。这代表每个阶段新知识的宽度。它看起来是这样的:
刚开始学习时,你需要理解的东西很少。不论什么目的、语言或背景,只需要明白一个“for”循环是什么、如何用条件逻辑框架以及编程语言的基本语法。而且基础知识终究没有那么多,所以知识体系在一开始并不复杂。但一旦掌握基础,需要学习的知识面就一下变宽了,因为你需要了解更复杂的问题,例如了解程序错误以及什么时候用哪些代码。这跟回答普通的问题截然不同,这个特殊的问题并没有一个正确的答案,事情开始复杂起来。
当进展到第三阶段,知识面开始像气球一样膨胀。现在你开始知道需要什么工具、用什么编程语言、相关的计算机常识、如何写模块化的程序、面对对象编程、好的格式以及如何寻求帮助(这只是列举了一些)。每次去谷歌搜索或者骇客新闻,你就会发现更多你不知道但感觉要学习的知识。你产生了一个永远不知道还有什么不知道的念头。
当终于找到牵引力并离开了这个“沙漠”之后,你需要的知识才会减少。到那时,你会看明白你所选择的技术和它所处的生态系统,你最终也会了解你不知道什么并去找到解决办法。在事业刚起步的过程中,你的关注点会更加集中。
阶段三:绝望的沙漠
理解这些因素后,我们会发现,“混沌之崖”其实只是一个转折点。来自于需要学习的知识面的急剧增加和资源密度的减少的痛苦,会让人进入这种被称之为“绝望的沙漠”的阶段。
从本质上讲,我们知道这个沙漠肯定有尽头,但却不知道如何走出去。
并且,这个沙漠长而充满了危险。你会发现自己陷入“狂热的海市蜃楼”,即很多资源看似找到了答案,但这个答案却将你带到一个迷失之地,充满了未知。
这时候,也许你会从Coursera、Udacity或edX注册了一系列MOOC课程。又或者找到一个课程声明会从头到尾带领你学习。你开始坚信除了这个“手拉手蜜月”课程之外,其它的都不能带领你完成课程的学习。但是,一个人不可能在短短一周,一个月或者一门大学课程里去学会这么多东西。所以,不论别人怎么宣传,一定不要再掉入陷阱!
一个人需要学习的知识会比我们想象的多得多。即使你能够开始运行一些app,在想要成为一个真正的行业专家这个远大的计划下面也会变得迷茫起来。因为我们不知道需要学习什么甚至是不是真正在学需要的东西?
即使有了正确的方向,了解自己的学习进展也很难。我们可能会感觉到完全迷失了,但最终还会完成一些我们想要的或者预期的结果。但有了足够的积累和好的导向之后,我们会开始接触几个“真正”的项目,虽然直到目前依然困难重重,但这些网络开发的东西看起来并没有那么难。 阶段四:令人兴奋的上升期
我们成功地穿越了沙漠,自信心逐渐提升。又因为谷歌功力实在惊人,我们可以理解那些深入的编程博客和屏播了。并且有的人成为了某种语言或者框架的达人,并且开始有信心制作正常运行的程序。这就是令人兴奋的上升期:
虽然我们表面看起来胸有成竹,但我们深知还有很多需要学习的内容。比如:你能让程序运行却不知它到底在如何工作;你的代码或许杂乱无章,最可怕的是你不知道哪里写的不好哪里还行;偶尔觉得自己是个编程天才,却并不明白到底程序是如何实现的,并且很快被愚蠢的错误和自我猜疑击退。
这是一个感受差异两极化的阶段。你感觉有时候自己是一个无坚不摧的码农而有时候又觉得自己是一个蒙着眼在道路上摸索的新手。
你觉得你应该早已是个合格的码农,但是你在写的代码和一个专业的工作环境相差甚远…
但最终我们会做到的,因为有太多的动力让我们停不下来。绝望的沙漠被我们抛在了脑后,困惑之崖也早已成为了久远的记忆。我们开始提升的很快,也比以前更加明智,慢慢掌握了足够的联系去把知识结合起来应用到实际中去。
到达令人兴奋的上升期总是会比预期花更长的时间,并且这种感觉是无止尽的。因为在这条正确的道路上坚持不懈下去,我们就离成功很近了。并且我们的努力使得别人相信我们,愿意付钱支持我们继续学习,工作也不再是问题。 整体回顾这四个阶段的情况
现在我们已经知道了步入编程行业的整个历程,并了解到为什么这么难。当把上述的四个阶段过程与各个因素都整合在一起后,得出了下面的图:
图例说明(从左至右):信心、资源密度、知识领域、胜任力、手把手的蜜月期、混沌悬崖、绝望沙漠、快速成长期、专业水平
“知道”和“会做”是两回事,我们终于迈出了正确的第一步。
如何完成历炼
坦率地说,整个过程看起来很艰辛,尤其是当我们独自前行时。但我们并不是一个人在战斗,实际上在很多时候是有捷径可循的。学习编程并不像人们想象的那么容易,但也不是绝望的深渊。
在这一部分,介绍一些关键策略来引导大家沿着正确的方向行进。
图例说明(从左到右):完成学代码的历练、信心、胜任力、构建、合作、设定目标、专注、获得反馈、专业水平
要学会享受“手把手的蜜月期”。因为有大量的资源可以令你在手把手蜜月期中感到乐趣无穷,使我们建立今后必不可缺的逻辑性思维。所以尽量享受这个过程,并牢记以下两点:
1. 尝试多种资源以确定最适合你的学习方式。开始阶段尽可能开放思路,不要在意你想具体学哪一种计算机语言,因为所有的语言在这一阶段都是一样的。
2. 一旦选择一个适合自己的资源,坚持下去,完成他们的介绍性课程,你应该可以掌握到编写基本脚本和app的基础知识,并开始准备自建程序了。
如何在“混沌悬崖”阶段坚持
几乎所有码农都体验过“困惑悬崖”,因为这是成手的必经之路。你可以假装注册了几门课(或扮作“已经完成”了这些课程)期望完成了这个阶段,但那只是想法拖延,这个阶段无法避免。那些课程的确提供了更高频次互动的介绍性内容,但你必须要摆脱这些“安抚奶嘴”,在某些时刻面对真实的世界。
以下三招可以让我们更好的过渡到自建程序阶段:
1. 和其他人共事,即使是另一个新手。你将会惊诧到原来互相检查出被自己忽视的错误是那么简单。
2. 多看看其他人编写的代码,多学习好的编码方式。尽量去理解作者为什么这么做。就像你若想成为作家,必须要多读书一样。我们将在即将发布的文章中重点介绍这一点,但是现在请关注他人为解决任意一个微小的问题或项目所编写的程序。
3.从小事入手,不断的做下去。你的目标虽然要成为做大项目的高手,但目前却需要着眼于寻找、调试小型的项目。这种经历是不可代替的。
如何在“绝望沙漠”阶段生存
一旦你具备了调试程序的能力,最大的问题将是面对着大量需要掌握的知识却感到无从下手去将它们统统学完,即“绝望沙漠”。这种情况下,你需要的就是沿着既定的大路坚定地走下去。看似有趣的小路、令人好奇的“兔子洞”和号称快速提高技巧的把戏实际上都是浪费时间的海市蜃楼。
所以尽快逃脱“绝望沙漠”的关键是:
1. 为实现你的期许而抱有强烈执着的信念,否则你会陷入对所有好奇的事都插上一脚但却原地打转的怪圈,徒劳无功。但如果你有的是时间,好吧,请忽略这条……
2. 确保你行进的方向明确的通往你的目标。这个目标可比那些营销口号、在线课程网站上的笑脸或书皮上“将帮助你实现……”的要深刻、严肃得多,需要你深思熟虑。
3. 保持专注,避免分心。因为如果你是一个对编程感兴趣的人,那么你一定也对其它很酷的事感兴趣。当编程进入到攻坚阶段,你需要调整自己保持向前的动力而不是半途而废去寻找其它乐子。
只有“咬定青山不放松”,你才可以进入下一个阶段,而不是花上数月甚至数年去追逐“镜中花、水中月”。
如何在“快速成长期”中学得更多更好
快速成长期是最棘手的过渡期之一。你虽然能够开发应用了,但你更想成为一名真正的网页开发工程师。想要度过这个阶段并达到入行工作的标准,你需要完成以下三件事:
1.  做最棒的编程练习题。你需要理解解决方案和最佳解决方案之间的差距。这些好的练习题可以帮助你达到生产出符合专业级别的高质量代码的标准。
2. 检查你的程序,因为你可能已经写了好多代码,而这些代码中藏着你甚至都不知道的漏洞。你需要诊断并修复它们。
3. 解决那些很少被处理但是转换到专业环境时却是高度重要的一板一眼的技能。包括测试、数据建模、架构和配置,这些技能看似简单,但对于良好的开发工作来说是非常重要的基础。
完成上述工作并顺利度过快速成长期的关键是获得反馈。那些完全依靠自学的学生或许富有成效,但却缺乏专业级别的那种清晰的、模块化的、易维护的代码写作能力。你需要和其它人一起质疑你的假设、提出尖锐的后续问题,并迫使你去解决这些漏洞。
那么,你能做到吗?
上述内容看起来相当繁重,但想想那些已经走过这些历程的前辈们。虽然本文没有详细解释每一个阶段,或者提供大家迫切需要的具体建议。但通过对本文介绍的各个阶段的理解,大家知道了如何安排合理的计划,从而获得合适的帮助,已经处于一个有利的位置了。
前路漫漫,但你并不孤单。祝大家好运!
原文地址:
http://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard
数学科学实训营第5期
100人限额免费预习班
Q:编程基础不好,能学会数据科学吗?
A:能,《数据科学实训营》可以做到!
海报的承诺我们负责兑现
而你需要负责:
· 充足的学习时间&决心
· 最基本的相关知识
如果是小白,那就来免费预习班做准备吧!

本文来源:https://www.shanpow.com/xx/384661/

《编程难学吗.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式

相关阅读
  • 中小学作文打赌输了任人摆布_贝贝文章集合3篇 中小学作文打赌输了任人摆布_贝贝文章集合3篇
  • 小学作文批改符号图解(锦集3篇) 小学作文批改符号图解(锦集3篇)
  • 小学作文吹泡泡【十篇】 小学作文吹泡泡【十篇】
  • 为梦想而努力小学作文范文(通用24篇) 为梦想而努力小学作文范文(通用24篇)
  • 老家见闻小学作文650字(锦集10篇) 老家见闻小学作文650字(锦集10篇)
  • 小学作文清明节作文怎么写(合集十四篇) 小学作文清明节作文怎么写(合集十四篇)
  • 秋游桃渚小学作文范文(精选9篇) 秋游桃渚小学作文范文(精选9篇)
  • 校园集体舞小学作文精选21篇 校园集体舞小学作文精选21篇
为您推荐
  • 小学作文热爱生命(合集15篇)
    小学作文热爱生命(合集15篇)
    作文(composition)是经过人的思想考虑和语言组织,通过文字来表达一个主题意义的记叙方法。以下是小编收集整理的小学作文热爱生命(合集15篇),仅供参考,希望能够帮助到大家。
  • 中小学作文网范文汇总十四篇
    中小学作文网范文汇总十四篇
    作文(composition)是经过人的思想考虑和语言组织,通过文字来表达一个主题意义的记叙方法。作文分为小学作文、中学作文、大学作文(论文)。作文体裁包括:记叙文、说明文、应用文、议论文。以下是小编整理的中小学作文网范文汇总十四篇,仅供参考,大家一起来看看吧。
  • 美丽的荷花小学作文【汇编十九篇】
    美丽的荷花小学作文【汇编十九篇】
    在日常的学习、工作和生活中,很多人都有过写作的经历,他们对写作并不陌生。通过作文,人们可以达到文化交流的目的。以下是小编整理的美丽的荷花小学作文【汇编十九篇】,欢迎阅读与收藏。
  • 动物的小学作文:可爱的小狗范文汇总十九篇
    动物的小学作文:可爱的小狗范文汇总十九篇
    作文是经过人的思想考虑和语言组织,通过文字来表达一个主题意义的记叙方法。以下是小编收集整理的动物的小学作文:可爱的小狗范文汇总十九篇,仅供参考,希望能够帮助到大家。
  • 以感恩致辞为题的小学作文十五篇
    以感恩致辞为题的小学作文十五篇
    感恩,因意识到被给予而自发认为是被恩赐或被爱,从而有感谢对方的意愿产生的心理活动或现实行动。感恩是对一个人是否具备善良品质的的基本参考特征之一。以下是小编整理的以感恩致辞为题的小学作文十五篇,仅供参考,大家一起来看看吧。
  • 家乡变化小学作文范文汇总七篇
    家乡变化小学作文范文汇总七篇
    作文(composition)是经过人的思想考虑和语言组织,通过文字来表达一个主题意义的记叙方法。以下是小编整理的家乡变化小学作文范文汇总七篇,欢迎阅读与收藏。
  • 后悔的事小学作文(合集10篇)
    后悔的事小学作文(合集10篇)
    柳树是一类植物的总称:旱柳 Salix matsudana Koidz 、腺柳 Salix chaenomeloides Kimura、垂柳 Salix babylonica Linn 柳属多为灌木,稀乔木,无顶芽,合轴分枝,雄蕊数目较少,虫媒花等特征表明,较杨属与钻天柳属进化。以下是小编整理的后悔
  • 一堂难忘的课小学作文范文(精选19篇)
    一堂难忘的课小学作文范文(精选19篇)
    作文(composition)是经过人的思想考虑和语言组织,通过文字来表达一个主题意义的记叙方法。作文分为小学作文、中学作文、大学作文(论文)。作文体裁包括:记叙文、说明文、应用文、议论文。以下是为大家整理的一堂难忘的课小学作文范文(精选19篇),欢迎品鉴!
  • 我的动物朋友500字小学作文集合21篇
    我的动物朋友500字小学作文集合21篇
    一些学生在阅读、听写甚至造句方面都做得很好,但他们几乎放弃了几年的汉语学习,因为他们害怕写作文。以下是小编整理的我的动物朋友500字小学作文集合21篇,仅供参考,大家一起来看看吧。
  • 一只小蜜蜂小学作文(合集二十二篇)
    一只小蜜蜂小学作文(合集二十二篇)
       蜜蜂为社会性昆虫,由蜂王、雄蜂、工蜂等个体组成。下面是小编为大家整理的一只小蜜蜂小学作文(合集二十二篇),欢迎大家借鉴与参考,希望对大家有所帮助。