Работа в сфере информационных технологий привлекает многих. Высокие заработки по сравнению с другими отраслями экономики, возможность удаленной работы, перспективы релокации, уважение в коллективе и доступ к профессиональному сообществу — все это манит желающих. Те, кто пересматривают свой карьерный путь, и те, кто только начинают свой путь, обращают внимание на ИТ-сферу и выбирают обучение на различных курсах и соответствующих специальностях в высших учебных заведениях.
В данной статье я хотел бы представить вам оптимальные пути вступления в профессию разработчика и быстрого карьерного роста. Мне пришлось перенести множество трудностей и преодолеть немало препятствий в процессе обучения. Я изучил огромное количество материалов как из отечественных, так и из зарубежных источников, а также пообщался с коллегами и друзьями, которые достигли выдающихся результатов в этой сфере. Я не буду рекомендовать конкретные курсы, так как считаю, что эффективные ресурсы легко находятся, руководствуясь их описанием.
Человек без фундаментального образования в области компьютерных наук вначале часто чувствует себя потерянным. Он сталкивается с множеством непонятных терминов, и ему приходится выбирать свою специализацию, а затем — язык программирования, и в конечном итоге — образовательную программу и курсы, а также разрабатывать собственный план развития. Однако это лишь начало пути, так как после освоения основ необходимо углубиться в технологии, присущие определенному языку программирования. Этот этап еще более сложен, поскольку даже опытные программисты постоянно расширяют свои знания, а фокусируются на конкретных областях в зависимости от текущих проектов.
На первом этапе необходимо определиться с выбором направления: бэкенд или фронтенд. Если вы хотите заниматься ИТ, но предпочитаете работу, связанную с коммуникациями, а не написанием кода, то можно рассмотреть такие специальности, как тестировщик, системный или бизнес-аналитик, продакт-менеджер. Эти позиции всегда востребованы и хорошо оплачиваются.
Бэкенд-разработчики отвечают за серверную часть приложений и должны иметь глубокое понимание микросервисной архитектуры, баз данных и DevOps-процессов. Самыми популярными языками программирования в этой сфере являются Java, Kotlin, Python, Go и C. В отличие от некоторых других направлений, здесь требуется глубокое понимание алгоритмов и основ компьютерных наук, а также умение создавать и поддерживать сложные логические структуры.
Сфера фронтенда в настоящее время разделяется на три большие группы: веб-разработку (для браузеров), Android и iOS. Каждое из этих направлений имеет свои собственные языки и технологии: JavaScript для веба, Kotlin для Android и Swift или Objective-C для iOS. Работая в фронтенде, необходимо обладать навыками верстки (CSS) и пониманием клиентской части приложения. Также требуется более активное взаимодействие с дизайнерами и бизнес-аналитиками, так как вам придется представлять свою работу и демонстрировать ее пользователю.
Лично для меня выбор пал на бэкенд, так как у меня уже был опыт написания скриптов и анализа данных. Я пробовал изучать C# и Python, но в конечном итоге выбрал Java, так как на тот момент считал, что русскоязычный Интернет предоставляет наиболее качественные и доступные курсы по этому языку. Мое мнение было укреплено после анализа вакансий на популярных сайтах.
Я имею высшее образование в области экономики и многолетний опыт работы в инвестиционной сфере на различных должностях. От трейдера, принимающего клиентские заявки по телефону, до руководителя отдела по управлению портфелем. В ходе своей карьеры я также пытался разрабатывать торговых роботов и создавать алгоритмические системы на различных инструментах. Мое внимание было приковано к дельта-нейтральной торговле опционами, которая требовала глубоких знаний в области математики и анализа больших данных.
На этом этапе я начал искать различные методы изучения программирования. Начал с чтения статей и книг в Интернете. Однако столкнулся с проблемой: знания не были систематизированы, и их усвоение было неэффективным. Оказалось, что для изучения языков программирования необходима практика. Неважно, сколько книг вы прочитали или видеоуроков посмотрели — знания остаются поверхностными, если их не применять на практике. Как и в спорте, где спортсмены годами оттачивают свои навыки, многократно выполняя одни и те же упражнения. Необходимо найти обучающий метод, который позволит выполнять множество практических задач, чтобы программирование стало частью вашего мастерства — что-то, что вы делаете интуитивно, без долгих размышлений.
Поиск курсов, которые предоставляют обучение через практику, — важный шаг. Знания должны систематизироваться и представляться от простого к сложному. Желательно, чтобы информация была представлена в игровой форме и объяснялась доступным языком. Фундаментальные работы типа Шилдта и Кнута могут оказаться слишком сложными на начальных этапах.
После освоения основ языка, так называемого ’core’, важным этапом будет погружение в экосистему этого языка. На пути программиста стоит барьер, не такой уж сложный, как освоение самого языка, но не менее важный — это усвоение дополнительных технологий, применяемых в повседневной разработке. Следует помнить, что эти технологии могут различаться от проекта к проекту, поэтому на данном этапе важно освоить лишь основы.
В качестве Java-разработчика я решил изучать следующие технологии:
- Spring — фреймворк для создания современных веб-приложений, известный своей множественной интеграцией с другими технологиями, необходимыми в разработке, такими как различные системы управления базами данных, кэширование и очереди. Spring также предоставляет реализацию паттернов для микросервисной архитектуры в рамках проекта Spring Cloud.
- Базы данных — важная часть серверных приложений, отвечающая за хранение данных. Для начала стоит ознакомиться с реляционными базами данных, так как они наиболее распространены и работают с языком запросов SQL. Они хранят данные в таблицах, позволяют устанавливать связи между сущностями и использовать транзакции.
- Gradle, Maven — фреймворки для автоматизации сборки проектов и управления зависимостями.
- Авторизация и аутентификация — неотъемлемые составляющие каждого приложения, обеспечивающие безопасное использование данных пользователей. Понимание различных методов авторизации и их реализация с помощью Spring Security будет весьма полезным.
- GIT — система управления версиями, необходимая для коллективной разработки. Хотя в повседневной практике используется не так много команд, знание GIT важно для разрешения конфликтов и поддержания порядка в кодовой базе.
- IDE — знание интегрированной среды разработки (IDE) существенно ускоряет и облегчает процесс написания кода. Рекомендуется использовать IntelliJ IDEA, так как она предоставляет множество полезных функций, поддерживает множество языков программирования и является стандартом в индустрии. Доступная бесплатная Community-версия позволит выполнять большинство повседневных задач.
- Фронтенд-технологии — хотя в прошлом была популярна специализация фуллстек-разработчика, сегодня с ростом сложности технологий бэкенд и фронтенд разработка часто разделяется. Однако знание основ JavaScript, CSS, HTML и клиентской части приложений все равно полезно. В случае необходимости вы сможете разработать простую админку для вашего бэкенд-сервиса.
С плотным обучением вы сможете овладеть языком программирования и соответствующими технологиями за
Я сам являюсь ментором одного из таких проектов и могу подтвердить, что это отличный способ подготовиться к первой работе. По завершении стажировки большинство участников успешно находит работу.
У вас уже будет достаточно знаний, чтобы найти свою первую работу в сфере разработки. Однако, чтобы компании заметили вас, важно правильно составить резюме, создать профиль на LinkedIn и наладить контакты с рекрутерами.
В Интернете можно найти множество шаблонов и рекомендаций по составлению резюме. Однако важно помнить:
- Адаптируйте резюме к требованиям локального рынка труда, на котором вы ищете работу. Формат и содержание резюме могут различаться в Европе, Америке и России.
- Включайте в резюме только информацию, связанную с вашим опытом в области информационных технологий. Опыт в других областях не имеет значения.
- Опишите свои достижения, даже если они пока небольшие. Стандартные формулировки типа «писал код» или «взаимодействовал с аналитиками и тестировщиками» не будут выделять вас среди других соискателей. Постарайтесь описать, какие полезные результаты вы достигли, желательно в количественных показателях.
- Укажите используемые вами технологии в разделе «hard skills» и опишите их роль в каждом проекте.
- Подавайте резюме сразу на позицию midlevel-разработчика. Ваши знания и навыки вполне позволят вам успешно начать работу. Вакансий для junior-разработчиков обычно гораздо меньше, и конкуренция на этих позициях выше, при этом работа схожа.
После создания резюме разработайте профиль на LinkedIn и заполните его подробно, основываясь на информации из вашего резюме. Старайтесь связаться с как можно большим количеством рекрутеров. Даже если вы не планируете просить их помощи в поиске работы, рекрутеры могут предложить вам проходить собеседования. Эффективность действий в данной области зависит от закона больших чисел: чем больше попыток вы предпримете, тем выше вероятность найти подходящую работу. На моем опыте не было ни одного случая, когда бы человеку не удалось найти работу после тщательной подготовки и активной поисковой деятельности. Даже люди без высшего образования и с прошлым опытом в совершенно разных областях, таких как медицина, музыка или кулинария, смогли перейти в ИТ и стать программистами. У вас тоже все получится.