Програмування в темряві

💡 Усі статті, обговорення, новини про Python — в одному місці. Приєднуйтесь до Python спільноти!

Як я втратив зір, але не покинув програмування, а навпаки — поглибився у нього ще більше.

Привіт! Я бекенд-розробник на Python. Після втрати зору я не залишив ІТ-сферу, а навпаки — переосмислив свій підхід до роботи, адаптувався до нових умов і створив кілька власних проєктів. У цій статті хочу поділитися своїм шляхом: як я відновлював навички, знаходив роботу та що роблю зараз.

Раніше я працював у компанії Luxoft — стабільна робота, зрозумілі завдання, звичний ритм. Але одного дня життя кардинально змінилося: я почав стрімко втрачати зір. Цей період був складним у всіх сенсах — фізично, морально, професійно. Зрештою, довелося звільнитися, бо не міг більше працювати у звичному режимі. Здавалося, що на цьому моя кар’єра закінчиться. Але бажання програмувати виявилось сильнішим.

Повернення до коду

Почав з малого: знайомився з екранними читачами, переписував прості скрипти, поступово адаптувався до нового способу взаємодії з кодом. Знову вивчав бібліотеки, фреймворки, тренував навички без використання миші. Це зайняло чимало часу — але згодом я зміг повернутися до повноцінної розробки. Паралельно я проходив співбесіди, робив тестові завдання, надсилав десятки заявок.

Одного разу мені відповіли: словацька компанія Incust, що запускав новий стартап, запросив мене на випробувальний термін. Один місяць. Вони, мабуть, так само сумнівались, як і я — але результат виявився успішним.

Ми пропрацювали разом понад 2.5 роки. За цей час я реалізував повноцінні бекенд-рішення, API, автоматизацію, інтеграції з платіжними системами, телеграм-ботів тощо. У команді ніколи не було акценту на тому, що я незрячий — важливо було, що я вирішую задачі. І це, мабуть, найкращий підхід.

У роботі використовую Python, FastAPI, SQLAlchemy, PostgreSQL, Redis, ARQ, APScheduler, асинхронне програмування, aiogram.

Це так на перший погляд, насправді дуже багато з чим працював, парсінг, beautifullSoup, aiohttp, google api, та багато іншого, трохи навіть стинався з celery та clickhouse.

Pet-проєкти та навчання

Попри труднощі з працевлаштуванням, я не зупиняюсь. Програмування — це моє. Я створюю утиліти для власного користування, аддони до NVDA, GUI-програми на wxWidgets, якими користуюсь уже багато років. Це речі, які не побачиш на GitHub Trending — але вони щодня вирішують мої задачі.

Зараз мною вже створено 5 аддонів для NVDA, які допомагають незрячим користувачам — і я продовжую їх розвивати. Як і інші мої проєкти, вони доступні на моєму GitHub-профілі.

Також останнім часом поглиблено вивчаю архітектуру програмного забезпечення, зокрема Clean Architecture. Мені імпонує її структурованість, незалежність від фреймворків і гнучкість. Тепер саме за цими принципами будую свої проєкти.

Один із таких pet-проєктів, який уже вийшов у продакшн — це Radio Collection Service. Це вебсервіс, де можна зберігати, шукати й слухати інтернет-радіостанції. Про нього я писав у попередньому допису: dou.ua/forums/topic/54944/

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

👍ПодобаєтьсяСподобалось43
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Мене в цьому найбільш дивує саме Python.
При гарному зорі основа синтаксиса Python — відступи і відсутність явного завершення блоку — не проблема, хоча навіть при ідеальному зорі складно шукати кінець блоку на іншому екрані. В vim я додав для цього indentwise.
Але при поганому зорі або повній відсутности це стає величезним недоліком, якщо нема підтримки IDE саме для такого випадку (починаючи з озвучення неявних кінців блоку). Де є явні границі, чи як {}, чи як if then else end, чи якось інакше.
Не знаю, як ТС з цим справляється, але я б вважав за доцільне мати спеціальний плагін і функції з ним.

Розумію вас, але насправді python один з більш зручних мов програмування для незрячих саме своїми відступами.
Особливо якщо дотримуватись правил написання гарного чистого коду.
Якщо код дуже великий, з багатьма відступами уходить на інший екран — то слід задуматись над рефакторінгом цієї функції або класу.
Насправді ці правила стосуються не тільки python, це з рекомендацій чистого коду, читав ще коли бачив та програмував у Luxoft на C++, вони також рекомендують дотримуватись такого стандарту.
Можно почитати Роберт Мартин «Чистий код» або Мартина Фаулера «Рефакторінг».
Окрім того, можно користуватись IDE як PyCharm або VSCode, багато хто їми і користуються, особливо VSCode, я також пробував, але як на мене працюючи з ними зменьшується швидкість, так як вони дають деяку затримку з озвучкою NVDA.
Для себе вирішив користуватись notepad++, в мене є декілька аддонів для NVDA, плюс я написав декілька плагінів для самого notepad++, що допомогають у навігації по коду.
Так я чую який саме відступ на строці, якщо він змінився, без зміни він мені ні до чого, щоб не витрачати час, також є швидка навігація по функціям та класам, що достть пришвидшує мою навігацію по коду.
Якщо ще чогось не буде вистачати — завжди можу ще написати скріпт на python у якості плагіна notepad++, тому він мені і подобається

Розумію вас, але насправді python один з більш зручних мов програмування для незрячих саме своїми відступами.

При правильному форматуванні це справедливо для будь-якої мови (іноді навіть для асемблера;)), відступи будуть за рахунок саме форматування. Але явне закриття блоку дуже сприяє.
Я не сліпий, але одне око ≈50% у кращому випадку, і це починає впливати, і проблему бачу на собі.
А ще є проблеми типу «вставив блок коду, а воно невірно визначило необхідні відступи» (з PyCharm постійно). Побачити і переформатувати навіть зрячому іноді проблеми. Якщо ж вибрати спочатку чіткі {} для потрібного місця, вставити і одразу сказати відформатувати, то цієї проблеми вже нема.

Можно почитати Роберт Мартин «Чистий код»

Я вже неодноразово висловлювався, що ця інфоциганщина тільки паморочить мізки. Не хочу концентруватись на цьому в обговоренні зовсім іншої теми, але у дуже багатьох випадках ділення на порції, як рекомендує Боб, занадто штучне і дає тільки проблеми; і це тільки мала частина теї маячні, що він пише. Якщо орієнтуватись на щось подібне, то почитати з «Complete code» Макконнела і правил GRASP (замість тупого SOLID), це дає більш тверезий погляд.

Саме тут явна озвучка «закрили блок for по i» підкаже, мені здається, більше і зручніше.

Але припускаю, що для вашої специфіки коду тут незначна різниця. Це у мене просто невідворотньо іноді функції на 200-500 рядків, які розбивати просто нема сенсу, читовність тільки погіршиться...

але як на мене працюючи з ними зменьшується швидкість, так як вони дають деяку затримку з озвучкою NVDA.

Цю абревіатуру не знаю. NVDA screen reader? (погуглив)

Якщо ще чогось не буде вистачати — завжди можу ще написати скріпт на python у якості плагіна notepad++, тому він мені і подобається

Ну от мені здається, що явне завершення блоку навіть коментарем тут значно б допомогло.

Але, звісно, вам «видніше» (який тут синонім вибрати?)

іноді функції на 200-500 рядків, які розбивати просто нема сенсу, читовність тільки погіршиться..

Чому так — зручніш ж потім логіку бачити якщо не настільки громадне все (в сі ж нп постійно інлайнами чи макросами розбивають/скорочують код для читабельності в тому числі, чому в інших мовах то не робити засобами які є), чи я неправильно зрозумів у чому саме читабельність?

Саме тут явна озвучка «закрили блок for по i»
Може інколи воно і було би корисно, але в більшості зайва витрата часу на прослуховування цієї фрази. Я не люблю робити великі вложеності з купою коду, але навіть коли таке трапляється — по комбінації клавіш я можу одразу стрибнути на строку яка викривала саме цей блок коду по відступам та повернутись назад завдяки скріптам аддонам для скрінрідера, що поліпшують роботу з програмування у редакторах.
Тому не бачу в цьому проблему або необхідність.
Все ж таки специфіка програмування без зору тут впливає, коли треба прослухати рядок поки скрінрідер його прочитає замість того щоб зрозуміти його побачивши весь рядок єдиним поглядом, то щоб не бути повільнішими — треба відсіювати все зайве з озвучки, залишати тільки важливе. Саме тому і більшість знаків у речені не читаються, а лише при посимвольному перегляду.
Взагалі у користуванні без зору дуже багато спеціфіки, бо всі ті підказки що надають IDE про помилку десь або не закриту дужку, все це вони роблять виделенням кольором, або кольоровим підкресленням, що звісно зовсім ніяк не доступно для озвучення, тому і доводиться виробляти свої окремі підказки

Ви — великий молодець! Не уявляю, як подолали стільки перешкод до своєї мети. Вірю, що і наступні теж подолаєте!
Бажаю, щоб якнайшвидше ви з гарним роботодавцем знайшли один одного. У вас все буде добре!

Кстати. В ЕС по идее должно быть не слишком сложно найти работу: для инвалидов (а утрата зрения есть инвалидность) есть квоты и прям немало бонусов в случае приёма в штат. Если переехать территориально в ЕС (я так понимаю, что выезд не должен стать проблемой) — то шансы найти работу на месте отнюдь не 0-е.

Виїзд дійсно не перешкода, так як знят з війскового обліку.
Але не дуже можу уявити як виїхати та на що жити поки шукати роботу там, тут хочаб є свій дім від батьків, а там аренда житла, всі інші росходи, без вже діючої роботи не спроможній.
Це тільки якщо знайти роботу, та переїхати по релокації.

Можно и так. В общем-то, немало контор в Украине релоцируют сейчас — диверсификация рисков. Если начать с такой, но смотреть наперёд и изучить рынок в той стране, куда задаться целью переехать — то вполне может получиться. Ну или если есть финансовая подушка на полгода-год проживания там — тоже можно рассмотреть как вариант.
Ещё как вариант — если сейчас трудоустроен, можно спросить свою контору, могут ли помочь с релокацией. Попервой можно продолжать работать на Украину, платя 5% налога, затем через полгода перейти в штат в местный филиал (если имеется) или найти работу на местном рынке.

Та ні, вже рік як шукаю роботу, подушка що була після останього місця вже поступово закінчується, все ж таки сім’ю треба годувати. Але згоден з вами, якщо знайдеться такий роботодавець — звісно буду пробувати.

Погоджуюся з написаним. Я би ще додатково порадила Руслану з локальним фахівцем ( часто- HR administrator ) або юристом поговорити. В кожній країні є свої нюанси, краще їх знати.
Взагалі бажаю автору стійкості і не втрачати надію.

У Києві є музей «Третя після опівночі», в якому незрячі гіди проводять екскурсії в абсолютній темряві. Для мене це був корисний досвід розуміння, з якими перешкодами незрячі люди зіштовхуються у звичайному житті / побуті, але я навіть не задумувався над тим, що навіть без зору можна ефективно працювати в айті. Тож автору велика повага, я лише можу уявити, який важкий шлях подолано, щоб продовжувати займатись улюбленою справою.

Дякую, але насправдіне так важко відновити навики та пристосуватися, якщо є знання та головне бажання цим займатися. Саме важче — це саме знайти роботодавця, що погодиться спробувати співпрацювати. Я отримував багато гарних відповідей щодо тестових завдань поки роботодавці не дізнавалися про зір, після чого знаходять купу причин щоб позбутися і не експерементувати. Так що найбільша важка справа — це знайти незаангажованих роботодавців що не злякаються не зрозуміло чого і хочаб спробують на іспитальний термін.

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

Саме так, дякую. Насправді гарну html розмітку не так щоб важко робити, треба дотримуватись WCAG від W3C. Насправді я ще раніше коли бачив, не займався професійно розробкою сайтів, та з html мав справу лише у своїх маленьких проектах по типу домашньої сторінки, і хоч тоді я не розумівся в усьому цьому, але все одно завжди використовував різноманітні тегі для різних завдань. Для всього же є спеціальні теги, якими зручно робити розмітку, навіть не лише з точки зору доступності, а просто з точки зору наглядності та читабельності. Щоб цю верстку можно було підтримувати та доробляти. Коли розмітка з правильними тегами її легче читати та вдосконалювати. Саме тому ніколи не розумів як можно все робити сплошними div-ами, це ж не зручно навіть читати потім комусь окрім розробника. І це вже надасть напевно відсотків 80 або більше доступності. Тільки у зовсім складних випадках треба додавати спеціальні аттрібути по типу area-label та тому подібне. Можу сказати лише велику подяку, що дослухались до того користувача та оновили дізайн. Це дійсно багато вартує, бо мало хто дослухається та переробляє за ради незрячих користувачів.

Виражаю підтримку автору! Знаю, що можливо це особисте і те, в чому не хотілося б вам порпатися, але було б цікаво побачити детальнішу статтю про цей досвід з точки зору вас як людини.

Дякую, мушу спитати про який саме досвід треба більш детально написати? Як я відновлював навички, шукаю роботу, розробляю та пишу код, чи що на вашу думку треба більше розкрити?

Я маю на увазі з людської сторони. Візьму для прикладу себе, у мене теж з 14 років по здоровʼю є певні обмежені можливості. Звичайно зі сторони я маю вигляд здорового спортивного хлопця, але якщо не буду приймати певні препарати по 4 рази за день, то помру уже через тиждень. Не кажучи уже про обмеження по дієті і фізичній активності, накладені хворобою. Ось я наприклад щодня стикаюся з безліччю проблем, які здорові люди навіть не підозрюють що існують в природі.

Цікаво як ця перспектива виглядає з точки зору людини без зору. Я розумію звичайно, що можливо багато хочу, але також з інтересом би прочитав про сам перебіг хвороби — як дізналися, які були емоції і усвідомлення, що робили, знаючи що зір буде незворотньо погіршуватися, з якими проблемами стикаєтесь у повсякденному житті і які знайшли способи їх зменшити тощо.

Зрозумів про що ви. Так мабудь про це можно доволі багато написати, просто гадаю що у it спільноті ця тема мабудь не по тематиці python.
Якщо коротко — то після осознання був в діпресії, відчай, як надалі жити. Напевно десь рік перебував у такому стані.
Але потім взяв себе в руки, що все одно змінити це вже не можна, то треба підлаштовуватись та робити все щоб повернутись більш менш до нормального життя, просто з деякими обмеженнями.
Є багато чого не доступного зараз, або я просто ще не до всього підлаштувався, кожного дня треба намагатися опанувати щось нове, про це можно насправді багато писати, але не думаю що багатьом це буде цікаво.

У вас в статті посилання на гітхаб та Radio Collection Service побиті, поправте. А так то ви великий молодець, тут зрячому важко всі ці примудрості вивчати...

Дуже дякую що зауважили. Ці wysiwyg-редактори практично не доступні до використання скрінрідерами, то треба якось підвлаштовуватись. Вже випрпавив

колись я покинув програмування через хворобу деменцію. але програміст з деменцією по уму — це ніби звичайна цивільна людина

Дякую за відвертість.
Після 25 років айті, думаю стати кравцем.
Бо бачу в цьому предметну живу людську область.
мені сподобався Ваш проект з радіо, мені спало на думку що Ви стали нестандартно мислити. співчуваю

Дякую. Насправді я раніше не особливо приділяв увазі онлайн радіо станцій, але у незрячих досить популярно, особливо в інших країнах.
Коли створив аддон для NVDA radioCenter — воно виявилося досить популярним, і я отримав масу листів з проханнями додаткового функціоналу та перекладів іншими мовами.
Так, завдяки таким запитам, аддон отримав переклади на:
чеська, польська, іспанська, французька, румунська, турецька і навіть арабська.
Саме тому вирішив створити онлайн сервіс, тому що не весь функціонал можна, або зручно реалізувати в аддоні. Частина винес у даний сервіс.
І, звичайно, головне його призначення, хоч є сайт для самостійного використання, — інтеграція в даний аддон.
Але все одно ніби не намагався приділяти більше часу, багато часу йде на пошуки роботи, оскільки соціальний проект сім’ю не прогодує.

Тут не всі зрячі програмісти можуть опановувати нові підходи, фреймворки тощо, а Ви в таких складних умовах розвиваєтесь. Це викликає повагу і захоплення

Дякую. І сподіваюсь що це ще не кінець розвитку. Ще є багато ідей проектів

чудова історія, дуже тішуся за вас! хай стане натхненням для інших

Підписатись на коментарі