Answer by Lucas Radaelli:
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. I use most of the time a text editor (which is emacs and an extension called emacspeak, which makes emacs talk), and a browser to look 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 can not comment on using a braille display because I have never had one in my life (too expensive), but I can give some idea how is to program 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, look up in the function definition what is the name of the variable being passed. 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 thing 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.