In my previous post on how to become really good developer, I touched upon something that I feel needs more attention. I said that you need to invest over 10,000 hours in practicing the craft to really become good. What I failed to mention is that those 10,000 hours must be progressively harder. You must push yourself out of your comfort zone and you must take on harder and harder assignments in order to really grow. Mindlessly doing something will not improve your skills. Doing things at the level you are comfortable at will not improve your skills. Like muscles that need to be exercised progressively harder to develop, mental skills require this increasing complexity to grow.

The biggest obstacle by far in this quest is temptation to give up, and you will be tested many times.  What you need to realize though is that quitting in long run is much harder than to keep on going. When you quit on yourself, you are chipping away your character. More times you quit, easier it becomes to quit. And that spreads like cancer to anything that you are trying to accomplish.

If you quit, guilt will follow with its cousins: could have, would have and should have. You start either beating yourself up for quitting or lying to yourself. You keep thinking that if you just have worked through difficulties, you would be on top of the world. You could have done it. You will look with envy at people that did. That’s why quitting is harder than doing it. This realization comes only after it is too late.

Don’t give up and quit on yourself.

Every game in life, whether it is programming, business or physical like sports, is always, always 90% mental game. “Whether you believe you can or can’t, you are right”, said Henry Ford. You quit in your thoughts and your attitude first, regardless of external circumstances. You model external circumstances in your head to support your decision no matter what circumstances are. You tell yourself that it is too hard, that it will take too long and that you just can’t do it. You put it off for next time. You withdraw mentally long before you manifest that outside.

Part of every big accomplishment is victory over these inner doubts and weaknesses. It is not that 10,000 hours of hard work is something you can’t do, anyone can, but it is hard to make yourself work at it every single day. That is hard. Forcing yourself to keep going when going gets though, when hour gets late and you’d rather watch TV than work.

So the biggest part, the most important part of becoming really good developer is persevering and not giving up when problems get too hard. Don’t ask for help from others on how to solve a problem. Solve it yourself first then ask for opinions on your solution. Volunteer for hard projects. If you see something that nobody wants to work on maybe it is something you should get done. Each problem you solve, each obstacle you work through, will add a brick to your character wall. Once that wall is standing tall and strong no problem will bring it down.

Just don’t give up!

PS. Please don’t get hang up on 10,000 hours. Depending on your profession and talent that number might be significantly higher, but rarely it is significantly lower. 10,000 hours should also not be used as excuse to start doing. Often we get side-tracked by “preparation” for the actual doing. This is just another form of procrastination. You can read as many books as you want about bicycle riding, but you can only learn to ride by actually doing it.

Professional looking applications made easy with DotNetBar for WinForms, Silverlight and WPF User Interface components. Click here to find out more.