I would consider programming contests like Topcoder deliberate practice of some aspects of programming. When writing code at the job I spend maybe 30% writing code that does stuff and half of that is spent on boilerplate (yeah, I work in Java). The rest is spent on writing tests, refactoring, waiting for compilation or code review, etc.
Some people would say "but you write different code at programming contests"! It's somewhat true - I feel that different parts of my brain are engaged when working on a "right" edit to a massive codebase. On the other hand, from time to time there are problems that require writing few hundreds/thousands of quite dense, relatively greenfield code and then I feel that "Topcoder" parts of my brain are engaged.
Code reviews, when intentional, are deliberate practice. Both reviewing, and getting reviewed. With deliberate practice, people get caught up in the practice part, and believe that if they are "actually doing something productive, it's not practice." But practice is more than that. It's the intentional application of ideas. The difference between deliberate practice and normal work is that normal work is, in many cases, boilerplate. It's things you know. You are doing things that aren't pushing yourself.
Yes, Topcoder and things like that can be deliberate practice, but deliberate practice is not limited to such things. And those who are successful, really successful, don't limit deliberate practice to such events.
Some people would say "but you write different code at programming contests"! It's somewhat true - I feel that different parts of my brain are engaged when working on a "right" edit to a massive codebase. On the other hand, from time to time there are problems that require writing few hundreds/thousands of quite dense, relatively greenfield code and then I feel that "Topcoder" parts of my brain are engaged.