I’m sixteen, I’m overly interested in programming, and I’m currently taking IT classes during my mornings in high school. Last year, I tried teaching myself to code. It was quite exciting, but all I did was watch TheNewBoston’s videos on YouTube for Python.
After his tutorials, I just did research, made some CMD programs, and that’s it. After that, I got cocky and got my feet wet in many other languages. Java, C++, C#, Perl, Ruby… and it overwhelmed me. Which made it less fun to code. I want to go to college for a 2 year programming course. And I want to make writing code my profession.
But how do you recommend I attack re-learning it all again? Start with Python? Don’t even try? Also, I’m not 100% in math, but I’m good friends with a lot of programmers, who say they suck at math, but manage to code just fine.
I’m not looking for negative feedback. I just want the proper head-start on things before college.
I suck at math, but I manage to code just fine (I think?).
Now that that’s out of the way, you’ve already identified the root cause of your problems, you got cocky. A better description might be over enthusiastic, and it’s quite common mistake, we’ve all done it in the past. Coding is exciting, and programming in general is a unique blend of art, science, engineering and… magic 😉 But you really need to slow your pace and come up with a solid learning path. Don’t code just for the fun of it, the boring parts are important as well.
One tip would be to focus your learning in creating small (but non trivial) projects. If, for example, you’re interested in web development, build yourself a simple blog engine. Yes, it’s the most trite example there is, but do it anyway, the reason everybody does it it’s because it combines all the basics you’ll find in almost any web application (basic CRUD: users, posts, comments).
Python is good enough as a first language, as is Java, Ruby, C, C#, C++, Haskell, PHP, Visual Basic, etc1. Just pick one and stick with it, at least until you can honestly say that you are being productive with it. It really doesn’t matter which language you’ll pick, and beware than when asking chances are people will (perhaps unwittingly) direct you to their favourite language instead of a language that’s suitable for beginners. I’d also advice against trying to learn two languages at the same time, you need to get a solid foundation first, and learning two languages in parallel might do more to confuse you than teach you.
There are several Coursera courses you could follow, and learn in a more structured way. There’s also a ton of free resources for every popular language, if you go with Python I’d recommend Learn Python The Hard Way. It might seem extremely boring (it’s a very basic book), but you really should go through all it’s exercises, I did, regardless of my 10+ years in the field (crap, I’m old). Same with any other resource you might choose to learn from, just don’t be hasty, you’re sixteen, you have time. Right now your “job” is to learn, and learn well.
Programmers is also a great resource, and so are the rest of the programming friendly sites of the network:
- Stack Overflow,
- Code Review,
- Computer Science,
- Database Administrators,
- Game Development.
Familiarize yourself with the sites, and use them to your benefit. We are all here to help, all we ask is that you show us a little bit of effort (and reach each site’s FAQ thoroughly before you ask your questions).
Further reading:
- Teach Yourself Programming in Ten Years
- No Silver Bullets?
- Help, I just graduated but I don’t feel like I know how to program!
- What have you tried?
- Which computer science / programming Stack Exchange do I post in?
- List of freely available programming books
Related questions:
- On developing deep programming knowledge
- How do I improve my coding skills?
- My Dad is impatient with the pace of my learning to program. What do I do?
- Could spending time on Programmers.SE or Stack Overflow be substitute of good programming books for a non-beginner?
- How can I find a good open source project to join?
- Learn programming backwards, or “so I failed the FizzBuzz test. Now what?”
- https://softwareengineering.stackexchange.com/questions/165918/way-in-over-my-head-dealing-with-better-programmers
- How important is self-teaching in the programming field?
- What differentiates the exceptional programmers from the really good ones?
- Recommendations for teaching junior programmers good coding style
- https://softwareengineering.stackexchange.com/questions/108578/is-it-true-that-once-you-learn-one-language-most-of-the-rest-come-easy
- Is there a canonical book on mathematics for programmers?
- Where do you draw the line for your perfectionism?
- Is perfectionism a newbie’s friend or enemy?
1 I’d avoid Perl right now, only because Perl 6 will bring some major changes to the language. Still one of my favourite languages, just not a good time to learn it if you are a complete beginner.
4
What would you like to code or what would you like to develop using your compiled code.
You can develop Softwares or Chips or Web.
When I first started learning programming, I took the fun road. Developing Static HTML Pages. It will introduce you to basic syntax.
Then make your way using C++. By producing: Hello World!, Input number: Output Word of that number, Fibonacci.
Then I am guessing after that you will be more interested in your school projects that is: Developing Systems or games.
My suggestion is to start off using C++ then move to Visual Basic.
2