I’m an absent-minded man. I often forget tasks, I regularly daydream in class and I have a hard time sticking to one interest, which are varied and often change. As a kid I wanted to play guitar, drums, clarinet, flute, violin, piano and bass. My mom put me in queues for lessons, but once I was offered a place I had switched my interest to the next instrument. In the end, I only played one of these, drums, for a short period.
A teacher once told me that I have everything required to become a polymath, that I actively seek knowledge. I suppose that could be true, who knows, but my problem lays in the fact that I cannot stay focused for long enough to actually become good, even decent, at anything. I had trouble with the fact that I cannot simply want myself to a skill; it’s something you have to work hard for to learn, and even harder to master. Without such discipline it’s impossible to utilize any of your potential.
But recently I came to a decision. I wanted to truly challenge this personality trait of mine. I was determined to start learning a skill, and not quit. To start a project, and finish what I started, at least for once in my life. So now I faced two questions: What, and how? What am I to learn, and how can I stay motivated and focused on this?
So I looked back at the one hobby, if you will, which has stayed with me for as long as I can remember. I realized that I’ve been playing video games for my entire life, and I decided that now I am to start making them. Furthermore, I’ve always been interested in computers, and wondered what programming would be like.
Knowing that I could probably enjoy being good at programming, I also took into account the fact that knowing programming will be, and already is, an extremely useful skill in today’s society. So I now had a skill to learn which I would both enjoy, and have use of.
That’s one question solved, but it’s really the easy one of the two. Finding something I want to master is easy, actually mastering it is another story. I thought of different ways, and decided on two key points: I wanted to document my progress for myself to see, and I needed the pressure of others expectations to motivate me. You know how you always try harder when others are around? That’s the principle I decided would help me succeed, and the fact that by documenting my progress I can look back and see that I have improved, which also is very motivating.
But I couldn’t hardly have someone look at me as I programmed. No one in my family would pressure me in the way needed, and neither would my friends. Thus, I created a blog, where I could both document my progress, while also feeling pressure to keep improving for those who read.
After setting up my blog, I finally came around to creating a document within Unity3D, naming it playerMovement.cs (C#) as the tutorials had told me. I never actually watched the whole tutorials, I figured that I could learn by doing, and end up with a good game in the end.
And I succeeded, right? The blog is still up, and being updated regularly, so things went well? You want to know the truth? I failed. Within a week I had given up completely, I removed the blog, which barely had any readers anyway, and didn’t touch Unity for months. It turned out that I wouldn’t end up with a good game if I didn’t even understand one line of code, or even the basics of programming. I had trouble even making the player move.
But the urge to challenge myself, and to create didn’t subside, so I decided to try again. Learning from my previous mistake, I started study programming before trying to actually program. I watched tutorials, used Code Academy, looked up definitions, watched some more tutorials and read blogs. I now felt more prepared, so I started a new blog, fired up Unity and began. Fast forward almost two weeks and here I am, still coding, and still blogging.
Learn From Your (And Other’s) Mistakes
I’m sharing this with you because if you can read of my mistakes and failures, then you can learn from them. My mistake was going in with a dream to create something like the pros, even though I had little to no experience. What I should have done, and what you should do, is go in with a will to learn, not to create. Accept that you will fail, that your first game will be buggy, probably ugly and quite frankly, bad. But this is okay, for while it’s not a good game, it’s a great lesson. Every failure is merely opportunity to learn. Once you come to accept this, the challenges of learning suddenly don’t seem so intimidating anymore. Remember also that this applies to everything, not just programming.
Another suggestion of mine to you who’s interested in starting programming is not to start a blog per se, but to find a good way which will keep you motivated. Motivation is the biggest challenge to learning. For me, blogging works, but for you something else may be the better choice. Do consider, however, to document your progress, because it’s a great way to motivate yourself with relatively little effort.
My game isn’t good, my code isn’t optimized, and my design is dreadful. But you know what? I’m learning, and I’m motivated. I understand more, and I am still going strong, so if I keep this up, then at some point I am bound to know enough to create things I can be proud of. Until then, I can at least be proud of the fact that I’ve gotten past the first hurdle; I’ve begun.
Joel is the editor and author of One Year Of Programming, a blog detailing his growth as a programmer over the course of one year. See his progress and read about the obstacles that he overcomes by following his blog here.