This is the personal experience of a blind Google Programmer.
I am totally blind and I work for Google writing changes to the ranking algorithm. As part of my experience, and I believe from many other blind programmers, the way that we program is not that different from our sighted colleagues. [Most of the time], I use a text editor (which is Emacs and an extension called Emacspeak, which makes Emacs talk), and a browser to look at some internal pages of Google with documentation and stuff.
The main difference here is that we either hear what is on the screen, or read with the help of a braille display. I cannot comment on using a braille display because I have never had one in my life (too expensive), but I can give some idea on how it is to program by just hearing.
The biggest challenge of programming just by ear is that you need to memorize a lot of stuff.
You move line by line, hearing the entire line. You can move word by word and hear them, or character by character. The point is, you see, at a given time, just a small fraction of what is on the screen. You can’t start programming and look up in the function definition what the name of the variable being passed is. You memorize it. If you want to check the function definition, again, I would set a marker, look for the definition, read it, and come back. As you can notice, this may take a few precious seconds, so improving your memory skills is a good thing here.
I like to program with Emacspeak because it gives me a lot of cool things when programming in c++. For example, in this program there is the notion of voice styles, and it will read variables, functions and different element of the language with a voice with a different pitch. This makes things easier to identify what is what. Consider this as the audio highlighting of code.
As a last comment, a curiosity:
Blind programmers do not use indentation. We normally finish the code and indent it later, as it brings no advantage for us.
Then you might ask:
What about python?
I like python a lot, and even the indentation part does not make me think differently. I create some techniques, like, jump a line at the end of each indentation block, so I can know very fast when the block has ended.
When reading code from others, I can set an option in my screen reader to tell the indentation level, but I find this a little bit annoying, because for each line that you read, it will say the number of spaces present on that line.