Hacker News new | ask | show | jobs
by valarauca1 4342 days ago
Algorithms.

Yes boring old pure data and programming algorithms. This skill is more useful then learning a dozen frameworks. In interviews you'll have people asking you dozens of questions that will all boil down to, "Do you know algorithms?" And not to mention that toolset is applicable over nearly every development domain. You'll very very rarely find software teams who will scoff at somebody who knows their algorithms. You'll rarely find times in your developer life time where you'll think, "Jeeze I wish I didn't know how trees, bloom filters, hash based indexing, etc. works this has been such a determent to my career!"

Most fields of development end up needing to use algorithms at some time or another. How does your data analysis work, How is machine learning done? What are databases doing to make 10,000 queries per second? What are the pros and cons? Are you entering data in inefficient ways to slow this down? Are you or the tool the problem?

When you learn algorithms you can answer these questions. Then apply those answers to your job! Impress your friends and enemies! Demonstrate counting sort running circles around their quick sort implementations because your data is highly specialized.

Yes it isn't sexy. Its not a buzz word. Its horn rim glasses, dnd nerd boring stuff. But at the same time it isn't. Rock-stars learn music theory one way or another, how are you gonna audition for the rolling stones if you don't know what an G cord is?

2 comments

Thank you for your response.

This is something that I really have been trying to cover in my spare time. Unfortunately (in this regard) my degree is very 'industry-focused' and hence discards the more 'theoretically inclined' units. Something which I disagree with personally, however that's a discussion for a different time and place.

I'm currently undertaking Intro to Algs from MIT (6.006). With my given course load this is about as much as I can commit to this area at the moment. I however feel like I need to be doing more in this area. What would you recommend? I feel like getting results on Topcoder/et.al would provide a nice tangible learning experience. Would you agree with this or recommend some other activity/resource?

Cheers again.

Any recommended books or resources? I'm out of university but feel I need to brush up on algorithms.
For anyone looking for an easier on-ramp for algorithms -- i.e. not a textbook -- I got an email last night from Manning about a book-in-progress of theirs called "Grokking Algorithms" [1], which looks to be pretty user-friendly (i.e. it's conversational, has pictures, etc.). There's a free sample chapter on the book's page if you want to see the style.

Sadly, the book was 50%-off yesterday as their daily deal, but if you sign up with Manning, there will likely be other sale categories that'll include the book (e.g a 50%-off sale on all books-in-progress or whatever). Given that only the first 2 chapters are available at the moment, you might be able to wait for another sale to come round.

[1] http://www.manning.com/bhargava/

The Art of Computer Programming is amazing. Its honestly one of the most difficult and impenetrable books you'll read, and that's being generous. That being said it is amazing. If you enjoy math and programming (and have post calculus mathematics skills) you can stumble your way though it mostly, it will be challenging.

But what you will learn even skipping parts, getting frustrated, coming back, leaving again. Is a lot. Knuth crams a lot of knowledge into, well a lot of pages.

Complete disclosure I have honestly haven't completely cover to covered every single volume. I skip around a lot.

You should also try going through MIT's online course on algorithms based on CLR: http://ocw.mit.edu/courses/electrical-engineering-and-comput...
FYI, if you download the course materials, there are transcripts of the video lectures included, so you can get a good feel for what the lectures are like and, maybe, not have to spend over an hour per lecture. You can download the course materials here:

http://ocw.mit.edu/ans15436/ZipForEndUsers/6/6-046j-fall-200...

Note: you may still want/need to watch them since there's notation that is likely easier to read off a blackboard vs reading a transcript of someone describing it, e.g.

"The conclusion is the same thing, but summing over all k. So, k equals one to n, alpha_k x_k. Take f of that versus taking the sum of the alphas times the f's. k equals one to n. So, the definition of convexity is exactly that statement, but where n equals two."

Cormen's Introduction to Algorithms. It is almost biblical book about algorithms. And solve online judge type of tasks. A lot.