В Haulmont приходят как опытные специалисты, так и разработчики без опыта. Мы часто общаемся с новичками, которые не знают, с чего начать путь в IT. Собрали полезные ресурсы и рейтинги, а еще спросили руководителей нашей программы по трудоустройству начинающих разработчиков, как изучить рынок, выбрать язык программирования и о чем не забыть на собеседовании. Если вы уже опытный разработчик, будем рады узнать ваш опыт и советы для новичков.
![](https://habrastorage.org/getpro/habr/upload_files/a13/0f6/eb8/a130f6eb8f4c171f7f4642becb43ec5d.png)
1. Выберите нишу, а затем — язык программирования
Разработка имеет множество направлений. Кому-то хочется уйти во Front-End, кому-то — в Game Dev, Enterprise, Mobile или Back-End и так далее. Как выбрать лучшее и с чего начать?
Конечно, лучше то, что нравится вам. Но существуют и более конкретные показатели, на которые можно опереться.
Посмотрите, много ли позиций открыто в выбранной вами нише, какой в них порог вхождения и какие есть перспективы для роста. Изучите рейтинг вакансий и уровень зарплат. Например, вот подробное исследование от hh.ru с разбивкой по регионам и формату работы (офис/удаленка).
Вы заметите: хорошая зарплата зависит не только от опыта разработчика и ниши, но и от языка программирования. Например, согласно исследованию GitHub — крупнейшего web-сервиса для хостинга (то есть хранения) IT-проектов — десятку популярных языков возглавил JavaScript, затем идут Python, Java, Typescript, C# и так далее.
![Рейтинг языков программирования / github.com Рейтинг языков программирования / github.com](https://habrastorage.org/getpro/habr/upload_files/3db/f97/241/3dbf97241731d2306a91e271ea6da0a4.png)
Приведенный рейтинг 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», есть весомый повод исправить ситуацию.
Надеемся, эти советы помогут вам в начале пути. А что бы вы посоветовали начинающим разработчикам? Поделитесь своим опытом.