Programming is cool. But behind the scenes it's also difficult for many people. Many people are defeated at the early stage of learning programming. When you are not so familiar with programming, you may find you don't know where to start and what to start with first and where to apply the knowledge. Once you go though the tough period of the learning phase, you will find a whole new world. Below are some advice which can help you improve your programming skills quickly.
Write more code. The best thing to learn something quickly is practicing. You should spend more of your time on building and writing code since you won't get better unless you practice the craft. You may start by writing some simple programs with the basic knowledge you have about the language.
Work on different types of projects. After you gain enough familiarity of one language, you should start to work on something real. This will help you have a comprehensive understanding of the capability of the language This will in turn push you to learn other stuff related to the language. Later ff you find yourself always doing similar tasks using similar methods, it's going to be hard to get out of your comfort zone and to pick up new skills.
Master one or two programming languages that you use. Read a good book or two on the languages. Focus on developing a solid grasp of the advanced concepts in that language, and gain familiarity with core, language libraries. Make sure that at least one of your languages is a scripting language.
Start reading. Read as many books as possible. Books usually can give you a systematic graph about a language and they will lead you through all the aspects of a language This is especially useful for beginners Here's a start: What is the single most influential book every programmer should read?
Join discussions. When discussing with other people, you will find new ideas or thoughts you may not notice before. During this phase, you can also learn from other people and it's also a good chance for you to test how well you grasp a language by sharing your opinions about programming.
Read through any technical, educational material available internally. Google, for instance, has a wide array of codelabs that teach core abstractions and high-quality guides of best practices that veteran engineers have written for various languages based on decades of experience. If your company doesn't have similar resources, Google's open sourced some of their guides: https://code.google.com/p/google....
Write blogs. While learning programming, you may encounter different issues and you will try to defeat the problems with all means. It's a good chance for you to write down the process you resolve the problems and your gains from the process. Others can benefit from your experience as well. You can also make friends with people who have similar interests with you.
As for the time spent on learning programming. You should start by carving out 20% of your time to devote to your own skills development. If possible, it'll be better if that 20% comes from one or two hours a day rather than a day a week because you can then make a daily habit out of improving your skills. Your productivity may decrease initially (or it might not change much if you're replacing web surfing or other distractions), but the goal is to make investments that will make you more effective in the long run.