A couple of years ago, I was interviewed by Google. Google asked about Big-O complexity. I fumbled and failed through the questions. I never heard from Google again. I figured I would get to that data structures stuff after I learn something more useful…like Arduino!

About 5 months ago, I was interviewed by Facebook. Facebook asked about Big-O complexity. I fumble and failed through the questions. Mark Zuckerberg called me and said I was a failure and needed to go back to internet school.

This had to change.


Google, Facebook, and any company – startup or otherwise – seeking the best of the best is going to look for knowledge of data structures and algorithms. It was time for me to get with the program.

To the internets!!

I found thousands of articles I didn’t care to read. I grabbed a couple of books on the kindle and they were great, but didn’t give me the knowledge I sought. After reading a blog about MOOCs, I took a new approach: I would try out Coursera.

From the blog article I was reading, I decided that I would start my re-education process. I would relearn all of hard-core computer knowledge I had lost in the past 1.5 decades.

I signed up for Tim Roughgarden’s Algorithms I. This was 6 weeks ago.


Today, I took the final exam for Tim Roughgarden’s Algorithms I course on coursera.

As fate would have it, what determines whether I get the Certificate of Accomplishment (70+ points) is turning in the last programming assignment for half credit. Interesingly enough, this is kind of how I went through college, some 15 years ago. “You actually want me to complete all my assignments? All of them?!?…fine, dude. Whatever”

Let me start of by saying that Tim Roughgarden is a great video lecturer. He does a great job explaining the subject matter in basic terms. The problem for guys like me – who lack the steel trap brain – is that if you have been away from probability, statistics and the like, you may need a further refresher course at the high school level.

I told my colleagues that this course is “How to Rock a Tech Interview, for Dummies.”

I recently interviewed for engineer positions at three of Chicago’s best Ruby shops. I did well enough to receive offers from each firm. I am grateful and flattered.

Demand of senior engineers aside, being able to speak with confidence about the asymptotic complexity of algorithms and data structures added a deeper level to the interviews and code discussions. Instead of waiting for the interviewer to ask “whats the worst-case…” I was confident – on account of this course – to discuss divide and conquer algorithms and data structures right off the bat. Showing off, or rather, practicing my newly attained knowledge, I gave 4 different answers for one of an interviewers questions. Provided with each answer was a different data structure, its complexity, and its pros and cons. While the interviewer may have thought I was a jackass, which I am, I believe I thoroughly demonstrated my knowledge of the subject matter. This is thanks to Tim Roughgarden and the course.

This type of knowledge tends to be use it or lose it for me. By no fault but my own, programming in Ruby has made me lazy. Or maybe just being lazy made me lazy. Not having to “care” about speed, and simply defering to #sort has made me lazy. Lazy. For my SaaS projects, I haven’t needed to use data structures and algorithms. As I “move forward” in my Go journey and use Go more often, I am hoping that I will be more open to using the appropriate tool for the job. Gone are the days of arrays, hashes, and quicksort for everything!


My experience with Coursera has begun with a bang. I highly recommend Tim Roughgardens course, for fun, knowledge, but definitely if you are looking to switch jobs in the next 3-5 months ;)
I look forward to the next course I am taking: The Hardware/Software Interface, which will re-learn me that assembly, that I did back in the 90s. Wannabe-Future Crew forever!


blog comments powered by Disqus


23 June 2014