So, professional devs, do you use these algorithms in solving the problems you are working on, on a regular basis?
So, professional devs, do you use these algorithms in solving the problems you are working on, on a regular basis?
I took the Stanford Algorithms 1 & 2 courses that used to be free on Coursera and certainly never regretted it. I've since worked at several large tech companies and ALMOST never needed them. From my memory I've needed to implement my own binary search and my own tree traversal (BFS) once each. Both were due to an odd data structure that made it hard to use a library. I probably could've shoe-horned it in somehow, but it was easier (or maybe more fun) in the moment to implement it myself.
However, the thing that REALLY triggered my imposter syndrome wasn't algorithms, but design patterns. When I started at Microsoft I'd been programming for over 10 years and suddenly felt like people spoke an entirely different language. Luckily, it turned out most of the patterns they were referencing by name I had already been using, but just didn't know the vocabulary. I spent a lot of time studying design patterns largely just to have a shared vocabulary (and not feel dumb whenever someone said "maybe we should use a ___ pattern" in a meeting), but I also learned several new ones.
I stumbled upon the Gang of Four's Design Patterns when I was a kid, feeling like I'd uncovered some coding Bible in a caveman moment.
So, I dove headfirst into trying to understand and apply those patterns to my Java code. Let me tell you, it was a struggle. Failed attempts left me feeling pretty darn horrible and questioning my smarts.
That whole experience still gives me a shiver down my spine.
But, fast forward a few years, and I realized that, hey, I've been using some of those patterns all along—just didn't know their fancy names back then.
Knowing how they work, that the algorithm even exists and when to use them? Quite often. Very useful to know that "my problem can be modeled as this algorithm problem, and then I can use some tool to solve it". And the same for various data structures. Knowing which one to use can make some things trivial, and not knowing can make it sooo slow. But would never implement them myself.
Knowing the ins and outs, recognizing when to pull them out of the toolbox, and understanding the underlying principles—now that's the sweet spot.
It's like having a cheat sheet for problem-solving, making things click into place without having to reinvent the wheel every time.