为何你写的代码糟透了?

嗨,你终于来啦 ~ 等你很久啦~ 喜欢的小伙伴欢迎关注,我会按期分享Android知识点及解析,还会不断更新的BATJ面试专题,欢迎你们前来探讨交流,若有好的文章也欢迎投稿。立刻就周末结束了,你们周末过得怎么样呢?奶妹看到一篇好的文章特地来分享给你们哦~

前言

我常常在 Reddit 或 Quora 上看到有人问“怎么知道本身是否能够成为一名成功的程序员”?。当有人在考虑职业转型,或者对软件开发感兴趣,而且对软件开发所涉及的内容感到好奇时,就不可避免地会问这样的问题。
事实上,对于那些没有正式接受过计算机培训的人来讲,这个问题会成为他们脑子里的一个主要障碍。他们会很天然地认为,若是本身不擅长编程,是否能够往这方面想?就好像你想成为一名演员,但又怀疑本身是否擅长表演。
做为一名教授全栈 Web 开发的教育工做者,我教过不少“初次进入这个领域的程序员”。好消息是,我不多会遇到没法学会编程的学生。我认为编程是人类的一项基本技能,就像阅读、写做和算术同样。任何人均可以作到,它是人类能力的一部分,但确实须要进行有意识的学习。
在过去两年中,我目击了各类各样的学生在这个过程当中的挣扎,以及他们在挣扎过程当中出现的一些问题。看一下下面的清单,若是你在本身身上看到了这些问题,说明你可能在编程方面糟透了,你能够考虑去作一些更适合你的事情。可是,若是你仍然极力想成为一名程序员,那就能够轻松面对这些问题,并作出改变。
下面的清单将帮你了解你是否在编程方面糟透了,而且若是你想要作出改变,能够作些什么。程序员


一:缺少好奇心

若是你对计算机和技术原理缺少好奇心,那就永远不会成为一名成功的程序员。
若是你对计算机和技术原理缺少好奇心,那就永远不会成为一名成功的程序员。

对学习的东西感兴趣是学好东西的基础。若是你对技术没有好奇心,就不具有足够的能量坚持下去,由于要成为一名成功的程序员,须要进行普遍而深刻的学习。面试

技术世界就像一片浩瀚的海洋,充斥着有趣的领域知识、相互链接的想法,以及能够激发想象力的无穷可能性。它须要内在的动力去潜心研究并发现你所能发现的一切。编程

找到你的好奇心: 问问本身是否真的对编程感兴趣。若是你的答案是“否”,那么去寻找你感兴趣的东西吧,请省下你的时间和精力。可是,若是你的答案是“是”,那么就去寻找你以前没有注意到的东西,潜入那个浩瀚的海洋中去吧。浏览器


二:缺少自主性和智慧

若是你不去培养解决问题的能力,那就永远不会成为一名成功的程序员。
若是你不去培养解决问题的能力,那就永远不会成为一名成功的程序员。

毫无疑问,想要成为一名成功的程序员,你必须对本身的学习能力充满信心。这其实是一项基本的生活技能——若是你年满 18 岁,没有人有义务教你什么。这就是现实。你要本身去探索对你来讲最重要的东西。网络

在软件开发的世界里,你须要的信息均可以在一个神奇的地方找到,这个地方之前被称为信息高速公路。而这个庞大的图书馆有一个巨大的入口:搜索引擎。你首先要学会在搜索引擎中输入任何你想要的内容,并得到所需的信息,这是学习技术的第一道障碍。并发

除了成为一个优秀的搜索引擎用户以外,全部编程语言都提供了文档和规范,它们很是明确地说明了编程语言的工做原理。这就像使用字典同样——当你看到一个不认识的单词时,就开始查字典。对于程序员来讲,阅读文档是提高技能最快,最可靠的方法。编程语言

利用资源:你须要的全部答案都已经在那里。当你遇到问题时,先使用搜索引擎,而后再向其余人寻求答案或查看文档。工具


三:面对问题时没法坚持

若是你在面对问题时很容易就放弃,那就永远不会成为一名成功的程序员。
若是你在面对问题时很容易就放弃,那就永远不会成为一名成功的程序员。

编程的本质是解决问题。这就是为何人类要发明计算机!当你开始写代码时,会遇到一堆问题。在你解决了一个问题以后,一般会有另外一个问题在等着你。解决问题的过程就是你取得进步的过程,但总有新的问题须要面对。学习

老是要面对一堆问题可能会让人望而生畏和沮丧。若是你认为事情作到“差很少”就好了,那么你就不会有足够的能量坚持下去,由于问题会持续出现,它们会一点一点消磨掉你仅有的热情。测试

根据个人教学经验,一般每一个班级都会有一到两名学生,他们彷佛会比其余学生遇到更多的问题——一般都是很随意和模糊的问题。我提醒学生,他们遇到的问题越多,学习就会更深刻、更完全。若是他们可以经过解决这些问题理解到更多东西,他们就会变得更加自信,由于他们比普通学生面临并解决了更多的问题。

耐心接受:你须要认识到,问题实际上就是挑战。你面临和克服的每个挑战都会让你更深入地理解和更好地面对新挑战,并迅速解决旧挑战。


四:解决问题没有成就感

若是你在解决问题后不会感到兴奋或没有成就感,那就永远不会成为一名成功的程序员。
若是你在解决问题后不会感到兴奋或没有成就感,那就永远不会成为一名成功的程序员。

在成功解决问题后缺少一种“良好的感受”,这与前面的太容易放弃实际上是有关系的。当修 bug 变成一种彷佛永无止境的任务时,从克服问题中得到的兴奋感会离你而去。

在应对挑战时,实际上须要多巴胺的刺激。这种体验有点像视频游戏中的升级或玩填字或数独游戏。咱们都知道,坚持完成一个挑战并最终取得胜利,这样会得到一种良好的感受。但若是你失去了感觉这些感受的能力,或者从一开始就没有真正关心过,那么你将没法体验到编程带来的快乐。若是你认为编程是一种苦差事,只想尽量轻松地得到结果,那么你就永远不会成为一名成功的程序员。

庆祝你的胜利:每当解决了一个困扰你已久的问题,不管是多么小的问题,都要为你的成就感到自豪。休息一下,给本身庆祝一下,让成功的感受进入你的身体,并让它激励你面对下一个问题。


五:缺少耐心

若是你对学习感到不耐烦并但愿可以快速而轻松地掌握全部东西,那就永远不会成为一名成功的程序员。
若是你对学习感到不耐烦并但愿可以快速而轻松地掌握全部东西,那就永远不会成为一名成功的程序员。

人类的能力是有限的。即便咱们的世界发展得愈来愈快,而计算机是促成这种发展的一个重要动力,但咱们也只能尽量快地跟上世界发展的脚步。咱们的大脑以必定的速度运转,而且取决于咱们的过去、信念、情绪、健康……咱们学习和整合信息的速度是不同的。

技术世界就像浩瀚的海洋,你永远没法走到尽头,没法成为一个再也不须要学习任何东西的高手。若是你让本身不知所措,就会有一种想要“迎头遇上”的压力,你会以为本身知道的永远不够多。若是你不能接受你所知道的,而后再多学一点,你会以为本身没有进步,而后就会放弃。

相反,你要享受本身的学习之旅。你掌握的每一点知识,或者得到的每一项新技能都应该让你感到兴奋。就像解决问题同样,你须要让本身感到自豪,由于你已经向前迈出了一步,即便是很小的一步。

认可你的进步:有不少东西须要学习,编程之旅永无止境。但这些知识是能够累积的,因此要为本身所知道的事情感到自豪,并相信你在学习中所付出的一切努力都将为你的职业生涯打下定坚实的基础。


六:厌倦了思考

若是你懒于思考,把集中、专一的思考当作是一件苦差事,那就永远不会成为一名成功的程序员。
若是你懒于思考,把集中、专一的思考当作是一件苦差事,那就永远不会成为一名成功的程序员。

编程是一项思考活动。做为人类,咱们很是擅长思考,但现实状况是,即便咱们很天然地花了一成天去作这件事,咱们在思考上仍然是懒惰的。若是你还不习惯,那么要想在一段时间内集中精力解决一个问题是很困难的。

这种状况的症状包括茫然地盯着屏幕、感受脑壳上笼罩着乌云、拖延、在浏览器标签之间切来切去,以及拼命在 StackOverflow 上寻找“答案”。这些迹象代表你已经达到了思考极限。

在编程过程当中,你会感到疲倦,思考就像锻炼身体同样会消耗你的能量。当你不习惯运用所需的精神能量时,会感到很难保持专一。但就像去健身房同样,你作的越多,就越强大。

你的大脑就像一块肌肉:你的大脑就像一块肌肉——当你使用它时,它会在思考过程当中变得更好,更有效率。当你把各个部分放在一块儿造成思惟概念时,寻找解决方案就会变得容易得多。


七:没法本身思考

若是你但愿别人为你考虑,而且不肯意本身去探究细节,那就永远不会成为一名成功的程序员。
若是你但愿别人为你考虑,而且不肯意本身去探究细节,那就永远不会成为一名成功的程序员。

当你在学习新东西时,会以为本身缺少知识和经验,没法拥有本身的观点。太过主动或者作错或说错某些东西彷佛是有风险的。

咱们都会有一种固有的恐惧感。当对犯错的恐惧抑制了探索欲和好奇心时,你就会扼杀掌握知识的能力,而这些知识须要从经验和“失败”中得到。当你须要依赖“权威”、受欢迎的博主、最佳实践或“教科书”给出的答案时,你就没有真正整合编程的实用知识。

你须要发展本身的观点,了解哪些东西是有效的,哪些是无效的。你须要了解为何你的解决方案是有效的,以及它的好处是什么。你须要发展一种超越显而易见的事物的微妙视角。你须要可以为你的立场“争辩”,若是你的见解变了,就能够得到新的视角。

本身去思考:经过你的经验和批判性思惟技能来发展本身的观点。作出合理的猜想,代表立场,并愿意随着新信息的出现而作出改变。


八:僵化、狭隘和紊乱的思惟

若是你的思惟僵化,而且很难保持代码的条理性,那就永远不会成为一名成功的程序员。
若是你的思惟僵化,而且很难保持代码的条理性,那就永远不会成为一名成功的程序员。

有时候,我会在学生身上看到两个极端。第一种学生拥有僵化而狭隘的思惟方式,他们拒绝帮助,尽管收到了反馈,也不会作出改变。他们只从一个角度看待事物,建议一般会被他们忽略。

第二个极端是思惟混乱。这种学生彷佛喜欢把事情复杂化,他们的代码很乱,难以理解。他们过分思考问题,10 行代码就能够解决的问题他们要写 100 行。

当这两种思惟模式结合在一块儿,就会造成一种严密的编程方式,就像使用蛮力同样,会致使一层又一层的修复和“hack”。这个时候须要回顾解决方案,从新评估它,并放弃最初的方法,而后从新组织解决方案。

看不到其余可能性或没法收到其余反馈会抑制成长和进步的能力。没有条理性会减慢你的速度,阻止你看到本来显而易见的模式。你的总体学习质量就会降低。

自我反思:你须要退后一步,从更广的角度看待你是如何处理事情的。怎样才能作得更好?能够作些什么让你的生活变得更轻松?你错过了哪些能够帮助你得到提高的东西?


九:只在乎“正确”的答案,不想去找出一系列“好”和“坏”的答案

若是你认为编程的最终目标是找到正确的解决方案,而不是一系列解决方案,那就永远不会成为一名成功的程序员。
若是你认为编程的最终目标是找到正确的解决方案,而不是一系列解决方案,那就永远不会成为一名成功的程序员。

在开始学习技能或编程时,学生一般想知道他们所作的是否是“正确”的。但答案老是“取决于”。

计算机科学是一门评估权衡的科学。对于不一样的状况,采起哪条路经会更好?这一切都取决于具体的状况和目标。若是你将编程看做是一个正确答案或错误答案的测试,那么你就会忽视大局,创造力会与你擦肩而过。任何答案均可以是“正确”的,只要你能在特定状况下证实它。

现实状况是,编程更像是写诗或短篇小说(大型程序就像是小说)。在你的代码中能够看到一种美感,有时只有你和其余程序员能够看得出来。你作出决策的缘由和你构思答案的方式比“正确的方式”或“错误的方式”更加剧要。拥有艺术家的头脑会让你拥有更多的选择和可能性,而不是认为只有一种答案。这就是编程之美,解决问题的方法有不少,思考不一样的可能性会让人产生一种感受,知道哪一个解决方案是最适合的。

变得有创意:要意识到解决问题的方法有不少,经过经验和接触,随着时间的推移,在选择解决方案时你会造成一种微妙的理解能力。从大局出发,想象不一样的可能性,相信本身的直觉,你会找到更好的、更使人满意的解决方案。


十:不注意细节

若是你忽略细节,忽视小事情,那就永远不会成为一名成功的程序员。
若是你忽略细节,忽视小事情,那就永远不会成为一名成功的程序员。

计算机是精密的机器。在进行计算机编程时,你须要以计算机指望的方式精确地提供必要的命令。若是你不这么作,就什么都不会发生。一个程序要么能够运行,要么不能运行,不存在所谓的中间地带。

因此,在编程时,你必须注意细节。每一个空格、括号或分号都很重要。出了一点问题都不行。当计算机返回错误消息时,你必须可以准确理解它告诉你的信息。而现实状况是,若是你错过这样的细节,可能须要再花费数小时追查一个问题,而这个问题实际上多是由一个错别字致使的。

细节决定成败。对于编程来讲,这绝对是至理名言。

注意细节:细节很重要,你必须接受这个事实。若是你能够作到,那就从一开始就扫描代码,找出任何不恰当的地方。你能够借助一些能够帮助你快速识别问题的工具。


十一:Tips:掌握商业思惟

image

这是我观察到的另外一个结果——注重商业思惟的学生每每更关注结果而不是过程。他们但愿获得一个“可运行的应用程序”,帮助他们将商业理念向前推动,他们但愿“先进入市场”,认为学习曲线是他们实现业务目标的障碍。

在反思那些难以帮助他们成长为程序员的学生时,我发现了他们对这个过程缺少耐心,缺少耐心给他们理解技术带来了阻碍。他们每每把技术视为一种达成目的的手段,而不是一个能够探索和享受的领域知识。

做为这一观点的延伸,我发现有些学生颇有商业头脑,他们在学习中会遇到困难,但每每很快就有客户与他们签约,从事本身实际上并不擅长的工做!他们会争先恐后地寻找资源或模板让项目跑起来,或者把工做外包给其余人。他们在编程方面确实很烂,但在让人们付钱给他们编程方面却颇有一套!

因此我想要补充的是,那些渴望创业的学生,在销售、网络和业务发展方面都很优秀,他们可能比其余人更难以学会编程。他们天生但愿创造经济机会,并将人们与解决方案联系起来,这致使他们对编程中涉及的繁琐细节感到不耐烦。


十二:结论

虽然编程多是一项难以掌握的技能,但大多数人确定都能学会。上面的清单列出了妨碍咱们取得进步的态度和思惟方式,但大多数人均可以克服它们,并培养出编程能力(不必定要精通)。

英文原文:
blog.usejournal.com/10-signs-yo…做者 | Jonathan Bluks译者 | 薛命灯

相关文章
相关标签/搜索