After six years in SurveyMonkey, I decided to explore external opportunities. I felt surreal after staying on the other side of the table for last couple years. Here are my thoughts and lessons learned.
Red Queen’s Race
Six years ago, I read CLRS, and practiced with Cracking the Coding Interview 150, now we have more than 900 problems in leetcode. The backtracking and graph problems which were categorized as “advanced topic” are now quite common in the interview challenges.
Furthermore, the process has also adapted to the new paradigm. For example, the phone screening used to be 30 minutes conversation between the hiring manager and candidate to exchange information regarding the working experience and job responsibility; now it evolves to live coding session with code sharing tool such as codepad. “Talk is cheap. Show me the code.”
The bar is raised.
Problem solving triumphs over algorithm
Fortunately1, most of the companies mainly focus on the problem-solving skills instead of the algorithm or data structures, such as:
- Data collection, transformation, aggregation, and analysis.
- Augment a known data structure for a specific use case.
- Live debug.
Alternatively, they challenge your system design knowledge with open discussion. I think these tests indicate better signals about the engineers’ capability and potential.
The most valuable lesson I learned from my mistake is never let off your guard. Whether the session is marked as chat or open discussion, its objective is still evaluating your qualification intellectually, mentally and socially.
If the intensive practice is tiresome, why not just amortize it? I mean, it is better to keep your edge sharp all the time, right? Treat the practice as an opportunity of continuous education:
- TL;DR: The Algorithm Design Manual
- Dynamic Programming Recap
- DFS, BFS and Topological Sort
- STLM meetup: The Evolution of Database
- Consistency Models
- React Redux Primer
Joining a discussion group / meetup will also help.
Or unfortunate from the return of investment perspective.↩