Stories from the Trenches: What I’ve learned from Working as a Blind Developer for a Sighted Dev Team

Introduction

Before I can claim any familiarity with the material I am about to present, both myself and the topic at hand need to be introduced. This will set the stage for the later portions of the article.

I am a Dutch developer, recently graduated with a bachelor’s degree in IT. During my time as a student, as well as after graduating, I have worked for various companies as a back-end web developer who is slowly but surely also migrating to more and more front-end work, the technological landscape being what it is. I have worked with a variety of technologies, from C# to Python and from Rails to JavaScript.

I am also an accessibility expert, familiar with the usual suspects such as WCAG, ATAG and friends. What I mean by proficient in this case is that I have used these skills in a professional setting by performing accessibility audits on websites, web applications and desktop applications. I have also amassed theoretical knowledge by going through the Deque University training program which I can highly recommend if you want a firm grounding in accessibility fundamentals.

This proficiency with accessibility regulations is mainly a consequence of the fact that I myself require content to be accessible in order to be able to use it. I am fully blind, use a screen reader to do my job and walk the treacherous path of the blind developer. A path I will describe, as well as the various traps it contains.

This description will at times be factual, at times opinion-based. Most of the time, it will be the experiences of a single individual who writes code for a living without using his eyes to help him see what he’s doing. I am hoping this tale will shed some light on my workflow and the things I have to deal with to keep that workflow going on a regular basis. Finally, it will be a snapshot of sorts of all the things I’ve learned and am still learning about this process.

Starting your journey: getting a foot in the door

In order to work for a dev team with sighted colleagues, you obviously will need to get hired first. Making that happen means you need to hop over some interesting gotchas that may not be immediately apparent, which is why I dedicate a section of the article to it here.

Job hunting as a blind developer is an interesting activity. Just like anyone else applying to any job ever, it starts with a resume and in most cases a cover letter.

A question I initially faced was if I would immediately notify the company of my blindness or not. I’ve found that generally, it’s better to not do that because of the simple reason you put unnecessary emphasis on the blindness if you do. I am a developer with qualifications, experience and skills I have earned and worked hard for and those are the merits I want to be hired for, being blind, to me, is an inconsequential thing next to those skills, unless it can somehow be an asset to the position. This would for example be true for an accessibility-related position.

This has led to some rather interesting situations, from bewildered looks at my white cane or, later, guide dog, to hastily devised excuses to end the job interview prematurely. Although discriminating against someone with a disability is illegal, it is at times rather easy to disguise as something else, this is something to look out for. Fortunately, this doesn’t happen all that often but to not mention it here would be playing fast and loose with the truth. It is a careful balancing act in the best of cases; these days, I tend to mention my blindness at the very last moment when I negotiate a job interview over the phone, by stating I will be bringing a dog to the office and asking if anyone is allergic to dogs. Usually, the next question is a very understandable “Why?” and only then will I mention it, minimizing it as much as possible. Most of the time, this approach has given me at least a chance to come in for a first interview.

Other obstacles are mandatory screenings or assessments that are not accessible, these are generally standardized tests that cannot be deviated from according to the company, which generally ends the job interview procedure right there. Obviously, the issue can be forced but in the vein of creating a positive working environment this is really not something I can recommend. That has to do with the above mentioned emphasis on your status as a blind person; the more you make an issue of it, the more importance it gains for the person considering your job application.

What follows is generally an almost scripted procedure. The job interview goes off without a hitch in most cases, but gains an extra component I like to call the “Monkey show, Monkey do” portion. This part of the interview is usually preceded by a question like, “You can probably imagine why I ask, but … how? How do you program without looking?” At this point, I explain about screen readers, the blazingly fast rate they spit out information at and I usually get out my laptop to give a bit of a demonstration. I usually get stares of amazement and, once, I was even applauded for. Although that is of course very flattering, being stared at in admiration for doing something that is second nature has a tendency to get old from time to time. Obviously this is nothing personal; it’s just possible that you are the third person doing so today. Answering the same questions over and over certainly falls in that same category as well. As a result, I actually wrote an article to answer some of the questions I often get when it comes to being a blind developer. Fortunately, both this demonstration as well as this momentary period of being stared at usually doesn’t last very long and I’ve found that doing this makes it a lot easier to explain why something is or is not a challenge further down the road. I therefore would say that being put on display like that, although sometimes uncomfortable, is very much worth it in the end. After all, the reactions are understandable. I am doing something a lot of people can’t even imagine doing without sight.

Picking your tools: The constant Struggle for the constant Juggle

For various pursuits, you require a set of tools to be effective. Climbers will need rope, anchoring hooks etc. And programmers require tools to program, test, collaborate, share and look up information etc. Unfortunately, this is where a lot of people quit, perhaps even more unfortunately this is very understandable. The amount of work to get a decent stack going that works for your use case, next to working a normal 40-hour work week, can be very overwhelming.

The operating system is the first hurtle; a lot of dev teams here in the Netherlands use macs exclusively, which is very understandable. Sadly however, the accessibility APIs available to the Mac OS X screen reader, Voiceover, are in a lot of cases inferior to those in Windows.

The amount of keystrokes required to perform a task on the Mac is often higher than on Windows, OS X being a very mouse-oriented operating system. Finally, the screen reader itself lacks a lot of the convenience features and customization options of it’s Windows counterparts. In an industry that is supposed to be equally accessible to both the blind and the sighted, these shortcomings translate into serious productivity hits in comparison to my sighted colleagues. This can be stressful and requires some understanding and flexibility from my colleagues at times. Generally, a lot of tasks can be performed with near equal speed as a blind person, once familiarity with the codebase and tools has been achieved. Achieving that familiarity however, can take time. Especially if tools are not as accessible as they can be, you lose precious time wrestling with a tool that is supposed to help you in your work, but rather, hinders or even blocks you entirely. Fortunately I have usually been met with understanding and, a lot of times, curiosity about the shortcomings from my sighted colleagues. This isn’t something to depend on though; when a lot of work needs to be done in a short amount of time, every productivity hit is in a sense one too many. To alleviate these problems as much as possible, it is paramount that you know every little shortcut and trick of the trade in your tools of choice to shave off time wasted on actions you repeat all the time. Macro keys, shell aliases, editor extensions that give you more keyboard shortcuts are the name of the game. This however, is not possible when the tool you are forced to use is inaccessible and gets in your way.

This notion of tools that are supposed to help you getting in your way instead is an important one. Where my sighted colleagues often use graphical tools to manage certain aspects of their jobs, these tools are often inaccessible. This requires me to , often on the spot, figure out some kind of workaround to still perform the same task with some modicum of efficiency. For a graphical application, this might be a command line equivalent. A website might have an API. Sometimes, a second graphical tool might work better than the de facto one. Constantly puzzling out alternatives for inaccessible technology is a constant part of the job when you do it with your eyes closed. Getting the freedom to bring your own tools is very important for that reason.

I’ve rarely seen tools being enforced because developers generally have a strong preference for their own workflow, but the places that insisted on doing this gave me such a hard time that such a regime is now a deal breaker for any future contracts I take on. It is that important.

Your first thought might be to just use Windows if OS X is less productive. In an ideal world, that would be a viable solution. However, especially in older codebases, dev teams have often devised little hacks to make older code run on their newer hardware/software that shouldn’t even be running anymore in the first place. These hacks are OS-specific, often hard to replicate on Windows even while using the Windows Subsystem for Linux and can take weeks or more to get working, it’s often not worth it.

Right now, for that reason, I am running a Windows 10 virtual machine within VMware Fusion on the Mac. I am forced to use two operating systems at once to get my work done. Windows holds my web browser, my code editor of choice and various other tools I use to increase my productivity. Google Chrome, VS Code, a decent PDF reader, an office suite for working with DOCX and XLSX files, basically all real applications run on the Windows VM, making the OS X part more of a server that just hosts the application code. This is a good example of the freedom of to use your own tools I referred to. Nobody else in my team runs the same setup I do, but doing this has generally been met with understanding and support from my colleagues because they can see I can get work done this way.

Accessibility, especially in dev tools, can be incredibly hard to defend. Often you are not being taken seriously when you ask for what should be a basic feature. It is not on the roadmap, developers can’t be spared to work on it, it doesn’t have priority, etc. Are reasons for not fixing a tool’s accessibility almost like clockwork. Other times, promises are made for fixes that never materialize. I would love to see this improve, and have had the pleasure of seeing it happen now and again. It is still a problem that keeps coming back though and as developers, me included, we should do better.

My sighted colleagues take a lot of tooling for granted. In a .NET team for example, it is rare to see a developer that isn’t using ReSharper to boost their productivity. Ironically, this extension for Visual Studio, itself quite accessible, uses a lot of keystrokes to do what it does. You would think that would make it an ideal tool for a blind developer, who only uses a keyboard to code. However, the output of this extension is more often than not inaccessible. I have been hounding Jetbrains for years to get them to fix this tool’s accessibility, which even at the time of this writing is abysmal. I have been impolitely dismissed, ignored and finally made promises to, so far unfulfilled. This unwillingness to fix what is obviously a problem that has been there for years makes me hesitant to commit on a .NET-based position. Even if the problems get miraculously solved, the track record of leaving it unsolved for so long would make me wonder when it’s going to break again.

In one of the first dev teams I worked with, Postman was used heavily to test API endpoints the back-end developers created. Postman has a number of glaring accessibility issues that make it hard to use with a screen reader. For a perfect example of unfulfilled promises, have a look at this github issue. Observe that the issue is still open after almost 1.5 years and promises are made but not being kept.

Accessibility is often an afterthought, something that is undeniably proven again and again. Slack, sadly, is a good example of this. At the end of 2016, this was the status of Slack accessibility. We are definitely seeing improvements in that space, something this article aptly demonstrates, but the amount of time all of this takes is incredibly high; months, at times years that people using a screen reader cannot adequately access resources their colleagues have access to. This kind of deficiency can and does cause people to lose their job because they just can’t keep up with the communications within the company they work at.

The tools mentioned above (Resharper, Slack, Postman etc.) are key players in their chosen fields. Not having access to these tools hamstrings you as a developer and forces you to spend cycles you should be spending on getting work done on finding workarounds and alternative tools instead. This is wasteful, tiring and shouldn’t be necessary, but it is and it is one of the core skills I’ve had to get very good at to keep up.

As time goes by, I will say that there seems to be a downwards trend of this being necessary, though. Efforts of Microsoft, Apple, Google and other big players are making more and more people aware of this almost constant battle for equal access to productivity. By no means are we out of the woods though, something that was quite clearly demonstrated by the Gutenberg WordPress debacle that is currently raging through the accessibility community.

Blind people are a niche market to software and web developers. Blind developers are a niche market within a niche market. Blind developers who keep at it, become productive and hold a full-time job are sadly even more rare. This can and should change, but until that happens the fight for accessible developer tooling is one you fight on your own. I hope it is a fight we won’t have to fight in the future, I will do my best to contribute to that goal.

Odds and end

I want to end this article on a positive note. The fact that I am still in this field, the fact I hold a full-time job as a developer brings me a lot of happiness even through all the seemingly constant obstacles. I’m happy I can contribute to a great team of colleagues that treat me as an equal and think with me when I run into something I am having trouble with.

I want to emphasize that even though the field of Computer Science is not free of obstacles, people can thrive and are thriving in CS-related jobs. The struggles described above are certainly true, but compared to other fields they are at least to a large degree manageable. I doubt that I will write an article any time soon about my career switch to a surgeon, a fighter pilot or a professional baseball player, but then technology might yet surprise me. For now though, I’m happy where I am and have a great team around me.

I am often asked for my opinion when it comes to the effect on the accessibility of the product we are working on. My opinions definitely aren’t always going to cause things to change, but I’m glad I am at least able to make people aware of the importance of accessibility and what will happen when it is being disregarded. I am, after all, a living breathing example of just what happens when a tool is not or no longer accessible. The WordPress article linked to above sends this message very clearly; a tool that has been very usable and accessible for years is now nose-diving. This is something that can happen to any tool a blind developer depends on, the Russian roulette of the business so to speak.

By writing articles like this, by giving talks, educating developers and by experimenting with new tools, new techniques and new methodologies I hope to stay ahead of the curve. By writing down my findings, I hope to teach others the tricks of the trade I found out by trial and error so the threshold to this field is lowered for screen reader users.

The main goals of this article align with many, if not all of those goals. I hope I have given you a glimpse into both the struggles as well as the positives of a blind programmer. I hope I have pointed out that even though doing this is possible, we can and should improve the experience immensely. I hope I have sparked the readers of this article to think, really think, about the consequences of inaccessible software and I hope I have shown off that even through all the obstacles, it is very possible to become good, even great in this field once you achieve escape velocity.

In light of the positive note I was just referring to, I want to end this article by mentioning two huge accessibility wins that are perfect examples of how we have done better, both of which I have been an honored contributor to. For learning how to code, a lot of the more interactive resources out there like Codeacademy are not very accessible. This has to do with various components that are used in these projects not being accessible. Fortunately, this is already being worked on. One of the resources that has been gaining a lot of traction over the last few years is FreeCodeCamp. This initiative used to have some rather severe accessibility issues which very recently have almost been completely fixed and overhauled, making the platform very viable for screen reader users who want to learn how to code.

This has a lot to do with the Monaco Editor which is a very accessible web-based code editor and is in fact the editor component Visual Studio Code uses. This editor, when it came out, was literally completely inaccessible. However, in a relatively short time this was not only fixed to a large degree, but now makes projects like FreeCodeCamp accessible by default because they use the same component. This is the way it should always be, this is what I am hoping to see more of as I keep at this. And with that, I think it’s high time I get back to programming.

Florian Beijers

About Florian Beijers

Florian Beijers is a Dutch web developer who, together with his guide dog Quay, attempts to make the most out of life. When he's not programming for a living or figuring out new web frameworks or playing with new tech, he's pushing the limits of accessible music, running around the woods with his dog or trying to learn a new spoken language. He can be reached most easily through his twitter at @zersiax.

8 comments on “Stories from the Trenches: What I’ve learned from Working as a Blind Developer for a Sighted Dev Team”

  • Many thanks for a very informative and inspiring article. I’m glad you are finding enough dev tools that are usable – it’s encouraging to know everybody’s hard work in the accessibility field is having an effect even in this difficult area. Let’s hope the stick-in-the-mud diehards take note and start improving their act, and slackers like WordPress Gutenberg are eventually shamed into doing the right thing!

    • Florian Beijers says:

      Thanks for that πŸ™‚ Yes, the work that has been done on various fronts when it comes to accessibility has been incredibly helpful so far, things are already better than say, 2-3 years ago. As you can see from the article we still have a long way to go, though.

  • Florian, thanks for sharing. It appears, although software development is a field in which blind people could excel in, that the workplace barriers have only shape shifted since I graduated with a degree in computer science in the 1970’s, where I used punch cards, printouts, and primitive display terminals. I worked as a software developer for about 35 years for some large companies, and it was always a race to keep up with changing technology. Workplace accessibility problem solving was like having a second job, leaving little time for life pleasures. Your commitment and willingness to write about it is encouraging and helps to shed light on some unknown real life employment struggles. Knowing your technology and networking with skilled professionals is the key to success.

    • Florian Beijers says:

      I’ll take your word for that, David πŸ™‚ The challenges I face certainly can lead to a stressful monday morning, I can say that much.
      I work diligently to keep the way forward clear of obstacles, but at times the universe throws me a banana when I expect a grape and the whole thing comes crashing down around my ears πŸ™‚ I’m just glad I can contribute by writing articles like this and by doing my job, though.

  • Thanks for this post. I read a post elsewhere about the Gutenberg debacle with WordPress, and am saddened that a solution could not be found. I am a long-time screen reader user, and I currently use VoiceOver on a MacBook Air. In addition, I got my first iPhone earlier this year and have been very impressed with screen reader access on that platform. This includes the ongoing work by Apple, as well as some 3rd-party developers. A dream of mine has been to become an accessibility professional of some sort, but to be honest my social life has more or less gotten in the way of a lot of things lately. But I’ll keep on trying, and hopefully one day I will get there. For now though, I’m super impressed with all the work that’s been done in this field.

    • Florian Beijers says:

      Definitely keep at it, Jake πŸ™‚ Apple certainly revolutionized screen reader access on the smartphone with their VoiceOver screen reader and Android is only now starting to catch up. On the mac you’ve seen my thoughts regarding the matter, but I think in our field you shouldn’t be picky about your tools. If OS X works for a purpose, use it; I use OS X a lot for music production but when I need to edit code I grab my Windows machine πŸ™‚

  • Thanks for the great article! I am primarily a Windows Magnifier and/or NVDA user, and I’ve seen what you’re talking about in action. I run Linux VMs using Magnifier, but without that magnification I would be in trouble (unless I’m running a distro like TalkingArch, or using Putty to SSH in). And I can barely even use a Mac. And don’t get me started on IDEs (lol).

    And I especially appreciate the tips on interviewing. I’ve always had a hard time trying to decide when and how to share that news, because as you said, I don’t want to over-emphasize my limited vision, but they need to know that information. I absolutely love that you bring a laptop and demonstrate coding with a screen reader. It shouldn’t be necessary, but sadly most people still don’t know what we can do.

    • Florian Beijers says:

      Careful about your way of thinking there πŸ™‚ They don’t NEED that information at all, they need to see you can cope with your disability and do the work they are hiring for, and they might want to know that you have a visual disability that doesn’t really get in your way much. Try to make it as much a “Oh, and I have red hair” kind of thing; a random attribute about yourself that you’ve learned to live with and can work around. I’m not saying you should hide it completely, that would be deceitful, but only bring it up when you must or when you’re explicitly asked since apart from that they really don’t need to know all that badly πŸ™‚ It’s a balancing act, like I state in the blog post.

Comments are closed.