Learning to Fish: Problem-Solving and Other Basic Skills for Future Blind Coders

I am a retired Rehabilitation Counselor who is blind. I am neither a coder nor   a technology specialist, but someone who would like to shine a light on the need to teach blind coding students “mainstream survival skills” and rally everyone to meet that need.

I became interested in barriers faced by blind coding students while volunteer teaching at a school for the blind in New York. Then I interviewed blind college and graduate students who have taken coding classes and blind persons employed in the coding professions. The ideas expressed below come from what I learned.

In thinking about how barriers can be removed, I observed how the Girls Who Code program works. This program, started in 2012 in New York, encourages girls (traditionally discouraged from entering computer science) by providing them with appropriate training in a “safe” environment and career guidance – leading to a sense of empowerment. All around the country, coding camps have sprung up to provide large numbers of children and youth with exposure to coding. The hope is that more of them will enter the STEM (science, technology, engineering and mathematics) professions.

Blind students often do not do well in these programs, not from lack of trying on everyone’s part, but to inaccessible programming tools. That is why programs offered by the Perkins and other schools for the Blind, camps in North Carolina and other States, and boot camps like those provided by the National Federation of the Blind are so important. They provide blind children and youth with the most important thing of all - a chance to see what it is like to be successful.

Background

In the world of computer programming (coding), blind students tend to be most vulnerable to screens filled with information they are unable to see and that are not accessible to screenreaders like JAWS and Voiceover. They are also vulnerable to the inaccessibility of programming tools and training materials that enable coders to do their work. Quite often these students shy away from taking coding classes or if they are brave enough to try, have such difficulty, they either drop out of the class or get disillusioned about coding. Wouldn’t it be nice if we could prepare them to overcome or at least reduce barriers they face in mainstream coding classes?

Well, perhaps we can. The blind coding academy is an arrangement proposed to enable us to teach students how to do a number of things. We can teach students to work around some of the inaccessibility barriers; we can help them acquire introductory coding skills; and we can assist them to gain confidence which will enable them to persist the next time they run into barriers. In a blind coding academy, we can also help students to hone related social and career-related skills. This will increase their potential to succeed in mainstream coding classes including those they may take in college or other types of training programs. Finally, blind coding academies can help students develop employment-related skills.

Blind Coding Academies teach coding skills, but only to a point, concentrating instead on exposing students to barriers faced in the mainstream and how to work around those barriers. We know that students and working coders will encounter barriers we have not even thought about, but if they have learned concepts of problem solving, they will have a chance to overcome them. Thus, to borrow an old saying, having learned to fish instead of having been handed a fish, you will eat for a lifetime.

Quite often, students who are blind are ill-equipped to deal with accessibility issues, often because they don’t specifically understand what might be happening. Thus, if they learn what things look like when they work well, they will be in a better position to identify barriers they may be facing and how to deal with them. Adding accessibility barriers to the usual learning challenges presented by programming languages (for example, their logic, amount of concentration and memory needed, analytical skill requirements, and good old fashioned perseverance), it is no wonder many blind students struggle in mainstream coding classes.

What Are the Barriers?

Barriers generally center on (1) inaccessible programming editors and the much more powerful integrated development environments (IDEs) within which the code is written and modified; (2) accessibility and comprehension of often visually complex textbooks and other training materials; (3) obtaining information presented by instructors and professors in class; (4) “cultural” barriers caused by traditionally trained teachers who do not understand or sometimes welcome blind people; and (5) difficulty in performing at a level of speed sometimes required, especially in team activities.

Blind Coding Academies can provide participants with exposure to all of these problems and teach them some ways to deal with them. In addition, they can provide students with opportunities to “shadow” coders working in a variety of venues. Moreover, ‘graduates’ of Academies should be better equipped to participate in relevant internships while in college or training.

The good news is that even while programming languages are becoming more complicated and accessibility is sometimes harder to achieve, technology is becoming more accessible as teachers and other advocates are working diligently with software developers to improve access to screenreaders. 

Job Market

Almost everything these days requires software-driven computing power. The job market for coders is likely to improve as new technologies replace old ones to process information in everything from healthcare systems management to personal and home appliances.

Coders work in a variety of venues, most of which provide their workers with good support. Some coders work from home. Although the companies for which they work provide support, home-based coders must be more self-sufficient and their equipment must function optimally and continually for them to do their jobs. In reality, all blind students preparing for coding jobs must be well-versed in computer maintenance and know how their assistive technology works.

Some coders work in a “scrum” environment. These are arrangements where small teams of coders are tasked to develop pieces of a larger software program or platform. Coordination and quality assurance are critical for these arrangements to work, meaning each team member must do his/her share of the work in time with fellow team members. The most important responsibilities for blind coders are the need to communicate well with fellow team members, to know exactly what fellow team members are doing in real time, and for rapid productivity.

The Blind Coding Academy

The goal of the Blind Coding Academy is to teach students a set of skills that will enable them to function optimally in college or other coding programs, especially skills to overcome or reduce a variety of accessibility barriers. Secondarily, students learn how to write code at a basic level in one or more current programming languages as part of skills-building. This includes concept-development and honing the cognitive (learning, thinking, concentration) aspects of writing lines of code, understanding what has been written, dealing with error messages, and using tools built into the text editors and IDEs. Although students admitted to Academies must have already demonstrated good skills, work habits, and interest in coding, attendance at an Academy will enable instructors, counselors, students and their families to assess students’ aptitude and interest in this type of work.

Blind Coding Academies do not aim to produce work-ready students. Instead, they aspire to train students how to function in mainstream computer programming classes in school and coding academies like ‘Girls Who Code’, and in an increased variety of job situations. Since higher education is most often required for best employment potential in computer programming occupations, special attention should be placed on readying students to function within the college environment.

When possible, academies should be stand-alone programs. However, the concepts of barrier analysis and problem-solving can and should always be woven into existing coding classes. Students should be constantly challenged to do well when things are accessible so they will know success. As important, they will better understand barriers when they face them. Knowing how something is supposed to work helps identify what problems must be solved when something is inaccessible.

Basic elements of a blind coding academy include teaching elementary coding, first with accessible languages and then quickly moving to mainstream ones that possess accessible and inaccessible features; mastery of assistive technology; accessing training materials; doing projects; interacting with team members; and career exploration. When possible job-shadowing of successfully employed coders should be a part of these programs.

Problem-solving

Some of the key work-arounds used by successful blind coders when they encounter inaccessibilities include using Notepad++ to write code and pasting it into an otherwise inaccessible IDE; switching screenreading software (NVDA sometimes works when JAWS does not, for example); converting training materials into auditory and braille and other tactile formats; using human assistance (only when necessary); job-sharing and restructuring (where you do the tasks you are capable of doing and co-workers or fellow students do the other tasks); and when possible, working in more user-friendly environments. In all cases, students must commit themselves to hard work and occasional struggle, redoubling their efforts to solve difficult problems. In short, students must learn to persevere even when they want to quit!

The Right Stuff

If you have the desire to code, you must not shortchange yourself by lack of hard work. How might you develop your work ethic? Learn hard subjects. I’ve been told that learning mathematics is a good indicator that someone is ready to learn coding. Although mathematics is occasionally needed as part of programming, the important things are concentration and discipline. You will need these in coding. Most important, you will need perseverance. To borrow another old saying: “If first you don’t succeed, try, try again!”

Challenge yourself and you too will have the right stuff!