The first time I saw this kind of thing was watching Notch on the Ludum Dare challenge. I don't really see it as a way to learn much about programming, it's more entertaining and a fascinating insight into how other people work.
For example, realising that other people find listening to trance music also helps them code. Or finding out that other people use MS Paint as a level building tool. Or perhaps discovering that it's even possible to use MS Paint as a level building tool!
Definitely feel the same way, I even have the habit of extracting part of songs to make short looping versions to reinforce the effect :)
Otherwise di.fm long mixes usually hit the spot.
----
Something else that also works well for me (but not everytime) is long playlists of conference talks, fullscreen on the second screen (usually the ~25 minutes ones work best because it's in-depth enough to be interesting, but not long enough it gets boring, plus if my curiosity gets tickled to look deeper into a topic, I can pause the video to dig deeper before continuing).
I tend to mix both [and it lets me re-use the in-ear headphones that only have one side working anymore]: left ear on talks, right ear on music :)
Oh for sure – instrumental-only for me. Lyrics are too distracting. I like ambient, downbeat, chillout-type stuff. Groove Salad on SomaFM is great: http://somafm.com
I think the theory is that you need to distract a certain part of your brain if you want to get on with a task that requires a degree of concentration. Dance/trance works pretty well for this (for most people). After all music is just a way of tricking the brain into enjoying counting.
Once I tried listening to classical music, I found it very difficult to program to. I decided that the music was too complex and actually used the complex-task part of my brain (which I needed for programming). I also had a similar experience when I tried to play a language learning tape in the background while programming.
It's a fun experiment to run on yourself either way.
I find that whatever music I use for working out works best. I guess there's some link in my brain - the meditative state you get into when you exercise where it's just you, the pain and the music puts your brain into a highly focused state. I discovered that after a while of doing this, whenever I listen to my exercise playlist, it puts me into that same focused state regardless of whether I'm exercising... and I now use the same playlist for highly focused/fast pace programming. Of course it helps to maintain the link between that kind of music and focus if you regularly use it for exercise.
For me, lyrics are fine if I know the music well enough (as in, can recite the lyrics fluidly from memory). Otherwise, I mostly listen to bebop and free jazz. Repetitiveness is usually not welcome, though.
Nothing gets me in focus like the mixes over at musicforprogramming.net
Great selection of ambient/non-invasive electronica.
If that doesn't cut it, Burial and Vangelis always does the trick. And for sessions where it's only some brute force grokking, some uplifting jazz from accujazz.com
I feel that I go too fast, start making mistakes, and missing obvious things, but maybe it's different when creating rather than maintaining. I prefer ambient and chill music when maintaining.
For example, realising that other people find listening to trance music also helps them code. Or finding out that other people use MS Paint as a level building tool. Or perhaps discovering that it's even possible to use MS Paint as a level building tool!