...and what it means for my life more broadly.
After a couple of days of struggling with introductory Leetcode exercises, it's pretty clear that there is something fundamental to coding challenges that doesn't come to me naturally.
Doing well on a coding challenge means implementing a method that solves for all possible cases of the given problem with the given constraints as written. This means that all "normal cases" and all "edge cases" must be discovered and considered simultaneously—in advance of the actual algorithm design.
This differs from my typical workflow when implementing a new algorithm. My typical workflow is iterative. I define a narrowly scoped "normal case" version of the problem, and write an algorithm that solves that narrow problem. I then relax the constraints of the problem one step at a time, modifying the algorithm as needed to account for the additional cases.
