I have been programming for longer than many readers of the blog have been alive. Learning new things has always and will always be a large part of what programming actually is. It is one thing to get comfortable with a language, it’s another to fully understand why things are working they way they work and how you can use that to better your code.
I started in the mid 1980 working on an Apple IIe using BASIC. It didn’t take long to learn that BASIC wasn’t considered a great language by any stretch. It had a tendency to create bad programming habits. But, it did solidify many central programming ideas. I fully understood loops, conditional statements, variable, and boolean logic among other topics. I could come up with an idea and build it in code within a short time. It’s great to have “perfect” code, but it’s even better to see your ideas working.
A basic template to succeed in learning: find a project, learn, read, try, fail, learn more, try again, repeat until done.
That’s why for this post I’m really pushing the idea that you find a project that interests you. It can be anything – ideally, not too complicated, but still a challenge. I don’t recommend trying to build a Facebook clone for your first project, but make sure it’s more involved than “Hello World.”
Once you have a project, then start to look into how to implement it. This is where you’ll have to pick devices and languages you plan to use. Sometimes, your initial goal will point you in a certain direction. If so, then follow that lead. If not, that’s okay. Look into your options and find out what will be the best suited for your project and also your future hopes. To rephrase that, don’t learn PASCAL if you hope to write mobile apps. It might be possible in some roundabout way, but it isn’t worth the extra hassle.
Once you have a basic idea for the project and how you plan to implement it, continue to read up on the language and how to use it. Once it begins to make a bit of sense, then start to write some code. Start small. To begin, focus on some aspect of your project that you can make work quickly and without much hassle. For me, this usually becomes obvious as I start to learn a new language or device. I will often learn some aspect of a language or device that will fit with my planned project. I can then use that information in order to make a part of it work. Sometimes, it’s just a part of the interface, other times it is a mathematical or logic part. But, the key is to make it something that you can play with and see the results quickly.
That is an important aspect of learning – seeing the results of your labors as soon as possible. It helps in a couple of ways, you solidify what you are learning, but more importantly you get to see the results of your lessons. Those two things make it easier to go onto the next steps in learning – failure. It is a given that your first attempts will have problems. They might run and kind of do what you want, but it is rare that they work fully right, or give you what you are hoping to have in the end. That’s okay. Failure is the best teacher.
The next key is to take your failure and turn it into a success. You do this by continuing to try. This will involve continuing to education yourself more on the language and the devices you plan to use. It will also involve you learning new things in order to improve your first attempts. You might not written the best program or made the best app, but you will have made something. And as long as you have something, you can improve it.
Just keep learning! Just keep failing. Just keep trying again and again. You can do this.
A quote that I found years ago:
“Make sure that your next project is beyond your skill and requires tools you don’t have. You won’t regret it.”