每当我遇到一个棘手的问题,并且如果无法找出确切的解决方案或无法开始时,我都会与自己进行这种永无休止的讨论,如下所示:
解决问题/数学/算法技巧是有天赋的(不是您可以通过实践来学习,通过实践,您只能掌握以前已经解决的问题的类型)
只有上过好学校的人才能做到,因为他们早就学会了。
您有什么想法,一个人可以通过艰苦的工作来解决问题/算法,而又需要一个额外的基因吗?
每当我遇到一个棘手的问题,并且如果无法找出确切的解决方案或无法开始时,我都会与自己进行这种永无休止的讨论,如下所示:
解决问题/数学/算法技巧是有天赋的(不是您可以通过实践来学习,通过实践,您只能掌握以前已经解决的问题的类型)
只有上过好学校的人才能做到,因为他们早就学会了。
您有什么想法,一个人可以通过艰苦的工作来解决问题/算法,而又需要一个额外的基因吗?
Answers:
我一生中的大部分时间都在想,才干是您开发的东西还是天生的东西。然后我想到答案是无关紧要的,至少如果您想自己实现目标。即使您有才华,也只有在您认为才华来自实践的情况下才会对您有所帮助,因为您会更加努力。
关于算法以及任何其他真正困难的技能,需要实践才能变得良好。我不知道你是否也必须有一些才能。我确实知道,但是,人们通过练习在诸如TopCoder之类的比赛中取得了巨大的进步。我自己从中学到了很多。
如果您建立了系统的培训计划,即使它并不完美,您也将处于领先地位。到目前为止,我已经在TopCoder上编写了数百个程序,它深刻地影响了我的思维。我学到了很多事情,只有做错了事然后纠正我的错误才可以学到。我的一个朋友写了几千本在TopCoder上程序,尽管他刚起步时的表现比我的差,但他的表现比我好。那不是巧合。
编辑:
我刚刚在math.stackexchange上遇到了这个答案。我认为,即使他撰写有关国际象棋和数学的文章,这也是关于如何学习已阅读算法的最好解释之一。
1)不要尝试以最一般的抽象来解决问题。
2)当您的大脑处于最大工作状态时,选择正确的时间。
我从数学老师的建议中得到了第一点。有用!尝试做不同的例子和问题的方案。这极大地有助于确定在大多数问题中最难理解的边缘情况。
解决此类问题的最佳时间是黎明(凌晨4点至6点)。前一天晚上睡个好觉,并准备好解决此问题。沉默是你的朋友。
我确实相信有些人比其他人有更多的智慧,但这不是最重要的因素。这就是您如何利用这种智能来解决问题的方法。
我十二岁的时候在小组课上上了魔术课。魔术师的名字叫乔·卡罗塔。他有一次魔术,我脱口而出:“你是怎么做到的?” 从那以后,他说了那句话,一直困扰着我。
乔的回答是:“迈克尔,如果您真的想知道该技巧是如何完成的,则必须弄清楚自己将如何做。”
好吧,这当然不是我想听的,但确实让我专注于解决问题。从我的角度来看,这是解决问题的方法。如果我第一次尝试解决问题时采取了17个步骤,而且真的很笨拙,那么好消息是我解决了问题。
然后,通过查看我开发的解决方案,并进一步寻找改进该解决方案的方法,我将学习如何简化最终结果。后来,在我的计算机编程生涯中,我发现此过程称为“逐步优化”。
它早在1971年就开始运作,直到今天仍在运作。
对我来说,我认为这有点天赋,但更重要的是经验和实践。如果您知道许多问题并找到了最佳解决方案,则可以更轻松地提出新问题的解决方案。
我过去的例子:有一次编程竞赛(很好的训练,顺便说一句),我没有找到一个好的解决方案。获胜者主要通过使用KD-Tree解决了该问题。为此,您首先需要知道什么在这种情况下是KD-Tree,以及它的用处。今天,这对我来说很清楚,如果我再次遇到类似的问题,我将能够很快解决它。
要回答这个问题,首先我们需要找到解决问题的能力的要素。
有所谓的天赋。这是您天生的才能。这决定了您的潜力。天生具有更多灰质的人往往会比自然不那么慷慨的人表现更好。这意味着,如果具有相同的参数(教育,个性,耐压力,意志力),那么拥有更好才能的人比没有同样才能的人更有可能表现更好。如果人们发现他或她倾向于花费大量时间来吸收新信息,直到他或她能够应用它,那么对这个人来说,最明智的决定就是离开程序设计,并避免充满挫败感的生活。自然地,我们不能指望初学者能够立即理解最复杂的现象,但是如果初学者太慢而无法理解初学者的概念,
人才发达。一个人天生就有天赋,但这本身不足以解决问题。我从未见过新生儿写代码。一个人必须接受一些教育。越早越好。另外,学校的质量也很重要。我们永远不应否认这样一个事实,即一个人没有机会在一所好学校里提早学习编程,那么他或她在争取成功的过程中就会遇到障碍。但是,如果某人早早念完好学校,那么就可以通过艰苦的工作来弥补这一障碍。例如,我的妻子在另一个领域接受过教育,但是大学毕业后,她找不到合适的工作。所以我开始教育她。一个月后,她学会了学习方法,并能够解决几乎所有出现在她身上的问题,但她仍然没有效果。她逐渐开始以自动协商的方式学习。一年后,她已经是一名专业编码员。她没有来自学校的可编写代码的论文,但是她做得很棒。因此,她错过了早期教育,但后来能够消除这种障碍。发达的人才可以描述为学习和掌握的信息集,以及正确的态度,应对新型挑战的科学方法。
实践:实践是提高发达人才水平的好方法,但是,它不应该成为发展人才的唯一来源。随着实践的发展,理论视野必须定期扩大。
工作策略:一个人可以很有才华,可以有很多知识。如果他或她没有正确的工作策略,那么他或她就会遇到障碍。每当给出新任务时,都应提出正确的问题:
因此,答案是:尽早接受良好的教育固然很好,但这不是必须的。不要忘记,生活是最好的学校,如果您有才华,意志力和信息资源,您可以在以后弥补失去的机会。实践不仅向您展示解决问题的正确步骤,而且还拓宽了您的视野。例如,如果一个人理解数字系统,那么他或她将能够在以后理解各种事物,例如CSS,PSD中的颜色或数字溢出。如果学习如何用Java编写代码,那么他或她将很快理解C#。因此,实践不仅为您提供了针对给定问题类型的解决方案的知识,而且还为您提供了新的理论知识,这些知识将在各个领域中发挥作用。一个人必须发展的核心技能是快速学习的能力。
人才便宜而没有努力就没有用。
才智只能在某种程度上将您带入,但是通过努力和实践,任何人都可以达到很高的境界-乔什·怀茨金(Josh Waitzkin),曾八次获得国际象棋冠军,获得过十三次全国冠军和两次世界冠军
。国际象棋大师