Привет! Меня зовут Сергей и благодаря Хекслету я стал Java-разработчиком. Это моя большая история — про университет и армию, несколько попыток попасть в IT, учебу в Хекслете, карьерный трек и стажировку в Ростелекоме.
- Часть 1. До программирования
- Университет, Python и Java
- Программирование с ментором
- Java на Хекслете
- Как я нашел работу через карьерный трек Хекслета
- Несколько советов для тех, кто только учится
Профиль Сергея на Хекслете со всеми пройденными курсами можно посмотреть здесь, а код выполненных проектов — на GitHub
Часть 1. До программирования
С программированием я познакомился ещё в школе, там преподавали Pascal. Именно тогда я почувствовал удовольствие от решения задач, думаю, что вы о нём уже знаете, если сейчас учитесь. Вам же знакомо чувство, когда после множества попыток удаётся написать работающий код? Такое ощущение победы. Особенно, если задача изначально казалась вообще нерешаемой. Мне это нравилось и я с удовольствием изучал то, что давали в школе — задачки были простенькие, но когда нет опыта, то и они заставляют серьёзно подумать, чтобы найти верное решение.
Выполнять эти задания было интересно, но о работе программистом я тогда не задумывался. На самом деле, когда-то давно я хотел быть программистом — это была следующая профессия после космонавта и собаковода. Но к моменту изучения программирования в школе это уже подзабылось. Мне просто нравились информационные технологии, я любил разбираться в компьютере, меня даже запомнили специалисты поддержки местного интернет-провайдера после множества вызовов для починки интернета. Наверное, этому способствовала моя любовь к играм — развлекаешься, ищешь новое, что-то ломаешь, чинишь, получаешь опыт.
Мне нравилась информатика, так как она проясняла работу компьютера, но вот математику я не очень любил, и не хотел с ней связываться. При выборе места дальнейшей учёбы я пытался найти такое направление, где математики будет минимум. Даже собирался пойти в гуманитарии, но всё никак не мог определиться с конкретной областью. Затем я сходил на день открытых дверей в технический университет своего города. И мне понравилось увиденное: интересные специальности, современные технологии. По ряду причин я выбрал направление «Инноватика» — это такая специальность, где есть всего понемногу, тут тебе и программирование, и менеджмент, и инженерные дисциплины, типа сопромата и теоретической механики. Обо всём и ни о чём.
Мой план избежать математики в университете провалился, здесь было четыре математических дисциплины, но интерес к информатике был сильнее, поэтому я не унывал. На первом курсе нам преподавали программирование на языке C# — это было второе моё столкновение с программированием. К счастью, мне повезло с преподавателем, он был требователен и сдать ему все лабораторные работы было не так уж и просто. Благодаря ему многие ненавидели эту дисциплину и она считалась одной из самых сложных в нашем университете. Мне же было интересно, я внимательно слушал, что он говорит, а своё дело он знал, имел опыт коммерческой разработки и мог доступно объяснить разные вещи. Хотя для нас программирование не являлось особо важным: этот преподаватель говорил, что нам по специальности достаточно уметь оценить сложность той или иной работы — я получил хорошую основу, множество базовых вещей, которые я изучал в дальнейшем на курсах, были мне уже так или иначе знакомы, что позволяло тратить меньше усилий на понимание материала.
Университет, Python и Java
Именно в университете я задумался о том, что можно было бы стать программистом. После первого курса эта дисциплина закончилась, и я, через некоторое время, решил изучать программирование самостоятельно. При выборе первого языка я немного пострадал, и избрал Python, так как многие его хвалили, он рекомендовался новичкам и был распространен. Я нашёл какую-то книгу по Python и начал читать её, плюс занимался в приложении для телефона Sololearn (неплохая штука, если нужно быстренько познакомиться с каким-либо языков программирования).
Надолго меня не хватило, ведь во время учёбы в универе было ещё много чего интересного, хоть и не всегда полезного. Где-то через годик я опять вспомнил о программировании и что неплохо бы взяться за ум — на этот раз выбрал Java, так как много платят, язык мощный, кроссплатформенность, серьёзные проекты. Снова стал читать книгу и делать задания из неё — книга называлась «HEAD FIRST JAVA».
Дойдя до определенного момента я начал бояться, что не потяну серьёзное программирование — это чувство посещало меня и при изучении Python, но тогда оно было не настолько явно. Я думал, что не справлюсь с такой сложностью, тут нужно очень много знать, я не смогу решать реальные задачи, так как в книжке и универе обучали всяким мелочам, а на реальных проектах делаются ого-го какие вещи. С этими мыслями я в очередной раз оставил занятия программированием. Учёба на бакалавра закончилась и я пошёл в армию, где принял решение не поступать на магистратуру, а начать работать, а потом, если понадобится, отучиться по нужному мне направлению.
Вернувшись из армии я стал искать работу. Я точно знал, что хочу работать в сфере информационных технологий, вот только не мог определиться с направлением. Видел вакансии программиста на C# и думал, что неплохо было бы туда пойти, но у меня были только базовые знания из универа — да и те по большей части забылись, так что я оставил этот вариант. Затем я собеседовался на аналитика, тестировщика, даже чуть не попал на собеседование в колл-центр, но в конце оказался в сфере информационной безопасности. Перед поступлением в универ я рассматривал это направление, его очень круто представили на дне открытых дверей. А тут подвернулась возможность устроиться, к тому же в армии я занимался похожими вещами. Первые пару месяцев вникал в особенности профессии, добывал недостающие знания, в основном из сферы законодательства.
Программирование с ментором
Как-то вечером, листая ленту новостей, я наткнулся на запись о программировании — там было что-то о важности фундаментальных навыков. Меня заинтересовал этот пост, я перешёл в группу, где он был опубликован, почитал другие записи и они нашли отклик в моей душе. Это послужило толчком моему развитию, я вспомнил о своих целях и решил прочно взяться за изучение программирования. Автор тех записей в группе стал моим ментором — я пообщался с ним, рассказал о себе, он дал пару советов, мы определились с курсом развития, который подходит в моей ситуации, и через некоторое время я начал заниматься изучением программирования.
Читайте и другие истории успеха: Как гуманитарию попасть в IT после 30 с маленьким ребенком и ипотекой
Ментор говорил, что сначала важно развить навык универсального программирования. Я снова решил выбрать Java, но и присматривался к Pyhon и C#. За время учёбы в универе я привык C-подобному синтаксису, но хотелось изучить что-то новое — на C# я писал хотя бы маленькие программки, а на Java и Python особо далеко не продвинулся, потому финальный выбор делал между этими языками. В итоге победа оказалась за Java — строгая система типов и C-подобный синтаксис склонили чашу весов в сторону этого языка. Однако к этому моменту я все-таки успел узнать, что настоящий программист не привязан к одному языку и рано или поздно хорошо бы изучить что-то другое.
Мне потребовалось умение работать с GIT, поэтому ментор дал мне ссылки на несколько материалов, где рассказывали про принципы работы с этим инструментом. Среди них был и бесплатный курс Хекслета по GIT. Мне сразу бросился в глаза текстовый формат уроков — кажется, что в тексте информация даётся более плотно, тут меньше лишнего, если сравнивать с видео. К тому же, в тексте удобно возвращаться к ранее изученному, чтобы уточнить некоторые моменты, либо просто понять что-то сложное. После завершения курса я несколько раз возвращался к нему, чтобы освежить в памяти те или иные команды. Тогда же я решил, что мне как будет полезно знать Linux, поэтому я прошёл курс по основам командной строки, который мне тоже очень понравился, и распрощался с Windows.
Я решал разные задачки, выкладывал их на GitHub, язык осваивал параллельно решению задач. Если есть какая-то проблема, я думаю, как бы её можно решить, а после нахождения алгоритмического решения пытаюсь реализовать его на Java. Здесь я использовал разнообразные сайты о Java: Javarush, Metanit и другие. Потом я пробовал реализовать различные структуры данных, чтобы в них разобраться. Ну а после этого решил, что хочу пойти в веб-разработку на Java, да и ментор сказал, что уже можно спокойно осваивать определённый стек и идти в профессию.
У ментора я спросил совета, куда лучше пойти, чтобы развиваться в выбранном мной направлении. И он посоветовал мне профессию Java-разработчик на Хекслете, так как тут есть много хороших технических материалов, а на профессии ещё и наставник, который проводит ревью кода, что особенно ценно.
Java на Хекслете
Я с удовольствием пришёл на Хекслет. Оставил заявку, мне позвонили, ответили на все вопросы и в августе 2021 года я попал в учебную группу. К моменту начала занятий на Хекслете я изучил основные структуры данных, правила написания хорошего кода и прорешал некоторое количество разнообразных задачек разной сложности.
В первые дни на Хекслете всё казалось сложным, многое было мне в новинку. Slack, Gitlab, утилита для домашних заданий — казалось, что нужно изучить так много, и это всё такое сложное. Однако через несколько дней я привык к местной системе, она оказалась удобной, страшно было только сначала.
Учился я быстро, сказывались уже накопленные знания. Особых проблем с тем, чтобы что-то закодить или решить задачку не возникало, не считая парочки испытаний. Больше времени уходило на чтение документации, разбор инструментов и изучение технологий. Хорошие гайды написаны на английском, у меня уходило немало времени на их перевод, однако я замечал, как мой уровень английского рос и сейчас чтение статей на английском даётся мне гораздо проще.
Теперь немного о проектах: я завершил все пять проектов на Java-разработке.
Они очень хороши, ты изучаешь ту или иную тему на курсах, а после тебе дают проект, где эти знания нужно применить. Если на курсе тебе казалось, что ты всё понимаешь, то проект мог тебя легко в этом разубедить. Здесь ты строишь полноценное приложение с чистого листа.
Читайте и другие истории успеха: Как нефтяник и водитель трака стал Java-разработчиком в Майами
На первых проектах инструкции максимально подробные, затем информации по настройке окружения и проекта меньше и меньше, всё чаще пользуешься официальной документацией — хотя для настройки окружения я частенько заглядывал в первый проект, где это подробным образом расписано. Проекты научили меня лучше работать с документацией, показали важность хорошей архитектуры, логирования, прокачали навыки работы с гуглом, да и общее понимание устройства приложения тоже заметно выросло. О прокачавшихся навыках программирования я даже говорить не буду.
Во время обучения на Хекслете я почти не ходил на сторонние ресурсы — в основном читал то, что даётся на занятиях: материалы курсов + информация по ссылкам на дополнительные источники (документация, статьи). Однако начал читать книги, которые рекомендовал Хекслет — успел осилить 3 штуки, но это ещё не конец, хочу прочитать всё что там есть.
Как я нашел работу через карьерный трек Хекслета
Поиски работы я откладывал максимально долго. Откладывал так, что даже не успел их начать. Примерно после третьего проекта — где-то через 2,5 месяца после начала обучения на Хекслете, я заглянул на сайты поиска работы и увидел, что почти везде требуется знание Spring. Тогда я подумал, что работу будет проще найти, если эта технология появится у меня в резюме, а это последний модуль в профессии.
С этой мыслью я продолжил свои занятия. Модули 4 и 5 я проходил дольше, чем первые 3, так как там было много новой для меня информации (http, базы данных, ORM и прочие вещи, связанные с вебом). Кроме того, после 3 проекта со мной связалась Алиса Воробьёва из карьерного трека Хекслета. Сказала, что у меня хорошие рекомендации от наставника группы, и она хотела бы порекомедовать меня на стажировку в команды разработки для партнёров Хекслета.
На это я с удовольствием согласился, быстренько написал резюме и передал ей. С тех пор она переодически со мной связывалась и говорила, что передала моё резюме тому или иному партнёру. Закончив очередной проект я добавлял его в резюме, однако активные поиски работы планировал начать лишь после того, как закончу последний проект, где будет использоваться Spring. Когда я работал над последним проектом, мне пришло письмо от Алисы, где она сказала, что передала моё резюме Ростелекому, который искал Java-разработчика, и что они в скором времени могут мне написать.
Я заканчиваю пятый проект, часов 10 вечера, уставший, но довольный своей победой (проект прошёл автоматические тесты), ложусь спать с мыслями о том, как завтра отдам резюме на ревью и начну потом его всем рассылать. Утром моё резюме проверили, указали на вещи, которые нужно поправить — я сидел и корректировал его.
В это время мне вдруг написал HR-Ростелекома — мы пообщались, я узнал о проекте, и мне предложили пройти собеседование. После разговора я испытал серьёзный прилив энергии и радости, однако меня пугало будущее мое первое собеседование, поэтому я стал читать разные советы, пересматривать материалы Хекслета, просматривал всякие статьи, чтобы подготовиться к собеседованию.
Читайте также: Это снова я, резиновая уточка: что такое метод Фейнмана и почему с его помощью так просто изучать программирование
На собеседовании меня попросили решить небольшую задачку, погоняли по SQL, дали вопрос на структуры данных, поспрашивали немного о всяких разные вещах, на всё ушло около часа. Событие это было волнительным, после начала разговора все мои знания быстро разбежались по дальним уголкам сознания и не хотели выходить. На вопросы я ответил, но мне кажется, что сами ответы были не лучшие. Я стал ждать фидбэк, который мне обещали дать через 3 дня. За это время своё резюме я так никуда и не выложил, потому что верил в лучшее. Через пару дней со мной снова связались и пригласили присоединиться к команде. Предложение я, конечно же, принял — ведь я когда собирался искать работу, то особо не рассчитывал попасть на крупный проект, но всё сложилось довольно круто и теперь я в РТК IT.
В Ростелекоме я работаю уже месяц, сейчас идёт испытательный срок, надеюсь, что я успешно его пройду и останусь здесь дальше. За это время у меня стремительно прокачались навыки работы с GIT и базами данных. Задачи иногда выглядят страшно, но пока у меня получается с ними справляться. Я попал в хорошую команду, ребята опытные, всячески помогают, отвечают на вопросы, объясняют те или иные вещи, за что им большое спасибо.
Сейчас я стараюсь изучать SQL и базы данных, так как приходится с этим активно работать, решаю задачки на HackerRank, держу открытой вкладку с уроками Хекслета, переодически возвращаясь к ним, чтобы вспомнить те или иные вещи.
Несколько советов для тех, кто только учится
Думаю, что о хард-скиллах говорить смысла нет, так как всё зависит от выбранного направления, поэтому хочу немного рассказать о софт-скиллах, необходимость которых я уже почувствовал на себе.
Часто можно услышать, что программисту приходится много общаться, но я особо не верил в это, пока не начал работать. Оказалось, что если ты можешь хорошо общаться с другими людьми, то это круто. Ведь приходиться взаимодействовать с командой, аналитиками, тестировщиками и другими сотрудниками, которые участвуют в жизни продукта. Важно уметь ясно доносить свои мысли и понимать другого человека, не бояться выяснять детали задачи, ведь это позволит делать свою работу лучше и качественнее. Новичку особенно не нужно бояться задать вопрос, иногда лучше спросить и показаться глупым, чем накосячить и переделывать.
Читайте также: Навыки командной разработки, опыт с GitHub и умение читать чужой код: зачем нужна стажировка
Во время обучения на меня переодически накатывали волны лени, которые затягивали в пучину прокрастинации. Иногда мысли были такими: «Я уже неплохо продвинулся, в группе один из первых, почему бы и не замедлиться, отдохнуть, забросить всё на недельку». Я старался сдерживать эти порывы, так как понимал, что пользы они не принесут. Хотя иногда у меня бывали дни безделья, но в основном я постоянно учился — и это позволило быстро закончить курсы из профессии.
Для поддержки мотивации я вдохновлялся продуктивными людьми, которые много работают над собой и добиваются успеха — ведь тоже хочу быть крутым и успешным специалистом. Вообще, я частенько вспоминал фразу, которая приведена во многих статьях Хекслета: «Никогда не останавливайтесь: в программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте». Я знал, что Хекслет — только начало, здесь я нарабатываю навыки для устройства на работу, но впереди длинный путь, так как я хочу быть сильным программистом.
Частично помогала учёба в группе — я поставил себе цель идти впереди сокурсников и когда я видел, что кто-то меня догоняет, то пытался поднажать. При этом я старался помогать другим, если что-то спрашивали в чате, пробовал ответить, радовался, когда удавалось опередить наставника, а он говорил, что я дал верный ответ.
Порой, самое трудное — заставить себя сесть за работу. В таких случаях я говорил себе, что сяду на пять минуточек просто сделать одну штуку и всё, а потом, после того как начал, продолжить уже гораздо проще.
Кроме того, я старался заниматься ежедневно. Не обязательно уделять учёбе целый день, просто нужно заниматься регулярно. Сначала будет очень сложно, мозг начинает кипеть буквально через час, а может и раньше. Но со временем привыкаешь и можешь заниматься дольше и дольше. Хотя на сложных задачах или моментах моё желание ничего не делать было максимальным, я готов был отвлечься на любую мелочь. Через такие места старался пробираться маленькими шагами, в эти моменты главное не останавливаться, ибо рано или поздно сложностям придёт конец.
А напоследок я бы посоветовал не сворачивать с пути. Если выбор уже сделан, то нужно идти, даже если кажется, что другой язык программирования/технология в чём-то лучше. Потом будет возможность переключиться на что-то другое — это будет проще, так как фундаментальные вещи одинаковы везде. А если постоянно метаться из стороны в сторону, то знания будут поверхностные, а на них далеко не уедешь.
На этом всё, спасибо за внимание. Если тебе удалось дойти до этого места, значит у тебя есть упорство и ты сможешь пройти путь обучения до конца. Удачи!
Никогда не останавливайтесь: В программировании говорят, что нужно постоянно учиться даже для того, чтобы просто находиться на месте. Развивайтесь с нами — на Хекслете есть сотни курсов по разработке на разных языках и технологиях