在我的大脑还在全速运转消化理解这些意思拼凑出连贯的指令之前,讲师已经转移到下一个主题。
“什么快捷键可以再次打开终端?命令和空格键——快点在Mac电脑上试试。”
咬紧了牙,尽量不去想已经拉下了多少Treehouse讲师的内容,我开始第八百次手忙脚乱地打开谷歌去查找键盘命令。
“我只是不擅长而已”,我告诉自己, “一定是我的脑子不善于逻辑思维。”
这本来只是一个入门教程——为什么我会觉得这么难?
无论是学习在线课程,参与IRL,还是同事和朋友教我编程概念,这样的场景对于我而言并不罕见。最后总是以愚蠢,沮丧和恼怒的感觉告终,浪费了他们宝贵的时间来帮助我这根“不可雕的朽木”。
大多数会话都会在我鼓睛暴眼不能自抑地想要脱口而出说“我再也不干了”,却又被我硬生生地咽回喉咙中之前,突然结束。可悲的是,大多数时候我离完成模块,离让app工作,离突破其实已经只剩几个阶段了——但为时已晚。损害已经造成。
所以,我一直在想,这是为什么呢?为什么学习编程会这么难?
我觉得这不是一个直接性的问题,没有直截了当的答案,但对于我自己为什么不能将编码当作一个简单的技巧来获取,我有一些自己的见解。我也在Twitter社区上征求别人的看法,并得到了热烈的响应:
写过一篇文章@raygunio关于为什么“学习代码”会这么难。为什么有时候你会认为这是一个如此艰巨的挑战?
——Hilary Rose(@hilary_cook)2015年7月16日
所以,结合这些智慧的精华,我总结出为什么我会觉得编程如此之难的要点:
那种“这么简单——我无法想象你居然不知道”的态度
你正在思考一些你百思而不得其解的问题——数学公式,编程问题,外语语法,东南亚的政治制度……
然后一些自以为聪明绝顶的家伙出现了,鄙夷地看着你,打断你的沉思,大呼小叫:
“哦,这太简单了”
呵呵。这样一来,心情就完全不同了。你必须努力理解手头所谓“简单”的工作——人人都这么认为,除了你。
甚至可能更糟:
“我无法想象你居然不知道HTML中的图形元素——当然,并不是说HTML就是真正的编程语言”
严肃说来,HTML是否被认为是“真正”的编程语言并不重要——它依然是一种需要学习的新技能。尝试新的东西是非常可怕的。你需要在处于这种未知的弱势地位时也敢于勇往直前,而且失败和不确定也没有关系—— 事实上,它们都是成功的重要组成部分。
那么如何处理高科技产业中的“我无法想象你居然不知道”这种态度?要想确切地掌握编程语言的每一个特质是不可能的——它们是野性难驯的猛兽。所以他们凭什么像这样贬低人呢?也许他们只是害怕会被我们发现他们也有不知道的东西。
万事开头难,这是很正常的。正如《Jake the Dog》说过的这样一句话,“吸取知识是擅长它的第一步骤”。非常正确。
“左脑和右脑”的争执
当遇到解决不了数学和编程问题时,我最喜欢使用的借口是:
“我之所以不明白这一点,是因为我有一个创造性的大脑。而编程是逻辑性的,我的大脑只是不习惯这种思维方式”
我深信,我擅长写作和绘画,是因为我是一个创造性的左脑思考者,至于我总是苦苦挣扎于数学和编程类学科,则是因为它们主要是右脑活动——然而现在却有大量的证据表明,这是一种已经过时的思考方法。
Belle Beth Cooper在《揭穿关于程序员大脑的谬论》一文中,通过调查这些关于程序员的头脑如何工作的常见谬论,指出:“我们大脑的两个半球有着千丝万缕的联系。双方是相互依存的,大多数思维过程都需要两者的参与”。
所以,会不会就是因为我认为自己更善于创造性的事情,才会导致我愿意多多地练习,从而变得擅长的呢?俗话说得好:“无论你认为自己能做到,还是认为自己做不到…..就要看你怎么暗示自己了”。
编程就是难
“不要相信任何人 关于学习代码很容易的谎话”
最近很多文章都在鼓吹关于“任何人都可以学习代码”的“奇思妙想”,从而鼓励更多的人加入这个从前看似遥不可及的行业,但是如果你坚持认为编程是一种易于学习的简单技能,那可能就会南辕北辙。
正如Kate Ray在她的文章所说的那样,“作为一个程序员,需要学习的东西是无限的”——并且一种不能满足的持久遗憾感,即使是该领域的专家也时常会有。
不过,对于那些刚刚起步的新手而言,还是有好消息的,那就是虽然需要学的东西很多,学习中也会遇到各种挑战,但是,你可以——一步一步来。不要试图一下子掌握所有内容,设定那种如’我要学习如何编写代码’这种不明确的目标——目标应该更具体,并将任务分解成更小的任务。
所以与其难过自己还是无法理解JavaScript——还不如,先将学习的重点放在关于如何让我的静态博客变得互动起来的具体内容上。然后再到下一个步骤。虽然一开始会很糟,但我依然相信功夫不负有心人,good luck。