原文发布于 太平洋夏令时间下午 6:00 • 2014年5月24日
告诉刚开始学习编程的人编程很简单,这是我见过最危险的事情之一。
这是你的大脑做的反应:
我的画作。(我编程比画画好。)
大多数编程并不需要特殊的大脑,但比起别人让你感觉的样子,它更让人沮丧且更混乱。有成千上万热情洋溢的博客文章、课程和应用程序,它们旨在以学习编程有一套简单明了的过程来吸引你。但它们很少提到设置环境的乏味过程(相信我,即使是你最善良的程序员朋友也不愿帮你,因为那东西太让人沮丧,没人记得自己是怎么搞定的)。
它们没告诉你,很多编程技巧其实在于培养在Google上提问的能力和知道哪些代码最适合复制粘贴。它们也没有告诉你一个大秘密:没有真正的掌握,没有最终级别。感觉迷失和愚蠢的焦虑不是你学会征服的东西,而是你学会共处的东西。
这个冬天我决定学习iOS。我在大学暑假自学了编程,所以我对自己学新语言的能力非常自负。我忘记了这有多难。在超越了我对Xcode的怨恨之后(_这个“Storyboard”看起来像给小孩的,这不是真正的编程_),我开始了一系列对我来说太高级的项目。结果iOS和网页开发不同;我预期会难的东西很容易,而那些应该容易的却很难。我对自己不耐烦和恼火。
我忘记了,对于程序员来说,最常见的状态是自我不满。作为一个程序员,有无限的东西要学。你可以成为某种语言或框架的专家,但如果你的工作是有效地构建东西,你会不断学习新工具,感觉不断被淹没。心理准备好感觉愚蠢会有所帮助。
心理学家Mihaly Csikszentmihalyi 提出了一个可视化学习过程的洞见方式(适用于任何学科):
来自“Flow: The Psychology of Optimal Experience”一书中的图片改编
我发现我的经历与这条线非常接近,并提出了这个递归编程学习食谱:
- 按部就班地跟随教程,即便你并不总是理解自己在做什么。我喜欢把这部分比作Hunter S. Thompson 用打字机抄写伟大大师的书。你在感受用新的语言/框架如何完成事情。这部分应该很容易但有些无聊,因为你只是在照做。 [乐观之坡]
- 重建你刚做的东西或是它的稍许变体。尽量不依赖教程。意识到你理解得非常少。 [恐惧牵扯,拖慢你的上升]
- 尝试做一些你真正想做的简单项目。发现你完全不知道自己在做什么。 [绝望之海]
- 找一个与新项目相关的新教程。(希望你的教程能逐步提供你对语言的背景知识。)按步骤操作。 [微弱的理解感,自我价值提升]
- 自己重建那个东西。 [恐惧]
- 开始一个新项目。 [绝望]
- 重复步骤1到6。
我是教程的忠实粉丝。在这个过程中,我做了一个应用来收集最好教程的推荐,这些都是程序员们用过并推荐的。希望它能缩短你在摸索阶段的时间,帮助你快速找到好的内容。
只要你学会在沮丧中磨练,你就会爬上山坡,看到自己的进步。接受自己无法理解一切,信任自己即便看不到进步也在变得更好,并且不要急 。祝你好运。
特别感谢Shuttleworth Foundation,他们的神奇快速资助促使我踏上学习新事物的道路,并给了我时间来做Teach Yourself To Code。也感谢Cody Brown,他在这篇文章上的帮助。
来源: Don’t Believe Anyone Who Tells You Learning To Code Is Easy
作者: Kate Ray