The favorite screen-reader for Windows is Jaws, but Window-Eyes is also good. OSX is great because it comes with a full-featured built-in screen-reader for free, whereas Jaws can run you $900 -- but the OSX screen-reader (called VoiceOver) is generally much more difficult to get started with, as they key combinations are complicated and difficult to remember. If you have enough useful vision, you could also use a program like ZoomText (on Windows), which combines screen magnification with voice output.
I've been looking into screen-readers for Linux & especially the command line, but haven't had enough experience with anything to make a recommendation -- though my dad knows a guy who uses linux & runs servers, if you end up talking to him ask for contact info for a guy named louis, if you can get a hold of him he'd be able to steer you in the right direction.
If you're in the US and in California (I think other countries and states have similar programs), you may want to get in touch with the Department of Rehabilitation, as they can provide a lot of help and information & will also purchase training, accessibility equipment, computers & software in order to get people with visual impairments proficient enough to compete in the classroom & in the job market.
The thing to be prepared for is that it's a major life adjustment. It's a totally different way of interacting with the computer, and it will usually come with a pretty steep learning curve, but it's definitely doable, especially I think with the hacker mindset.
All of these programs have demo versions from their websites: Jaws for Windows: http://www.freedomscientific.com/products/fs/jaws-product-pa... Window-Eyes: http://www.gwmicro.com/Window-Eyes/ ZoomText: http://www.aisquared.com/zoomtext/
Info about Apple's VoiceOver: http://www.apple.com/accessibility/voiceover/ (oh, the other good news is that VoiceOver is also included on all iPhones & iPads!)
SO discussion (linked in thread above as well): http://stackoverflow.com/questions/118984/how-can-you-progra...
In my experience, programming, in general, has nothing to do with sight – its more about how you load the entire application (architecture/design/flow – whatever you may call it) in your head. Great description by PG on this particular phenomenon [0].
As far as accessibility goes, there are blind developers for all the 3 major OS – Mac/Linux/Windows. Basically you use a screen reading application to get speech output and rely on keyboard shortcuts heavily (in GUI environments).
[0]: http://paulgraham.com/head.html
Edit: Ok, let me give you a more realistic picture: yes, every other day could prove to be a challenge especially if you are programming in a gui environment – UIs are designed primarily for visual and pointer interaction; however, being a programmer, you have more tools and techniques at your disposal to find alternative ways of doing things than a basic blind computer user. You should always be exploring and shouldn't give up. That's my learning after having been working as a developer in .NET (web/windows) for 5 years and you know, with every new major release/product, Visual Studio and Windows constantly change and break accessibility support in one way or the other.
If you are an emacs user check out emacspeak: http://emacspeak.sourceforge.net/
Windows there are many options.
NVDA is the most used free one: http://www.nvda-project.org/
JAWS is highly used but expensive: http://www.freedomscientific.com/products/fs/jaws-product-pa...
For mac there is voiceover (included in OSX): http://www.apple.com/accessibility/voiceover/
Chrome and ChromeOS have chromvox: http://www.chromevox.com/ but that is more for web.
Linux the most popular is orca for gnome desktop: http://projects.gnome.org/orca/
[1] http://en.wikipedia.org/wiki/Screen_reader
[2] http://en.wikipedia.org/wiki/Refreshable_braille_display
Good Luck with your situation!
[1] http://bsdtalk.blogspot.co.at/2008/03/bsdtalk143-bsd-hobbies...
In terms of OS's: OSX has a built in screen reader - Press Command-F5 to activate it, and follow the tutorial for more details.
Chrome has a screen reader called ChromeVox (http://www.chromevox.com)
Windows users have access to NVDA (free), JAWS (paid) or WindowEyes (paid).
EmacSpeak is available for emacs users.
However you'll find that each of these screen readers have a slightly different model that you'll have to learn.
What OS are you currently using? Being able to apply your existing mental model of how the OS works will reduce your learning time exponentially.
Someone threw acid on his face as a child, and the story narrates how he eventually overcame these challenges to go on to do great things, like work on NASA software for Mars Observer.
I use an articulated arm for my monitor which holds it much closer to my face than any stand could while not forcing me to hunch over my desk to see.
I use larger font sizes, and spend a lot of time selecting the most comfortable available font, size, and syntax highlighting options possible. Personally, I have a lot of difficulty with contrast, so standard 'high contrast' schemes make me stabby. I tend toward darkish backgrounds with just off primary colours. This may not work for you. Be prepared to spend a lot of time experimenting. This can be frustrating, and you have my sympathy.
I use a backlit keyboard.
I probably format my code a bit differently to most people, I like to leave a lot of whitespace. Between lines, on the inside of brackets, between operators and operands, etc.
I generally have my monitor brightness set a bit lower than most people, and I also bias light.
For web browsing, I use browser plugins that allow me to zoom the text, currently zooWheel in Chrome since Firefox's kamikaze update schedule continually breaks my accessibility plugins. I used to use an FF plugin called greasemonkey to reformat frequently visited sites with custom CSS, but this turned out to be more trouble than it was worth.
I work with OS X a lot, but find it to be the most hostile environment for low - as opposed to zero - vision due to the complete lack of ability to change the colors of UI elements. There are third party hacks, but they are patchy and irritating. Apple's solution is to allow you to invert the color pallete. As the saying goes, now you have two problems. Also their cursor tends to get lost against dark backgrounds. I'm sporadically working on a software solution for this.
Linux obviously offers the ultimate in customisation, but will suck massive amounts of time if you allow it to.
You may have noticed that these are all pretty much the same kinds of things you'd do (or should do) and consider when setting up your working environment.
This is good news. As a coder, you are going to find that a lt of stuff that's severely challenging to many people with low vision is simply not a big obstacle for you. You are already well equipped to modify your tools and environment around your needs.
Hold on to that thought, because the most important thing is that much of the advice that anyone gives you, quite possibly including most of the above, simply won't be right for you. As an articulate, technically aware individual, you are in a position to try out solutions and decide what works for you. Reject anything which doesn't. Go custom where there are gaps.
Most importantly, be stubborn. You have some scary shit happening and it's going to present you with new challenges. Own them. Some days are going to be really frustrating, and you'll feel like you're losing. Go get some rest, come back, and just own the ass off them.
It must be easier to change the mouse pointer sprite to be higher contrast with inverted colors.