Код на слух: как незрячий программист пишет и отлаживает программы.
Код на слух: интервью Константина Петухова
- Представьтесь, пожалуйста, и расскажите немного о себе.
- Меня зовут Петухов Константин Александрович. Мне 34 года. Родился и всю жизнь проживаю в городе Санкт-Петербург. Являюсь незрячим с рождения. Учился в специализированной школе К.К. Грота для слепых и слабовидящих. После школы окончил СПбГУАП (Санкт-Петербургский университет аэрокосмического приборостроения), факультет вычислительных машин и программирования по специальности «Математическое обеспечение и администрирование информационных систем».
Выбор профессии был сложным, но из нескольких вариантов я выбрал программирование по нескольким причинам:
1. математический склад ума;
2. программирование – деятельность, которую выполняют на ПК, то есть меньше профессиональных ограничений в плане работы с бумажными носителями или разъездного характера работы;
3. уже тогда были примеры успешных незрячих программистов;
4. программирование – достаточно широкая сфера с абсолютно разными предметными областями, бизнес-задачами, командами – «программировать можно что угодно», считал я.
Как бы там ни было, университет я окончил с красным дипломом в 2015 году и с тех пор реализовался в профессии на различных должностях.
- Каким был ваш опыт работы до «Креативного дела»? С какими основными барьерами вы сталкивались? Изменилось ли что-то в вашей работе сейчас?
- До работы в «Креативное дело» я работал в четырех организациях. Сначала это была работа в роли младшего научного сотрудника в научно-ориентированной организации АСМ, затем работал инженером, а впоследствии инженером-программистом в организации СПК (Судпромкомплект), затем программистом в организации НТЦ Русич. Параллельно выполнял задачи проектирования и программирования информационной системы в НПО Прибор.
По большей части моя работа заключалась в анализе данных с помощью математических пакетов и написании программ на языке C++ для взаимодействия ПК с оборудованием, программы по обработке данных. Как ни парадоксально, моя работа во многом заключалась в написании пользовательского интерфейса. Это было связано с тем, что во всех трех организациях я был программистом в единственном числе, а любое ПО обязано иметь пользовательский интерфейс.
В результате, помимо общих сложностей, я сталкивался с двумя специфическими вызовами, которые определили потолок в моих карьерных возможностях как C++ (Qt) разработчика:
1. Проектирование и отладка пользовательского интерфейса. Дело в том, что проектировал интерфейс в основном в голове, предоставляя текстовое описание для одобрения, программировал кодом без использования дизайнера. Это был рабочий подход, когда ты работаешь в единственном числе: задачу получил, сделал, получил замечания, исправил, сдал. Но все больше компаний собирают команды, и в команде этот подход не работает. Там используют визуальные «построители» интерфейса, делают макеты, обсуждают макеты, пишут ПО с макетов. И в таком формате эффективно работать вслепую затруднительно.
2. Вторая проблема – это тренд на универсальность сотрудников. Роль Qt-программиста трансформировалась из просто программиста, который пишет и отлаживает код, в полноценного инженера, который должен помогать собирать стенд, работать на стенде, отлаживать ПО на реальном железе, внедрять его. Это невозможно и по техническим, и по юридическим причинам для незрячих людей. Поэтому необходимо было поменять карьерный вектор.
«Креативное дело» предоставило мне такую возможность, наняв меня на работу IT-специалистом. На текущем месте работы оба этих барьера убраны, так как в мои задачи не входит ни написание интерфейсов, ни работа с оборудованием. Сейчас я в основном бэкенд-разработчик на Node.js.
Теперь я не единственный разработчик, а часть большой команды увлеченных IT-специалистов, что снимает имевшиеся ранее сложности, но добавляет новые точки роста.
- Как для вас устроен процесс работы над типичной задачей: от получения до сдачи?
- В «Креативном деле» задачи мне ставятся так же, как и всем: в команде есть общие созвоны, где обсуждается текущее состояние задач, обсуждаются новые задачи, поднимаются на обсуждение и решаются проблемы. По результатам задачи заносятся в трекер задач, где указан срок и исполнитель. У меня задачи по разработке. Далее я выполняю задачу к поставленному сроку. Затем задача переходит на этап тестирования. По результатам тестирования задача либо приходит на доработку, либо принимается. Кроме созвонов есть чат, в котором можно решить текущие вопросы при их возникновении, также можно писать руководителям, и они никогда не отказывают в ответах на вопросы.
- Расскажите, как вы организовали своё рабочее место. Какие технологии, программы или инструменты стали для вас основными помощниками?
- Сейчас я работаю удаленно, мое рабочее место дома. У меня обычный стол, обычный ноутбук с установленной на него программой экранного доступа NVDA. Программа экранного доступа – программное обеспечение, озвучивающее информацию на экране компьютера. У меня есть наушники, которые я использую, чтобы не мешать окружающим речью от программ экранного доступа. Работаю, используя только клавиатуру, мышь не использую. Необходимым в моей работе является владение десятипальцевым методом печати. Этот метод называют также «слепой» печатью, так как суть в том, что он позволяет не смотреть на клавиатуру.
Кроме NVDA, каких-либо других дополнительных программ для незрячих я не использую. Все остальные инструменты общие: VS Code для разработки ПО, Windows Terminal для конфигурации и администрирования, git для размещения ПО на удаленном хранилище, текстовые и табличные редакторы (Word, Excel), но использую другие подходы по необходимости.
- Бывают ли в работе задачи, которые требуют нестандартного подхода из-за отсутствия зрения? Как вы находите решение?
- На каждой работе появляются свои задачи, требующие нестандартных решений, немного расскажу о наиболее часто встречающихся отличиях:
1. Программы экранного доступа работают не со всеми веб-ресурсами и приложениями. Это нужно программировать отдельно. К сожалению, многие разработчики не оптимизируют интерфейсы для работы со скринридерами. Поэтому со многими приложениями работа затруднена. Решение: либо искать изначально доступные приложения (как VS Code для кодирования), либо использовать обходные пути. Например, взаимодействовать с приложением не через интерфейс, а через командную строку.
2. Другая проблема – визуальный контент. Дело в том, что программы экранного доступа озвучивают текстовую информацию. Но они не могут озвучивать чертежи, фотографии, блок-схемы и другой изначально визуальный контент. Здесь либо запрашивать у коллег текстовое описание (если это возможно), либо изначально предлагать взаимодействие и инструменты, которые будут всем удобны (например, PlantUML для диаграмм), либо прибегать к помощи распознавателей изображений (искусственный интеллект).
3. Третья сложность – работа на общих созвонах, где демонстрируется экран. Для NVDA это статичная картинка, которая не озвучивается. Здесь варианты сводятся к эффективной коммуникации с коллегами: запрашивать материал заранее (если уместно), просить ссылки, тексты, презентации, чтобы самому на своем ПК их запустить; задавать вопросы по содержанию того, что на экранах.
4. И последняя типичная проблема – скорость работы за счет того, что не используется мышь. Решение: мой синтезатор речи (преобразователь текста в речь) работает на большой скорости, и я привык к этой скорости. + во многих приложениях есть горячие клавиши или клавиши быстрого доступа. Умение пользоваться этими клавишами делает работу во многих случаях быстрее, чем при использовании мыши.
- Что бы вы посоветовали незрячим людям, которые хотят начать карьеру в IT? С чего лучше начать и на что обратить внимание в первую очередь?
- Незрячим людям, которые хотят начать карьеру в IT, я бы дал следующие советы:
1. Знать и изучить свой инструмент. Программу экранного доступа (NVDA, Jaws, Orca) и т.д. Уметь его настроить под себя, знать все сочетания клавиш, режимов, плагинов и т.д., выработать свои оптимальные для себя методы работы. Глубокое знание скринридера (программы экранного доступа) – первая ступень к тому, чтобы быть конкурентоспособным.
2. Учить английский язык и привыкать к нему. Помимо того, что много технической документации выходит в первую очередь на английском языке (что справедливо для всех разработчиков), незрячим людям надо следить за изменениями в ассистивных технологиях. Эта информация также во многом появляется на английском языке.
3. Никогда не отказываться от знаний. Стремиться к разностороннему развитию. При изучении программных продуктов выработать привычку осваивать горячие клавиши.
4. По крайней мере в начале пути не отказываться от любой работы, которую вы можете выполнить и которую вам предлагают.
5. Воспитывать в себе коммуникабельность. Уметь убедительно рассказывать о своих возможностях, своей полезности, обосновывать свои потребности, уметь убедительно предлагать решения, которые не очевидны для зрячих коллег.