Algorithmic contests are deliberate practice of programming.

This article is perfect for understanding what deliberate practice is.
It boils down to the fact that you need to distill out the hardest elements of your skill and practice them to get better overall. If you don’t, at some point you will get stuck in your comfort zone.

Let us briefly illustrate the difference between work and deliberate practice. During a three hour baseball game, a batter may only get 5-15 pitches (perhaps one or two relevant to a particular weakness), whereas during optimal practice of the same duration, a batter working with a dedicated pitcher has several hundred batting opportunities, where this weakness can be systematically exploited. *

I have heard some people say that programming contests (like Topcoder, ACM, etc.) do not matter, because in a programmer’s everyday job, problems that resemble those in a programming competition are a tiny portion of the work.
Programming contests make more practical sense if we consider them from the perspective of deliberate practice at writing code.
Using the baseball analogy, writing complicated code during your job is like pitching during a baseball game. Most of the code written is just boilerplate glue code. When coding for a large project, it’s hard to distill that experience of writing the non-glue code. To get better at writing the hard stuff, you need deliberate practice.

Advertisements

2 Comments

  1. It’s definitely a very interesting idea to look on programming contests from this perspective. Altough I like the idea, I think the title of your blog post is a little bit too premature and it should be stated as a hypothesis rather than a theory (s/are/might be/). I mean, you gave a great argument on why the critique “programming contests do not matter, because in a programmer’s everyday job, problems that resemble those in a programming competition are a tiny portion of the work” is *wrong* (and the baseball analogy is spot on here), however there is still no evidence that practice of programming contests *really is* a good deliberate practice for programming – we only have some intuitions and anecdotal evidence. I think you announced the victory too early and this is something to investigate more :-). Cheers.

  2. Would doing algorithmic contests help theoretical computer science researchers? I was under the impression that the type of questions asked there tend to be relatively “easy” i.e solvable within hours or weeks.

Leave a Reply

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 / Change )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s