全文共2762字,预计学习时长9分钟

打开网易新闻 查看更多图片

图源:unsplash

学习新事物总是不容易的,学习编程更是如此。但是“捷径”是存在的,你可以做一些与众不同的事情给学习增添一点乐趣,同时又能获得更快更好的学习效果。

一次大学假期中,笔者决定学习游戏开发。但学习的意愿和能力从来都不是问题,每天学习的动机才是关键。于是我便回顾了学习应用程序和web开发的那段时间,从中找到了一些窍门。

本指南不仅适用于编程初学者,也适用于希望学习新知识的专业人员。

1.自上而下学习法

传统校园教育方式多为自下而上式。也就是说,如果要学习使用自下而上法编写代码,你将要:

· 学习所有相关概念,方法和技巧

· 对类似的主题进行分类,并对目标领域进行更深入的了解

· 最后,利用在微观层面应用这些概念的经验,构建了一个最终的“大”项目(比如一个功能齐全的应用程序)

但自上而下学习法是完全颠倒过来的:

· 决定要构建几个项目

· 将其分成多个步骤,每个步骤涉及2-3个概念

· 学习并应用每一步中涉及的概念

打开网易新闻 查看更多图片

为什么应使用自上向下学习法?

如果你是编程初学者,我并不建议你完全使用自上向下法。你可以试着选择折中路线,不过一定要将注意力集中到核心的编程概念上,并对这些概念进行细致理解:

· 不必浪费时间去学习那些不重要的东西——因为该方法的实质是即时学习和应用,会自动把那些没有实际应用的东西过滤掉,因为它们早已过时或鲜少使用了。

· 不依赖外部动力 ——每节课你都在学习和应用新的概念。这不仅增长了你的知识,还让你在构建项目的过程中取得了进步。对于为什么学习这个概念,想必你心中已有了答案。

· 使学习成为游戏——笔者花了很长时间向一个玩过许多游戏的人讨教。从在Fifa终极模式中智胜人工智能,到在高难度的《战神》中击败GoW。同样,编程也是每天一个新挑战,战胜它,你的知识水平和项目构建水平都将有所提高。

我的意思并不是自下而上学习法欠佳,自上而下学习法也有其缺点。只是在编程的环境中不可能掌握或学习所有的东西,因此学习在实际应用中更常用的东西更为合理。自上而下学习法涉及到更多的宏观层面上的实用型学习方法。

对主题一无所知时该如何选择项目?

创造出你会用到的东西,这样就不会在中途丧失兴趣。作为一个对要学习的主题几乎一无所知的初学者,这就变得有点难了。

假设你是一个初学者,建议你选择几个难度系数递增的不同项目,每个项目都涉及一些核心概念。满足标准要求的项目计划应具有如下特点:

· 包含必然会用到的东西。

· 不会忽略任何重要的概念。

· 把目标定高点。但要记住,这是你在那个领域的第一个项目。(如果正在学习制作应用程序,选择制作一个类似Instagram的应用程序绝非明智之举)

如何确保学习计划中不会漏掉重要的概念?

访问一些课程网站,比如Udemy, Codecademy, Coursera 或 Youtube。搜索感兴趣的课程,写下主要的主题。列出项目必须包含的概念列表。如果不能将所有的概念合并到一个项目中也没有关系,可以选择2-3个或者更多项目。

打开网易新闻 查看更多图片

2.记笔记

很多人在学习编码的时候忽略了记笔记这一步,认为互联网上随时可找到文档记录。如需要引用,还可以重新访问代码。虽然不需要记住代码,但确实需要引用它。

从现在起不要记下代码片段。相关的代码示例在互联网上很容易就能找到。我的建议是记下概念。代码示例始终都是类似的,但是每个人对一个概念都有自己独特的理解。把它记下来是很有意义的,这样一来,当回顾笔记时,可以在此前的基础上进一步巩固理解。

如果没有任何笔记可以参考,学习时将不得不从最基本的学起,而无法达成进一步巩固。下面是康奈尔大学笔记系统模板之一:

其运行原理如下:

3.不要跟别人一起写代码

无论是在线教程还是课堂授课,和老师一起编程是最直观的学习方式。大多数人都是这样学习的。但问题是,你想不走寻常路,你想要比他们做得更好。所以就必须另辟蹊径。

仔细想想,一起编码实在毫无意义可言。一旦落后于人时,你就思绪混乱无法思考,转而抄别人的代码并停止播放学习视频。这会扰乱大脑的知识输入,试图一次做太多的事情,往往事倍功半。

打开网易新闻 查看更多图片

如果与人一起写代码如此糟糕,为什么那么多人包括讲师都在力推这种方式呢?

与讲师一起编程更直观。在学校里,老师一说重要的知识点,你就会马上记下来。因此,直观地说,当在屏幕上看到代码时,自然而然就想把它写下来。这就是为什么很多人都是这样学习的。

这样能够轻轻松松跟上课程节奏,而不需要劳心劳力去思考代码运作的原理。但是,我们想要比大多数人做得更好,自然就不会选择这种方式。

若不与人一起写代码,那又该怎么做?

把学习内容分成大约10分钟的小片段。也就是说,每10分钟暂停一次,然后尝试重新生成代码,而不是再次复制。花点时间想想这段代码的运行原理。

这就是掌握基本原理的秘诀。除此之外,这对提高分析能力和解决问题的能力也大有帮助,因为说到底,编程就是如此。

10分钟的时间段是笔者觉得舒心的学习时间安排。也可以根据个人方便程度进行调整,只要确保时间不会太长或太短。此外,无须用计时器严格计时10分钟,可以灵活调整。

4.努力奋斗

努力奋斗对你终生有益。

刚开始的时候,笔者经常做一些超出能力范围的项目,常常陷入难题而连续奋斗好几个小时。但那是作为程序员和开发人员以来成长最快的时期。

构建某个东西常常充满了发现新事物的惊喜瞬间,最终发现为什么代码不能运行并修复它。不过别担心,我们并非总要对抗“灭霸军团”。通过使用各种各样的工以及他人的协助,最终必然可以走出困境。

作为一个初级程序员,你很快就会意识到,你所面临的问题,别人已经遇到过了。幸运的是,他们已经记录了解决方案。

像Stack Overflow, GitHub,Google这样的网站,以及任何你正在学习的语言或框架的官方文档,都将对你大有裨益。每天都有许许多多的人向诸如此类的网站贡献自己的力量,以解决人们在编程时遇到的越来越多的麻烦。

记住,没有奋斗的成长永远是线性的:

而奋斗能带来指数级爆发性的成长和知识增长:

如果使用的是自上而下学习法,一旦找到了适合的解决方案,你可能就会想要继续前进。沉浸在掌握新知识的兴奋中,可能会忽略学习该解决方案是如何使代码再次运行的基础知识,这一点需要注意

最后要补充一点,本文的思路主要是围绕着每天以小增量进行改进和构建的计划。这有助于避免失败,并自动地将问题分解为微观层面上可解决的步骤。因为每天都在进步,就巧妙地避开了无聊和对外部动力的依赖。

学习永无止境,不仅仅是在编程的世界里。如果想跟上时代的潮流。你必须不断进取。