So you want to learn programming (and other things), eh?

I was wondering recently, if I could tell my younger self anything, what would that be? As you can guess, the list was quite large, but that got me thinking... As far as programming, what would I tell myself? And that, my friend, is what I have here, in no particular order.

  • Learn the right language and stick with it. If you want to do some extremely awesome mathy or sciency thing, or make games? I would suggest Python. I don't have much experience with it, but I know it is incredibly beginner friendly, and there are a lot of recources out there to help. Do you want to do something that does something cool or just looks awesome? Go with web development.

  • "But Josiah, web development isn't a language!" Yeah, I know. But the stuff you use for web development can be used in so many more places. Plus, what person interested in technology doesn't need to make a website at some point or another? Yeah, there are some pretty decent WYSIWYG editors, but it's often easier to just do it with code.

  • Learn to type. This one might seem insignificant, but trust me, you'll wish you had. I was one of those who had typing in school, but, as soon as it was over, did one of those "brain dumps" where you get rid of all that "non-important information." Trust me. Learning to type is going to be a huge advantage. Don't go the path I did and have to reteach yourself to do things right. It's a pain. A great resource for this one is Go do yourself a favor and learn typing right.

  • Figure out the basics. This applies to just about anything, but I'm gonna talk particularly about web development. Yeah, Javascript is cool and all, but don't just dive into the "cool" stuff. It builds on all that boring stuff. HTML and CSS are great to learn, and they are relatively simple as well, so get to it! They may not seem that important now, but they'll save you a ton in the future. Also (this applies to a bunch of things), Make sure you are understanding what you are learning before you move on. I have wasted many hours relearning stuff because I skimped on learning the basics.

  • Don't assume anything isn't worth learning. Approach everything like learning it is worthwhile. There are plenty of instances where I look back and wish I had actually learned something instead of just "learning" enough to pass a test. There are also those things that you had to study (parents made you?). Do yourself a favor and be willing to learn at every opportunity, even if you will probably never use it (Spoiler Alert: At some point, you'll probably need to use it.)

  • Maybe this should fall under the last one as well. When you are studying something, don't study it to use it, rather, study it to learn it. All the time, I have a specific issue or forget the syntax for something (cough switch statement cough), then, google, copy, paste, run, and done. Sometimes, you actually type in the code (or text), but didn't take the time to figure out how a piece of code works or why it works the way it does. Let me tell you, take the 15 minutes to study what you need, and you'll save yourself hours in the future (and also you won't be kicking yourself for forgetting that same thing for the 10th time).

  • Learn to ask questions. The only stupid question is the one you didn't ask. I know it can make you feel dumb, but its worth it.

  • Programming is hard. It isn't always fun and exciting. There will come a time where that one bug is really getting on your nerves or those objects just don't make sense. There isn't much I can tell you here, except stick with it. There will be those times when you are excited to build something sometime, but if you don't struggle through the hard stuff now, you are never going to get to the fun stuff.

  • Find your passion. Make something you are excited about. If a project excites you, you'll be able to work on it much longer without getting tired. Also, it will be much easier to focus and avoid distractions.

Those are just a few things I have learned that will save you a bunch of time and effort. Quite a few of those principles are universal, so don't just try to apply them to programming. There's quite a few of them that I still mess up on. But stick with it, and it'll pay off.