Today's Question:  What's your opinion about Alibaba mooncake incident?        GIVE A SHOUT

Technical Article => Programming =>  Algorithm

The significance of coding competition to actual work

  sonic0002      2013-02-28 20:38:23      1,630    0    0

Some friends asked this question: In secondary schools we participate in the NOI, in university we participate in ACM/ICPC, TopCoder.What's the significance of coding competition to actual work?

I participated in the NOI from 1994 to 1996, ACM/ICPC from 1999 to 2000 and TopCoder in 2002 for six months. Later I paid little attention to coding competition, so I may not understand the changes in recent years and race mode .

The capabilities we can get by participating the competition can be summarized below:
1, Basic technical skills. People who participate in the competition and get good results should have three very good abilities: algorithm design, fast programming and self-commissioning. These are the capabilities each competition requires. Given a problem, programmers need to design algorithm and write programs quickly and try to find the defects in the program as soon as possible and then refine the design. These three basic capabilities are very useful in our actual work. Most of the company's technical interview focus on these three basic skills. The contest experience of the excellent contestants get many advantages in actual work and generally excellent IOI/ICPC/TopCoder participants can easily get hired by the company.

2, Independent learning skills and self-confidence. I think most of the NOI contestants begin learning some courses which are not included in the secondary school curriculum such as object-oriented program design, data structures, graph theory, network flow theory, theory of algorithms, discrete mathematics and so on. If a contestant is to stand out in the contest, then he must have independent learning skills and self-confidence and believe he can quickly learn new knowledge. This capability and confidence is very important in the work. Programming languages change very fast from Pascal / C to C + + / Java to Python / PHP / JavaScript / Objective-C ⋯ ⋯ It's impossible for a programmer to know how all the knowledge from the start, but he can learn any new language and concept(and indeed can be learned) as long as he has the confidence, he can dare to face the challenge of the unknown.

3, Communication skills. The ability to express is very important in actual work: modern large software systems cannot be done completed by one hero, if the algorithms and programs of a subsystem can not be clearly understood, then that subsystem and its author becomes single point of failure (Single Point Of Failure) - as long as the author is on vocation, no one is able to maintain or expand this part. Based on this risk, we prefer to use a solution which is slower and more memory eager but can be read and understood by others. During some recruitment cases in the past two years, I have seen many such pity examples: many ACM/ICPC players can write a very clever algorithms to compile on the machine and pass tests in 15 minutes However, they failed to make it clear why this algorithm is correct and why to use this algorithm.

4. Ability to cooperate: NOI/IOI/TopCoder foces more on single-handedly, while ACM/ICPC needs the ability to cooperate. Three programming experts share a machine, scarce resources, they need to decide how to divide the work and who is going to use the machine first. These problems are encountered in actual work every day, if a player in the ICPC learns how to coordinate with teammates and how to foster trust, then he will adapt to the team quickly and contribute to the team.

5, Making friends: Generally speaking, people are willing to spend extra time on taking part in the competition should like to write programs, because of interest, they tend to be more likely to get better and better and they may have common topics. We can make a lot of good friends  and we can exchange the latest industry information and trends timely. This may not have direct help to actual work, but I think it is the most precious thing in the contest.

These are probably some of the most useful things I learned from these competitions.

The author of this article is now working in Facebook.

Author : 魏小亮 Source :



Share on Facebook  Share on Twitter  Share on Google+  Share on Weibo  Share on Reddit  Share on Digg  Share on Tumblr    Delicious



No comment for this article.


Hot swap on production environment

By sonic0002