Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm a self-taught developer and always suffered from imposter syndrome, especially with regards to "advanced" algorithms.

So, professional devs, do you use these algorithms in solving the problems you are working on, on a regular basis?



I'm also a self taught programmer. I've been coding since I was a child, and professionally for just shy of 20 years.

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.


Oh, design patterns ― those were a wild ride for me back in the day!

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.


Is MS still hung up on GoF design patterns, many of which existed only because of how inexpressive Java and other languages used to be 25 years ago? Or is it a more modern set they were referring to?


I'm sure it varies widely between teams, but yes almost entirely GoF in my experience.


No. Despite what the book title says, 99% of programmers won't need any of these to implement themselves in a professional setting (ever). There is more useful stuff to learn about than this for most devs.


Implement? Never. Unless for fun, advent of code or something, but never at work.

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.


Absolutely get where you're coming from!

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.


I may be a very grug-brained „junior programmer“ but I literally never had to implement an algorithm from scratch in a 5 year „career“. Neither did any of my colleagues, who are as a rule smarter and working on harder problems than me.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: