Very insightful.
Mark Papadakis
31

I totally agree, CS fundamentals are important to pretty much every professional working with code and any software company as well. Having absolutely no theoretical background results in the behavior you describe; if your only tool is a hammer then every problem looks like a nail.

However, being familiar of CS fundamentals is one thing, while being ready to perform on a 45-minute interview having the theory and implementation details on top of your head is another. Take the simple example of Quicksort. Anyone having a basic understanding of sorting algorithms will be able to tell you that its complexity is O[log N]. But then, why is it often faster than Mergesort and Heapsort, which also are O[log N]? Can we compare two algorithms with the same complexity and decide which is faster? Another interesting example is implementing the seemingly simple Binary Search algorithm for an integer array. It typically takes less than 20 lines so that should be like a walk in the park, right? Well, not so.

These are interesting details that can easily get forgotten even by CS-degree holding developers who simply have spent too much time working on a specific framework behind corporate walls. Others might be autodidacts who chose not to follow a structured curriculum to learn their craft. In either case, preparing for Google (or any other big company) might be just the perfect motivation to sharpen the saw.

Thanks for reading!