Niewidomy programista. Czy to możliwe?

Według statystyk portalu Stack Overflow na świecie ponad 40 mln osób interesuje się programowaniem, a profesjonalnych koderów jest około 17 mln. Wśród nich znajdziemy również niewidomych programistów. Tak, to nie pomyłka. Również osoby, które nie widzą lub mają bardzo słaby wzrok, zajmują się kodowaniem, a do tego odnoszą w tym wiele sukcesów. To po raz kolejny pokazuje, jak wiele można zdziałać dzięki determinacji. Bo w kodowaniu liczy się przede wszystkim wiedza, doświadczenie i analityczne myślenie. Ze wszystkim innym można sobie doskonale poradzić, nawet z brakiem wzroku. Przykładów jest wiele.


Kilka lat temu było głośno o Portorykańczyku Manilo Alverazie, który był niewidomy, a jednocześnie programował gry wideo. Inny przykład to brazylijski programista Lucas Radaelli, który chociaż nie widzi, pracuje dla Google i zajmuje się modyfikacjami w algorytmie rankingu pozycjonowania lub Brytyjczyk Ian Sharpe, który mimo tego, że jest niewidomy, stworzył aplikację The Talking TV Guide (przewodnik telewizyjny w wersji dźwiękowej), wykorzystując do tego syntezator mowy IVONA, a także jest autorem wielu innych programów. To dowody, że niewidomy programista wcale nie musi być gorszy od pełnosprawnych koderów. Wystarczy, że taka osoba przygotuje własną metodę pracy, a przy kodowaniu będzie używała technologii wspomagających.
 

Słuchanie kodu


W wypowiedziach różnych niewidomych programistów zwraca uwagę fakt, że większość z nich do pracy z kodem używa syntezatorów mowy, natomiast dużo rzadziej wykorzystują monitory brajlowskie. Jako powód rezygnacji z tych ostatnich, najczęściej podawana jest wysoka cena takich urządzeń. Rzeczywiście, monitory brajlowskie nie należą do tanich. Przyzwoity model kosztuje nawet dużo powyżej 15 tys. zł. W tej sytuacji nie będzie przesadą stwierdzenie, że programiści, którzy nie widzą, skupiają się w pracy na słuchaniu kodu. Ten proces dobrze opisał wspomniany wyżej Lucas Radaelli z Google, który podkreśla przy okazji, że programowanie niewidomego programisty nie różni się aż tak znacząco od pracy każdego innego kodera. Wykorzystywane są tylko inne środki i metody. Lucas opowiada o metodzie słuchowej programowania. Pracownik Google zwraca uwagę, że największy kłopot i największa trudność w takiej pracy to konieczność zapamiętywania bardzo wielu informacji. W przypadku niewidomego programisty przydaje się więc bardzo dobra pamięć. Tutaj strategie pracy z kodem są różne. Jedni programiści wolą przemieszczać się linijka po linijce, słuchając każdej z nich, inni rezygnują z całej linijki na rzecz nawigowania słowo po słowie, a zdarzają się także koderzy, którym łatwiej jest wysłuchiwać zawartości kodu litera po literze. To kwestia przyzwyczajenia, możliwości pamięciowych, nawyków itp.
 

Kolejnym wyzwaniem dla niewidomego programisty jest modyfikowanie kodu. Odszukanie określonej nazwy na przykład zmiennej nie jest wcale łatwe i błyskawiczne. Do tego również przydaje się dobra pamięć. Potem ponowne sprawdzenie danej funkcji wymaga ustawienia w odpowiednim miejscu znacznika, który umożliwi powracanie do wybranego fragmentu kodu. Te czynności trzeba powtarzać z kolejnymi zmiennymi itd. Lucas z Google zauważa również, że niewidomi koderzy nie wykorzystują wcięć bloków w czasie pracy z kodem, wprowadzają je dopiero na samym końcu programowania. Takie postępowanie zdecydowanie ułatwia wszelkie działania, gdy nie można wykorzystać zmysłu wzroku. Jednak praca niewidomego programisty nie byłaby możliwa bez specjalnych technologii.
 

Narzędzia niewidomego programisty


O syntezatorach mowy już wspomnieliśmy. To jedne z najczęściej wykorzystywanych narzędzi niewidomych programistów. Najchętniej koderzy używają zaawansowanego edytora tekstu Emacs, instalując do niego nakładkę Emacspeak, która jest interfejsem syntezatora mowy, pozwalającego niewidomym pracować w Unix. Syntezator ten działa właściwie od razu po zainstalowaniu. Z oprogramowania tego rodzaju warto wymienić jeszcze polski syntezator IVONA (w pakiecie również z darmowym screenreaderem NVDA, o którym napiszemy dokładniej w dalszej części artykułu) i Speech2Go (nie tylko odczytuje tekst z dokumentów i aplikacji, ale także rozpoznaje obrazy, które zawierają tekst i potrafi go odczytać).
 

Do bardzo istotnych narzędzi niewidomych programistów należą także czytniki ekranowe (screenreadery), czyli oprogramowanie, które potrafi nie tylko rozpoznawać informacje, pojawiające się na monitorach, ale również interpretuje dane, a potem przekazuje je w postaci głosowej. Programiści, którzy nie widzą, najczęściej nie korzystają z wbudowanych w systemy operacyjne screenreaderów, jak Narrator (Windows) lub VoiceOver (iOS), ale stawiają przeważnie na bardziej zaawansowane narzędzia zarówno komercyjne, jak i bezpłatne. Wśród tych ostatnich bardzo dużą popularnością cieszy się NVDA (NonVisual Desktop Access), napisany w języku Python w pierwszej wersji w 2006 roku. Ten czytnik działa pod systemem Windows, obsługuje najpopularniejsze aplikacje i przeglądarki internetowe, posiada wbudowany syntezator mowy (kilkadziesiąt najpopularniejszych języków), można go uruchamiać z pamięci USB lub zewnętrznego dysku. Inny popularny czytnik ekranowy to JAWS, który jednak jest płatny (900 dolarów w wersji Home i 1100 dolarów w opcji Professional). W 2012 roku ten screenreader uznany został za najpopularniejsze oprogramowanie tego typu w Stanach Zjednoczonych. Jego pierwsza wersja pojawiła się już w 1995 roku. JAWS działa także pod Windows, oprogramowanie można dostosowywać do indywidualnych potrzeb za pomocą wewnętrznego języka skryptowego JAWS, optymalizując screenreader pod różne aplikacje. Nowe wersje czytnika pojawiają się właściwie co roku, zyskując za każdym razem nowe funkcje.
 

Brak wzroku nie musi być wcale ograniczeniem dla programisty. Dowodzi tego wielu koderów, którzy na co dzień pracują w firmach z branży IT. Pracodawcy coraz częściej nie boją się ich zatrudniać, ponieważ zdają sobie sprawę, że takie osoby mogą z powodzeniem wykonywać zupełnie normalną pracę związaną z kodowaniem. Wystarczy zapewnić im przynajmniej podstawowe narzędzia wspomagające, a te przecież są coraz łatwiej dostępne i coraz bardziej zaawansowane.