I just had eye surgery, so I had a 48 hour "blackout" period where I tried different screen readers and methods of programming. I have an iPhone and a Macbook air. I configured emacs and emacsspeak ahead of time.
Many apps on the iPhone work really well- reading email and sending texts was very easy. Writing email was difficult: I noticed how nonlinear composing email was, and browsing the web was either fine or impossible with nothing in-between.
Some apps had no assistive-technology support and were completely unusable (giving only a "thunk" for feedback). This was very frustrating and is something I will check when evaluating mobile apps in the future.
When someone made a typo, it confused the reader. There wasn't an easy way that I could find to get it to spell things out and I needed to ask for help reading something from someone sighted.
Programming was interesting.
CL (with paredit) and K/Q were no more difficult without eyes (although the choice of words for symbols left some to be desired; I would create a special minor mode if I had to do this again).
Java/C/C++ was "okay". I felt like I could do better with more practice, but it was difficult to figure out where the cursor was sometimes.
Python and Haskell were impossible: I kept having to "re-speak" each line and move the cursor around putting extra spaces in to figure out the indention level. I could only hold small functions in my head and I forgot frequently. -1/10 would not recommend python to blind people.
Kudos to you for undertaking this task. I think a lot of folks would have simply not used their devices for 48 hours rather than learn the assistive tech.
That said, please don't fall into the trap of assuming that your experience is definitive, and of recommending/not recommending things to those of us who may be blind for our entire lives based on your 48 hours of experience. Case in point, I know a number of blind Python developers. I myself did a lot of Python during college, back when Zope was huge and Plone didn't exist. It's no more or less difficult than any other high-level language. Just about every screen reader I've used has the ability to speak line indentation (I.e. "8 spaces def fn(...") and this makes tracking scope easy. Holding a function in your head based on hearing it spoken is a skill that improves with practice. I've coded to varying degrees in every language you've listed, and while some of them do have their unique accessibility challenges (Haskell in particular I find dense because "f . g $ h i" packs a lot of meaning into something with little to break it up) I've learned to audit orally parse them over time.
FWIW, as a blind person, I imagine that coordinating the motion of a 2-ton block of metal and glass, down a strip of asphalt surrounded by a number of other chunks of metal and glass, moving as fast as baseballs and prone to factors like weather and surface conditions,, is a very fragile process that terrifies the hell out of me if I really think about it for any amount of time. I wouldn't not recommend driving to sighted folks just because I can't imagine how it routinely gets solved, though. :)
I promise I don't actually mean to speak for anyone other than myself.
I have observed assistive technology before and wondered just how effective it is. I suspect many sighted programmers (like the parent poster) have wondered this as well, and the point of my post was, to use your metaphor, to point out it is a very different experience riding in a car versus driving one.
That said, some of your report surprise me.
Do you program in K?
You wrote you programmed in all of the languages that I mentioned, but you made mention of how dense Haskell seems and K is much more dense than Haskell.
For example, and I'm sorry if your screen reader doesn't like this, in K I can write:
c:{+(.#:'=x;?x)}
Q sounds better on a screen reader to me, but is harder for my eyes to parse:
c:{flip(value count each group x;distinct x)}
Here's a Python implementation of "c" above:
def c(v):
h = {}
for el in v:
h[el] = h.get(el,0) + 1
a = []
for el in h.keys():
a += [[ h[el], el ]]
return a
Now I don't know if you know K or Q, but I must say that I don't find this easy to read. Not with my eyes or with my ears. When I pointed to the fact that Python functions are longer and delimited by whitespace caused me a great deal of frustration, I hope that if you don't know K or Q that this gives you a better understanding of what I'm comparing it with.
On the other hand: If you do know K or Q, then I'm wondering if you could explain how you experience a python program like that in your environment is preferable to the K or Q example.
I just had eye surgery, so I had a 48 hour "blackout" period where I tried different screen readers and methods of programming. I have an iPhone and a Macbook air. I configured emacs and emacsspeak ahead of time.
Many apps on the iPhone work really well- reading email and sending texts was very easy. Writing email was difficult: I noticed how nonlinear composing email was, and browsing the web was either fine or impossible with nothing in-between.
Some apps had no assistive-technology support and were completely unusable (giving only a "thunk" for feedback). This was very frustrating and is something I will check when evaluating mobile apps in the future.
When someone made a typo, it confused the reader. There wasn't an easy way that I could find to get it to spell things out and I needed to ask for help reading something from someone sighted.
Programming was interesting.
CL (with paredit) and K/Q were no more difficult without eyes (although the choice of words for symbols left some to be desired; I would create a special minor mode if I had to do this again).
Java/C/C++ was "okay". I felt like I could do better with more practice, but it was difficult to figure out where the cursor was sometimes.
Python and Haskell were impossible: I kept having to "re-speak" each line and move the cursor around putting extra spaces in to figure out the indention level. I could only hold small functions in my head and I forgot frequently. -1/10 would not recommend python to blind people.