Все о видеоиграх, передовых технологиях и киберспорте

Курсы основных криптовалют: Bitcoin: Ethereum: Litecoin: Dogecoin:

Сложный второй шаг в IT-индустрию

Сложный второй шаг в IT-индустрию

Спрос рождает предложение, и сейчас по запросу "курсы программирования" поисковики выдают десятки различных вариантов - онлайн и оффлайн, платные и бесплатные, с большим количеством практических заданий, практическими стажировками. Высший пилотаж - гарантия трудоустройства по окончанию курсов (хотя, по мнению автора, ни один современный курс обучения не может дать подобных гарантий даже теоретически). Дополняет всё это большое количество доступной учебной литературы на русском языке. Стоимость наиболее популярных изданий по языкам программирования Java, С# и Python находится в диапазоне от 1000 до 3000 р. - вполне доступная сумма даже для людей со скромным заработком.

Однако, несмотря на большое количество источников информации, учебных курсов и тематических форумов, по-прежнему для многих начинающих IT-специалистов актуальна проблема поиска первого места работы. Ситуация близка к парадоксальной - количество и доступность информации, даже при наличии высокой мотивации обучающегося, не конвертируется в набор знаний, необходимых для прохождения собеседования на работу. Даже на должность младшего, junior-специалиста.

Для некоторых людей (особенно, пытающихся сменить сферу деятельности) подобный итог многомесячного обучения вполне может стать источником серьезных психологических проблем и разочарования, в себе и IT-сфере в целом. В психологии данное явление называется эффектом Даннинга-Крюгера - специалисты с небольшим опытом работы, прошедшие курсы обучения и уверенные в собственных силах, сталкиваются с тем, что собственные навыки ими были переоценены, а имеющийся багаж знаний недостаточен для качественного движения вперед - второго шага в IT-индустрию.

Сложный второй шаг в IT-индустрию

Наиболее распространенные факторы, негативно влияющие на шансы получения первой работы начинающим специалистом:

  • Огромное количество навыков, требующихся даже от начинающих разработчиков, тестировщиков и администраторов. Не просто большое, а именно огромное. Сравнение с врачами, наверное, будет некорректным, но помимо знания языка все более-менее крупные компании в обязательном порядке требуют знания (и умения применять на практике) основных алгоритмов и структур данных; ключевых паттернов объектно-ориентированного программирования; работы с системой контроля версий - Git, Mercurial и т.д.; основ работы ключевых компонентов вычислительной техники - процессора, оперативной памяти, дисковых массивов; работы с базами данных на уровне SQL-запросов.
  • Сложность в поддержании уже реализованных проектов. Особенность практически всех современных учебных курсов такова, что специалистов учат разрабатывать код "с нуля" для решения какой-либо задачи. И лишь малый процент заданий направлен на развитие действительно необходимых для первой работы навыков - умения "читать код", документацию к нему, вносить правки в уже реализованную логику, не нарушая целостность всех прочих частей проекта. Вероятность того, что специалисту без опыта работы доверят разработку полностью новой системы - минимальна. А для поддержки имеющейся инфраструктуры (legasy) требуется погружение в существующий код, который может содержать десятки и сотни тысяч строк кода в нескольких отдельных файлах.
  • Необходимость в знании английского языка. Причем не просто уверенного знания, а как минимум - чтения технической литературы без каких-либо переводчиков (или с минимальным их использованием). Данное требование, кажущееся излишеством, очень быстро становится проблемой для многих начинающих специалистов - 95% справочных материалов и описаний современных языков программирования составлены на английском языке. А использование различных переводчиков не только отнимает время, но может привести к значительно большим проблемам, если перевод будет искажать смысл, изначально заложенный в текст.
  • Незнание предметной области. Колоссальная проблема, с которой сталкиваются не только начинающие специалисты, но и работники с многолетним опытом в IT-отрасли. Банки, страховые компании, промышленные предприятия, энергетика - любая организация платит программистам зарплату не за количество строчек кода, а за решение какой-либо бизнес-задачи. В лучшем случае, до программиста задача проходит через менеджеров проектов, аналитиков, руководителей групп разработки, и попадает к конечному исполнителю в виде четких и строго формализованных требований, которые содержат в себе всю логику процесса. После чего только остаётся реализовать её в виде кода. А в худшем случае... В худшем случае программист будет вынужден самостоятельно изучать такие темы, как расчёт режимов резания титановых сплавов, потери электроэнергии в ЛЭП при повышенной температуре воздуха или расчёты текущих процентных ставок по кредитам при изменении ключевой ставки ЦБ РФ.
  • Хорошей практикой и стимулом для решения многих проблем служат специализированные курсы и стажировки, которые проводят организации: Школа 21 (Сбербанк), Школа анализа данных (Yandex), Школа разработки ВТБ и многие другие. С одной стороны, подобные стажировки подразумевают наличие определенного набора знаний (который проверяется на вступительных испытаниях), и никакой гарантии поступления при наличии одного лишь желания нет. С другой стороны - организации стремятся на подобных стажировках уделять максимальное внимание подготовке специалистов "под себя", что дает высокие шансы на получение навыков, действительно востребованных на рынке труда. И даже не смотря на то, что большинство подобных стажировок рассчитано на выпускников ВУЗ-ов и молодых специалистов, практически во всех случаях возможность предоставляется и специалистам с опытом работы. Безусловно, ключевым фактором в последнем случае становится возможность человека посещать занятия в течение нескольких месяцев, фактически - с отрывом от основного места работы. Но это именно та цена, которую иногда необходимо заплатить за то, чтобы пройти тот самый сложный, второй шаг в IT-индустрию.