Ask HN: I'm a software engineer going blind, how should I prepare?
I know there are blind software engineers out there. My main questions are:
- Are there blind frontend engineers?
- What kinds of software engineering lend themselves to someone with limited vision? Backend only?
- Besides a screen reader, what are some of the best tools for building software with limited vision?
- Does your company employ blind engineers? How well does it work? What kind of engineer are they?
I'm really trying to get ahead of this thing and prepare myself as my vision is degrading rather quickly. I'm not sure what I can do if I can't do SE as I don't have any formal education in anything. I've worked really hard to get to where I am and don't want it to go to waste.
Thank you for any input, and stay safe out there!
Edit:
Thank you all for your links, suggestions, and moral support, I really appreciate it. Since my diagnosis I've slowly developed a crippling anxiety centered around a feeling that I need to figure out the rest of my life before it's too late. I know I shouldn't think this way but it is hard not to. I'm very independent and I feel a pressure to "show up." I will look into these opportunities mentioned and try to get in touch with some more members of the blind engineering community.
[+] [-] kolanos|6 years ago|reply
[+] [-] vidanay|6 years ago|reply
[+] [-] anonytrary|6 years ago|reply
Try 5-6x. I've met some blind people who listen to audio so fast, it sounds like noise to me. As someone who isn't blind, I regularly listen to lectures and audiobooks on 1.75-2.5x (depending on the base rate) without issues, but 6x is just something else entirely.
> Typos will be easily spotted as they just won't "sound right".
Really good way to describe this. It's almost like listening to an audio fingerprint which magically indexes the answer in your brain. My blind friend was doing law, but I'm sure she did something similar to help her map the dependencies between laws.
[+] [-] leeoniya|6 years ago|reply
does refactoring by other team members have an outsized negative effect on this?
[+] [-] WalterBright|6 years ago|reply
[+] [-] hnick|6 years ago|reply
That's all really interesting. I personally have a problem with my thoughts in that I need to "sound out" or read them aloud in my head. This sometimes really slows me down, I mull over a thought until it sounds right. Especially when I'm tired I can get stuck in a loop. And it applies when reading too, I can force myself to read faster but usually I slow down and hear every word out of habit.
I know some people don't have this inner voice. I wonder if it means they can think more freely.
[+] [-] herval|6 years ago|reply
[+] [-] frabbit|6 years ago|reply
That's a really interesting idea to me, because I have been trying to improve my memory and recall (mostly of things like telephone numbers) using the Major Memory system and the emphasis behind that and similar techniques seems to be constructing visual imagery which encodes other information. So, it sounds like you are saying that you have found other pathways/techniques that do explicitly do not do this.
[+] [-] renaulth|6 years ago|reply
In my job I typically spend 3-4 hours a day in the IDE, but but rest of the day is spent looking at production issues and servers, looking at RabbitMQ management UI, etc. The emphasis being on "looking".
I'm just curious as to how a screen reader would allow you to do those things, in a high pressure environment?
[+] [-] hansccwolf|6 years ago|reply
[+] [-] bollu|6 years ago|reply
[+] [-] shrimpx|6 years ago|reply
[+] [-] jedberg|6 years ago|reply
Huh. I already listen to most podcasts and recorded presentations at 2x. Now you make me wonder if I could process information faster with a screen reader even though my sight works just fine...
[+] [-] tambarskjelve|6 years ago|reply
[+] [-] unknown|6 years ago|reply
[deleted]
[+] [-] hutzlibu|6 years ago|reply
My visual representation is definitely 3 dimensional and I am not sure what you mean by abandoning it? I mean, code is statement blocks and controll flow elements. It is data and connections between them at execution. I can imagine, not being visual gives you much more focus and fewer distractions on the mental map, but is it really different?
[+] [-] blzaugg|5 years ago|reply
[+] [-] herenorthere|6 years ago|reply
[+] [-] aws_ls|6 years ago|reply
[+] [-] StandardFuture|5 years ago|reply
[+] [-] ddevault|6 years ago|reply
I have also written some plugins for using Vim (text editing) and Weechat (IRC chat) with speech synthesis:
https://git.sr.ht/~sircmpwn/dotfiles/tree/master/lib/vim/vim...
https://git.sr.ht/~sircmpwn/dotfiles/tree/master/.weechat/py...
And I have a script for Sway (a tiling window manager) which also gives you audible cues:
https://git.sr.ht/~sircmpwn/dotfiles/tree/master/bin/swaytal...
All of this is somewhat incomplete, but it's a good starting point if you want to get used to them and work on improvements while you're still sighted. Good luck, and let me know if I can be of service.
[+] [-] hatsunearu|6 years ago|reply
[+] [-] dicknuckle|6 years ago|reply
[+] [-] bear8642|6 years ago|reply
[+] [-] zw123456|6 years ago|reply
[+] [-] RobMurray|6 years ago|reply
You said you have hearing loss. Is it bad enough to make speech output useless? If so you would need to learn braille.
I would never try front end design as I have no idea what it should look like, but you may still be able to do it if you have an image in your head of what you are trying to achieve. You would just have to ask someone to check it.
Python is not a problem with screen readers, contrary to what someone else said. The screen reader can be set to report the indentation level. In fact I can't think of any text based language that wouldn't be usable with a screen reader. Tools are a different story. Some work and some don't.
Feel free to contact me if you would like any more information, weather it's about computers or not. rob at mur.org.uk
[+] [-] mwcampbell|6 years ago|reply
[+] [-] zachrip|6 years ago|reply
[+] [-] O_H_E|6 years ago|reply
Feel free to not answer :D
[+] [-] istorical|6 years ago|reply
Gradually have it turned off for longer periods without turning it on to see what's happening until you can do it without seeing it at all.
[+] [-] kolanos|6 years ago|reply
[+] [-] simonebrunozzi|6 years ago|reply
I'm sipping a decent morning coffee, I'm in Japan, whereas my home is San Francisco. I've been here for ~5 weeks, trying to escape the coronavirus disaster that is unfolding in the US, and trying to enjoy spring in Japan as well. I'm lucky enough to be able to afford a few weeks abroad without too many money worries.
Work is a disaster. The last ~4 years of my life have been both unlucky (e.g. recently I was offered a highly lucrative executive job in SF, only to see the CEO change his mind on the whole operation - not on me specifically - at the last moment) and badly handled by me.
My professional career essentially came to a halt and so far didn't recover. I still keep my cool, but I am a bit worried about what's going to happen in the future, especially given the current situation with the virus.
And now, in all of this, few minutes ago I've read "I'm going blind, how to prepare", and my perspective suddenly changed. It's as if something clicked, and I can now "see" the world as it is.
I'm incredibly lucky. Most of us here are incredibly lucky. Zach, you probably didn't mean it, but today you somehow triggered a very positive reaction in me. I wanted to let you know.
I also wish you best of luck with your condition, and hope that you will manage to have a great life despite a deteriorating health.
[+] [-] zachrip|6 years ago|reply
But there are silver linings. I was born with severe hearing loss but it's stable and corrected with hearing aids. I don't have any balance issues (I have USH2A, which only results in hearing/vision loss). I'm so fortunate to have experienced all that I have and all that I will. Thank you for the kind words.
[+] [-] hycaria|6 years ago|reply
I would say you're selfish or dumb enough to be moving in a time where people should just stop those behaviors and stay wherever the fuck they are... And this is not even considering you know, GHG and stuff.
But globally this comment is so full of oneself I'm amazed.
[+] [-] mburst|6 years ago|reply
[+] [-] TriNetra|6 years ago|reply
- You can do frontend coding but certainly some assistance is needed for verifying the UI design. In any decent sized project, Personally I prefer my sighted colleague to handle look and feel (mainly the CSS part - though I know CSS) as I feel it's not a productive use of my time. It's always better to have a UI specialist anyway. FE devs have lot of other things to do especially when it is SPA based.
- Visual studio is good for development and debugging (for .net related languages at least). If you're on windows use autohotkey and setup shortcut keys and hotstrings to automate repetitive actions and text. For instance I prefer bash for using Git and have setup commands like 'gtcom' which expands to 'git add . (newline) git commit -am ''. I just have to type the comment then. Since you'd be working exclusively via keyboard it's important you do more with less hits to reduce strain on your wrists.
- Another important thing is to be able to find alternatives to UI tools your colleague are using but which could be highly inaccessible. Your programming skills and knowledge of system internals will help you with that. Do not settle with any tool which decreases your productivity considerably just because the team is using it, as you'll be judged based on your deliverable and not what tools you used.
I second what @kolanos has written. Programming is mostly a mental job (no pun intended) and everybody has to load a representation of the program in head before one can start fleshing out good code. PG has also written about it
[+] [-] ilamont|6 years ago|reply
I'm the blind dev who refactored a huge chunk of the Rust compiler [0]. I'm at roughly 800 words a minute with a synth, with the proven ability to top out at 1219. 800 or so is the norm among programmers. In order to get it we normally end up using older synths which sound way less natural because modern synthesis techniques can't go that fast. There's a trade-off between natural sounding and 500+ words a minute, and the market now strongly prefers the former because hardware can now support i.e. concatenative synthesis.
https://news.ycombinator.com/item?id=20883169
[+] [-] EnderMB|6 years ago|reply
I'm not sure where you're based, but I've heard of Usher's Syndrome after hearing a talk from someone named Molly Watt, who also has Usher's Syndrome. It might be worth dropping her a line, as in her line of work she might be able to either give some advice, or point you towards someone in your situation that can help.
https://www.mollywatt.com/
[+] [-] taywrobel|6 years ago|reply
I know you may not want to have your disability define your career, but if working to help others that have the same affliction appeals to you, let me know. I’m not there any more, but still have connections I could reach out to for you.
[+] [-] dundercoder|6 years ago|reply
I haven’t moved to non visual coding yet. Instead I have optimized for the vision I have left. I have a very bright monitor, very bright lights in my office (overhead) and have learned to make a place for everything, and always put things back in their place.
Never underestimate the amount of time you can lose from looking for something that is only slightly out of place. Be it a pen, your glasses, or a USB stick.
So long as you are able, don’t disclose your impairment to anyone in an employment situation during the interviewing or new hire phase. Discrimination is awful and frustrating and illegal, but it is still the norm and it’s easiest to just avoid it if you can.
[+] [-] Endlessly|6 years ago|reply
If it’s not clear, there are ways to detect this, it’s legal, and if I thought there was any opportunity to easily detect biases that might impact me, I would do so.
[+] [-] averros|6 years ago|reply
[deleted]
[+] [-] isidorn|6 years ago|reply
My name is Isidor and I work on VS Code. Here's some hopefully useful advice:
* Join a screen reader mailing list and get to know the commnity: Program-L is the name of the general list and there is one list for Orca Screen Reader in case you are a Linux user
We try hard to make VS Code accessible so in case you decide to use VS Code:
* We have a gitter channel for accessibility which you can join https://gitter.im/Microsoft/vscode-a11y
* You can file issues and provide feedback as we try to improve continously https://github.com/microsoft/vscode
* Feel free to ping me @isidorn on either of those or on Twitter. And let me know if we can help more.
I wish you all the best
[+] [-] bramd|6 years ago|reply
If you'll become totally blind (e.g. need to transition to a screen reader some day), I would advise you to leave the Mac platform. The built-in screen reader seems good at first, but falls down in complex work. Support for web browsing is suboptimal (Firefox is a no go) and the screen reader is only updated in the regular OS X release cycle. This means bugs will stick around a long time and it's totally unclear what the status of a bug is. Also, hackability of VoiceOver is limited. I find that a must for a tool that I am 100% reliant on.
I'm very sympathetic to Linux and run it in many places (Raspberry pi, home server, some stuff on VPSs), but I think Windows is a better accessible desktop experience now. Microsoft is trying tu push accessibility hard in most of their projects, this is often lacking in open source projects. Even if OS projects want to do a good job at accessibility, they usually miss the manpower of knowledge to do so. Especially given Docker and WSL (Windows subsystem for Linux), it is easy to run Linux-based development workloads on a Windows box.
My editor of choice these days is VS Code. That team is also very active on the accessibility of their editor. I use the free and open source NVDA screen reader. If something in NVDA is broken, I can at least look at their Github if any work is being done and if needs be throw in a few patches myself.
So, summing up I would say: find out a set of accessible tools to do your job, learn them before you get blind. Relying on vision until the very latest moment will give you an enormous productivity hit when the switch to 100% screen reader use comes (based on my experience training low vision and blind users in a previous job).
From what I've seen from the thread, others have already touched on some advantages of being a blind coder. You'll get a better mental model of your code out of necessity and depending on your team/employer you can be a more valuable team member because you also bring knowledge of software accessibility.
Hope this helps and good luck!
[+] [-] oaabhilash|6 years ago|reply
[+] [-] csdreamer7|6 years ago|reply
https://www.youtube.com/watch?v=b_RL_Q8CR78
From 2015, a blind engineer uses emacspeak to write C++.
https://www.businessinsider.com/how-blind-google-engineer-wr...
I have read some HN comments in the past from blind engineers. Not sure if they are frontend.
[+] [-] acdha|6 years ago|reply
My employer is the U.S. federal government and I would highly recommend considering looking at government (or contractor) jobs: we take very seriously the need to serve ALL of the public and front-end engineers who deeply understand and value accessibility are extremely valuable contributors since they can provide the subjective guidance which no level of automated tool or guideline can provide.
The GSA’s 18F has a great guide to building accessible websites:
https://accessibility.18f.gov/
(The BBC guide is also good: http://www.bbc.co.uk/guidelines/futuremedia/accessibility/)
I’d treat that as both an area to learn the tools for personal reasons - e.g. get comfortable with the accessibility tools in your favorite operating system - and as an area to learn more. There’s a pretty good story for web accessibility these days but a lot of people do not make much use of it and someone who can make an entire team more efficient has a somewhat uncommon selling point.
[+] [-] tuukkao|6 years ago|reply
>Are there blind frontend engineers?
I don't think so. It's not that you can't do frontend at all, just that you can't do it completely. Something like copying the layout from a visual mockup doesn't really work unless someone describes the mockup to you, and even then it might not be 100 % correct, though i'd say your experience as a sighted frontend developer would definitely help there. Thankfully (in this case anyway) SPA's tend to be so complex these days that there is plenty of work to do without touching the actual layout. My frontend work has consisted mostly of refactoring and writing various integrations. Occasionally I've written some complete features where I've laid out a rough version of the UI and someone sighted in the team has finished it off for me. This strategy has worked out relatively well for me in the past. However I'd say doing solo frontend work is sadly a no-go.
> What kinds of software engineering lend themselves to someone with limited vision? Backend only?
Basically anything non-visual works out. Backend, yes, but also the business logic of SPA apps as well as devops work.
> Besides a screen reader, what are some of the best tools for building software with limited vision?
- A good editor which is accessible and has an extensive set of keyboard shortcuts. Visual Studio Code and Eclipse are the two editors that I use in my day to day work.
- Terminal. It's often much quicker to do things like text manipulation, version control and devops administration there, since you don't have to waste so much time going through information that you don't need. I've found git gui's to be particularly useless. Web browsers and editors/ide's are basically the only gui tools that I use.
Feel free to hit me up if I could be of any help.
[+] [-] chrisdone2|6 years ago|reply
1. Emacs and Emacsspeak in particular. Emacs is the richest text-based user experience out there; imagine if all Terminal apps were configurable and scriptable under the same coherent framework. This is why Emacsspeak is an incredibly valuable asset that I would lean heavily on in the event of vision loss.
2. I would invest heavily in making sure that I have a very trivial way to deploy Chrome user extensions or similar such that I could write my own screen readers, document explorers, etc. tailored to my own liking. The only thing close to Emacs is the DOM with JavaScript as it’s Elisp. A lot of people gripe about the web, but the fact that almost all my apps come under the same pliable DOM means I can manipulate without vision almost everything. See e.g. vimperator.
These two things mean that you could do most of your job as-is, with assistance from colleagues.
As you’re a full stack developer, you’ll find point 2 easy. And point 1 is hard but a worthy investment. Emacs is older than the web and will probably outlive it.
I would probably also look at using tree sitter to make screenreading code more efficient at the AST level, because code is parsed linearly but we read it with random access.
I’d start working with my screen turned off or covered with paper if I knew ahead of time, that way I could start training. Honestly, computing-wise I wouldn’t be that worried about losing my vision. It’s the rest of life that’s harder.
Best of luck to you! Drop me a PM if you’d like some pointers on my two bullet points.
[+] [-] mcv|6 years ago|reply
I do know one reason why a blind front-end developer can be very valuable for a company: there are a lot of blind people out there, and they need to be able to use the web too. For this reason, a lot of companies care a lot about accessibility, and so do a lot of developers. But despite those best efforts, those developers keep dropping the ball without even noticing, because they don't experience it. As a blind developer, you will notice when something your team has built, doesn't work for blind people. This can be very valuable in the right situation.