[机翻]如何解决问题
此为机翻文章,原文在此。
解决问题方法
当遇到新问题时,你该怎么做?
1.理解、明白
确切的知道要问什么。大多数难题之所以难是因为你不理解它。
怎么知道你理解一个问题呢?当你可以简单的术语解释它的时候。
你还记得吗,当你被一个问题卡住,你开始解释它,你会立即发现以前从未见过的逻辑漏洞?
多数程序员知道这种感觉。
“If you can’t explain something in simple terms, you don’t understand it.” — Richard Feynman
2.计划
不要没有计划就直接解决问题(以某种方式希望您能摸索到底)。规划您的解决方案!
如果你不能写下具体的步骤,将无济于事。在编程中,这意味着不要马上开始写代码。要给你的大脑时间,处理问题、分析信息。
为这个为题给出一个计划:
“当输入X时,有哪些必要的步骤才能输出Y?”
旁注:程序员有一个很棒的工具来帮助他们。
3.划分
请注意。这是最重要的一步。
不要试图解决一个大问题。你会哭。而是将其分解为多个子问题。这些子问题更容易解决。
然后,一个一个地解决每个子问题。从最简单的开始。最简单意味着您知道答案(或更接近答案)。
此后,最简单的方法意味着要解决的子问题不依赖于要解决的其他问题。
解决了每个子问题后,将点连接起来。连接所有“子解决方案”将为您解决原始问题。恭喜你!
该技术是解决问题的基石。记住这一点(如果需要,请再次阅读此步骤)。
4.卡住了吗?
到现在为止,您可能坐在那里想:“嗨,理查德……太酷了,但是,如果我被卡住甚至不能解决子问题怎么办?”
首先,深呼吸。第二,这很公平。
朋友,请不要担心。这发生在每个人身上!不同之处在于,最好的程序员/问题解决者对bugs/errors的好奇大于对错误的恼怒。
实际上,面对混乱时,可以尝试以下三件事:
- 调试:逐步解决您的解决方案,尝试找出问题所在。程序员将其称为调试(实际上,这是调试器的全部工作)。
- 重新评估: 退后一步。从另一个角度看问题。有什么可以抽象为更通用的方法的吗?
- 研究: 啊,Google不错。您没看错。无论您遇到什么问题,都可能有人解决了。找到那个人/解决方案。实际上,即使您解决了问题,也要这样做!(您可以从其他人的解决方案中学到很多东西)。
警告:不要为大问题寻找解决方案。只寻找子问题的解决方案。为什么?因为除非您奋斗(一点点),否则您将不会学到任何东西。如果您什么都不学,那您就浪费了时间。
实践
仅仅一周之后,别指望自己变得很棒。如果您想成为一个好的问题解决者,请解决很多问题!
实践。实践。实践。认识到“使用“在此处插入概念”可以轻松解决此问题”只是时间问题。
怎么练习?wazoo有多种选择!
国际象棋难题,数学问题,数独,围棋,专卖,视频游戏,加密小猫,等等……等等……等等……。
实际上,在成功人士中,常见的习惯是练习“解决微观问题”的习惯。例如,彼得·泰尔(Peter Thiel)下棋,伊隆·马斯克(Elon Musk)玩电子游戏。
例如,我喜欢编码方面的挑战。每天,我都会尝试解决至少一个难题(通常在Coderbyte上)。
就像我说的,所有问题都有相似的模式。
结论
那是所有人! 现在,您更好地了解了“像程序员一样思考”的含义。 您还知道解决问题是一种不可思议的技能(超能力)。 如果这还不够,请注意您还知道如何去练习解决问题的技能! ew……挺酷的吧? 最后,祝您遇到许多问题。 您没看错。至少现在您知道如何解决它们了!(此外,您将了解到每种解决方案都可以改进)。
“只要您认为自己已经成功克服了一个障碍,就会出现另一个障碍。但这就是让生活变得有趣的原因。 生活是突破这些障碍的过程,这是我们必须突破的一系列防御性路线。 每次,您都会学到一些东西。 每次,您都会发展力量,智慧和远见。 每次,更多的竞争都会消失。直到剩下的只有你:你最好的版本。” —瑞安·霍里
现在,去解决一些问题!
祝你好运🙂