Перейти к содержимому

Как получить опыт в программировании java

  • автор:

Гайд для «джуна». Что нужно знать начинающему разработчику Java, чтобы получить работу

Рассказываем, как выучить язык программирования Java и получить первый опыт, чтобы претендовать на позицию Junior-разработчика.

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

Роман Тищенко
Cтарший Java-разработчик IT_One

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

В дальнейшем у меня были разные проекты на Java: один длился два с половиной года, некоторые другие намного меньше. Оказалось, что на качество твоей работы влияет множество факторов: и твои собственные hard и soft skills, и влияние окружающих людей, с которыми ты работаешь в команде. Рассмотрим эти факторы подробнее.

Почему Java?

В старших классах, готовясь к олимпиаде по программированию Университета Иннополис, я наткнулся на образовательную площадку JavaRush, и она мне очень понравилась. Правда, это не избавило меня от необходимости знакомиться с другими языками вроде Pascal — но это был мощный триггер для углубленного изучения именно Java.

Наверное, не ошибусь, если порекомендую Java как универсальный язык программирования, удобный для изучения и популярный у работодателей. В доказательство приведу данные совсем свежего исследования, проведенного аналитиками платформы All Cups от VK, Фондом «Сколково» и IT_One в рамках чемпионата IT_One Cup. Java. По результатам опроса более чем 1,5 тысяч разработчиков — Java был назван наиболее востребованным языком программирования (так отметили 33% респондентов). В топ-3 также вошли Python (21%) и С++ (16%). 39% опрошенных уверены, что Java всегда будет востребован, а каждый четвертый разработчик отметил, что этот язык развивается активнее остальных.

Код

Долго говорить о коде мы не будем: либо вы любите Java и хотите узнать о нем больше, либо зачем вы здесь? Остановимся на том, как лучше изучать основы программирования и практиковаться. Чаще всего начинающие программисты используют для этих целей интернет-ресурсы: обучающие вроде JavaRush или профессиональные вроде Хабра, где часто публикуют материалы, полезные как раз для новичков.

Но и традиционное обучение по книгам не менее эффективно. Для понимания фундаментальных основ языка (Java Core) можно взять, например, пособия серии Head First — «Паттерны проектирования», «Изучаем Java» и другие. В них материал подается очень доходчиво, приводятся живые примеры и ставятся практические задачи для закрепления темы.

После азов стоит переходить уже к более частным вещам — например, прочитать книгу «Spring в действии» Крейга Уоллса, новое издание которой вышло в 2022 году. Правда, монография посвящена Spring 3, а актуальная версия фреймворка в Java — Spring 5. Поэтому дополнительно вам нужно будет ознакомиться с официальной документацией Spring, где подробно описана его функциональность, приведены гайды для Spring-проектов на русском и на английском языках, а также кейсы.

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

Базы данных

Умение использовать базы данных для программиста почти так же важно, как и грамотный кодинг. На первом этапе вы просто подключаете базу данных и действуете по шаблону. Однако стоит сразу иметь в виду, что баз данных и их реализаций очень много: колоночные, реляционные, нереляционные и т. д. В одних проектах лучше применять одни, в других — другие. Для выбора БД и СУБД можно руководствоваться их основными характеристиками, выраженными в акрониме ACID (Atomicity, Consistency, Isolation, Durability). Мы смотрим, какие критерии атомарности, соласованности, изолированности, стойкости нам нужны, — и в зависимости от этого подбираем наиболее подходящую базу.

Что касается наиболее популярных СУБД — на моей практике в большинстве проектов встречались либо PostgreSQL, либо mongoDB. Скорее всего, когда вы придете к своему первому работодателю, то тоже столкнетесь с одной из них. Подготовьтесь к этому заранее.

Бренчирование и контроль версий

Когда ты «сам себе разработчик», у тебя одна ветка кода, ты заливаешь ее в master, и не испытываешь никаких проблем. Но когда ты приходишь в команду, то сталкиваешься с десятками веток, тысячами коммитов. Они нужны для того, чтобы разработчики не мешали друг другу и могли правильно позиционировать свой код. Чтобы такая структура не выглядела для вас как хаос, с самого начала лучше узнать у лида или старшего наставника, какая у команды стратегия бренчирования (стратегия построения веток): GitFlow, GitHub Flow, GitLab Flow, Trunk-based Development или что-то еще. Облегчает работу с версиями кода специальный программный инструмент — система контроля версий (Version Control System, VCS). В данный момент в этом сегменте ПО вне конкуренции Git, и вы уже сейчас можете смело начинать его изучать.

В большой корпоративной разработке крайне важно, какую платформу (хостинг) контроля версий использует компания. Среди разработчиков наиболее популярен GitHub, где можно найти огромное количество источников данных. Но в рамках корпоративного проекта, скорее всего, вы будете пользоваться Bitbucket или GitLab. Bitbucket напминает GitHub по функциональности, но имеет и свои преимущества: например, приватные репозитории, которые можно создавать бесплатно в большом количестве. У GitLab так же есть уникальный функционал, связанный с CI/CD-пайплайнами.

Методология CI/CD

CI/CD, или непрерывная интеграция и развертывание — это методология DevOps, которую необходимо знать, если в компании практикуется быстрая разработка и вывод продукта конечному пользователю. Она позволяет автоматизировать процессы тестирования и доставки новых модулей в проект. Начинающему разработчику стоит иметь представление об основных этапах CI/CD: Plan, Code, Build, Test и так далее, а также разбираться в основных инструментах, которые его поддерживают, технологиях контейнеризации (прежде всего Docker) и оркестрации.

Soft Skills: кирпичики для карьерного роста

По моему опыту, выработанные «гибкие навыки» программиста действительно помогают при трудоустройстве и продвижении по карьерной лестнице. Ведь если на одну и ту же должность претендуют два кандидата с примерно одинаковыми компетенциями, работодатель скорее выберет того, кто более общителен, дисциплинирован, лучше умеет брать на себя ответственность, хорошо ладит с другими людьми, самостоятельно может сгенерировать уникальное, не шаблонное решение.

Более того: именно прокаченные soft skills, а не hard skills, на мой взгляд, больше всего отличают «сеньора» от «джуна». Программист высокого уровня может брать на себя большую ответственность, умеет распределять задачи среди участников команды, развивать их навыки, а также расставлять приоритеты для собственного развития. Креативность, умение адаптироваться к новым условиям (гибкость), дисциплинированность, самостоятельность — те умения, которые вам очень понадобятся. Универсального совета по их приобретению нет — некоторые скиллы приходят с опытом, некоторые можно наработать самому. Главное — больше общайтесь и относитесь к своей профессии серьезно.

В добрый путь

Итак, какие основные технологии нужно знать, чтобы претендовать на место в команде Java разработчиков? Помимо кода, необходимо понимание работы с базами данных, Spring и Git, умение красиво «обернуть» свой код (здесь Docker вам в помощь). Знание Kafka — опционально, потому что если вы изучите базы данных и будете понимать, как они работают, то переход на конкретный брокер типа Kafka не составит труда.

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

Как получить опыт в программировании java

Что такое командная разработка. Как получить опыт командной разработки.

Team work

Что такое командная разработка. Как получить опыт командной разработки.

Практически во всех вакансиях на позицию Java программист есть пункт – опыт командной разработки. Давайте разберемся, что такое командная разработка, и как можно самостоятельно получить опыт командной разработки.
Давайте рассмотрим два примера командной работы.
Пример первый – грузчикам нужно поднять пианино на 5 этаж. Чтобы выполнить эту задачу, нужно минимум два человека. Работу они должны выполнять совместно и синхронно. Если один из грузчиков устал, вся команда должна остановиться.
Пример второй – ремонт в квартире. Для выполнения этой задачи нужно несколько специалистов: электрик, отделочник, сантехник. Каждый член этой команды может выполнять свою работу независимо от другого члена команды. Если отделочник заболел и не может работать, то это не повлияет на работу электрика и сантехника.
Эти два примера наглядно демонстрируют два типа командной работы.

Первый тип – работу можно выполнить только группой людей.
Второй тип – работу можно выполнить одному.

Важно понимать, что все IT проекты относятся ко второму типу командной разработки. То есть все процессы в разработке могут выполняться независимо от других членов команды. Например, команда состоит из 3 человек: back-end программист, front-end программист и android программист. Каждый из членов команды может выполнять свои задачи независимо друг от друга.
Возникает закономерный вопрос, в чем тогда смысл командной разработки, если каждый из членов команды работает независимо. Смысл в том, что все члены работают над общим ресурсом – это проект. В примере с ремонтом – это квартира. Чтобы всем членам команды было удобно и эффективно выполнять свои задачи, каждый член команды должен следовать регламентированным правилам. Опыт применения этих правил и требуется в вакансиях. Давайте рассмотрим эти правила.

Использование системы контроля версий (Git, SVN, Mercurial) для хранения исходных кодов.

Система контроля версий решает несколько важных задач.
1. Хранение исходных кодов.
2. Хранение истории изменений кода.
3. Распределенное пользование исходным кодом. Каждый член команды использует один и тот же репозиторий. Это позволяет мгновенно получать обновления, которые сделали другие члены команды.
4. Решение конфликтов в измении кода. Если два программиста поправят один и тот же кусок кода,
то система сообщит о конфликте версий кода и попросит одного из членов команды устранить эти конфликты.
В курсе job4j мы используем сервис GitHub – этот сервис предоставляет бесплатный доступ к использованию системы контроля версий.

Использование багтрекера для ведения проекта.

Для управления состоянием проекта весь проект разбивают на отдельные задачи.
Эти задачи заводят в трекинговую систему, где отслеживают их состояния.
Каждая задача назначается члену команды. Когда программист завершает работать над задачей,
он отписывает в трекер и переводит задачу в состояние «решена».
Другие члены команды могут посмотреть, что происходило с задачей.
Тоже самое касается любых непонятных ситуаций. Если есть вопрос, то создается задача,
в которой описывается, что не понятно. Менеджер проекта переводит задачу на соответствующего члена команды, который отвечает на вопросы.
Это позволяет всем членам команды иметь доступ к любой информации о проекте.
В курсе job4j мы используем TrackStudio для этой цели. Каждому ученику создаются задачи,
которые он должен решить. Вы можете использовать другой инструмент – git issues.

Использование cистемы автоматической сборки: Maven, Gradle, Ant

Каждый член команды работает на своем персональном компьютере.
Поэтому в проекте должен быть стандартизированный инструмент для сборки.
Это исключит проблемы с настройкой окружения среды и сборкой проекта.
Например, кто-то использует для разработке IDEA, а кто-то Eclipse. Кто пишет на MacOS, а кто-то на Linux.
Каждому разработчику пришлось бы создавать скрипты под свое окружение – это занимает время на объединение результатов работы и сборки проекта.
В курсе Job4j мы используем Maven. Инструмент позволяет производить различные манипуляции с проектом: компилировать, запускать тесты, проверять качество кода.

Использование инструментов для проверки качества кода: JUnit, JaCoCo, CheckStyle.

Так как мы программисты, то часть задач по качеству кода мы можем возложить на инструменты анализа кода.
Каждый из нас уникален, и каждый имеет свой стиль программирования.
Но когда мы работаем над общим проектом, нам следует придерживаться стандартных правил.
CheckStyle – библиотека, позволяющая привести ваш код под стандартные требования оформления – Java code convention.

Так же другие простые вещи – это автоматические тесты. По ним мы можем понять,
работает ли наше приложение хотя бы от части, и как хорошо мы написали наши тесты.
Для это цели мы используем модульные тесты JUnit и JaCoCo. Эти библиотеки хорошо интегрируется в Maven.
В курсе job4j мы так же используем эти бесплатные решения – Junit JaCoCo Checkstyle.

Использование непрерывного интегрирования.

Диалог коллег программистов.
— Ты коммит недавно делал?
— Да.
— У меня проект не собирается.
— У меня все собирается. Вот смотри. Это у тебя проблема .
Чтобы избежать таких ситуациий, нам нужен беспристрастный судья, который соберет проект, запустит тесты и скажет, кто виноват, если произошла проблема.
Процесс разработки ПО включает в себя несколько фаз.
1. Разработка технического задания.
2. Написание кода и тестов.
3. Тестирование кода, валидация и проверка покрытия.
4. Сборка проекта.
5. Загрузка и запуск проекта на сервере.
Все эти этапы — это последовательность действий. Существует методология разработки ПО при которой часть этих этапов автоматизирована.
Это методология называет Непрерывная интеграция (Continuous Integration).
Каждое изменение кода должно проходить фазу тестирования и валидацию кода.
Если предыдущая фаза прошла успешно, то можно переходить к выполнению новой фазы.
Все эти процессы выполняются автоматизировано. Это сокращает время разработки и уменьшает риски на человеческий фактор.
В этом курсе Job4j мы используем Travis CI в качестве сервера для CI. Этот сервис бесплатный для opensource проектов.

В заключении.

Для командной разработки вам нужен только компьютер, интернет и желание развиваться в программировании.
Не надо пинать друзей или искать единомышленников, чтобы изображать команду программистов. Это не про командную работу.
Получить опыт командной разработки просто, нужно начать использовать эти инструменты:
Git, Git Issue, Maven, Checkstyle, JUnit, JaCoCo, Travis CI.
Как вы видите, в курсе Job4j мы так же используем эти инструменты.
Это позволяет подготовить учащегося к реальному проекту.
Наиболее быстрый способ овладеть этими инструментами – заниматься с индивидуальным ментором.

Стать Java-разработчиком — чтобы посмотреть мир и быть в центре прогресса

Стать Java-разработчиком — чтобы посмотреть мир и быть в центре прогресса главное изображение

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

Профиль Рустама в Хекслете со всеми пройденными курсами можно посмотреть здесь, код выполненных проектов — на GitHub

Разговор со студентом в США и перспективы IT

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

В итоге я посетил больше 20 стран. Полгода учился по обмену в Италии, полмесяца в Японии. Несколько раз ездил по программе Work and Travel в США. За это время я выучил итальянский, японский и хорошо подтянул английский.

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

Java-разработчик — с нуля до трудоустройства за 10 месяцев

  • Постоянная поддержка от наставника и учебного центра
  • Помощь с трудоустройством
  • Готовое портфолио к концу обучения
  • Практика с первого урока

Вы получите именно те инструменты и навыки, которые позволят вам найти работу

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

В одной университетской библиотеке я познакомился с ребятами из России. Среди них был парень, который сам поступил на Computer Science, выиграл грант и учился бесплатно. Тогда я подумал: «Вау, оказывается, так тоже можно!».

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

Знакомство с программированием — на службе в Таджикистане

Когда я оканчивал бакалавриат, уже точно знал, что не буду международником. Хотел поступать в ВШЭ на магистерское направление, связанное с бизнесом в IT. Но пройти на бюджет мне не удалось. После этого я попал в армию и поехал служить по контракту в Таджикистан.

Ближе к концу службы у меня в части стало меньше задач и проверок, появилось больше свободного времени. Тогда я снова вернулся к мысли об IT, поверил в себя и твердо решил стать разработчиком. Достижение цели разделил на этапы:

  1. Обучиться самому: понять, все ли мне нравится, потренироваться в написании кода.
  2. Выбрать школу программирования и купить себе курс.
  3. Пройти стажировку и получить первый опыт работы.
  4. Найти работу с хорошими и комфортными условиями труда.

После этого я начал двигаться к цели.

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

Я учил Python, JavaScript, Java по бесплатным курсам. Смотрел YouTube, чтобы понять, какие есть направления, языки, что такое фронтенд, бэкенд. Так я освоил самые простые вещи, выучил синтаксис.

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

Читайте также:

Я многое поставил на свой карьерный переход: два года службы копил деньги, практически не тратил. Когда увольнялся, у меня были сомнения: «Может, лучше вложить эти деньги во что-то или взять ипотеку?».

Но потом я понял, что навыки — это то, что тебя определяет. Акции могут потерять в цене, квартира — пропасть, а навыки и компетенции останутся с тобой навсегда.

Как я выбирал себе школу и что в обучении далось мне сложнее всего

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

Я составил список из семи-восьми школ. Почти в каждой из них я прошел бесплатные курсы, оценил качество подачи материала, как работает сопровождение, как реализована среда разработки и удобна ли она. Сравнил стоимость обучения. И, конечно, почитал отзывы. Хекслет показался мне лучшим вариантом: он не давал ложных обещаний о заработке и трудоустройстве.

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

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

Первая стажировка, поиск работы и отказы, ставшие рутиной

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

Я взял академ в Хекслете и полностью вливался в стажировку. Вникал во внутренние процессы, впервые работал с Jira, Confluence. Для этого я переехал в Казань, потому что стажировка была в офисе. Потом академ закончился, на стажировке я освоился и смог завершить свой пятый проект в Хекслете.

Попав на стажировку, я понял, что в компании можно трудоустроиться. Но это очень долго — неоплачиваемая стажировка могла занять полгода. Меня это не устраивало, и я решил как можно скорее искать работу.

Во время стажировки я каждый день на протяжении полутора месяцев оставлял на hh.ru по пять-десять откликов. Подавался на вакансии с любыми условиями: без опыта, с опытом от года до трех.

Откликался и на оплачиваемые стажировки. Причем не просто нажимал на кнопку, а писал сопроводительные письма под каждую вакансию, анализировал список их требований. Сопоставлял с теми навыками, которые у меня есть. А те, которых не было, старался прокачать за время стажировки.

Везде были отказы. Меня даже на собеседование ни разу не позвали. Но я особо не переживал по этому поводу.

Отказ новичку без опыта — это само собой разумеющееся. Это так же нормально, как и просыпаться по утрам.

Читайте также:

Технические вопросы с подвохом на собеседованиях и оффер

Забавно, что для меня более странным был не отказ, а то, что мной заинтересовались и позвали на собеседование. Так у меня произошло с SimbirSoft . Однажды я зашел на hh.ru и увидел пять посещений моего резюме от этой компании.

Я созвонился с HR-менеджером, она задала около десяти общих вопросов. Один из них был с подвохом — надо было назвать классы, которые не наследуются от Object. А в Java все классы наследуются от класса Object, и нет ни одного класса, который не наследуется 🙂

Потом было техническое собеседование. Интервьюер внимательно изучил мой GitHub, задавал вопросы по моим проектам в Хекслете, другой по Telegram-боту на микросервисной архитектуре. Много спрашивал по интеграциям этих сервисов, по фреймворку Spring.

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

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

Об иллюзиях в IT, страхе откликов и развитии до тимлида

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

Я думал, что все будет сложнее. Не ожидал, что уже в этом году смогу официально трудоустроиться на полную ставку, планировал это на начало следующего года.

В будущем продолжу изучать Java, доучивать Kotlin — он используется в связке с Java. Учить что-то по виртуализации, контейнеризации — то, что требуется уже от мидлов и сеньоров. Еще мне интересны высокоуровневые вещи: бизнес-логика, работа приложений. Поэтому думаю, что дальше буду развиваться до тимлида.

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

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

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

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

Профессия «Java-разработчик»

  • Изучите Java — кроссплатформенный язык программирования, который используют Amazon, Netflix, eBay, PayPal и другие крупные компании
  • Научитесь разрабатывать программное обеспечение, сайты и приложения
  • Освойте самый популярный в коммерческой разработке фреймворк — SPRING BOOT
  • Разберитесь в базах данных и научитесь управлять ими с помощью SQL

5 советов разработчикам без опыта и студентам: как начать работу в IT

Мы в Haulmont часто общаемся с новичками, которые не знают, с чего начать путь в IT. Собрали полезные ресурсы и рейтинги, а еще спросили руководителей нашей программы трудоустройства начинающих разработчиков, как изучить рынок, выбрать язык программирования и о чем не забыть на собеседовании.

1. Выберите нишу, а затем — язык программирования

Разработка имеет множество направлений. Кому-то хочется уйти во Front-End, кому-то — в Game Dev, Enterprise, Mobile или Back-End и так далее. Как выбрать лучшее и с чего начать?

Конечно, лучше то, что нравится вам. Но существуют и более конкретные показатели, на которые можно опереться. Посмотрите, много ли позиций открыто в выбранной вами нише, какой в них порог вхождения и какие есть перспективы для роста. Изучите рейтинг вакансий и уровень зарплат. Например, вот подробное исследование от hh.ru с разбивкой по регионам и формату работы (офис/удаленка).

Вы заметите: хорошая зарплата зависит не только от опыта разработчика и ниши, но и от языка программирования. Например, согласно исследованию GitHub — крупнейшего web-сервиса для хостинга (то есть хранения) IT-проектов — десятку популярных языков возглавил JavaScript, затем идут Python, Java, Typescript, C# и так далее.

Рейтинг языков программирования github.com

Приведенный рейтинг GitHub — лишь одно из исследований. Чтобы понять, какой язык программирования изучать, смотрите рейтинги с разбивкой по сферам. Тогда вы увидите: в мобильной разработке преобладает Swift, в Back-End — Java, во Front-End — JavaScript. Выбирайте язык в пределах вашей специализации. Чем популярнее язык, тем больше на него открытых вакансий и выше конкуренция.

Можно пойти не массовым путем, а нишевым — то есть изучать более узкие языки, например, Kotlin, Go, Rust, Ruby. Кстати, позиции со знаниями таких языков могут оплачиваться выше.

2. Выберите стажировку/программу трудоустройства

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

Такие программы бывают короткими (от пары месяцев до полугода) и длительными (от полугода и больше). Разница между ними не только во времени.

Как правило, длительная стажировка рассчитана на специалистов «с нулевым» уровнем. Скорее всего, ваше обучение не будет оплачиваться и займет много времени, зато у вас будет ментор, возможность освоить язык программирования и посмотреть на работу IT-компании изнутри.

На коротких стажировках молодые разработчики зачастую обучаются конкретным технологиям — Spring, BigData, UJS, React — и работе на проектах. Но все зависит от специализации компании и выбранного курса. Здесь уже пригодится знание основ языка программирования

Если хотите обучаться и в то же время получать зарплату и профессиональный опыт, выбирайте программы по обучению и трудоустройству. У нас в Haulmont есть такая программа под названием Bench (Бенч). Так как мы не обучаем разработчиков с нуля, то ждем специалистов с хорошими знаниями Java core и сразу предлагаем работу и зарплату. Молодые коллеги знакомятся с нашими технологиями и функциональностью реальных клиентских решений, общим стандартом оформления кода, нашей платформой Jmix, технологиями и фреймворками, которые мы используем в компании. В других компаниях свои условия и предложения — не бойтесь спрашивать.

3. Ресурсы для учебы и самообразования

Для начала поговорим про студентов. Дело в том, что вам доступен богатый перечень бесплатных и действительно полезных лицензий и софта от ведущих производителей ПО и технологий. Например, JetBrains, авторы популярной во всем мире среды разработки IntelliJ IDEA и языка Kotlin, предоставляют студентам (и преподавателям тоже!) бесплатные образовательные лицензии. В этот пакет входит доступ к почти 20 продуктам и средам разработки компании, включая саму IntelliJ IDEA.

Рано или поздно вам предстоит познакомиться с системами контроля версий и репозиториями: без этого в разработке никуда. Так что советуем уже сейчас изучить Git и GitHub.

Git — это самая популярная система контроля версий. Она позволяет сохранять код в контрольных точках (чтобы в случае ошибки откатиться в то состояние, когда всё работало), отслеживать изменения в файлах и редактировать их с другими разработчиками. Система контроля версий также пригодится, если вы работаете в командных проектах.

GitHub — это web-сервис, своего рода, соцсеть для разработчиков, куда можно выложить свой код и задавать вопросы, общаться с комьюнити в Open source-проектах. К тому же, для студентов их преподавателей сервис предоставляет пакет с бесплатным доступом к GitHub Pro, облачным сервисам, средам разработки и доменам.

Чтобы воспользоваться лицензиями, вам нужно подтвердить свой студенческий статус — вы легко найдете необходимые инструкции на страницах сервисов.

Существует богатый перечень продуктов и образовательных программ от Microsoft. Однако некоторые услуги доступны по вузовской лицензии. Если вы не уверены, спросите, подключен ли ваш университет к этой программе.

Но что, если вы уже не студент? Здесь не можем не сказать про курсы и онлайн-школы — сейчас их много на любой бюджет, и они легко находятся по первому запросу в поисковике. Из неочевидных решений советуем обратить внимание на обучение от авторов языка программирования, который вы хотите освоить, или лидеров IT-рынка. Например, существуют курсы от уже упоминаемых JetBrains. В программе есть модули для совсем новичков. Также есть ресурсы для подготовки к сертификации от Oracle — одних из разработчиков Java. Они будут полезны более опытным специалистам. И не забывайте про Git и Github — даже без студенческого пакета знание этой системы контроля версий и web-репозитория необходимо.

Конечно, разработка — это про постоянное самообучение. Так что книги, ролики на YouTube и тематические ресурсы должны стать регулярной рутиной. Читайте технические материалы на Хабр и Tproger. На этих площадках разработчики делятся знаниями и опытом, компании (и ваши будущие работодатели) ведут блоги, рассказывают о своих технологиях и новых релизах. Это позволит вам оставаться в курсе IT-новостей, популярных технологий и направлений.

4. Не бойтесь тестового задания и собеседования

Да, чтобы попасть на стажировки и программы по трудоустройству, нужно пройти тестовое задание и собеседование. Для многих это становится сюрпризом и стрессом. Но благодаря тестовому вы точно узнаете, хватает ли вам знаний и будет ли интересно учиться. Обычно на выполнение дается пара недель, но всегда можно договориться об удобных для вас сроках.

Тестовое прошло успешно? Идем на собеседование. И опять отметим, что в каждой компании они проходят по-разному. Хотя одно можно сказать точно: не бойтесь, что вас будут экзаменовать. Когда мы собеседуем Junior developers, то не ждем глубоких познаний в области разработки enterprise-приложений. Сосредоточьтесь на объектно-ориентированном программировании в целом и Java Core (или того языка, который вы изучили). Расскажите об особенностях языка, его синтаксисе и основных классах.

Часто начинающие разработчики говорят про образование и опыт работы (если он есть), но забывают рассказать о технологиях, с которыми они знакомы. Если вы знаете основные фреймворки: Spring, Hibernate и умеете работать с такими инструментами как Git и BugTracker — обязательно расскажите о них. Это будет вашим преимуществом в глазах работодателя.

Будьте честны и не завышайте свои знания — это легко выяснится на встрече. Кроме теоретических вопросов на собеседовании вам дадут практические примеры, чтобы посмотреть, как вы понимаете код. Здесь вы сможете показать свои реальные знания на практике.

5. Чем выделиться среди других новичков.

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

Затем опубликуйте проект на GitHub — хорошо, что вы уже знакомы с ним — и прикрепите ссылку в резюме. Работодатель приятно удивится вашему знакомству с популярным web-сервисом и общей вовлеченностью в Open source.

И еще кое-что: большая часть документации к языку программирования, фреймворкам и технологиям, а также книги и статьи об актуальных технологиях написаны на английском. Так что, если ваш уровень все еще «London is the capital of Great Britain», есть весомый повод исправить ситуацию.

Надеемся, эти советы помогут вам в начале пути. А что бы вы посоветовали начинающим разработчикам? Поделитесь своим опытом.

23K открытий
11 комментариев
Написать комментарий.
Аккаунт удален
Развернуть ветку

Можно одним словом описать — труба

Развернуть ветку
Аккаунт удален
Развернуть ветку

Стажировка может и должна быть оплачиваемой.
У нас стажер — это такой «пре-джун», трудоустроенный на условиях 20 часов в неделю и оплачиваемый соответственно (половина минимальной для разработчиков ставки, правда, как сказал один из стажеров это почти столько же, сколько ему предлагали на полной ставке инженера у одного местного оператора мобильной связи).
Оплачиваемая стажировка потому, что стажер под руководством наставника сначала учится основам, но достаточно быстро начинает помогать в решении несложных задач. Сначала какие-то вспомогательные вещи, затем уже небольшие, несложные, типовые боевые задачки. Т.е. он становится членом команды и работает в команде.
Предложение о переходе в штат на полный день может быть сделано как по истечении срока стажировки (полгода), так и до истечения срока если человек показывает хороший прогресс.

А вот что есть «помощь в трудоустройстве»? Этот момент вызывает вопросы. Есть заявки от работодателей на подготовку специалистов и человека учат под конкретную заявку? Или вся «помощь» заключается в рекомендациях как правильно написать резюме?

Рейтинги достаточно однобоки. Они просто показывают. Трудно сформулировать. Моду, что ли. Вот сейчас модно мобильная и вебразработка. И по рейтингам можно подумать что весь IT сводится только к этому, а все остальное там так, постольку-поскольку. Это очень поверхностный взгляд на вещи.

Развернуть ветку

Советы простые
1. Контора должна быть проверенная, изученная с собственными доверенными инсайдерами.
2. Зарплата должна быть не ниже среднерыночной
3. Позиция должна быть инженерной, по специальности — разработчик или тестер.
4. Лучше стремиться в конторы с именем на рынке.

Развернуть ветку

Статья о том, что хотят видеть новички, а не о том, как на самом деле.

Развернуть ветку

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

Развернуть ветку

Кто хочет начинают работать на 2 или 3 курсе. Я сейчас на 3-м курсе с 1 годом опыта работы. Год назад получил 4 предложения о стажеровке за 3 недели. Зарплата была смешная, но это был отличный старт. Дам ответный совет компаниям: бегите в ВУЗы как можно раньше. На 3-м курсе выбора уже почти нет.

Развернуть ветку

А я когда учился по первой специальности работадатели в моем городе брали студентов при условии работы в компании родственника, на летние производственые практики и сразу давали понять что не заинтересованы в начинающих. Поэтому сейчас конечно для студентов профильных айти специальностей на 2-3 курсе выбор, но что делать тем кто начинает первые шаги далеко не в студенчестве?) А так выбор есть всегда

Развернуть ветку

Начинать надо вот с чего:
1. Убедись, что у тебя — технический склад ума.
2. Научись решать любые проблемы как инженерные задачи.
3. Получи понятие о процессе разработки, тестирования и сопровождения ПО.
Сколько я видел людей, «научившихся» кодить, но понятия не имеющих, с какого конца решать задачу, как выявлять потребности пользователя и не задумывающихся, как их поделие будут потом поддерживать!
Хватит клепать погромистов с одним QuickStart’ом в голове.

Развернуть ветку

То есть если я ноль в программировании, меня с нуля могут всему обучить?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *