Вход новичка в IT за 10 шагов. Как научиться?
IT – это целый мир со своими правилами. Если посмотреть с положительной стороны, то мир очень перспективный: работы больше чем свободных рук, не надо навязывать покупателю свои услуги, за 1-2 года можно стать специалистом с достойной зарплатой, бесплатных и платных курсов на просторах сети просто тонны.
Но есть и море отрицательных сторон. Для начала — не просто так конкуренция меньше, чем, например среди менеджеров и экономистов. Несмотря на заверения различных платных школ (которым выгодно продать курс и выпустить максимальное количество слушателей) далеко не всякий человек сможет стать специалистом, связано это с тем, что многие желающие отсеиваются либо на стадии обучения (в случае если обучаются основательно и серьёзно), либо на стадии первых собеседований (в случае конвейерного прослушивания платных курсов).
Эта статья не является истиной в последней инстанции, как никак — не существует единого абсолютного рецепта плова, каждый повар готовит его по своему, в меру своих навыков и доступных продуктов. Сам автор, по своему первому образованию является гуманитарием, но после 30 лет открыл для себя вторую профессию и теперь, спустя 4 года бакалавриата и 3 лет работы в бэкенде, поделится своим рецептом.
Вопрос поступления в ВУЗ нужно оставить в стороне, так как это метод входа в IT, который требует времени и денег. Не у каждого желающего есть 4 года и время на сессии даже в заочном формате. К тому же программы высшего учебного заведения будет не достаточно для становления младшим специалистом (junior-разработчиком).
Итак, вы тот самый новичок, который желает приобщиться к коду. Предполагается, что у вас есть компьютер, интернет и хотя бы 2 часа свободного времени в день. Что делать?
Шаг 0 — предустановки. Забудьте о платных курсах. Коэффициент полезности большинства из них по соотношению временных и денежных затрат к знаниям для новичка неприемлем. Ну не изучается Java за три месяца (исключение, если вы уже очень опытный разработчик, который пришел с другого языка). Не сделают из вас курсы оплачиваемого специалиста фронтендера за 2 месяца. И «гарантированное трудоустройство» это уловка.
Шаг 1 — начало пути. Купить или каким-либо иным образом найти книгу по фундаментальному языку программирования, написанную «для чайников». Профессионалы от упоминания такой литературы плюются, но на то они и профессионалы. Хорошим вариантом будет книга Гукина Д. «С для чайников». В этом случае, в отличие от скучной академической литературы, простым и понятным языком вам будут объяснены самые основы. В обязательном порядке примеры из книги вам необходимо проверять и писать самим. Для этого хватит даже простого онлайн компилятора OnlineGDB (можно загуглить).
Прочитать и освоить такой материал реально за 1-2 месяца, что даст вам базовое понимание языка, навыки написания простого кода и опыт в исправлении ошибок.
И, ни при каких условиях, не начинайте учиться по книгам с языками Basic, Pascal, Fortran, Delphi. Это устарело!
Шаг 2 — первый выбор. Осознать, что профессия программист — это очень общее определение. Врачей например сотни видов, от уролога до нейрохирурга. Среди программистов тоже есть кодеры, аналитики, программные инженеры, тестировщики, разработчики прикладного ПО, разработчики программ для микроконтроллеров и ещё множество специальностей, включая такие, у которых пока нет русского названия.
Поэтому необходимо посмотреть несколько видео или прочитать несколько статей о том, какие есть в отрасли специальности, а также и о том, какие инструменты и языки (стек разработки) там используются.
Кроме этого следует зайти на портал по поиску работы и посмотреть, какие программисты требуются в вашем городе или области. Бессмысленно учить Java, надеясь, что попадёте в банковский хлебный сектор, так как в вашем городе может не быть таких вакансий, да и в банк новичку не пробиться.
По результатам вам необходимо определить свой первый язык программирования, которому вы будете учиться и, что важно, на котором вы будете учиться.
В качестве рекомендаций, новичку точно подойдут языки Python, Javascript, Go (Golang), Ruby. Чуть посложнее, но возможны — Java, C#.
Шаг 3 — поиск. Теперь пора перейти к более серьёзным источникам информации, нежели пособия для новичков. Почти у каждого языка программирования, есть книга, которую рекомендуют для изучения, нередко она происходит от истоков языка. Например, если вы спросите про Си, вам порекомендуют книгу от Кернигана и Ричи, если Пайтон, то Лутца.
Необходимо каким либо образом достать эту книгу и начать обучение. Но, далеко не все могут хорошо учиться по книгам. Тут на помощь приходят онлайн курсы, акцентируем внимание — бесплатные.
Условно, для русскоговорящих есть три с половиной ресурса с хорошими курсами.
Во-первых портал Coursera, который хоть и закрыл возможность платной сертификации, но оставил курсы открытыми без оплаты. К тому же всё ещё работают описанные в интернете методы по легальному получению платных курсов портала бесплатно.
Во-вторых портал Edx. Большинство курсов также бесплатны и имеют русские субтитры.
В-третьих портал Openedu. Курсов намного меньше, но большинство бесплатны и полностью на русском языке, так как проект русскоязычный.
И ещё существует портал Stepik, тут стоит быть аккуратнее, так как здесь курс может создать почти любой человек, поэтому качество сильно варьируется.
Изучением языка, его библиотек, а также различных алгоритмов программирования вам предстоит заниматься ближайшие полгода.
Шаг 4 — необязательное чтение. Существует ещё один прекрасный труд, под названием «Digital design and computer architecture» в русском переводе от 2016 года. Эта книга полностью бесплатна и распространяется в свободном доступе. В ней читателю преподносятся важные моменты функционирования компьютеров, а также информатики и архитектуры. Причём подача материала очень живая и качественная. Разумеется не всем это понадобится. Но, при возможности, вдумчивое изучение данного материала крайне рекомендуется, даже если вы готовитесь быть фронтендером на Javascript.
Шаг 5 — базовое портфолио. Казалось бы, какое портфолио может быть у новичка? Потребуется создать аккаунт на Github (или Gitea если на момент прочтения Githab будет заблокирован). На этот ресурс необходимо выкладывать свои программы. Даже самые простые. Напишите, допустим, (у вас уже должно быть достаточно навыка и знаний) простенькую копию flappy bird. Пусть без звука, пусть в 16 цветов, но это рабочая программа. Так и укажите — «проект для студентов, можете позаимствовать мой код, чтобы сдать на первом курсе преподавателю курсовую». За следующие месяцы внесите в проект пару улучшений и изменений.
Для чего это нужно? Для собеседования. Специалисту, разумеется будет абсолютно безразлична ваша игрушка, но, его удивит то, что у вас есть собственный профиль на гитхабе и вы умеете пользоваться системой контроля версий. Также будет просмотрен ваш код, на предмет того, хорошо ли он оформлен (понятные переменные, стиль форматирования, комментарии) и то, что проект кем-то (те же студенты, которые искали проект для курсовой) скачивался и просматривался.
На собеседовании среди junior-программистов кандидаты, у которых на гитхабе есть хоть что-то рабочее с адекватно оформленным кодом, имеют преимущество.
Шаг 6 — стек технологий. К сожалению, а может быть и к счастью, так как это слегка подрезает конкуренцию, на одном языке и алгоритмах далеко не уйти. Есть ещё и фреймворки, системы учёта багов, системы контроля версий и.т.д.
Следующий ваш курс с вышеуказанных источников или следующая книга должны быть ориентированы уже на полноценную разработку. Например «Full-stack разработка на React» или «Web-приложение на Ruby on rails в нуля» или «Разрабатываем и тестируем приложение на Qt».
Задача — в полном объёме ознакомиться с технологиями, которые необходимы для реализации проекта. Пусть даже по итогу вы будете знать их не очень хорошо, но на собеседовании предпочтение отдают кандидату, который работал с технологиями, которые используются в компании. Для примера, если фирма ведёт разработку на Angular, то кандидат на позицию junior-разработчика, который хоть и не знает это фреймворк досконально, но что-то в нем делал, будет иметь преимущество перед парнем, который обещает, что быстро изучит Angular в процессе.
Шаг 7 — поиски стажировки. С момента, когда вы уже готовы что-то показать потенциальному работодателю, стоит начинать поиск стажировки. Основных методов три. Первый — поиск объявлений на сайтах по поиску вакансий, но из-за высокой конкуренции это не очень продуктивно. Второй вариант — просмотреть в интернете, какие фирмы в вашем городе или регионе ищут стажеров и прислать им резюме. Третий вариант — посещение IT-мероприятий навроде «Ночи карьеры в IT».
Вы встретите много отказов, это нормально, конкуренция в среде начинающих высокая, к тому же конвейер платных интернет курсов наполнил эту нишу абсолютно неопытными людьми с сертификатами специалистов.
Шаг 8 — подготовка к собеседованиям. Советуем проглядеть книгу Лакмана Макдуэлла «Карьера программиста». Это не учебник по программированию, но скорее справочник по популярным задачам и вопросам, с которыми вы скорее всего столкнётесь на собеседовании. Разумеется — теория не заменит практику, но лучше, хотя бы теоретически, знать о том, что вас ожидает.
Шаг 9 — свой уголок в сети. Сделайте собственный несложный сайт на дешёвом хостинге. Если вы специализируетесь на каком то web-стеке, то именно на нем сайт и стоит построить. Если ваша специализация не связана с этим, то можно и в конструкторе.
Сайт наполните собственными статьями и заметками, полезными ссылками по теме, собственными мини проектами. Опять же — кандидат у которого есть собственный уголок в интернете, заполненный чем-то осмысленным и оформленный так, чтобы при просмотре не «вытекали глаза» имеет преимущество.
Шаг 10 — финал. К этому шагу у вас за спиной будет от 1 до 2 лет учёбы, живой аккаунт на гитхабе, собственные простые проекты, свой небольшой сайт, возможно стажировка или сертификаты с Coursera и Openedu.
Пора собрать все это в охапку и создать себе резюме на Linkedin и Headhunter. Там укажите основные языки и фреймворки которыми владеете, сертификаты и уровень опыта в создании собственных проектов (пет-проектов).
С этого момента можно уже не искать стажировки, вы способны претендовать на позицию Junior-разработчика. Как только вы получите своё первое рабочее место — вы можете считать что ваш путь входа в IT завершён.
Насколько все вышеуказанное реально? Автор, вспоминая своё обучение в вузе может утверждать, что студенты, которые параллельно общей программе обучались по открытым интернет курсам и пособиям, находили работу уже на втором курсе. Верстальщиками, кодерами php, фронтенд junior-разработчиками на javascript, конфигураторами 1С и даже программистами микроконтроллеров на заводах.
Junior-разработчик — это уже младший специалист. И хотя путь входа в IT здесь заканчивается, сам путь на просторах IT здесь берёт лишь начало, но это уже совсем другая история.