| I know exactly how you feel! Every day I read HN and bookmark a ton of stuff, and I had been wondering how I'm going to go through it all. But what helped me the most were two things: 1) I explored around enough to find the particular technologies and problems that interest me. Basically I reflected upon all my bookmarks and tabs and though, "this must be what I'm drawn to!" 2) Create a project to serve as the basis for learning. I had been spending a lot of time reading and evaluating possible things, but I hadn't really sat down and worked on a project. Not only does working on a project solidify your knowledge, you will be exposed to new techniques as you solve your problem which can lead you into other areas of interest. While you are adding more things to look at, you at least have a path where your knowledge is interconnected. Here's how my own story has gone so far: I had taken the web development course on Udacity (it's in Python and you learn how to make a simple blog and wiki; I highly recommend it). But as I played around with things I realized that functional programing mapped really well to the way that I solve problems. I sing byzantine chant, and realized that there's no standard and open file format to exchange notation in. I got something working decently, but then realized that at my current level it was a bit too big of a project for me! But my point is that you should examine your hobbies and interests outside of programming, because they could lead you to a particular avenue of inquiry. Even if you don't "complete" your project, you will learn a lot in the process, and it will give you a path to follow through a network of technologies. And it also doesn't have to be something that nobody has made before; I also play sax, so maybe something to help learn scales might have been a more straightforward project. And if you get stuck on something that somebody else has already made, you can always hit up Github to see how someone else solved it. :) While I put that project on hold, my friend came up with the idea to work on a poker visualization program. He's a professional programmer so he has been able to serve as a guide for me for things that I don't know much about, like algorithms and statistics. After a lot of hard work and with help from him I was able to get things working. The domain of the problem mapped well to functional programming, and his desire to have it run in a web browser led me to the right technologies (Clojurescript with C2 for visualization). So if you don't have some hobby or interest that can map to a problem that you can work on, see if you can find someone you know or someone online to help serve as a guide. That being said, one thing that I specifically recommend learning is version control. It took me a while to wrap my mind around Git, but once I learned it it has become indispensable for me. It lets me explore different avenues with my programs besides creating 10 copies of the same file, and also lets me roll back when necessary. This tutorial helped me out a lot: http://www.vogella.com/articles/Git/article.html I apologize if any of this is unclear; I'm recovering from a concussion so my writing (and coding) hasn't been the best. |
As to coming up with projects, I come up with a lot of different projects, usually projects that would give me the tools that I need and I can't find. It's just that I always feel like I will be easily overwhelmed but I guess I should just jump in and get over with it.
And you're right, I should definitely learn how to use git, I have been postponing it but I'll make sure that I follow the courses on CodeSchool as soon as possible.
Thanks again for the help :)