[TopTalent.in] Nitin Gangahar 谈竞赛编程的诸多好处
Nitin Gangahar 拥有一长串以他的名字命名的成就,并且可以说是世界上最好的公司提供的惊人的就业机会(猜测这个没有奖品——它是谷歌)只是其中之一。此外,他还参与了不列颠哥伦比亚大学的一些非常有趣的研究,目前他是著名的钦奈数学研究所 (CMI) 的研究助理。我们在 TopTalent.in 与 Nitin Gangahar 进行了交谈,以下是我们谈话中的一些独家知识!
TopTalent.in 团队:当我们说编程是你生活中的一件大事时,我们不会夸大其词。您是如何以及何时开始编程的?你能列出一些适合初学者的资源吗?
Nitin:我个人在上学时就开始编程。 Python是我的第一个官方语言,尽管在此之前我也看到过一些其他语言的代码。这在很大程度上取决于你什么时候开始觉得它很有趣——如果一开始看起来并不有趣,就不要这样做。如果你有兴趣,高中是开始学习的好时机。我的很多朋友直到大学二年级才知道编程,他们的程序员比我好得多。所以,当你开始这条路时,这并不重要。
以下是一些有用的入门网站:
- topcoder.com – 用于解决有趣的问题
- cplusplus.com – 供 c++ 参考
- gamedev.net – 用于游戏开发
在这种情况下,我还想提一下这篇非常鼓舞人心的文章,这是我个人最喜欢的文章之一——Peter Norvig 在 10 年内自学编程。
Team TopTalent.in:了解 C / C++ / Java / Python / Perl 等多种语言或了解解决问题的概念重要吗?
Nitin:了解更多适用于不同范式的语言总是有很大帮助的。 Eric S. Raymond 是我儿时的英雄,他曾在这篇题为“如何成为一名黑客”的文章中提到(http://www.catb.org/esr/faqs/hacker-howto.html)——事实上,这是最好的,学习Python、C/C++、 Java、Perl 和 LISP 的所有五种语言。除了是最重要的黑客语言之外,它们还代表了非常不同的编程方法,并且每种方法都会以有价值的方式教育您。
学习一门编程语言可能需要数年时间,前提是您想知道如何很好地利用该语言的独特性。熟悉语法只是开始。尽管如此,解决问题的概念是每个程序员都应该习惯的。例如,我相信一个优秀的程序员在被要求编写广度优先搜索代码或为问题提出一个简单的递归方程时不会遇到任何问题。
TopTalent.in 团队:什么是竞赛编程?你能说出你参与的一些吗?
Nitin:竞赛节目更多的是关于人,而不是作为一项活动。它只是关于一群喜欢用基于编程和数学的问题来挑战别人,并期望别人提出解决方案的人。这确实是一件有趣的事情,尤其是如果您喜欢解决难题并喜欢使用计算机解决问题。
我和我的队友们的目标是参加 ACM-ICPC(国际大学编程竞赛)的世界总决赛,这是一项接近所有在大学阶段学习竞赛编程的人的比赛。在学校层面,我们有 IOI(国际信息学奥林匹克)。 TopCoder 是一个向所有年龄组开放的网站,专业人士和学生都很活跃。另外还有Sphere Online Judge和Project Euler,它们都有很好的问题集合。
对于初学者来说,ICPC 是一个很好的修复目标。当您定期解决问题时,您的技能肯定会提高,因此,它也可以帮助您解决面试问题。但是,必须记住,参加比赛的主要动机绝不能是为了赢得工作,因为这就像在一个人的技能周围划定界限。
Team TopTalent.in:团队编程有什么好处?你为此建议一个学习小组吗?
Nitin:团队编程可以帮助你学到很多东西。我的队友——拉维和马努——在过去的两年里教会了我很多东西。 Manu 始终拥有不同的思维方式,这让 Ravi 和我学到了很多东西,尤其是针对不同类型的问题开发了不同的问题解决方法。 Ravi 教我如何将未知问题转化为更小的已知问题,以及如何将他从其他地方获得的训练应用到新问题中。团队编程总是可以帮助您以不同于您在孤独中遵循的任何方法来思考问题。
很高兴看到更多来自印度大学的 ICPC 团队。我们为学生创建了一个 Google 群组,以便他们可以分享和学习。这些天来,它相当活跃,但有很大的改进空间。研究小组可能会偏离核心目标,因为人们希望以不同的方式做事。在我看来,与研究小组相比,小型和专注的团队会更好。
TopTalent.in 团队:校园学生应该采取哪些步骤来增强大学编码场景?
Nitin:组建团队将是很好的第一步。地方比赛是另一个伟大的举措。 IIIT-Hyderabad 一直非常积极地组织当地比赛,并且每年从那里参加 ICPC 地区赛的队伍数量都在不断增加。看到他们成长真是太神奇了。一个面向大学生的在线小组将是另一个好的开始。
TopTalent.in 团队:您对创建完美的一页简历有什么建议?
Nitin:这听起来可能很老套,但要想出一份完美的一页简历,最好的方法是在本科期间努力工作,积极追求自己喜欢做的事情。通常情况下,它可能会变得平凡和无聊,但学习和卓越应该会驱使你继续前进。如果你能主动做到这一点,并为足够多的比赛/项目工作,你可能不会赢得很多奖品和大量的好东西,但最终你会学到足够的东西来填满简历的一页。