> * 原文地址：[10 Signs You Will Suck at Programming](https://blog.usejournal.com/10-signs-you-will-suck-at-programming-5497a6a52c5c)
> * 原文作者：[Jonathan Bluks](https://medium.com/@jonathanbluks)
> * 译文出自：[掘金翻译计划](https://github.com/xitu/gold-miner)
> * 本文永久链接：[https://github.com/xitu/gold-miner/blob/master/TODO1/10-signs-you-will-suck-at-programming.md](https://github.com/xitu/gold-miner/blob/master/TODO1/10-signs-you-will-suck-at-programming.md)
> * 译者：[xionglong58](https://github.com/xionglong58)
> * 校对者：[renyuhuiharrison](https://github.com/renyuhuiharrison), [yzw7489757](https://github.com/yzw7489757)

# 10 个迹象让你不能做一名成功的程序员

![More Stickers Doesn’t Make You More Better. — **Photo by [Tim Gouw](https://unsplash.com/@punttim?utm_source=medium&utm_medium=referral) on [Unsplash](https://unsplash.com?utm_source=medium&utm_medium=referral)**](https://cdn-images-1.medium.com/max/4096/0*cF-7zKh4jqldcDf2)

我经常在 Reddit、Quora 上遇到有人问，“怎样才能知道我将来会不会成为一名成功的程序员？”（事实上，这篇文章实际上是我在 [Quora 上给出的答案](https://www.quora.com/What-are-the-signs-that-show-you-wont-succeed-as-a-programmer/answer/Jonathan-Bluks)的一个扩展。）当人们考虑更换职业，或者是对软件开发感兴趣，并且对它需要些什么感到好奇时，不可避免地会出现编程问题。

我认为对没有受过任何正规计算机培训的人来说，这是一个主要障碍。你会很自然地认为，如果你不擅长编程，那么你是不可能成功的。这有点像你想成为一名演员，并想知道你是否擅长表演。

作为一名 Web 全栈开发讲师，我教过很多“初学程序员”。好消息是我很少发现有无法学习编程的学生。我认为它是人类的一种基本技能，就像阅读、写作和算术一样。任何人都可以做到，这是我们人类能力的一部分，但也确实需要学习。

在过去两年的教学中，我看到有很多学生努力学习编程，同时，还发现在他们的学习过程中出现的一些共同问题。**如果你看一下下面的清单并联系自身情况，请放心，你会在编程的过程中受挫**并且应该在你受挫时做点什么。但是，如果你仍然致力于成为开发人员的目标，那么你可以轻松地面对这些问题并做出改变。

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

下面的清单将帮助你了解你是否会在编程方面受挫，以及如果你想改变它，你可以做些什么。

***

## 1 | 缺乏好奇心

> 如果你对计算机和技术原理的缺乏好奇心，作为一个程序员，你将永远不会成功。

学习的基本要求是对你正在学习的东西有积极兴趣。如果你没有对技术感到好奇的头脑，你就没有足够的干劲去坚持学习成功码农必备的更全面更深入的知识。

相比之下，技术世界就像是一片汪洋大海，它充满了有趣的领域，互相关联的思想，以及激发人类想象力的各种可能性。

> **找到你的好奇心**：问问自己是否真的对编程感兴趣。如果你诚实的答案是没有，那么还是去寻找你感兴趣的东西吧，节省你自己的时间和精力。但是，如果你的回答是“是”，那么请你自己找一些你之前没有注意到的新东西，意识到这是一个浩瀚的海洋并深入其中。

## 2 | 缺乏主动和灵活多变

> 如果你不培养独立解决问题的能力，你就永远不会成为一个成功的程序员。

毫无疑问，要成为一个成功的开发人员，你必须对自己的学习能力充满信心。这实际上是一项基本的生活技能 —— 如果你已经过了18岁，没有人有义务教你任何东西。这就是现实。你得自行查找信息，并帮助你去了解对自己来说哪些是重要的信息。

在发展的世界里，你所需要的所有信息都可以在一个神奇的地方找到，这个地方以前被称为**信息高速公路**。这个庞大的图书馆有一个巨大的入口：[谷歌](https://www.google.com)。当你想获得技术中所需的技能时，首先要跨越的障碍是学会在谷歌中输入你想要的任何东西并获取你需要的信息。

除了要做一个优秀的 googler，所有编程语言都有文档和规范，这些文档和规范**非常**明确地说明了该语言的工作方式。就像用字典一样 —— 当你看到一个你不认识的词时，你就会在字典中查出来。作为一名程序员，最快速、最可靠的方法就是直接阅读文档。就是这么简单。

> **利用资源**：要意识到所有你需要的答案都在那儿等着你。向别人寻求答案之前，一定得要求自己先使用谷歌，同时要翻阅文档。这样当你已经尝试过却没有找到你需要的答案时，也能够节省他人的时间。

## 3 | 面对问题时缺乏毅力

> 如果你在面对问题时轻易放弃，那么作为一名程序员，你永远不会成功。

编程的本质是解决问题。这也是发明计算机的全部原因！每当你开始编写程序时，你都会遇到一堆问题。一旦你解决了一个问题，它背后可能又会有另一个问题。你**正在**取得进步，但总会遇到**新**问题。

面对一堆的问题可能会让人望而生畏、令人沮丧的。如果你觉得程序就应该是“正常工作”，那么当问题持续出现，一点一点地击溃你的信心时，你就没有精力再坚持下去。 确切地说你的工作就是找出程序为什么不能正常工作。

根据我在课堂上的经验，通常每个班都有一两个学生，他们似乎比其他学生更擅长发现那些不太常见、令人费解的问题。我提醒学生，他们面对的问题越多，学习越深入和透彻的可能性就越大。如果他们能通过这些问题获得理解，他们会很快发现他们更自信，因为他们面对和解决的问题比普通学生多。

> **耐心地接受**：你需要意识到问题是不可避免的，问题本身不是问题，其事实上对你的挑战。你面临和克服的每一个挑战都会让你更深入地了解并更好地应对新挑战，从而迅速解决旧的挑战。

## 4 | 克服问题时没有成就感

> 如果你在解决问题后没有感到兴奋和成就感，那么作为一名程序员，你永远不会成功。

与前一个问题相关的是，一旦你成功地解决了一个问题，就缺乏“良好的感觉”。当修复 bugs 和问题变成了一个永远不会停止的单调工作时，你就会失去与克服问题的兴奋感。

当你克服一个问题时，你需要的是多巴胺的释放。这类似于在视频游戏中完成一个关卡，或者解决一个像纵横填字游戏或数独这样的挑战。我们都知道坚持通过一个挑战，然后最终赢得比赛会有一种很好的感觉。但是如果你失去了感受这些感觉的能力，或者一开始从来没有真正在意过这些感受，那么你将无法体验到编程带来的快乐。如果你把编程看作是一种痛苦，你只想尽可能容易地得到结果，那么你永远不会真正成为一个成功的程序员。

> **庆祝胜利**：每当你解决了一个你一直在努力解决的问题时，不管这个问题有多小，都要为你的成就感到自豪，休息一下，并祝贺你自己完成了一项出色的工作。让成功的感觉渗透进身体，让你在面临下一个问题充满活力。

## 5 | 对于学习和理解没有耐心

> 如果你对学习不耐烦，并且期望能够快速而轻松地掌握所有东西，那么你将永远不会在编程上成功。

我们人类并不是完美的生物。即使世界的前进速度变得越来越快，计算机是其中的一个重要原因，我们也只能尽可能快地前进。我们的大脑以一定的速度工作，并且依赖我们的过去、我们的信念、我们的情绪状态、我们的健康...，我们将以不同的速度学习和整合信息。

技术的世界就像一片广阔的海洋。 你永远不会走到尽头，你永远不会成为一个没有其他东西可以学习的高手。如果你让自己负担过重，你就会总有“追赶”的感觉，并总觉得自己知道的不够多。如果你不能接受你所知道的东西后再去学习一点，你就会迷失自我，然后放弃。

相反，你应该享受学习之旅。你获得的每一点知识，或是新技能，都应该是让你感到兴奋。像解决问题一样，你需要让自己感到自豪，因为你认识到自己已经向前迈出了一步，即使这是一个很小的一步。

> **认可你的进步**：要学的东西有很多，编程的旅途永远不会结束。但是知识是需要累积的，所以要为你所知道的感到自豪，并且相信你在学习中所做的每一个努力都将为你的职业生涯打下一个坚实的知识基础。

## 6 | 对思考问题感到厌烦或疲惫

> 如果你懒于思考，把集中注意力的思考当成乏味无聊的任务，那么你将永远不会在编程上成功。

编程是一种思考活动。作为人类，我们确实擅长思考，但事实是，即使每天都在不自觉地思考，我们仍懒于去主动思考。如果你不养成思考问题的习惯，那么很难在一段时间内集中精力解决一个问题。

这种情况的症状包括：茫然地盯着屏幕、感觉一团云笼罩着你、拖延问题、在浏览器标签之间来回切换，拼命地浏览 StackOverflow 寻找“答案”。这些迹象表明，你的精神已经受限，需要找到一条出路。

在编程的时候，你会感到疲倦，并且思考就像锻炼身体一样消耗体力。当你不习惯运用你所需的精神力量时，你将很难集中注意力。但这就像去健身房一样，你实际操作的越多，你就会变得越强壮。

> **你的精神如同肌肉**：请相信，你的大脑就像一块肌肉 —— 当你不停使用它的时候，它在思考过程中才会变得更好和更有效率。当你把各个部件拼凑在一起并运用精神时，会发现解决方案变得容易了很多。

## 7 | 无法独立思考

> 如果你期望着别人替你思考，并且不愿意认真审视自己的处境，你将永远不会成为一个真正成功的程序员。

当你在学习新的东西时，很容易觉得你缺乏知识和经验来支撑自己的观点。采取主动或做错事/说错话似乎有风险。

我们对犯错有一种固有的恐惧感。当对犯错的恐惧抑制了你的探索和好奇心时，就会扼杀你获取真正知识的能力，知识是从经验和“失败”中获得的。 当你需要依赖“大师”的观点、热门博主、最佳实践或“教科书”答案时，那么说明你还没有真正融合对编程的有用知识。

你需要对什么有用，什么没用形成自己的观点。需要明白为什么你觉得你的解决方案有用，以及它的好处是什么。需要建立一个微妙的视角，去超越那些显而易见的东西。你需要能够为你的观点“辩护”，然后在这个过程中，如果你发生了改变，你就可以拥有新的观点。

> **自己多想想**：通过你的经验和批判性思维技巧建立你自己的观点。做出合理的猜测，坚定立场，并愿意随着新信息的出现而做出改变。

## 8 | 僵化、狭隘、混乱的思维

>如果你的思维僵化，那么你将很难通过扩展思维的条理化和集中化保持代码的条理化，僵化的思维让你永远不会在编程上取得成功。

我有时在学生中会看到两个极端。第一种是僵化和狭隘的思维方式。这种态度拒绝帮助、不在乎反馈、不会做出改变，只从一个角度出发看事情，忽略他人的意见。

我看到的第二种极端是思维混乱。学生们似乎使事情变得的复杂化，他们的代码杂乱无章，难以理解。他们过度思考问题，原本 10 行代码就足够解决问题，他们硬是写出 100 行的代码。

当这两种思维方式结合在一起时，结果就是一种极端保守的的编程方法，就像导致一层又一层的修复和“黑客攻击”的一种蛮力方法。我们需要的是重新审视解决方案、重新评估它、放弃最初的方法和重新组织的能力。

无法看到其他可能性或接受反馈会抑制成长和提升的能力。杂乱无章会减慢你的速度，阻止你看到那些原本显而易见的方法，你的工作质量也会下降。

> **自我反省**：你需要退后一步，以便总览全局。你怎么才能做得更好？你能做些什么让你的生活更轻松吗？你错过了哪些可以帮助到你的东西？

## 9 | 需要“正确”的答案，而不是鉴别出“好”和“坏”的答案

> 如果你认为编程的最终目标是找到一个正确的解决方案，而不是一系列解决方案，那么作为一个程序员，你将永远不会真正成功。

当学生开始学习技能或编程时，往往他们都想知道自己所做的是否是“正确的”，而答案总是“视情况而定”。

计算机科学是一门评估权衡的科学。在不同的环境下，哪条路更好？这完全取决于具体的环境和目标。当你把编程看作是一个有正确答案或错误答案的测试时，你就失去了对全局的认识，也放弃了你的创造力。任何答案都可以是“正确的”，前提是你能根据具体情况证明这一点。

现实情况是，编程更像是写诗或写短篇小说（如果程序很大，则可能是小说）。在你的代码中可以看到一种美学和美感，有时只有你和其他一些程序员能读懂。你的解决方案的理由，以及构思答案的思路，比“正确的方式”或“错误的方式”更重要。拥有一个艺术家的头脑可以让你玩转选项和可能性，而不是认为只有一种方式。这就是编程的美，有很多方法可以解决一个问题，对不同可能性的权衡会让人感觉哪种方法最适合眼下的情况。

> **来点创意:** 认识到解决问题的方法有很多种，通过经验和对问题的解析，随着时间的积累，你将懂得如何辨析最优方案，你就会产生细微的理解。纵观全局，去想象不同的可能性，相信你的直觉，你会得到更令人满意的更好的解决方案。

## 10 | 不注意细节

> 如果你掩盖细节，忽略一些小事情，你将永远不会成为一个真正成功的程序员。

计算机是精确的机器。当涉及到计算机编程时，你需要按照计算机期望的方式**明确地**提供必要的命令。如果你不这样做，什么都不会奏效。完全没有折中 —— 要么能，要么不能。

这意味着当你在编程时，你必须注意细节。每个空格、括号或分号都要考虑。如果稍有不对，一切都是白谈。当计算机打印出一条错误信息时，你必须能够审查信息并准确理解它想要所告诉你的内容。事实是，如果你错过了一些细节，你可能要花几个小时来找 bug，但实际上只是一个输入错误导致的问题。

正如他们所说，魔鬼在细节中，这对于编程来说绝对是正确的。

> **注意细节**：细节很重要，你必须接受它。一旦你注重细节，你就可以开始通过浏览你的代码找出任何不合适的地方。你要能够有条不紊地组织好代码，并借助工具来更快地处理问题。

## 额外补充: 商业化的思维

这是我注意到这样一个现象 —— 那些特别有商业头脑的学生，往往关注结果而不是过程。他们希望得到一个“可以使用的 app”，这将推动他们的商业理念向前发展，他们希望“先进入市场”，并且他们将经验积累视为他们实现商业目标的障碍。

在回顾那些难以在帮助下成长为程序员的学生时，我发现对于学习过程的不耐烦，阻碍了真正地理解技术。这些学生倾向于将技术视为达到目的的手段，而不是真正地探索和享受的知识。

作为对此的一个自然延伸，我发现有些学生更倾向于经商，他们在学习上很吃力，但通常会很快让自由职业客户报名参加他们自己实际上都不会的工作。他们迅速地寻找资源/模板来让项目获得客户的满意，或者将工作外包给其他人。 **他们确实不擅长编程，但却很擅长让人们付钱给他们编程!**

所以我想补充的是，那些渴望创业的学生，他们在销售、人际关系和商业发展方面都很优秀，但比其他人更难以学习编程技能。他们天生渴望创造生财的门路，并将人们与解决方案联系起来，这让他们对编程中繁琐的细节失去了耐心。

## 总结

***

虽然编程是一项很难学习的技能，但它肯定是大多数人都能学的。上面的清单包含了阻碍学习的一些态度和思维方式，但是大多数人可以克服它们，并在编程领域发展自己的能力 —— 如果不是精通的话。

如果你对学习编程感兴趣，我鼓励你开始这个旅程。记住上面的清单，网上有很多可以让你快速前进的资源，快去探索吧，你不会后悔的。

**免责声明：根据我作为教育工作者和 Web 开发人员的专业经验，这里所表达的观点完全是我自己的，它们不代表BrainStation 的观点。**

***

![](https://cdn-images-1.medium.com/max/4000/1*f2IVAl0TbsfES9cFGYr40g.png)

***
> 如果发现译文存在错误或其他需要改进的地方，欢迎到 [掘金翻译计划](https://github.com/xitu/gold-miner) 对译文进行修改并 PR，也可获得相应奖励积分。文章开头的 **本文永久链接** 即为本文在 GitHub 上的 MarkDown 链接。

---

> [掘金翻译计划](https://github.com/xitu/gold-miner) 是一个翻译优质互联网技术文章的社区，文章来源为 [掘金](https://juejin.im) 上的英文分享文章。内容覆盖 [Android](https://github.com/xitu/gold-miner#android)、[iOS](https://github.com/xitu/gold-miner#ios)、[前端](https://github.com/xitu/gold-miner#前端)、[后端](https://github.com/xitu/gold-miner#后端)、[区块链](https://github.com/xitu/gold-miner#区块链)、[产品](https://github.com/xitu/gold-miner#产品)、[设计](https://github.com/xitu/gold-miner#设计)、[人工智能](https://github.com/xitu/gold-miner#人工智能)等领域，想要查看更多优质译文请持续关注 [掘金翻译计划](https://github.com/xitu/gold-miner)、[官方微博](http://weibo.com/juejinfanyi)、[知乎专栏](https://zhuanlan.zhihu.com/juejinfanyi)。
