Мы работаем во тьме: кодинг «глазами» незрячих программистов

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.


We work in the dark — we do what we can — we give what we have. Our doubt is our passion and our passion is our task. The rest is the madness of art.

Henry James, «The Middle Years»

Согласно статистическим данным ВОЗ, в той или иной степени нарушениями ближнего или дальнего зрения страдают около 2.2 миллиардов человек, из которых не менее 40 миллионов абсолютно слепы.

Среди них немало и наших с вами коллег–программистов, ежедневно доказывающих себе и всему миру, что незрячие люди способны вести полноценную жизнь и добиваться серьезных успехов даже в таких сложных отраслях, как создание программного обеспечения. Как эти люди пишут код и с какими трудностями сталкиваются? Об этом наш сегодняшний материал.

Кроме того мы расскажем несколько историй слепых программистов и их лайфхаков, позволяющим быть не менее эффективными, чем зрячие коллеги.

Клавиатура, наушники и ничего лишнего


Бытует мнение, что для полноценной работы незрячие программисты нуждаются в дорогостоящих гаджетах и программном обеспечении. На самом деле это не совсем так: многие из них успешно обходятся бесплатным ПО и стандартными устройствами ввода.


Тука Ояла в офисе Vincit, расположенном в Тампере

На фотографии выше представлено рабочее место Туки Оялы, занятого в компании Vincit, специализирующейся на разработке и сопровождении интеллектуальных ERP-систем. На столе финского программиста вы не увидите ровным счетом ничего необычного: клавиатура, ноутбук, USB-хаб — все то же самое, что используют его соседи по опен-спейсу. А вот мыши и монитора среди рабочих девайсов Оялы нет: поскольку молодой человек практически полностью утратил способность видеть, подобное оборудование ему попросту ни к чему. Для запуска служебных утилит он использует консольные команды, для навигации между окнами и вызова контекстного меню — стандартные комбинации клавиш и предварительно настроенные хоткеи, а следить за происходящим на рабочем столе ему помогает скринридер — экранный диктор, скрупулезно озвучивающий все действия программиста и зачитывающий вводимый код.

Ассортимент подобного софта достаточно широк, причем помимо дорогостоящих решений, вроде JAWS от Freedom Scientific, существуют и бесплатные пакеты, зачастую ни в чем не уступающие коммерческим аналогам. Сам Тука Ояла предпочитает пользоваться приложением Nonvisual Desktop Access — бесплатной программой, разрабатываемой незрячими программистами Майклом Карраном и Джеймсом Те.


Майкл Карран и Джеймс Те — создатели экранного диктора Nonvisual Desktop Access

«NVDA — лучший скринридер среди всех, с какими я когда-либо работал. Парадоксально, но будучи бесплатным данный продукт развивается значительно быстрее и отличается лучшей поддержкой, чем множество коммерческих аналогов, включая даже систему VoiceOver от Apple, которая крайне редко обновляется и использует весьма неудобную модель навигации». 

Среди преимуществ NVDA Ояла отмечает и нативную поддержку дисплея Брайля: как рассказывает программист, данный девайс помогает ему немного быстрее считывать код. Брайлевские дисплеи — это особый класс устройств вывода, отображающих текстовую информацию в виде шеститочечных символов тактильной азбуки Брайля.


Комбинированное устройство для работы за компьютером, объединяющее дисплей и клавиатуру Брайля

Большинство подобных дисплеев способно выводить от 40 до 80 символов одновременно, а многие современные модели оснащены встроенной клавиатурой, позволяющей набирать буквы, цифры и пунктуационные знаки путем нажатия 6 клавиш, каждая из которых соответствует одной из точек брайлевского кода.


В азбуке Брайля символы кодируются шестью точками

Для формирования тактильно-рельефной поверхности в брайлевских дисплеях применяются дорогостоящие пьезокристаллические элементы, что негативно сказывается на ценах подобных устройств. На момент написания данного материала за одну из самых бюджетных моделей, Orbit Reader, просят 65 тысяч рублей, тогда как за наиболее совершенное на сегодняшний день устройство, ALVA BC680, придется выложить уже 900 (!) тысяч рублей. По иронии судьбы девайсы, призванные обеспечивать доступность работы на ПК для незрячих и слабовидящих, оказываются недоступны подавляющему большинству тех, кто по-настоящему в них нуждается.


Цены на дисплеи Брайля поражают воображение

Впрочем, не стоит отчаиваться: к подобным девайсам следует относиться лишь как к полезной, но отнюдь необязательной, опции. Более того, многие незрячие программисты находят дисплеи и клавиатуры Брайля чрезвычайно неудобными. К таковым относится, например, Флориан Бэйджерс, — программист из Нидерландов, известный в сети под ником Zersiax.

Сорвиголова из соседнего офиса


В отличие от своего коллеги из Финляндии, Бэйджерс не видит с детства, однако при этом считает брайлевские девайсы чем-то вроде дорогой игрушки: побаловаться, конечно, можно но для реальной работы они решительно не годятся. Действительно, зачем нажимать 6 клавиш, чтобы набрать один символ, если можно обойтись одной или двумя кнопками? И зачем тратить время на ощупывание дисплея Брайля, если скринридер способен за это же время передать в десятки раз больше информации?


Одна из самых любимых фотографий Флориана Бэйджерса. По словам друзей, на ней он получился лучше всего

Со справедливостью первого утверждения не поспорить: овладеть слепым методом набора совсем не сложно, при этом его использование помогает радикально повысить производительность программиста. Но разве способен один лишь скринридер передавать в единицу времени достаточные для продуктивной работы объемы информации?

Давайте проведем небольшой эксперимент: напишем простой код на Python и посмотрим, как его будет озвучивать тот же NVDA. Пускай после запуска наш скрипт попросит пользователя ввести целое число, а затем определит, является ли оно положительным.

x = int(input('Введите целое число:\n'))
if x > 0:
    print('Икс больше нуля')
else:
    print('Икс меньше нуля')

По-хорошему сюда следовало бы добавить проверку типа введенных данных, но давайте представим, что мы имеем дело со сферическим в вакууме добросовестным юзером, который внимательно читает выводимые в консоли сообщения и делает ровно то, что его просят, пускай в природе подобных фантастических существ и не встречается.

Теперь сделайте следующее: включите секундомер на ПК или смартфоне, засеките время, за которое сможете прочитать этот код и запишите результат.

Скринридер проговорит данный блок кода примерно следующим образом:

икс равно int открывающая скобка ввод открывающая скобка одинарная кавычка введите целое число двоеточие обратная косая черта эн одинарная кавычка закрывающая скобка закрывающая скобка если икс больше нуль двоеточие пробел пробел пробел пробел печать открывающая скобка одинарная кавычка икс больше нуля одинарная кавычка закрывающая скобка иначе двоеточие пробел пробел пробел пробел печать открывающая скобка одинарная кавычка икс меньше нуля одинарная кавычка закрывающая скобка

Повторите манипуляцию с секундомером: прочтите данный абзац в привычном для себя темпе, засеките время и сравните с предыдущим результатом. Не особо впечатляет, не так ли? Можно подумать, что незрячие программисты работают в несколько раз медленнее, чем зрячие, однако это заблуждение: лишенные зрения разработчики вполне способны писать и читать код в том же темпе, что и их коллеги с безупречным зрением. Не верите? Тогда послушайте, как звучит скринридер Флориана Бэйджерса:

https://soundcloud.com/freecodecamp/zersiaxs-screen-reader

Даже если вы безупречно владеете английским языком, то вряд ли разобрали хотя бы одно слово. Однако для незрячих программистов воспринимать код, зачитываемый со скоростью 420–450 слов в минуту в порядке вещей (для сравнения, скорость обычной разговорной речи составляет 120–150 слов в минуту). А чтобы еще больше повысить свою продуктивность, можно прибегнуть к интеллектуальным функциям экранного диктора.

Подобные приложения позволяют существенно оптимизировать процесс зачитывания текста с дисплея. Давайте вернемся к нашему скрипту и посмотрим, как добиться того, чтобы скринридер тратил меньше времени на его прочтение, а сам код звучал более понятно для программиста. Первое, что приходит в голову — привязать последовательность из четырех пробелов к ключевому слову «отступ», что уже заметно сократит время озвучивания. Переменные и данные скринридер способен зачитывать разными интонациями (своеобразная аудиоподсветка синтаксиса), а поскольку наша программа ориентирована на русскоязычных пользователей, все становится еще проще, ведь можно сделать так, чтобы операторы и функции зачитывались по-английски («иф», вместо «если», «принт» вместо «печать» и т.д.), что поможет ориентироваться еще лучше. А чтобы не путаться в целочисленных и строковых данных, можно сделать так, чтобы цифры озвучивались по-разному в зависимости от контекста, например, в нашем случае «ноль» и «нуль» (аналог для английского языка — «nil» и «zero»). Благодаря таким ухищрениям и высокой скорости зачитывания незрячие программисты получают возможность работать также быстро, как и их зрячие коллеги.

Возможности, предоставляемые скринридерами, полностью устраивают и Пархама Дустара, незрячего бэкенд-разработчика Booking.com. 


Пархам Дустар, бэкенд-разработчик Booking.com

«Я не пользуюсь клавиатурой Брайля: набирать каждый символ, используя 6 клавиш вместо одной непродуктивно. Я не пользуюсь дисплеем Брайля: мой скринридер зачитывает код со скоростью 420 слов в минуту, что позволяет мне работать в разы быстрее».

Впрочем, освоение навыка «скорослушания» — отнюдь не самое сложное, с чем приходится сталкиваться незрячим кодерам. Как рассказывает Лукас Радаэлли, один из программистов, работающих над алгоритмом ранжирования поисковой системы Google, самое сложное в его работе было научиться держать в голове большие объемы информации.


Выступление Лукаса Радаэлли с докладом «Доступность и универсальный дизайн: разработка программного обеспечения для всех», Interaction South America, 2017 год.

«Главная проблема незрячего программиста заключается в отсутствии возможности постоянно подглядывать в значения переменных или входящих аргументов той или иной функции — все это приходится держать в голове. Поначалу я пользовался закладками, однако на то, чтобы каждый раз переходить к нужной строке, заслушивать ее и возвращаться назад уходила куча времени. Поэтому мне пришлось научиться запоминать все необходимое».

Кстати, в своей работе Лукас Радаэлли использует многофункциональный текстовый редактор Emacs, написанный Ричардом Столлманом, и тесно интегрированный с ним скринридер Emacspeak, разработанный Т.В. Раманом — незрячим программистом, занятым в Google Research и курирующим вопросы доступности продуктов корпорации для людей с нарушением зрительных функций.


Т.В. Раман и его верный друг и напарник — собака–поводырь Хаббелл

Возможности, предлагаемые связкой Emacs/Emacspeak всецело устраивают Лукаса, так что он, как и многие его коллеги, считает нецелесообразным использование брайлевской периферии. Учитывая, что разработчик научился ориентироваться в коде на слух ничуть не хуже, чем Мэттью Мердок в пространстве, эти девайсы практически не дали бы ему сколь-либо значимого выигрыша в скорости.

А вот украинский веб-разработчик Дмитрий Попов, автор проекта «Детектор WEB-доступности», и вовсе полагает, что работа с экранным диктором дает определенные преимущества по сравнению с традиционным написание кода.


Дмитрий попов выступает на конференции Web Standards Days в Киеве с докладом «Как незрячие люди видят ваш сайт», 2016 год 

«Работая вместе с другими программистами, я частенько замечал, что у меня процесс написания кода идет куда быстрее, чем у коллег. В немалой степени это происходит потому, что я многое держу в голове, и мне не нужно постоянно проверять данные. Кроме того, с таким приложением гораздо труднее допустить опечатку: программа четко озвучивает все вводимые символы и не дает перепутать кириллическую «с» с английской «си» или одинарную кавычку с апострофом».

Жизнь вне зоны доступа


Впрочем, не стоит полагать, что незрячие разработчики в принципе не сталкиваются с какими-либо проблемами при написании кода. Таковые существуют, их немало, но все они так или иначе связаны с одним простым словом — «доступность».

Проблемы с доступностью множества сервисов и приложений существенно осложняют жизнь пользователям с нарушениями зрительных функций. Причины данного явления банальны. С одной стороны, бизнес не желает нести дополнительные затраты на адаптацию ПО, полагая, что они попросту не окупятся. В то же время, отнюдь не каждая организация обязана внедрять подобный функционал: к сожалению, в законодательстве множества стран ответственность за несоблюдение норм доступности предусмотрена лишь для органов государственной власти, государственных же компаний и их партнеров, а также предприятий, занятых в общественно значимых отраслях (например, в сфере здравоохранения), тогда как на частный бизнес распространяются лишь необязательные для исполнения рекомендации. Отсутствие жесткого регулирования негативно сказывается и на работе незрячих программистов.

Как уже было сказано выше, при выборе ПО разработчики с нарушением зрительных функций исходят, в первую очередь, из того, насколько тот или иной инструмент адаптирован для взаимодействия со скринридерами. Но, к сожалению, далеко не все современные IDE и редакторы кода способны похвастаться должным уровнем доступности, вследствие чего программистам приходится отдавать предпочтение не самому мощному, эффективному или практичному решению, а самому доступному. И да, это — абсолютно разные понятия, зачастую непересекающиеся между собой.

Когда Пархам Дустар лишь начинал свой путь PHP-разработчика, ему пришлось отказаться от популярной IDE PHPStorm в пользу Zend Studio, основанной на PHP Development Tools от Eclipse Foundation именно по причине проблем с доступностью сред разработки компании JetBrains для слабовидящих и незрячих пользователей, что отмечают и многие другие программисты.

«Пускай IDE на базе Eclipse не идеальны, но с доступностью у них все на порядок лучше, чем, например, у сред разработки JetBrains. Так устроен современный рынок: в погоне за прибылью компании часто забывают о потребностях людей с ограниченными возможностями, ориентируясь лишь на запросы большинства», сетуетДустар.

К сожалению это утверждение применимо к подавляющему большинству компаний, независимо от их размера и годового оборота. Так, например, именно из-за проблем с доступностью Тука Ояла был вынужден сменить операционную систему, перейдя с Mac OS на Windows 10.


«Сложись обстоятельства иначе, я продолжил бы работать на Mac OS. Я все еще считаю, что с точки зрения юзабилити это — наиболее оптимальная операционная система из всех существующих, поскольку в ней четко соблюдается баланс между удобством и функциональностью. Преимущество же Windows заключается в максимальной доступности для незрячих и слабовидящих — здесь ей нет равных», говорит Ояла.

Однако и пользоваться именно тем, что наиболее удобно, получается далеко не всегда. Зачастую незрячим программистам приходится идти на компромиссы, отдавая предпочтение более трендовым инструментам, чтобы иметь возможность полноценно работать в команде, и это также отражается на их продуктивности.

«Я бы с радостью работал в Vim или Emacs, ведь для незрячего программиста такие редакторы достаточно удобны. Но чтобы лучше взаимодействовать с коллегами, я использую IDE на базе Eclipse и Visual Studio. Что поделать, если у современных разработчиков консольные редакторы вызывают священный ужас, а название Vim у них ассоциируется со средством для мытья посуды», смеется Флориан Бэйджерс.


«Кстати, забавный факт: несмотря на свои названия Visual Studio и VS Code весьма неплохо адаптированы под потребности «визуально» ограниченных людей, а вот у Microsoft Access с «доступностью» серьезные проблемы».

А вот и другой пример конфликта интересов: зрячие и незрячие программисты имеют совершенно разные представления о читаемости кода. Камнем преткновения здесь становятся отступы, наличие которых, с одной стороны, заметно упрощает визуальное восприятие исходников, но в то же время делает менее удобным использование скринридеров.

«Во время работы незрячие программисты не пользуются выравниванием кода. Вообще. Мы расставляем все отступы уже после написания программы, для тех, кто будет работать с ней визуально», рассказывает Лукас Радаэлли.


По этой причине работа с таким языком, как Python, в котором отступы формируют блоки кода, оказывается для незрячего программиста куда менее приятной, чем с тем же C++: постоянно выслушивать, как скринридер проговаривает глубину отступов чрезвычайно утомительно, к тому же, отнимает кучу времени.

Впрочем, даже если бы проблемы с доступностью были решены раз и навсегда, естественные ограничения никуда бы не исчезли. По вполне очевидным причинам незрячие программисты не могут полноценно работать с фронтендом: их деятельность может быть связана со всем, что происходит «под капотом» приложений, но практически никак не затрагивает визуальные интерфейсы. Разумеется, это не жесткое правило. Тука Ояла отмечает, что лично для него настоящим спасением стали CSS-фреймворки вроде Bootstrap:

«Благодаря системе сеток я способен самостоятельно набросать базовую версию пользовательского интерфейса, а значит, и написать полноценное приложение без посторонней помощи. Разумеется, для выпуска в продакшн его придется дорабатывать зрячему фронтэндеру, но факт остается фактом: до известной степени я могу участвовать и в разработке интерфейсов».

Но это — скорее частный случай. Как правило же, потерявшему зрение программисту так или иначе приходится переориентироваться на бэкэнд, где его продуктивность зависит лишь от личных навыков, а также от удобства и доступности инструментов разработки.

Надеемся, что этот материал помог вам лучше понять, как ощущает мир цифровых технологий человек, по тем или иным причинам утративший зрение, или вовсе никогда его не имевший. И возможно благодаря прочитанному вы станете уделять в своей работе хотя бы немного больше внимания вопросам доступности приложений для людей с ограниченными возможностями.



Облачные серверы от Маклауд быстрые и безопасные.

Зарегистрируйтесь по ссылке выше или кликнув на баннер и получите 10% скидку на первый месяц аренды сервера любой конфигурации!

Источник: https://habr.com/ru/company/macloud/blog/558520/


Интересные статьи

Интересные статьи

Маркетплейс – это сервис от 1С-Битрикс, который позволяет разработчикам делиться своими решениями с широкой аудиторией, состоящей из клиентов и других разработчиков.
Всем привет. Если вы когда-либо работали с универсальными списками в Битрикс24, то, наверное, в курсе, что страница детального просмотра элемента полностью идентична странице редак...
Доброго времени суток, друзья! Хочу поделиться опытом работы с аудио. Под «аудио» я подразумеваю HTMLAudioElement и Web Audio API. Что будем делать? Мы создадим нечто вроде плеера дл...
Многие, как и я, любят футбольные симуляторы и многие увлекаются программированием. Когда-то, в далёком 2004 году, наигравшись в ФИФУ я подумал, что было бы неплохо совместить два моих увлечения ...
Один из самых острых вопросов при разработке на Битрикс - это миграции базы данных. Какие же способы облегчить эту задачу есть на данный момент?