I have never been a fan of algorithm- and data structure-heavy interviews. And, no, it’s not because I flunked Google interviews twice. I honestly do not see how excelling at writing the most optimal algorithm for a working elevator in under 30 mins is going to help me write bug-free web interfaces, mobile apps, or whatnot.
Having seen both the services and product sides, worked on a variety of programming languages, and experienced roles from junior engineer all the way up to manager (architect), I see myself as a modestly successful software engineer. In all these years, I have rarely worked on inverting trees or applying dynamic programming principles. Sure, there have been exceptions; like when I was exploring quantum computing during my stint with an applied research lab. But that’s what they were: exceptions.
You could argue that big tech companies do algo work all the time and that I wasn’t heavy on it for I wasn’t really making complex social networks used by millions of people. Fair enough. But think again—for any sufficiently complex product, how many software engineers are expected to flesh out efficient algorithms vs. those who have to implement everything else from data to UI? My guess is only a handful. If everybody was only expert at crafting algorithms, who would then create amazing interfaces? So, by focusing just on these skills aren’t companies losing out on candidates with better software engineering skills?
Does that mean all big tech companies are doing it wrong? Is Google wrong? Hey, it’s Google! Hell, yeah. Google is wrong! And so is every other company—small and big—embarking in the footsteps of big tech companies.
Not all is wrong in the world, though. More and more companies are realizing the precariousness of traditional algo-based interviews. Automattic, where I work, has been championing an engineering-focused hiring process for more than a decade. I am glad to be part of a creed that values applied skills more than theoretical knowledge.
This video sums up my thoughts: