
Этот вопрос, пожалуй, волнует многих людей, особенно выпускников ВУЗов. В данной статье я опишу, как и какими способами можно получить ваш первый оффер программиста. Я искала позицию java-developer, однако не думаю, что алгоритм поиска работы будет сильно отличаться в зависимости от выбранного вами языка программирования.
Прежде всего, подумать о своем будущем программиста, следует хотя бы за несколько месяцев до начала самих поисков. Алгоритм простой:
- Выбор языка программирования
- Усиленное чтение документации с последующим решением задачек, разбором примеров и чтение подходящих статей.
- Когда хоть какая-то база уже есть, следует придумать себе какой-нибудь несложный проект, в котором вы будете использовать все то, чему научились.
- Придумываем проект сложнее, параллельно не забываем о том, что надо изучать сопутствующие технологии.
- Желательно все это выкладывать на гит, чтобы в будущем работодатель видел, что процесс обучения у вас шел. О пользе гита я расскажу чуть ниже.
- Заведите себе друга программиста, который время от времени мог вам давать советы или менторить вас (это, конечно, кому как повезет). В целом, лучше не надеятся на чью-то помощь, а делать и развиваться самим.
Теперь каждый пункт подробнее
Выбор языка программирования
Если вы студент учащийся на технической специальности, то предполагается, что вы знакомы как минимум с 3-4 языками программирования и имеете примерное представление о том, чем хотите заниматься. Далее вам придется выбрать между тем, что вам нравится и тем, что будет приносить прибыль и большие перспективы. Например, если вам нравится Pascal, то скорее всего работу программиста на Pascal вам будет довольно тяжело найти, разве что в школе, учителем программирования. Соответственно зарплата у вас будет небольшая и перспективы роста довольно туманные(поправьте меня если это не так, я изучала Pascal только в школе и больше он мне ни где не встречался и я не слышала, чтобы на нем делались какие-либо масштабные проекты. Это всего лишь пример). Если вас такой вариант не устраивает то идем на сайт – TIOBE Index for July 2017 и смотрим какой самый популярный и прибыльный язык программирования и выбираем из них. Если то, что вам нравится совпадает с тем, что популярное и прибыльное – радуемся жизни и изучаем язык.
В случае если вы занимались всю жизнь, к примеру, маркетингом, и вдруг решили переключиться на программирование, то можете смело выбирать из того списка языков и начинать его изучать. В таком случае, конечно, вам придется потратить гораздо больше времени на изучение языка и сопутствующих с ним технологий ибо предполагается, что у вас есть хоть какая-нибудь университетская база.
Усиленное чтение документации с последующим решением задачек, разбором примеров и чтением подходящих статей
Когда вы выбрали язык программирования, можно переходить к данному пункту. Повторюсь, поскольку я выбрала именно Java, на примере данного языка и буду описывать все способы.
Я купила книгу для изучения Java, автор Шилдт параллельно стала открывать javaDoc и читать его(документация по Java, да и вообще почти по каждому языку программирования, если это не 1С, как правило, на английском. Следовательно, желательно чтобы и по нему была хоть какая-то база). Параллельно решала задачки, смотрела туториалы на youtube(их полно! Много материала на каждую тему!) и делала мини-проекты. Я перешла с языка программирования PHP, я работала с ним примерно полтора года, соответственно программировать я хоть как-то могла и по этой причине ознакомление с Java прошло довольно быстро.
На счет материалов по Java, привожу самые толковые, на мой взгляд туториалы, книги и курсы.
Онлайн курсы:
- JavaRush — для самого начала довольно неплох.
- Coursera — можно найти много курсов и не только по Java.
- Codecademy — для самого начала пойдет.
Книги:
- HeadFirst — говорят очень понятная книга.
- Полное руководство Java 8 — Шилдт классика
- Философия Java — немного замудреная книга, хотя коллекции и многопоточность в ней отлично объясняются.
Видео туториалы:
- Туториал Романа Бровко — у него собраны несколько курсов (ООП, Начало Java, Spring и еще много всяких)
- Школа программирования — хорошо объясняются паттерны проектирования
- Технострим Mail.Ru Group — очень много годных курсов, включая САОД, БД и прочие.
На английском:
- thenewboston — много интересных и полезных уроков
- Derek Banas — разработка игра на Java
Cоздаем несложные проекты
В этом пункте, я думаю, все ясно. Если у вас проблемы с фантазией, вот вам несколько идей для реализации несложных проектов.
- транспонирование, умножение, сложение и другие операции с матрицами — Довольно полезно для понятия массивов и циклов.
- Любые задачки на рекурсию, факториалы – поиграйтесь с работой функций.
- Создание блокнота — потренируетесь работать с чтением и записью в файл.
- Создание галереи фотографий – работа с фото.
- Немного посложнее – сделайте чат, хотя бы однопоточный – попробуете сокеты и системы ввода и вывода.
- Сделайте динамичный сайт на Spring с использованием БД. – попробуете CRUD операции.
Параллельно проходите тесты. Вот несколько сайтов на которых очень много различных тестов.
- quizful — ну совсем много тестов и не только по Java
- muliver — тесты по-проще
- IT.MAIL.RU — объемный тест по Java
Все бы ничего, но знанием только одного языка программирования не обойдешься. Если вас тянет в сторону веб-программирования — изучайте параллельно веб технологии, их много. Вот несколько самых нужных, на мой взгляд. Описывать что и для чего я не буду, вам должны быть знакомы эти слова.
Если вам нравится создавать десктопные приложения – то это соответствующие технологии. У Java, для примера – JavaFX, swing. К этому всему добавляется знание баз данных как реляционных так и нереляционных. Самые популярные БД.
Создание “боевых" проектов
Итак, у вас уже есть неплохая база и можно переходить к данному пункту. Здесь, я думаю, тоже все понятно. Единственная рекомендация это быть активными и задавать вопросы на различных форумах. Вот список наиболее популярных:
Теперь опишу небольшой лайфхак как получить бесплатное обучение и небольшой опыт работы. Это различные стажировки, их много и они полезные. Стажировки, как правило, проводят большие компании, на стажировках вас обучают, вы делаете проект, вас менторят и на выходе вы получаете знания + опыт + опыт работы в комманде + проект. Стажировки, обычно, бесплатные, но вам и так платят бесплатным опытом работы и неплохим проектом. Если все у вас хорошо, то компании, при которых вы проходили стажировку могут предложить вам работу, однако не стоит на них полагаться, это лотерея, все зависит от того, к какому hr-менеджеру вы попадете, к какому техлиду, в каком он будет настроении. Причин брать вас или нет — тысячи и порой они очень абсурдны. На стажировку может попасть почти любой студент или выпускник, длительность стажировки примерно от 3 до 6 месяцев. Данный путь самый простой и, на мой взгляд, самый правильный. Если у вас не получилось и вам после стажировки не сделали оффер – не расстраивайтесь. Делайте дальше проекты и выкладывайте их на гит. Идти на следующую стажировку, если вы не студент 3-4 курса и особо не торопитесь устроиться на работу, смысла нет. Идите устраиваться на работу сейчас, а не тратьте время еще на одну стажировку, на которой вам может повезти а может и нет.
Список стажировок:
Есть вариант еще курсы от тех же компаний, но курсы платные и гарантий трудоустройства после их прохождения тоже нет, хотя знаний там дают немного больше, чем на стажировке. На всякий случай привожу список курсов:
Cоставление резюме
Хорошим тоном считается писать резюме на английском языке. Английский — важен и нужен и, в IT-сфере рано или поздно вы с ним столкнетесь в полной мере. Работодателю важно чтобы вы в своем резюме максимально подробно описывали такие пункты как: где вы учились, что учили, что делали, какой с��едний балл(некоторым компаниям это тоже важно), какие технологии знаете, какие проекты делали, как обучались, владение иностранными языками, ваши цели, ССЫЛКИ на проекты(это повышает ценность вашего резюме в разы), если у вас есть публикации, то и на них тоже приводите ссылки. Почти везде используются системы контроля версий, именно по этой причине вам тоже лучше за ранее научиться использовать их. Это тоже повысит ценность вас как специалиста и сделает немного ценнее ваше резюме. Не бойтесь подробно описывать в вашем резюме проекты, в которых вы участвовали и технологии, которые вы использовали – это помогает рекрутерам понять, что у вас нет проблем с изложением своих мыслей (это тоже очень важно) и вы можете изъясняться так, чтобы другие вас понимали, а инженер, который вас будет интервьюировать будет понимать, что вы ориентируетесь в том, что использовали при создании того или иного проекта.
Дальнейшие шаги
Когда у вас есть небольшой опыт, база знаний, несколько рабочих проектов и нормально составленное резюме, смело начинайте рассылать его везде, где только можно. Не ждите, что звонки от рекрутеров посыпятся на вас на следующий день и не расстраивайтесь, если их мало. В конце концов, вы не техлид Oracle с опытом работы > 10 лет. Ходите на ВСЕ собеседования и решайте ВСЕ тз, даже если вы знаете, что не пойдете в эту компанию. Для вас это опыт и он довольно ценный. На собеседованиях обычно спрашивают стандартные вещи которые вы можете узнать здесь -> Вопросы для Java junior developer Вопросы самые банальные, за 2-3 недели, сидя с компом, можно легко подготовиться.
Свой первый оффер я получила после 3 недель поисков работы и после 8 собеседований. После каждого собеседования я прорешивала все задачки, на которых засыпалась и разбирала вопросы, которые мне были непонятны. Это очень полезно, так как вопросы обычно примерно похожие и с каждым разом вам будет все проще и вы будете чувствовать себя более уверенно. Также я наполняла гит проектами, что тоже повлияло на звонки и пришлашения, но об этом я писала уже выше. Я целенаправленно шла в большую иностранную компанию так как лично для меня то, что компания большая и иностранная — большой плюс. Не соглашайтесь на первый оффер, только если это не компания, в которую вы мечтали попасть. Если у вас есть первый оффер, второй и последующие получить гораздо проще и условия можно попросить себе гораздо лучше. Что и говорить, мой знакомый программист после третьего оффера повысил себе ЗП в два раза.
Суммарно, поиски работы заняли у меня около месяца, зато я нашла именно то, что искала. К моменту соглашения у меня было уже в запасе 4 оффера и я могла спокойно между ними выбирать. Я, на сколько это было подробно, описала весь путь от начала изучения языка программирования до получения оффера. Если у вас есть вопросы, задавайте. Не бойтесь быть активными, инициатива приветствуется, мало кому интересно работать с овощами…
P. S.: Я планирую написать цикл статей по Spring и его применении, включая Spring Security, Spring Boot, Hibernate и работу с различными форматами данных. Кому это интересно, напишите в комменты.