6 ms·
Ask HN: How can I learn what I need to learn?
I have things I want to build but I'm hampered by my super-basic programming ability.
I'm a tech-oriented person, I work IT support and build computers often, but I've just never been able to get the hang of learning how to code (well).
However I really want to learn so I can build my ideas. The major problem I'm having now is that I read about so many different languages, frameworks, structures, etc. that I really can't figure out what I should be using, or what I should learn. I really couldn't tell you the difference between different types of databases, but I know that I need to use one.
I'm guessing for a web/mobile based app/service I'm going to need JavaScript, but what "kind"? React, Angular, Node, or none of the above?
Is there anywhere I can look to to learn what I should be learning so I can do what I want to do?
EDIT: so far I've used Codeacademy a bit, but it's hard to stay focused and disciplined using that I find. I've also started a few courses on Udemy but it's the same thing.
My programming experience so far is using MIT App Inventor to make a Pokedex app (I think it's pretty good though) and a little bit of VB back in highschool. I do know a tiny bit of HTML/CSS and super beginner basics of JavaScript.
- nfriedly 11y agoTo a large extent, you just need to pick something and try it out. Start small, build something with react (or whatever). If you like it, great, maybe build something else with it. If you didn't like it or got hopelessly stuck, try something else. I don't have the link now, but there was some one who made one website a day for 30 days to learn different techniques and also just to get in the habbit of shipping something. That might be one way to go.
- starshadowx2 11y agoI appreciate your advice, but at the same time I don't just want to learn to code for the sake of learning to code. I have specific goals and ideas but I'm not in a place where I can achieve them. I should've been more specific in my post that I'm trying to learn what "technologies" (not my favourite word) are going to be most relevant/useful to spend time learning.
- carpo 11y agoI'd worry less about specific technologies and more about learning the basics of building of a web app. It doesn't really matter what you use. Successful sites have been built using pretty much all languages. When I taught myself programming about 16 years ago, I bought a book on Cold Fusion that had step-by-step chapters on building a CRUD app, I used MS Access as the database, and did basic JavaScript for validation. If I was doing the same today, I'd use PHP, PostgreSQL and JQuery. The concept is the same. Learn how to create, read, update and delete records from a relational database via a web front end. Learn how to loop over records and display them. You've got to walk before you can run.
- starshadowx2 11y agoThat's actually what I'm looking for. I want to learn: - "the basics of building of a web app" - "how to create, read, update and delete records from a relational database via a web front end" - etc. The problem is that you can find so many tutorials or books, etc. on specific things like Rails, JavaScript, or MongoDB but I don't know of anything for the actual underlying thought to using those. I don't know enough information to be able to choose what I should look at using.
- abathur 11y agoIt probably sounds like I'm just being a shit, but any kind of anything is better than every kind of nothing. If you're hanging around here, you've probably seen the advice again and again in terms of projects: get something (terrible) working, and start iterating. A working project in the wrong language is almost always better than not having a project. Programming languages/tools are similar. Thinking about the "right" language or framework before you start is putting the cart before the horse in a big way. The reason for both of these is that most of the "hard" work is actually not the code itself. In the case of a project or product, the "hard" work is figuring out what to build and how it should work. In the case of becoming a better programmer, the language or the framework is only a slice of what you learn by building a project. Almost inevitably, regardless of the technologies you use, you'll make some decisions you'll wish you hadn't in a few months/years. This is especially true when you're starting out. A project rewrite is usually faster than the initial creation, and you'll tend towards picking up additional languages/frameworks faster than the one(s) before.
- abathur 11y ago* This isn't to say I don't do the same thing; knowing when it's time to stop reading and start working is one of those things that lurks beyond the narrow slice of the language or tool. Over time you learn that all of the X vs. Y debates are largely a matter of taste or idiomatic requirements; those opinions are a byproduct of working with X or Y and seeing its shortcomings and failures. The primary value of public opinion when you don't have the experience to evaluate the pros and cons those decisions hinge on is just knowing that something is good enough to use.
- starshadowx2 11y ago"the "hard" work is figuring out what to build and how it should work" That's something I like to think I'm good at. For my major project I have a 6/7 page planning document that I've been working on, and I have design mockups made. I think I know pretty well what I want to build. I really would like to just start/try with something, but I'm worried that could end up being a "death sentence" in the future where I find out I just wasted a few months learning something that doesn't work or help me succeed.
- kidlogic 11y agoFreecodecamp.com is superb
- gt565k 11y agoI strongly suggest looking at udacity's nanodegrees or coursera's certificates. There are great courses and nanodegrees created by google, facebook, and other employees from big companies where you'll get to build projects and learn best practices. Udacity recently released an android nanodegree co-created with Google. https://www.udacity.com/course/android-developer-nanodegree--nd801 https://www.udacity.com/course/android-developer-nanodegree-... There are great paid and free courses on those platforms that will take you from intro to programming to deeper topics such as Machine Learning, Robotics, etc.
- ruraljuror 11y agoMIT OCW's class Intro to Programming using Python will teach you general programming concepts that are common to many languages. You will start with basic things like iterators and work through some algorithms and the basics of object-oriented programming. It is an awesome mix of challenging and a lot of fun. There are two versions but I think they are largely the same, just organized differently. I took the earlier one: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/ http://ocw.mit.edu/courses/electrical-engineering-and-comput... http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/ http://ocw.mit.edu/courses/electrical-engineering-and-comput... Feel free to e-mail me (address in the profile) if you have questions about this particularly.
- Teichopsia 11y agoI'm basically on the same boat as you (except that I am learning because I enjoy it), and with one other difference, I had no previous experience except for tinkering with things I didn't understand and didn't lead to any meaningful insights. To get a good feel on how to write simple scripts in python, you can take the class on coursera: Programming for Everybody (Python). If you don't care about the grade, there is a class currently going. The people in the forums for that class are fantastic. There is another class starting on october 5. https://www.coursera.org/course/pythonlearn https://www.coursera.org/course/pythonlearn A good follow up course which will get more in depth is Introduction to Computer Science and Programming Using Python over at edx. This class is a bit more demanding than the previous one that I mentioned. https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-0 https://www.edx.org/course/introduction-computer-science-mit... The first time around I dropped out, it was too much for me. So I took a few other classes, including Introduction to Algebra at edx to give my brain some exercise. https://www.edx.org/course/introduction-algebra-schoolyourself-algebrax https://www.edx.org/course/introduction-algebra-schoolyourse... If, you are interested in learning for the love of it, I would recommend Systematic Program Design (which is divided in three parts - the first part just finished last week but the materials will remain open for people to catch up) https://www.edx.org/course/systematic-program-design-part-1-core-ubcx-spd1x https://www.edx.org/course/systematic-program-design-part-1-... This class will teach a design process that can be applied to any programming language, using a simple programming language to help teach the design process. The book can be found at: http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html http://www.ccs.neu.edu/home/matthias/HtDP2e/index.html There are a few other classes over at udacity that I'm planning on taking but can't recommend them yet as I haven't seen them. Lastly, a few months ago a friend asked me about programming, so I wrote a quick and dirty blog post that has a little bit more information. Keep in mind that I'm a beginner as well - so take it with a grain of salt. http://teichopsia.svbtle.com/how-to-get-started-in-programming http://teichopsia.svbtle.com/how-to-get-started-in-programmi... Note: There is a paragraph about a class called Intro to computer Science over at udacity. The class mentioned in this post at edx is a better class.
- exodust 11y agoPerhaps instead ask "I have this idea, it goes like this, how the hell do I build it?" Wait, is this the analytics for musicians idea we're talking about? (spotted in OP's history). If so... my 2 cents is that analytics is a tricky game. Platform providers have their own services be it Google or Soundcloud where such data is stored and seen. You want to access and gather that data somehow, and charge musicians to see it? Anyway, before you can learn what you need to learn, you need to learn how the basic building blocks of your idea are made. Eg, a global highscore table, how to build one of those little suckers. Shop around the thousands of free articles on that subject. Get things working in a dev environment..... [actually getting things polished and finished takes sweat and long hours and the odd bad day. The worst thing is when you think you've had a lightbulb moment of progress, only for it to be actually confirmation that you went down the wrong road 4 hours ago, or even days ago, and in some rare cases years ago!]
- starshadowx2 11y agoSmart to look through my history, but it's not really related to that. That was something I was looking for during my research for this idea. That was more like a side thing for the future.