Hacker News new | ask | show | jobs
by FLGMwt 3691 days ago
This may be colored by me being self-taught, but aside from interviews, why algorithms?

Seems to me that the best way to test your well-rounded skills as a programmer is to build and launch a product. Even if you don't aim to be an entrepreneur, the holes you find while taking an idea from inception to launch are much bigger holes than you'd find building this tree vs that tree.

4 comments

Building fundamental data structures and implementing classic algorithms is a phenomenal way to learn about unit testing. How else are you going to make sure your doubly-linked list is doing the right thing?

It's much more difficult to learn about unit testing when you have the complications of a project stack: databases, front ends, etc. The fundamental data structures are self contained and their behavior down to the last detail (the spec) is fully described. That's an ideal way to learn about writing good unit tests.

Unit testing is not the be all and end all of writing an application.
The goal of the list is to find projects that will increase your understanding and skills as a programmer. This is a purposefully vague description, and I do believe that implementing basic algorithms and data structures can help you in your day to day work. I would never advocate doing such things in production work in languages that provide these tools for you, but it is helpful to realize why your high-level implementation should use a hash-map/dictionary instead of a list.
I'm also self-taught, and that's exactly why I found it important to focus on algorithms. Along with data structures, they're the fundamental elements of software development. (Data structures are the bricks, and algorithms are the mortar, so to speak.)
Depending on your area of work algorithms' value can range from useless to invaluable. The same applies to every topic. But I usually ask a very simple algo question during an interview to figure out general cognitive ability of the candidate.