大多数学习者同样碰到过相同的障碍,但是,一旦克服了这些壁垒,那么好处立马就来:

更享受学习经历进步

更快碰到难题更执着,不轻言放弃

写代码时更独立

那么,这些障碍究竟是什么呢,我们又该如何攻克它们?

1、目的不明确

在谈及壁垒之前,我想先着重说明学习动机的重要性。不要只是为了编程而学编程,也不要因为听说它很酷,很划得来就来学编程。

你得因为要解决问题而学习编程,你得因为想要自动化和改善生活而学习编程,你得因为想要构建应用程序以造福社会来学习编程。

如果你只是喜欢编程,并希望以此作为职业的话,那么在之后的学习过程中,你可能会有一种强烈的冲动想要放弃。这通常发生在事情变得艰难,学习体验变得痛苦的情况下。这时你会告诉自己,你不喜欢编程了,编程操作不适合你,觉得自己天生就成不了程序员。

因此,您应该考虑为完成项目设定目标。如果您正在考虑一个项目,或者想解决一个更高的问题,您可以对自己说:“目前这可能不是一种令人愉快的体验,但是我真的想解决这个更大的问题,所以我将继续推动自己并克服这一障碍。”

2、纠结学习什么

很多人问:“我应该首先学习哪种编程语言?”。之所以存在此问题,是因为他们不知道为什么要学习编码。

一旦确定了要从事的项目,就很容易弄清楚以哪种编程语言开始:

如果要构建iOS应用,请使用Objective C或Swift。

如果要构建Android应用程序,请使用Java或Kotlin。

如果要构建Web应用程序,请使用JavaScript。

如今,您实际上可以使用JavaScript来构建任何类型的项目,从简单的Web和移动应用程序到高级硬件项目。人们在大多数行业中使用它,例如:音乐,医疗,游戏,时尚。

如果仍然不确定要选择哪种语言,甚至可以向程序员寻求建议。一旦知道了要构建的项目,程序员就可以轻松推荐一种技术供您使用。

还请记住,语言是一通百通的,你可以轻松从一门语言转移到其他语言。

3、不去思考地编码

最好的情况是您解决了任务并且工作正常。然后人们通常会开始处理下一个任务。如果这样做,您将浪费学习的机会。

我鼓励您用以下问题挑战自己:

我的代码可能会失败吗?即使现在没有失败,是否有任何应用程序状态可能导致其中断?

我的代码够干净吗?对于其他开发人员,甚至对我自己,是否容易理解和更改?将来,您可能需要解决此代码中的隐藏问题,或根据其他产品规格对其进行更改。

我的方法是最好的方法吗?我还可以使用其他替代方法?每个替代方案的优缺点是什么?值得以其他方式解决任务吗?

该模块如何与其他模块交互?它会以一种不好的方式影响他们中的任何一个吗?可以容易地被其他模块使用吗?

4、你不知道如何完成任务

你不知道从哪里开始吗?您可能会想尝试随机的东西,或者从您不理解的其他地方复制代码。但这没有帮助。即使您复制有效的代码也不行。因为将来您将要执行类似的任务时,您也将无法解决该任务。

如果要正确解决任务,则必须首先确定为什么会卡住。以下是一些可能的原因:

您不太了解该理论。语言语法库或API的工作方式,或特定方法或类的工作方式编程范例(例如:异步编程)系统的工作方式(例如:HTTP请求是Web开发中必须了解的关键内容)在这种情况下,只要再读一遍该理论,或者在仍然没有意义的情况下找人向您解释。

任务太大,需要分解成较小的任务。您不明白任务在问什么,因为您读得太快并且忽略了看起来很熟悉但实际上并不熟悉的概念。

5、不知道如何调试

这是编程中最常见的问题。即使对于具有多年经验的程序员也是如此。解决方案不起作用的原因很可能是代码中的错误。

您如何解决?通过调试代码。这是您作为程序员可以学习的最重要的技能之一。这不是您随便做的事情,也不是靠幸运的猜测做的事情。您可以采取特定的步骤来查找代码中的错误。有整本书专门教这个技能。

不幸的是,这是许多新程序员失去动力并放弃的地方。很少有课程解释调试的重要性。如果您不知道如何正确执行操作,那么它似乎势不可挡。

许多人担心他们花太多时间调试代码。这很正常,在编程的头几年,您必须为此做好准备。

更好的是,您需要学习如何喜欢调试。将其视为解决您的误解并提高编程能力的机会。每当您解决错误时,都要问自己一个问题:“为什么我首先犯了这个错误?我如何防止自己将来出现这种情况?”。

保留编程日志是一个好主意,您可以在其中写下所有发现的错误。您将快速看到模式并从中学习。

6、不知道如何获取帮助

在学习编码或调试代码时,您将查阅许多材料:书籍,课程,教程,导师,开发人员社区。

例如:在您花了10个小时解决问题后,最后有人为您提供了解决方案后,很容易采用该解决方案,庆祝并跳到下一个任务。不要那样做!相反,您需要进行一些元认知:

考虑一下您以前的思考过程。问问自己自己做错了什么,以及可以做得更好的特定解决方案。

请对方告诉您他们自己的思考过程。她/他如何解决的?从中学到东西,下次自己应用。您无法找出人们如何提出解决方案。您只能采取解决方案,并希望能理解它们。但是您永远不会知道这些解决方案背后的思考过程。

7、理论和实践无法结合

一旦选择了一个技术栈,就很容易上手并学习理论。互联网上有大量的免费和付费课程。

我们的大多数学生实际上都了解该理论,并且可以解释某些代码是如何工作的。该理论只是一组有限的概念。如果他/她真的愿意,任何人都可以在几天内记住它。那是什么问题呢?

学生面临的最大问题实际上是将理论应用于解决问题和编写新代码。这意味着差距实际上是技能差距。

比如游泳,你可以阅读关于技术的各种信息,并且可以像专业教练一样向某人解释它。但是应用这一理论需要大量的实践,努力和错误,否则下水后你只会喝水。

我知道很多人看了很多编程书籍,也看了很多网上的教程,但是依然写不好代码,那就是他们眼高手低,写基本的代码都能bug百出。我们一定要养成用键盘思考的习惯,才思泉涌,代码行云流水,需要的是不断地实践。

最后送上我最喜欢的一句话,实践是检验真理的唯一标准。

相关文章