Do top ranked (top 100) coders on sites like TopCoder or in programming competitions like ACM ICPC, Google Code Jam or Facebook Hacker Cu…

Answer by Aideen NasiriShargh:

Depends.

Assuming you know the difference between a coder, a programmer, and a developer, I'd say a top100 coder is not always a good industrial developer. 

  1. They do not necessarily know how to write a code to last for at least 5 years.
  2. They do not necessarily know how to write a code that someone else understands.  They usually do not put comments in their default  programming style, nor provide documentations.  Also it's hard for them to read their peers' code without judging and analyzing.
  3. They do not necessarily know how to design, architect, and write more than 500 lines of code.  In TC it's just one function; in ACM ICPC it's just one file.
  4. They do not necessarily know much about using external libraries or open-source tools when it comes to finding cost-effective and reliable solutions for industrial problems.  They mostly prefer writing it by themselves from the scratch rather than trusting others.
  5. They have deep performance concerns in mind by default, since fast running is always a factor in most of the programming challenges. By fast, sometimes it means to make your code super dirty and sh*tty to have it run 10% faster and get ACCEPTED — not an algorithmic improvement.  So if "maintainability" is more of a concern for a team of 100+ developers working remotely on a MM-line size code-base, things like What are some cool bit manipulation tricks/hacks? are not really helpful.
  6. Not all the problems in the industry are solve-10-in-5-hours type. You'll have days, weeks, or months to get your job done.
  7. Not all top100 coders are team players.  Even ACM-ICPC teams are sometimes 3-tanks solving individually. (and win!)  Most of the good ones are introvert (10 years experience of dealing with them tells) and it is not easy for them to have efficient communication and explain their  thoughts in a non-technical way.  It is going to be more of a problem in the industry when you have to explain your solution to a PM with no CS background to whom just time/money efficiency matters.
  8. They will get bored if you do not feed them with challenging problems frequently.  And that doesn't always happen in life.
  9. If the company itself is not in the top 100 hottest companies of the  valley, it will be really difficult for them to keep such candidates  loyal.

That being said, not everyone needs them. And it's a risk to hire someone like this if you do not have problems that only they can solve!

Good news is, big companies always have the money, brand, perks, time and everything that it needs to take this risk to hire them. This is why if you are in top 100 of TC or an ACM ICPC world finalist, you are very likely to be contacted by Google or FB recruiters frequently.  And yes after having a golden stamp of one of these big brands in your resume as a proof of industrial experience, you'll receive even more opportunities down the road.

However, to the OP: If you are not already there, if you are not passionate about problem solving just for the sake of the feeling you get every time you see "Yes, AC!", and if you goal is just to be hired by good or best companies, this path is one of the worst ones to take.  Go learn Software Development.

Edit: And from some perspectives it sucks. Aideen NasiriShargh's answer to What sucks about competitive programming?

Do top ranked (top 100) coders on sites like TopCoder or in programming competitions like ACM ICPC, Google Code Jam or Facebook Hacker Cu…

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s