Всем доброго времени суток! Хочу поделиться своим опытом из разряда «Войти в IT». Тем более, что он происходил в полностью невизуальном режиме. О незрячих людях в нашем обществе знают мало, а о незрячих программистах еще меньше. И эта статья предлагает проследить за тем, как и откуда они появляются, хоть бы и на моем примере.

Статья не несет в себе никакой практической пользы. Разве что кто-то сумеет получить с ее помощью небольшой мотивационный заряд и попрокрастинировать.

Начало


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

Школа была окончена. Я даже сдавал ЕГЭ по информатике, настолько меня тогда увлек этот предмет. К тому же до последнего было непонятно, в какой ВУЗ поступать. В необходимости высшего образования ни у меня, ни у моих родителей сомнений не возникало. А вот какое направление выбрать было непонятно.

С одной стороны у меня всегда была тяга к математике и естественным наукам. Но как там себя может проявить человек без зрения? Еще можно было продолжить развитие в сторону ИТ. Но по итогу был выбран более компромиссный и универсальный менеджмент. Тем более, что в одном из ВУЗов по этой специальности существовало дистанционное обучение. Что убирало необходимость переезжать в крупный город вот прямо сейчас. Так в итоге и получилось. Но через годик обучения вопрос будущего трудоустройства встал более отчетливо.

Я с трудом представлял себя в роли менеджера. Что я буду делать? Смогу ли себя реализовать? Вообще для незрячего человека выбор профессии — нетривиальное занятие. Многие идут в массажисты и смежную медицину. Кто-то может заниматься переводами и прочей работой с текстом. Вообще много где можно себя попробовать. Но всегда существует немаленький риск столкнуться с плохой доступностью чего-то важного.

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

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

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

Обучение


По моему глубокому убеждению главная проблема новичка — это то, что он вообще не представляет, чем по факту является современное программирование. В копилке у меня был школьный курс PascalABC.net, и пара сотен решенных задачек из учебника. Но настоящие программы ведь пишутся на чем-то другом? А на чем? В уме всплывали ранее слышанные: C++, java, C#. Чем они отличаются и для чего используется было непонятно. Я начал с C++. Откопал откуда-то учебник, где в качестве введения в полушутливом гиковском тоне автор рассуждает о плюсах и минусах феномена виртуальной машины java, чисткой мусора и unsafe режиме C#, IDE, компиляторе и библиотеках, которые нам потребуются для работы.

Пробежав первые пару глав стало понятно, что этот учебник написан не для меня и понять его сейчас мне не под силу. Требовался ментор. И он нашелся.

Какой-то энтузиаст в почтовой рассылке для незрячих анонсировал открытие курсов по программированию специально для такой аудитории и предложил выбрать, по какой технологии они хотели бы его пройти. Я без сомнений голосовал за C++. Что такое php и веб-разработка было неизвестно, а игроделание казалось несерьезным занятием. Но в итоге победил php. Вероятно, потому что самодельная интернет-голосовалка никак не была защищена от повторного ее прохождения.

Так вектор моего развития поневоле сместился в сторону веба. Сам курс продлился чуть более месяца. На протяжении нескольких нерегулярных занятий мы успели лишь немного познакомиться с основами html. На последнем даже написали пару строк на php. Но энтузиазм организатора-филантропа быстро иссякал, занятия проводились все реже. И в конце концов прекратились вовсе. Но направление было задано, и дальше я мог идти по нему самостоятельно. Нерешенным однако оставался вопрос. А что, собственно, должен знать программист?

В интернете можно найти решение любой несложной задачи. Но целостной картины от прочтения множества узких статей не складывалось. И тут на моем пути встретились видеокурсы.
Я читал много мнений по их поводу. Чаще попадались негативные. Что это абсолютно бесполезная трата времени и денег. Что они заманивают к себе сказочными обещаниями, ничего по факту не дают кроме уверенности выпускника в том, что он теперь гуру разработки. Курсы, безусловно, бывают разные. Но конкретно в тот момент мне попался очень хороший материал, с помощью которого я за 2 месяца разобрался с базовыми структурами php, обработкой форм, авторизацией, сессиями, cookies, работой с бд, ооп и mvc. И главное сделал это комплексно. Каждый элемент дополнял общую картину серверной разработки. По окончании этого этапа я уже мог сделать свой сайт с нестандартной логикой и чувствовал себя настоящим специалистом. Начинающим, но с твердым пониманием того, куда нужно двигаться дальше.

Первые задачи


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

Лучшим способом сделать это был фриланс. Я зарегистрировался на нескольких биржах и стал следить за заказами. И тут открылась интересная вещь: почти все они были либо про фронтенд, либо про php. До тех пор я втайне жалел, что занялся этим направлением. Скриптовый язык мне не особо нравился. В нем не было строгости pascal, он не компилировался, да и приложения для ПК на нем не напишешь. А именно такой, по моему тогдашнему мнению, и должна быть разработка. Но рынок фриланса и удаленных вакансий подправили мою позицию. И вскоре я действительно получил свой первый заказ.

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

Достаточно сказать, что задачу на один два дня я делал 2 недели. В основном из-за того, что с непривычки было очень трудно разобраться, как именно работает crm. И где можно посмотреть схему ее базы данных. Но в итоге все требования были выполнены и заказчик остался очень доволен. Поскольку, как я понял позднее, прочие разработчики за такие crm браться не хотели вообще.

Фреймворк


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

Для начала был изучен code ignitor. Он был доработанной копией того mvc фреймворка, который мы самостоятельно делали на курсах. Он был прост, как пробка, но уже позволял делать реальные сайты. Впрочем с их качеством я познакомился при первом же заказе на доработку какого-то сервиса. Эти 700 строк кода действия контроллера я вряд ли скоро забуду. Безусловно, написать плохой код можно на чем угодно, но CI как будто это только провоцировал. Недаром он по большей части ушел в прошлое.

Дальше передо мной, как перед каждым порядочным путником, открылись 3 дороги: yii, laravel и symfony. После недолгих прикидок я выбрал последнюю. По чисто субъективным причинам, разумеется:
  1. Мне очень понравилась его структура папок и конфигурация через аннотации.
  2. В отзывах в интернете о нем читалось уважение. Он представлялся мне мощным и очень сложным инструментом. Иногда избыточным в своем могуществе. Но овладев которым можно всегда с легким прищуром глядеть вниз на игры в песочнице мира php.

Я приступил к изучению. А лучший способ овладеть новой платформой — это сделать на ней что-нибудь интересное. Еще в школе я написал для младшего брата программу для изучения счета. Генератор случайных чисел и четырех основных арифметических действий. Ребенок решает заданное число примеров, а в конце подсчитывается количество ошибок и выставляется оценка. Очень полезная штука на определенной стадии обучения. И сейчас ее можно было реализовать на новом технологическом уровне.

Время на это ушло немало. Я делал и переделывал. А параллельно симфони переделывало мой мозг, потому что я так просто не хотел отказываться от идеи засунуть контейнер в сущности. Я разобрался во многих его компонентах. Обновился с 3 до 4 версии и изучил git. Где-то через полгода проверил реальностью розовую мечту о запуске моего супер приложения в свет. Немного погоревал от нулевых результатов и понял, что пора переходить на следующий уровень — поиск настоящей работы.

Продолжение следует.