我希望这不是一个模糊/广泛/主观的问题。如果是,请关闭它。
无论如何,在几次编程比赛中(比如谷歌的Code Jam,Facebook的黑客杯等等),当我成功地理解了一个问题并且对如何处理问题有所了解时,我发现有一半的问题是已经被很多人解决了。
我的问题是,这些人如何变得如此美好?这是天才吗?是体验吗?是否能够快速思考?你会怎么建议我提高自己的技能?我会说我是一名称职的程序员。我最终可以解决其中的一些问题。
此外,每当我检查获奖者的代码时,我都会看到很多宏被使用。这对我来说意味着它们有一个模板(比如#define for loops to some abbreviated version),它们可以用来更快地编程。这是否会产生重大影响?
答案 0 :(得分: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%的时间,但可能不会多。
答案 1 :(得分:7)
从统计学的角度来说,任何一个拥有足够大量观众的节目竞赛都会吸引那些能够以超高速度制作漂亮优雅代码的超级人才。就像跑马拉松一样。即使世界纪录大约2小时,在4小时内运行也非常好。别担心。
专注于代码质量和优雅,而不是以超高速度生成代码。练习,玩得开心,不要过分关注别人的工作速度。