Great Answer from: Hounshell
No, really, read.
The following are highly recommended.
Read everything about algorithm and design you can possible find. There are phenomenal books out there. The Sedgewick algorithm books are good. The Algorithm Design Manual by Skiena is good as well. Together these books follow me on every bookshelf at every job I go to, along with The Mythical Man-Month.
Talk to people you respect. Ask them what decision points they had and why they made the decisions they did. The good ones will always be able to tell you “I chose to do X because it’s better than A, B in these ways. I could have gone with C, but I felt this was a better choice because of this”.
Build stuff. Build stuff that you’ll never use. Build stuff that you’ll never need. Go write a program that solves a Sudoku puzzle. Now go do it again. And again. Build it 5 completely different ways. Build a program that generates Sudoku puzzles and feed it into the solvers. Find which solver is fastest. And then…
Find out why.
The “what” is almost never important. I mean, yeah, it is critical to finishing the project at hand, but at the end if you know the “what” without knowing the “why”, then you might as well never done it in the first place. You got a bullet point on your resume. Go get a cookie and congratulate yourself. The “why” is so much more important than the “what”.
And for the record Sudoku was an example. I spent a lot of free time going through that exercise with a ton of the logic puzzles on Kongregate and learned a lot on the way.