When one first starts out, it's ok to just sit in front of an interpreter or a compiler and start trying out small programs, make mistakes, learn from them and go on.
But one vital quality of good developers is being able to read code, understand good code, borrow good coding habits and using them in your work. Many excellent books are available where what shines through the pages is the author's experience in writing good code, explaining the logic of how he or she arrived at it, and then solving small problems which might come as exercies at the end.
University degrees, learning on the job, etc will only get you so far ahead, but to leap ahead in your productivity, it's best to learn from the real giants in the field.
Programming is a field that constantly changes. Reading, Applying, and learning new skills, and new techniques is part of the skill-set needed to survive. Great books are a complement to hands-on experimentation in this regard and cannot be over estimated as more and more learning is often self-learning since it's difficult to always find good mentors.