Monday, February 27, 2017

Are programming competition a good use of time?

Feb. 27, 2017

Introduction


Julia came cross the article after she studied hackerrank university codesprint #2 leaderboard.

Argument No. 1 in the article  

Competitive programming promises even more glory. Win enough contests, and you get an interview at Facebook or Google, where they ask you… you guessed it… more algorithm coding questions!


Argument No. 2 in the article 


By doing programming contests, you gain an intimate understanding of data structures and algorithms and their complexities. While your colleagues vaguely know the difference between a depth-first versus a breadth-first search, you develop a much deeper intuition. You will never forget that one contest where you used DFS instead of BFS, causing your solution to time out.

Fact 1 to share 


Julia won 4 bronze medals in last 12 months, and also played a few other contests as well, here are the details: 

4 bronze medals: 

university codesprint 2  (1247/ 6587) Feb. 2017
Week of Code 27             (1643/ 7476) Dec. 2016
world codesprint 7         (863/ 5649)   Sept. 2016
world codesprint 6        (1168/ 5270)  Aug. 2016

contests: 

NCR CodeSprint                 (479/ 2617)   Nov. 2016
OpenBracket CodeSprint  (482/ 2448)  Oct. 2016
Stryker CodeSprint             (174/ 1929)   Sept. 2016

Fact 2 to share

Julia worked on the queue and caused a big issue like timeout, she wrote a blog talking about sinking sand - a test case is rock to build on algorithm. She learned the lesson of BFS using queue, over 4 hours work ended up scoring 0.   


Argument by Google director of research - Peter Norvig

Is this a valid argument? Winning at programming competitions is a negative factor for being good on the job.


Argument 3 in the article

Given the amount of time it takes to master competitive programming, one naturally wonders: is this really a good use of time? In a contest, you are ultimately solving problems that other people have solved already, so nothing new is being produced. Although solving a contest problem is satisfying, I find it a lot more rewarding to build projects or apps with my novel ideas.


Competitive programming 

whole weekend one medium algorithm

To play a contest on Hackerrank, Julia calculates some math. She has to dedicate herself whole weekend in order to get a medium algorithm done. She has to entertain herself first, play some music, lookup her ideas by Google, write some simple idea to play against hackerrank test case, until she warms up with the algorithm. Sometimes, it takes 5 - 6 hours until she failed so many times and then she understands the problem - what is the real challenge in the problem statement.

code review catching up more

All those hours and labor build up her character, she never experience this kind of research before. Over 10 hours, she makes something happen, solve a medium algorithm. Sometimes a medium algorithm can take her a few days after the contest. Since Nov. 2016, a few times, she has to continue to catch up more research after the contest, and then work on codereivew.stackexchange.com, get some help and find something more interesting to continue.

Julia learns to work on one algorithm a time, and also has to learn to let it go one a time. She knows that she will forget the algorithm completely, it does not matter how hard she intensively trains herself in the contest/ after the contest, and she needs to relearn it one day. Only thing left is something surprising, her new character still trying to mold, the strong determination to solve the problem. The will, or the intuition to try new ideas, relentlessly. That is something different she could not find in the training of Leetcode algorithms. Julia was surprised that she continuously improves over last few months.


Hackerrank contest  algortihms 


Things Julia should have done are to evaluate those easy, medium algorithms in past 10 contests on Hackerrank; Do those algorithms shape her very well as a sports programmer,  what are atlernatives? Julia does not like the inactive learning, by memorizing, she likes more about competition, with time limitation. 


No comments:

Post a Comment