foobar: Part2

foobar: Part2

Feb 05, 2016    

An update in the Google foobar programming challenge. I just reached level 4 and I wanted to share about my progress.

It’s been challenging and frustrating and rewarding. In a couple of challenges, my first implementation will fail the tests cases due to memory error or recursion depth or just too slow. But I’m learning a lot. I’m dusting off my old algorithms textbooks, and relearning graph theory and binary trees. I’m applying cool (new to me) concepts like Python decorators for memoization.


Here’s my approach: I’m not googling for answers. I know a lot of people are discussing this online and you can find full code on Github. I also know that some of these questions are common interview questions. So I’m not looking for those either. Searching for methods or questions in Python like I usually do is ok. (e.g “list comprehension”).

Each challenges so far last about 3-4 days. And I usually spend the first day thinking about my approach and jotting notes down on paper - especially during my commute. I also talk to peers at the boot camp and some programmer friends to bounce ideas off of. I think that’s ok; indeed programming is often a very collaborative process. But at the end of the day, the implementation and code are all my original work.

I’m also working through some other sites with programming challenges, like CodeEval, CheckIO, CodeWars, but my favorite is still Project Euler. The questions there are pretty straight forward, but finding the answer efficiently is certainly non-trivial.

Finding time to work on the Google challenge while going through Metis full time is pretty challenging. So I’m doing my best to find time in between projects to dedicate to foobar. Because it’s fun! And if it can get me noticed by anyone at Google - which I’ve heard has happened - all the better!

At the end of the day what I learned that a data scientist needs to be able to formulate good questions and use data to tell a good story. But they also can’t ignore the importance write good code.