Language agnostic 如何才能更好地了解如何解决特定问题?

Language agnostic 如何才能更好地了解如何解决特定问题?,language-agnostic,Language Agnostic,我现在已经能流利地使用几种不同的语言,但我似乎很难找到解决特定问题的最佳方法。在编程的实际问题解决方面,有哪些方法可以让你做得更好 通过解决实际问题。熟能生巧 如果你有时间精通多种语言,我猜你没有花太多时间做任何实际工作。如果你有工作,也许是时候换一份新工作了。如果你还在上学,你是否有兴趣为自己启动一个项目,或者为你经常使用的项目做出贡献 了解你在解决什么样的问题上有困难可能会有所帮助 练习解决问题 选修算法或离散数学课程 经验。解决一些全新的问题很难。解决问题的最好方法是尝试并找到一个你以前解

我现在已经能流利地使用几种不同的语言,但我似乎很难找到解决特定问题的最佳方法。在编程的实际问题解决方面,有哪些方法可以让你做得更好

通过解决实际问题。熟能生巧

如果你有时间精通多种语言,我猜你没有花太多时间做任何实际工作。如果你有工作,也许是时候换一份新工作了。如果你还在上学,你是否有兴趣为自己启动一个项目,或者为你经常使用的项目做出贡献

了解你在解决什么样的问题上有困难可能会有所帮助

  • 练习解决问题

  • 选修算法或离散数学课程


  • 经验。解决一些全新的问题很难。解决问题的最好方法是尝试并找到一个你以前解决过的问题,并且这个问题与你以前解决过的问题相似,然后使你的解决方案适应新的问题。因此,除非你有处理各种问题的经验,否则很难解决你遇到的新问题。访问这样的网站,阅读问题和他们的答案,是了解其他人如何解决他们遇到的问题的一种很好的方式。

    基本上,“就这么做吧”。当你必须做出选择时,只要做任何选择(除了掷硬币)

    一旦你有了一些有效的方法,然后坐下来好好想想你做错了什么,以及如何做得更好

    如果你根本不知道怎么做,那就彻底解决问题的一部分,继续前进


    我建议退房。尽管他们希望我们认为他们是最好的孩子,但他们并不是最好的孩子……但他们在Basecamp中表现出色。

    去寻找一个开源或免费的项目,你可以对此感到兴奋并做出贡献。通过注册修改我最喜欢的视频游戏的代码,我学到了很多。

    体验


    学习真的只是走这么远。找些有趣的小东西。做吧。

    对于很多人来说,一种似乎有效的方法是选择一本书作为指南,专注于解决特定类型的问题。例如,如果您在图形问题或动态规划等领域表现不佳,请在在线评委上查找一组问题并解决它们。您将开始识别模式并能够对问题进行分类。

    • 谷歌搜索答案。有可能是其他人以前解决过同样的问题或类似的问题
    • 问某人。:)
    • 阅读一些关于设计模式的教科书或在线文章
    • 问题可能有很多解决方案,有些更简单,有些更复杂。不要认为只有一个解决方案。只需使用在应用程序上下文中最有意义的最简单解决方案
    • 经过多年的经验,你将能够想出自己解决大多数问题的办法。:)
        学习

        搜索并掌握尽可能多的示例、关于主题编程或其他方面的书籍等

        解决问题的能力也可以通过玩战术游戏来提高

        这些让我喜欢解决问题,并在解决问题方面变得更好(不一定很好):

        • 问问别人。你办公室里的人,推特上的人,甚至是你妻子。没有技术知识的人通常会想出更简单的解决方案
        如果必须自己解决,请尝试以下方法之一:

        • 快速搜索另一个试图解决您问题的人或项目。如果他们有博客、文档或源代码,您可以从他们的实现中学习

        • 提出至少两个解决方案,并选择最好的一个

        • 假设在文明世界被核战争/天网/永远无休止的《宋飞正传》重演摧毁之前,你有15分钟的时间来解决这个问题,你可能会想到一些更简单的方法,可以完成99%的工作


          • 这里是我过去用来帮助我理解特定问题及其解决方案的一些工具。我今天并不总是使用它们,但它们帮助我学会了如何思考如何解决问题并提出解决方案

          • n(CRC)卡 每个班级一张卡片,详细说明班级的职责以及与之合作的其他班级。使用卡片,您可以为解决方案布局您的设计,并查看哪里耦合太多或责任太多。它们允许您在提交代码之前以轻量级的方式考虑设计

          • 描述用户与系统交互的实际结构化用例,甚至更简短的故事或故事卡。我仍然使用故事,尽管我在维基中捕捉它们。这允许您以非正式的方式捕获与系统的交互。故事基本上是您需要与客户就应该做什么进行对话的占位符。使用收集到的故事,您开始掌握代码的总体意图。你也可以开始观察事物是如何相互作用的,以及什么与其他事物起作用。这真的是设计的开始

          • -特别是交互图 有一段时间我经常用这些。这真的有助于了解在引擎盖下,事物是如何协同工作的。我仍然会非正式地绘制一些复杂的交互,以确保我不会错过任何重要的东西。经历了很多这些,真的帮助我思考我的对象是如何相互作用的,现在,从相互作用的角度思考是第二天性

          • 类图——代码的真正高级视图。 这些允许您从结构上查看代码,特别是如果您可以将图表分解为c