Hello HN,<p>I'm a 24 year old student who started learning coding about a year and a half ago and have been spending most of my waking time on coding the last 2 months.<p>With the introduction out of the way, I was wondering if anyone could give tips on how to deal with the sense of being overwhelmed when just starting out. I have learned the basics of Python programming when I first started out and have been writing little scripts which make my life easier but apart from that I have no solid experience with programming.<p>Lately, I've been trying to get into web development and I finished the "Web Fundamentals" track on Codecademy. Feeling that I without putting what I learned to use I would soon forget everything, I bought a domain, signed up for webhosting and created a pure HTML and CSS website. (You can find it at http://howyoucod.in but please be gentle.)<p>Now I want to expand on the foundation but I feel very intimidated and overwhelmed when trying decide where to start. I want to learn JavaScript, I want to learn Django, I want to learn JQuery and loads of other stuff that I find out about thanks to HN. I have ideas that I want to bring to life but each time I try starting work on one I find that I have to learn a lot of new stuff.<p>Don't get the wrong idea, I love learning. It keeps me occupied and I get a rushing feeling of euphoria when I wrap my head around something new. But when I have so much to learn, it's a problem for me to decide on where to start. I've been thinking of signing up for CodeSchool as I believe that I can benefit a lot from their content and I've been thinking about finding a way to attend a dev bootcamp in the US.<p>I would really help it if experienced developers can point me in the right directions and give me tips on how to prioritize my learning objectives.<p>Thanks a lot in advance!<p>PS: Wow, the process of creating a new thread on HN was more nerve-wracking than I thought.
This is an opinion:
Go get <a href="http://eloquentjavascript.net" rel="nofollow">http://eloquentjavascript.net</a> and build something useful in plain Javascript/HTML5 (no jQuery yet, it might harm your successful picking up of the language!).<p>The fun part is that you can get started immediately:
<a href="http://jsfiddle.net" rel="nofollow">http://jsfiddle.net</a><p>For HTML/Javascript references you can always prefix your google searches with "mdn" to access Mozilla's excellent documentation on all things web e.g. "mdn html5 canvas"<p>If you feel like you really need some server backend logic look no further and also stick to Javascript and checkout node.js (with express.js).<p>There will always be some new things on the horizon but don't get distracted by the newest go, erlang, ruby, etc. based web framework and no not even Meteor nor Derby even though they are Javascript based.<p>Plain Javascript (and node.js) are very much here to stay (and also fun!).<p>I guess my answer to your question is to really focus on a certain set of technologies in order to acquire some deeper knowledge by constantly applying it to something which actually gets used regularly.<p>In the end it's about helping/entertaining other people by shipping stuff.
Don't worry about the higher level topics like JavaScript, jQuery or Django. Determine a project you'd be passionate about building for yourself and go from there.<p>You'll naturally start to need some of the higher level topics and you can learn them then. Don't bite them all off at the same time.<p>For example, build an app that keeps track of your diet*. Do the frontend first, make it all static. Learn HTML, CSS, JavaScript and jQuery. Those all go together pretty well. Don't worry about anything more than that. No Backbone, no Angular, etc.<p>Then write the API needed to provide and fill in the data to replace the static data you used above. Then you'll learn Python and Django.<p>Most of all, take your time. This is a marathon and many of the folks on HN have been doing this stuff for a while. You'll get there.
1. Everyone gets overwhelmed by the sheer amount of stuff we don't know. Look at it this way - when I started out I was seen as a bit of a JavaScript maven, and have just spent the last six months realising I was a decade out of date when I came back to it, and needed a lot of catching up<p>2. Mentors - I would ask on here for anyone who feels they can give a bit of time to keep you on track<p>3. What are your goals - starting a business, love the computer vision world and want more? Find one thing you love and can add value to and stick to it, give it a year if its wrong fine. But in that year you will learn a hell of a lot
Spend a few days reading to discover what boils your passion in tech - congratulations, you've found a good starting point... now focus on it until you have a good grasp.<p>eg. Like the idea of a framework for web dev? Then read up on Rails and Django, and be sure to examine the underlying languages. Which do you identify with more? Dig into that one more. Join their IRC channels to get into the community.<p>(of course, it doesn't have to be Rails or Django you look at - anything!)<p>The important thing in any problem is to break it down into manageable chunks. Otherwise it all seems insurmountable.
Treat it like learning how to speak a foreign language (e.g., Spanish). There's obviously too much to learn, and it is easy to become overwhelmed. However, you can learn bits and pieces at a time. Just learn things as you go, and as you need them ("just-in-time learning"). If you learn a new skill or concept (e.g., OOP) make sure you practice it often so you remember it.<p>Over time, you will accumulate knowledge. Someday, you'll look back on today and realize how much you've learned, but you'll still know there is so much more to learn.
Hi there. Just wanted you to know that you shouldn't be embarrassed/ashamed about the stuff that you're putting out there. A lot of people don't want to admit their struggles or often won't post something for fear that someone will consider them stupid, not gifted/insightful, etc... These fears are illogical and usually stem from personal views/beliefs on intelligence.<p>Especially if you were always ahead of the class in school, and could get away with less studying than your peers, you are prone to this way of thinking. The fact that you cannot grasp something immediately and innately may be disturbing to your brain, and it will easily get overwhelmed by the sheer scale of it all.<p>Just want to tell you that if you are able to recognize these fears/doubts, and continue what you are doing in spite of them, you will reach your destination. You are still incredibly young. I am 30 and not even to the point where you are, congratulations. You have 6 years to fuck around before we're on even playing ground.<p>It may sound stupid, but what has helped me deal with overwhelming emotions is the fact that we can only be successful one day at a time. If you have a successful day, then you are on the path to being successful at whatever you're wanting to do. Even if you don't exactly know what it is yet.<p>Focus on having successful days, and eventually you will look up and be amazed at what you were able to achieve. Also, realize how much time you spend looking for those silver bullets-"Am I reading the right stuff, is there a way to get there faster? Is there a better way?" These are all important to think about, but they can also be used for reasons to do nothing, which is not a good formula for success.<p>As one successful dev once told me, there are tons of ways to get there. There isn't a better or best path that anyone really knows of. I know this isn't what you want to hear, but it seems to be true. I think a lot of times, worrying about finding the best way to get there is the best form of procrastination. You fool yourself into believing it is better to find a better way than to actually do something. I think the best advice when you come to a point like this is to think of something you want to create and just take some time off to learn how to create it. You may realize along the way that there are certain things that you really don't care about learning for the time being. If you look at all the different responses from HN users, you will see that every response is unique. Some may suit you, but some won't. I think it's really going to be up to you to find what you need and what you don't. The only way to find out is to do the work.<p>Cheers, and I love the website you created. Keep up the good work and remember to not be too self conscious about the stuff you put out there.
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:<p>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!"<p>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.<p>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.<p>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.<p>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. :)<p>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.<p>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: <a href="http://www.vogella.com/articles/Git/article.html" rel="nofollow">http://www.vogella.com/articles/Git/article.html</a><p>I apologize if any of this is unclear; I'm recovering from a concussion so my writing (and coding) hasn't been the best.