11

我希望这不是一个模糊/广泛/主观的问题。如果是,请关闭它。

无论如何,在几次编程比赛(如 Google 的 Code Jam、Facebook 的 Hacker Cup 等)中,当我成功理解了一个问题并大致了解了如何解决它时,我发现一半的问题已经解决了很多人。

我的问题是,这些人是如何变得如此优秀的?是纯粹的天才吗?是经验吗?思维能力真的很快吗?你会建议我如何提高我的技能?我会说我是一个称职的程序员。我最终可以解决其中一些问题。

此外,每当我检查获胜者的代码时,我都会看到使用了很多宏。这对我来说意味着他们有一个模板(比如#define for循环到一些缩写版本),他们用它来更快地编程。这有很大的不同吗?

4

2 回答 2

13

问题是,你正在与那些花费大量时间掌握他们在这些比赛中竞争的技能的人竞争。你不太可能很快赶上,但是...

How do these people get so good?

具备解决问题​​的理论知识和实践、实践、实践。

Is it pure genius?

可以,但实践可以在合理程度上弥补它。

Is it experience?

是的。

Is it the ability to think really fast?

并不真地。练习可以让你正确地解决问题并跳过问题陈述中无关紧要的细节。

How would you suggest I improve my skills?

获得理论知识和实践。

Do macros make a significant difference?

它可能会减少您 10% 的时间,但可能不会更多。

于 2013-03-06T09:09:04.370 回答
7

从统计学上讲,任何有足够多观众的编程比赛都会吸引超级人才,他们可以以超快的速度编写出漂亮优雅的代码。这就像跑马拉松。跑4小时真的很不错,虽然世界纪录是2小时左右。别担心。

而是专注于代码质量和优雅,而不是能够以超高速生产代码。练习,玩得开心,不要过多关注其他人的工作速度。

于 2013-03-06T09:08:39.720 回答