This is so true. About two years ago I realized that a significant chunk of my time was reading. I would read howtos, api docs, in depth analysis of things, both directly related to my job that day and programming in general. I did an analysis and realized that I was easily reading the equivalent of a 1000 page book a week. I have since taken efforts to both increase the quantity and quality of my reading, and it has paid off. I actively seek out topics I am ignorant of, and deeper articles on topics that have interested me. I also try to look at tools I don't expect ever to use. In all these cases I just read. This has given me a breadth I hadn't enjoyed before, and I suddenly have access to a whole new understanding when I and my co-workers encounter problems -- "hey let's look over here for ideas, that field has encountered similar problems"
DO NOT EVER LEAVE THE COMPUTER IF YOUR PROGRAM DOES NOT RUN.
I disagree with this. There is a point at which I need to just be done with an issue for now. This give me a chance to background process the problem. The number of times the answer "just comes to me" while doing something else has given me a certain amount of faith in temporarily walking away from the problem. A lot of people call this the "shower solution".