学习编程需要克服的10种坏现象 - Jonathan Bluks


我常常在Reddit或Quora上看到有关“我怎么知道我适合做一个程序员?”的问题。(事实上​​这篇文章扩展了我在Quora上给出的答案。)当有人在考虑时职业转变,或者对软件开发感兴趣并对所需的内容感到好奇,不可避免地会出现编程问题。
事实上,当人们没有接受任何正式的计算培训时,这个问题是人们心中的主要疑问。
人们一般很自然地认为,这有点像你想成为一名演员,首先看你是否善于表演一样。
作为一名教授Full-Stack Web开发的教育工作者,我教过很多“初学程序员”。好消息是我很少找到一个无法学习编程的学生。

我认为它是一种基本的人类技能,就像阅读,写作和算术一样。任何人都可以做到,这是我们人类能力的一部分,但确实需要学习。

在过去两年的教学中,我目睹了很多学生在这个过程中的挣扎,以及他们斗争中出现的一些共同主题。如果你看一下这个列表并亲自检查一下,请放心,你会真正厌倦编程,并且可能会发现其他与你的时间有关的东西。但是,如果您仍然致力于成为开发人员的目标,那么您可以轻松地面对这些问题并进行更改。

编程是一项基本的人类技能,就像阅读,写作和算术一样。任何人都可以通过时间和精力学习编程。

以下列表将帮助您了解您是否会厌倦编程 - 以及如果您想要更改,您可以采取哪些措施。

1 . 缺乏好奇心
如果您对计算机以及技术如何运作缺乏好奇心,那么作为一名程序员,您永远不会成功。
学习的基本要求是对你正在学习的东西的积极兴趣。如果你没有对技术感到好奇的头脑,你就没有足够的精力来坚持学习成为一名成功的程序员所需的广泛而深刻的知识。
相比之下,技术世界就像一个巨大的海洋,有趣的领域,相互联系的想法,以及可以激发想象力的可能性。想要潜入并发现所有可能的东西需要一种内在的内在动力。
找到你的好奇心:问问自己,编程是否真的让你感兴趣。如果你的诚实答案是没有,那么去寻找你感兴趣的东西。节省你自己的时间和精力。但是,如果你的回答是“是”,那么请你自己找一些你之前没有注意到的新东西,认识到浩瀚的海洋并深入潜水。

2 . 缺乏自主权和足智多谋
如果你没有培养为自己解决问题的能力,那么作为一名程序员,你永远不会成功。
毫无疑问,要成为一名成功的开发人员,您必须对自己的学习能力充满信心。这实际上是一项基本的生活技能 - 如果你年满18岁,没有人有义务教你什么。这是现实。您可以自行查找信息,并帮助您了解对您来说重要的信息。
在开发的世界里,您需要的所有信息都可以在这个神奇的地方找到,这个地方以前被称为信息高速公路。这个庞大的图书馆有一个巨大的门户:谷歌。了解您只需在谷歌中输入您想要的任何内容,并获得所需的信息,这是您想要学习技术所需技能时遇到的第一个障碍。
除了是一名优秀的googler之外,所有编程语言都有文档和规范,非常明确地说明了语言的工作原理。这就像使用字典 - 当你看到一个你不认识的单词时,你会查找它。作为程序员建立技能的最快,最可靠的方法是阅读文档。它实际上就在那里。
使用资源:认识到你需要的所有答案都在那里。当您有问题时,强迫自己谷歌,然后再向其他人寻求答案并查看文档。在您尝试并真正找不到您需要的答案时,节省他人的时间。

3. 面对问题时缺乏坚持
如果你在面对问题时轻易放弃,那么作为一名程序员,你永远不会成功。
编程的本质是解决问题。这就是计算机发明的全部原因!每当你开始编写程序时,你都会遇到一堆问题。一旦你解决了问题,它背后几乎总会有另一个问题。你正在取得进步,但总会面临新的问题。
面对这一堆问题可能是令人生畏和令人沮丧的。如果你觉得事情应该“正常工作”,那么你就不会有能量继续存在,因为问题会持续下去,一点一点地打倒你的情感决心。确切地说,为什么事情不起作用,这确实是你的工作。
根据我的课堂经验,每班通常有一到两名学生,他们似乎比其他学生遇到更多问题 - 通常是相当随意和模糊的问题。我提醒学生,他们面临的问题越多,学习更深入,更彻底的可能性就越大。如果他们能够通过这些问题获得理解,他们会很快发现他们更自信,因为他们面对并解决了比普通学生更多的问题。
患者接受:您需要认识到问题来自于领域而不是问题,但实际上是挑战。您面临和克服的每一项挑战都会让您更深入地了解并更好地应对新挑战,并迅速解决旧挑战。

4 . 克服问题没有成功的感觉
如果你在解决问题后没有感到兴奋和成就感,那么你将永远不会成为一名程序员。
与前一个轻松放弃的问题相关的是,一旦您成功解决了问题,就会缺乏“好感”。当修复错误和问题成为一个似乎永远不会结束的跑步机时,你会因克服问题而产生的兴奋失去联系。
当你克服一个问题时,实际上你需要打多巴胺。这类似于完成视频游戏中的关卡或解决填字游戏或数独游戏等挑战的体验。我们都知道,有一种良好的感觉来自坚持挑战,然后最终赢得最后。但如果你失去了感受这些感受的能力,或者从一开始就没有真正关心过,那么你将无法体验到编程带来的快乐。如果你认为编程只是想要尽可能轻松地获得结果,那么你将永远不会真正成为一名成功的程序员。
庆祝你的胜利:每当你解决你遇到的问题时,无论多么小,总是为你的成就感到自豪,请休息一下,祝贺自己做得好。让成功的感觉沉入其中并激励您面对下一个问题。

5 . 对学习和理解不耐烦
如果你对学习感到不耐烦并希望能够快速而轻松地掌握所有内容,那么你将无法真正成功地进行编程。
作为人类,我们是有限的生物。即使我们的世界变得越来越快,而计算机是其中的一个重要原因,我们只能尽可能快地移动。我们的大脑以一定的速度工作,并且取决于我们的过去,我们的信念,我们的情绪状态,我们的健康......我们都将以不同的速度学习和整合信息。
技术世界就像一片广阔的海洋。你将永远不会走到尽头,你永远不会达到一个你没有其他东西可以学习的高手。如果你让自己不堪重负,你总会感受到“赶上”并感到自己永远不够了解的压力。如果你不能接受你所知道的东西然后再学习一点,你就会觉得自己无处可去,并且放弃了。
相反,你需要享受自己学习的旅程。你获得的每一点知识,或者你获得的新技能都需要让你兴奋。就像解决问题一样,你需要让自己感到骄傲,认识到你向前迈出了一步,即使它是一个小问题。
承认你的进步:有很多东西需要学习,编程之旅永无止境。但是这些知识是累积的,所以要为自己所知道的事情感到自豪,并相信你在学习中所付出的一切努力都将为你的职业生涯带来无处不在的知识奠定坚实的基础。

6 . 厌倦思考
如果你对自己的思维很懒惰,并且看到集中,专注的思考作为一项苦差事,你就永远不会真正成功地进行编程。
编程是一种思考活动。作为人类,我们真的善于思考,但现实是,尽管我们自然而然地花了一整天时间,但我们的思维却很懒散。如果您不习惯,在一段时间内保持集中,专注于单个问题的能力是很困难的。
这种症状包括茫然地盯着屏幕,感觉到云在你的思绪下降,拖延问题,在浏览器标签之间翻转,拼命扫描StackOverflow的“答案”。这些迹象表明您已经受到精神限制,需要找到解决方法。
在编程的过程中,你会感到疲倦,并且在锻炼身体能量就像锻炼身体一样。当你不习惯发挥所需的精神能量时,会感到很难保持专注。但就像去健身房一样,你做的越多,你就越强大。
你的心灵是一个肌肉:相信你的大脑就像一块肌肉 - 当你使用它时,它会在思考中变得更好,更有效率。当您将各个部分放在一起并开发心理概念时,发现解决方案变得更加容易。

7 . 无法自己思考
如果您希望别人为您考虑,并且不愿意查看您自己情况的细节,那么您将永远不会成为真正成功的程序员。
当你学习新东西时,很容易觉得你缺乏知识和经验来掌握自己的观点。采取主动或做/说错话似乎有风险。
我们都有一种固有的恐惧感。当那种对错误的恐惧会抑制你的探索和好奇心时,你就会扼杀发展真正知识的能力,从经验和“失败”中获得的知识。当你需要依赖“大师”的观点,流行的博主,最佳实践或“教科书”答案时,你就没有真正整合编程的工作知识。
你需要发展自己的意见,了解哪些有效,哪些无效。您需要了解为什么您认为您的解决方案有效,以及有哪些好处。你需要建立一个超越显而易见的细微差别。你需要能够“争辩”你的一面,然后如果你改变了,你就可以拥有你所获得的新视角。
自己思考:通过您的经验和批判性思维技能,发展自己的观点。做出合理的猜测,采取立场,并随着新信息的曝光而愿意改变。

8 . 僵硬,狭隘和/或无组织的思维
如果你的思维僵硬,并且你很难保持你的代码组织 - 并且通过扩展你的思想组织和集中,你将永远不会成功编程。
我有时会在学生身上看到两个极端。第一种是严格而狭隘的思维方式。这种态度拒绝帮助,尽管有反馈,但不会改变。事物只从一个角度看待,建议被忽略了。
我看到的第二个极端是思维混乱。学生似乎把事情变得比必要的复杂,他们的代码很乱,很难遵循。他们过度思考问题并编写100行代码,当10代表足够时。
当这两种思维模式相结合时,结果就是一种紧密的编程方法,比如一种蛮力的方法,它会导致层次和层次的修复和“黑客攻击”。所需要的是能够回顾解决方案,重新评估它,放弃初始方法并重新组织。
无法看到其他可能性或收到反馈会抑制成长和改善的能力。混乱会减慢你的速度,使你无法看到本来很明显的模式。而且你工作的整体质量会降低。
自我反思:你需要退后一步,看看你如何接近事物的大局。你怎么能做得更好?你有什么办法可以让你的生活更轻松吗?你错过了什么可以帮到你?

9 . 需要“正确”的答案,而不是认识到一系列“好”和“坏”的答案
如果您认为编程的最终目标是找到正确的解决方案,而不是一系列解决方案,那么作为程序员,您永远不会真正成功。
在开始学习技能或编程时,学生通常想知道他们所做的是“正确”。答案总是“取决于”。
计算机科学是一种评估权衡的科学。鉴于不同的情况,哪条路会更好?这一切都取决于具体情况和目标。如果您将编程看作是一个正确答案或错误答案的测试,那么您将忽视大局,放弃您的创造力。如果你能根据具体情况证明合理,那么任何答案都可以是“正确的”。
现实情况是,编程更像是写诗或短篇小说(如果节目很大,则可能是小说)。在您的代码中可以看到美学和美感,有时它只能由您和其他程序员识别。您决定解决方案的原因以及您构思答案的方式比“正确的方式”或“错误的方式”更重要。拥有艺术家的头脑可以让你玩选择和可能性,而不是认为只有一种方式。这就是编程之美,有很多方法可以解决问题,并且考虑不同的可能性会让人感觉哪种方式最适合这种情况。
获得创意:认识到有很多方法可以解决问题,并且通过经验和曝光,您将在加时赛中形成一种细致入微的理解,了解哪种解决方案比其他解决方案更好。纵观全局,想象不同的可能性并信任您的直觉将导致更好的解决方案更令人满意。

10 . 不仔细注意细节
如果你掩盖细节,忽视一些小事情,你永远不会成为一个真正成功的程序员。
电脑是精密机器。在编程计算机时,您需要以计算机期望的方式精确地提供必要的命令。如果你不这样做,什么都行不通。没有一个中间立场,事情大多数工作 - 它要么做,要么不做。
这意味着当你编程时,你必须注意细节。每个空格,括号或分号都算。当不合适时,什么都行不通。当计算机回显错误消息时,您必须能够查看该消息并准确理解它告诉您的内容。而现实情况是,如果你错过这样的细节,你可能花费数小时追踪一个问题,而这个问题实际上是一个错字的结果。
正如他们所说,魔鬼在于细节。对于编程来说,这绝对是正确的。
注意细节:细节很重要,你必须接受。完成后,您可以开始一直扫描代码以查找不合适的地方。您可以组织代码并使用可帮助您快速识别问题的工具。
奖金:有商业头脑
这是我注意到的一个侧面观察 - 特别注重商业头脑的学生往往关注结果而不是过程。他们希望得到一个“工作应用程序”,将他们的商业理念推向前进,他们希望“首先进入市场”,他们认为学习曲线是他们实现业务目标的障碍。
在回顾那些难以真正帮助成长为程序员的学生时,我发现对这个过程的不耐烦,这个过程抑制了真正理解技术所需的学习。他们倾向于将技术视为达到目的的手段,而不是要探索和享受的合法知识领域。
作为对此的自然延伸,我发现某些学生更倾向于商业,并且在学习上挣扎,通常很快就会让自由职业客户报名参加他们自己没有技能的自己做的工作!他们会争先恐后地找到资源/模板以使项目为客户工作,或者将工作外包给其他人。他们真的很喜欢编程,但让人们付钱给他们编程真是太棒了!
所以我要补充的是,那些希望创业,优秀销售,网络和业务发展的学生可能比其他人更难学习编程技巧。他们创造金融机会并将人们联系到解决方案的自然愿望使他们对编程中涉及的繁琐细节感到不耐烦。

结论
虽然编程可能是一项难以学习的技能,但它肯定是大多数人可以学习的技能。上面的列表包含了妨碍他们的态度和心态,但是大多数人都可以克服它们并培养编程领域的能力 - 如果不是掌握的话。
如果您有兴趣学习编程,我鼓励您开始这个旅程。记住上面的列表,并开始探索在线可用的许多资源,这些资源可以帮助您快速前进。你不会后悔的。