I have been learning to program all by myself for the last few months. There are loads of resources and tutorials online, and I have leveraged it. It's great how much of a difference it's making on me. First of all, I used to suck at computer and always failed in computer at school. I scored 7 out of 100 in computer for the first time and 4.5 in the second. And I was the only one to fail. Computer and English were the most easy subjects, so everyone would pass easily, except me. Along those lines, I generated hate towards computer. Anything related to computer was nightmare except for the occasional games that I played in the computer.
While I went to college, I made sure that there was no computer in my field of study. I was convinced that I wouldn't be able to learn anything related to computer; let alone program.
Now I've basically killed the mentality that I suck at computer or anything related with it. I've designed web pages, which, I thought would never be possible. I've been working on it, day in and day out.
While I was wondering how it all happened, an interesting factor came up. I was persistent towards my goal. I kept working on it even though I didn't gain any type of instant gratification or profit. I was nowhere near designing a web site some years ago but now I've improved a lot. I now think that it's almost same in anything we do. If you are persistent on your end goal, then you'll eventually accomplish it. There are, indeed, hurdles we need to pass along the way. All those frustration, failure, negative mentality and getting stuck at things which takes forever. After analyzing all those improvements, I've come to conclusion that those hurdles are what makes us better at our craft. If you can pass those hurdles then you'll improve significantly.
Let's say there are two people who are trying to learn Spanish. The first one tries to speak Spanish everyday, even though his Spanish is really weak and whenever he feels like he's not communicating effectively, he goes and studies. As we know, the hardest part in becoming fluent at any language is to use correct words at given situation simultaneously while learning it.
So, Whenever he get's stuck while speaking, he tries to figure out the words, either by asking the native speakers or by listening to Spanish podcasts. Slowly, he gets hold of the language and is able to speak Spanish. The only secret, you can see, is that he didn't stop speaking even though it was really hard to communicate. He kept working on his weakness and tried to overcome the hurdle. And he was successful at it, which made achieving his goals easier and more effective.
So now we have another person who wants to learn Spanish. He thinks there's no hurry and has enough time to learn it. He wants to learn Spanish but doesn't have any need to learn. So he goes out occasionally, and tries to talk with native speakers. After trying to communicate for sometime, he finds it really hard to talk with them. Instead of taking this as an opportunity to improve his Spanish, he thinks it's really foolish of him to try and talk with them. He finds it really difficult, and thinks that after reading vocabulary he'll be able to speak with them. Since there's no urgent need to learn Spanish, he takes time to learn it. He slowly looses interest in Spanish language because he can't speak effectively with native speakers. Instead of reflecting his weakness and working on it, he tries to skip it. It didn't, as a matter of fact, make him successful at achieving his ultimate goal of learning Spanish language.
The first guy improved on his weakness whereas the second tried to skip the hard part. If you try and skip the hard part then you will almost always fail to achieve your end goal. Another important aspect for achieving end goal is breaking your goal into smaller parts. If you want to lose weight then start by breaking your diet into smaller parts. If you have the end goal of speaking a language then you should also break it into smaller parts. You can spare a week for listening podcast, another week for reading book of your target language, another for speaking, and so on. And this is the most interesting part. If you can complete the short term task then there's high chance that you'll accomplish the end goal. You can figure out if you'll be successful at your goal or not just by looking at your current pace. If you are successful at short term goal then there's high chance you'll make it till the end, or else it's going to be really hard.
Turning Weakness Into Strength
What I basically did with programming was turned my weakness into strength. I used to run away from anything that was hard. It didn't help me, instead made me run away from success. I made short term goals and completed it, and never searched for short term gratification. That's the main difference I see between anyone successful and unsuccessful. People who achieve their goal always work on their weakness and improve it, instead of running away from it.
I could have ran away from my weakness and kept working on other easier stuffs. But that weakness would be the turning point of my success on trying to program. Weakness comes back to us one way or the another. I wouldn't be able to be a programmer because I would miss the whole point. I am still not a programmer but if I will be persistent at it then there's no way I won't be. I might change my mind and work on something else. I might not want to be a programmer but the technique is the same in everything I try. It's same everywhere. We don't need to search for magic formula that will make us successful at attaining our goal. It's universal: Start from day one, break the goal into smaller parts, make sure you complete it and work on your weakness. I have come to realize that there isn't any magic formula or hack for attaining our goal. I was running away from weakness, but now I'm pretty much working on my weakness. Weakness is what drags us down, so skipping your weakness is just a foolish act.
Working on Weakness
If you constantly work on your weakness, there's no way you won't succeed. Weak spots stop us from achieving our goal, so working on it is the only way to succeed. If you try and skip the hard part, which is accompanied by your weakness, then it will not help you achieve your goal. It's as simple as that. So the most effective way of learning anything is not running away from the hard part, but working on improving it.
Start From Day 1
Starting from day one is another aspect of success. If anyone says that they will work on something on January 1st or on their birthday, then they probably won't make it. But instead if they start to create a smaller work loads and make a routine to try and complete it, then there's high chance the person will make it. The biggest factor is starting from day 1. As soon as you get some idea, you should work on it. If you want to learn guitar then you should start now with specific goals, not on your birthday or March 1 or some other date. That's the whole point in success. Time travels very fast and you will lose interest over those things over time. You won't feel like working on it later because you won't have the same mentality and energy as you will have when you had that idea for the first time.
While you work on your goals, you get motivated for accomplishing other goals as well. For example: When I start my day on a brighter note, I tend to write better and after I write better, I get motivated to work on my programming skills better. It's like a chain. If you break one, other falls short and you won't get the motivation you will need.
The reward itself is the motivation to work on other goals. If you have the habit of constantly searching for instant gratification and reward then that's it - the motivation to work on other goals. Don't search for monetary reward because that drags us down from our goals. You feel less motivated when you don't get enough monetary reward and your brain starts to work less. If you get monetary reward today then your brain will search for grander reward tomorrow and it will be impossible to fulfill everyday.
If you want to be healthy then, you obviously need to eat healthy food. You need to cut bad carbs, stop eating outside, commit on eating at home, eat more green veggies and nuts. If you want to become healthier but don't want to eat proper food then there's no way you'll become healthy. Most people complain that they grow fat but they never take any steps to exercise or eat healthy food. They are always blind to the fact that lack of exercise and improper foods make them fat. Even if they are aware of it, they prefer not to work on it because that seems really hard or uncomfortable. The solution is, obviously to work on the hard part, i.e. the weakness and not on easy shortcuts. The result will slowly start to build up.
I am also improving my photography skills. I don't have any plans for getting professional, it's just I want to be able to take good photos when I need. While I started taking photos some year ago, I used to take really crap photos. I've improved a lot now, even though I'm no where near professionals. I am using simple point and shoot camera at the moment because I don't have DSLR or other better camera (which I wish I had.)
Whew... that was a long one! There might be some typos because I didn't take much time to edit.