Меня зовут Святослав, я работаю в компании Luxoft на позиции Junior Java разработчика. Сейчас вы прочитаете небольшую историю моего пути в Java. Эта статья будет полезна всем, кто планирует попробовать себя в программировании на Java, или тем, кто уже начал учиться и ищет советы.
А если быть точнее, в далеком 2018 году, когда я учился в 11-м классе, мой друг, который купил себе подписку на JavaRush, предложил мне попробовать себя в программировании и поучиться на этой платформе. Я подумал «А почему бы и нет?». Ведь программирование было у всех на слуху, и это было хорошей возможностью попробовать себя и понять, нравится ли мне.
Зима 2018 года, на носу ЗНО, а я сижу ночами, учусь-играю на JavaRush. По началу было ничего непонятно. Я проходил уроки очень медленно, вчитывался в материал по нескольку раз и все равно не всегда понимал. Но главное, мне было интересно, и это не давало остановиться. Ну и что тоже немаловажно — я смог сам написать и запустить приложение «Hello, world!». Стоит отдать должное платформе JavaRush, обучение построено в максимально понятной и игровой форме, очень хорошо помогает в начале.
Потому моим первым советом будет: попробуйте себя на какой-то бесплатной или недорогой платформе обучения, чтобы понять, интересно ли вам это. И только потом стоит идти и обучаться этому профессионально.
Английский язык поможет в обучении, ведь большинство курсов и лекций по Java — именно на английском. Документация, работа — тоже на английском.
Я учил язык с помощью просмотра сериалов в оригинале с субтитрами, чтения статей и прослушивания музыки с разбором переводов. И сейчас мой уровень английского языка — C1. Выходит, что английский можно выучить самому, в домашних условиях.
Параллельно я присматривался к украинским ВУЗам, где есть специальности по программированию, и понимал, что тема гиблая. Единственный ВУЗ, который я отметил для себя — ХНУ (Харьковский Национальный Университет имени Каразина), так как там была программа по обмену студентами, сертификат котировался даже в Европе, а программа выглядела современной. Но возможности поступить в Харьков у меня на тот момент не было, и в свои 16 лет я решил не тратить пять лет на учебу, ведь был уверен, что смогу выучить программирование и без ВУЗа. Мои учителя, правда, чуть инфаркт не словили, узнав, что их отличник и олимпиадник никуда не поступает, ведь даже двоечники поступали.
Курсы должны обучать практическому использованию навыков. Преподаватель не должен зарабатывать на жизнь только обучением программистов. Потому что в 90% случаев преподаватели, которые работают только преподавателями, это те, кто не удался в роли программиста и пошел работать в ВУЗы или дешманские курсы. Цена за курсы должна быть адекватной (и не заоблачной, и не низкой).
И нормальные курсы ни в коем случае не будут брать с вас процент от вашей з/п на протяжении двух лет. Если есть такое условия, закрывайте сайт и удаляйте из истории поиска. Лично мне больше всего подошла компьютерная школа Hillel, на обучение в которой я и поставил себе цель заработать денег.
Потому некоторое время я подрабатывал на стройке, садовником, и везде, где платили деньги. И ближе к началу зимы 2019 года началось обучение на курсе Java Elementary, на котором мы должны были дойти до Spring (тут совсем капельку), работы с БД, Git-ом, и пройти весь Java Core. Этот курс был рассчитан на 4 месяца обучения. После него мне предстоял курс Java Enterprise: Spring, Hibernate, Docker, углубленное изучение Java. Итак, началось мое обучение.
Правда, с группой мне не сильно повезло: никто сильно учиться не хотел. 10 из 12 человек забросили занятия к 5-му уроку, причем 2-е из группы приходили на занятия, чтоб поиграть в Clash Royale вместе. К тому времени и мой друг, с которым я когда-то начинал учить джаву, так же забросил обучение. Потому здесь будет совет: в программировании важна усидчивость. Учиться будет тяжело, и это нормально.
В это время я попробовал себя на двух собеседованиях, в одном из которых мне предложили перейти на другой язык программирования, что мне не очень понравилось, а во втором — предложили взять на себя проект и двух джунов в подчинение, создать архитектуру и начать писать приложение с нуля. На минуточку, это была вакансия Junior Java Developer. Работодатели в Украине, вот честно, вы иногда перегибаете палку.
Учитывая всё это, мне пришлось пойти на другую работу, и около полугода я работал в банковской сфере, вообще не связанной с программированием (да-да, работал с опасными должниками). В это время я уже съехал от родителей и начал самостоятельную жизнь. И все еще планировал попасть на второй курс программирования. Но то, что я учил раньше, понемногу начало забываться. Потому тут мой совет — не растягивайте обучение на долгие годы. Лучше сразу подготовиться, всё спланировать и иметь финансовую подушку на время поиска работы и обучения, чтобы потом не пришлось перекантовываться на разных временных работах, и заново учить то, что уже забыли.
В это время я пробовал подать свое резюме в ПриватБанк на позицию уровня Junior, где мое резюме сначала успешно рассмотрели, заинтересовались... а потом, узнав, что у меня нету высшего образования, обещали «перезвонить завтра». Да, даже в программировании не всегда берут на работу без «корочки».
И здесь я посоветую, что если вы планируете получать высшее образование — выбирайте хороший ВУЗ, это не помешает при приеме на работу, плюс вы выработаете полезные навыки в поиске решений задач, появится какой-никакой опыт в программировании, и, что самое главное, получите немного больше детства. Взрослая жизнь, коммуналка и прочая ерунда — такой отстой.
Но никогда не сдавайся. И я советую: пробуйте себя, подавайте резюме в разные компании, ходите на собеседования. И хоть по началу вам могут отказывать, однажды вы не упустите свой шанс попасть на желаемое место работы.
Я подготовился к первому тестированию и успешно его прошел. Меня пригласили на интервью, к которому я готовился. Перед собеседованием вспоминайте ответы на, как кажется, простые вопросы. В интернете есть много примеров типичных вопросов и ответов на разные темы. На YouTube можно просматривать записанные интервью с разными уровнями программистов (вот один из каналов с такими примерами).
Собеседование было довольно сложным. На некоторые вопросы я ответить не смог, но, как вы уже поняли, я его прошел. И меня взяли на позицию стажера в компанию.
Весной 2021 года я начал работать в команде стажеров под руководством тимлида и двух техлидов над проектом, который включал в себя Spring, работу с базами данных, REST API, Docker и искусственным интеллектом. Как бы это весело не звучало, но я практически ничего из этого не понимал. Так что предстояло полное погружение в программирование.
Я смотрел много видео, читал статьи по темам. В программировании, даже когда уже работаете — вы должны учиться, конечно, если вы не хотите остаться вечным ждуном. Не пожалейте потратить время на полезную статью или хороший подкаст по пути на работу, выделить время и посмотреть лекцию. Ведь если вы не учитесь, ваша цена как разработчика падает.
И для только погружающихся в программирование на Java: думаю, вы уже понимаете, что Spring ждет вас. Все хорошие проекты сейчас работают со спрингом. Он собрал в себе реализацию лучших дизайн-паттернов программирования и делает жизнь проще.
Не рассчитывайте, что вас не спросят о Spring на собеседовании. Конечно, могут быть такие проекты, которые сидят на Singleton`ax и Object Factory, но Господи упаси, не идите туда. Помочь в изучении Spring могут лекции на ютубе, к примеру, Spring-потрошитель. В работе со Spring Boot может помочь канал letsCode, там много полезных видео и на другие темы. Внизу прикреплю ссылки на несколько видео и канал.
Обязательно стоит уделять время работе с REST API, чтобы понимать основные принципы. Это обязательно пригодится и во время собеседования, и на работе. Уже на стажировке мы вовсю работали с REST-запросами и REST API.
И, что очень важно, учитесь работе в команде. Когда меня брали в команду, плюсом для меня была хорошая коммуникация во время стажировки. Программирование — это работа в команде людей, важно иметь хорошо развитые софт скиллы, уметь договариваться и помогать, и просить помощь (но не переусердствуйте, ибо новой команде может не сильно понравится).
Не стесняйтесь спрашивать, если что-то не понимаете. Лучше спросить, чем сидеть, тупить, и ничего не сделать. На стажировке один парень из нашей команды брал задачки, сидел с ними неделями, потому что не мог спросить ни у кого совет, и даже отказывался, когда ему предлагали помощь. До конца стажировки он не дошел.
Может казаться, что если вы возьмете задачу, то никогда с ней не покончите. Но лучше взять что-то новое, чего вы не знаете, и научиться этому, чем сидеть и делать одно и то же (зато это будет легко и быстро, как думают некоторые), ведь, снова же, можно остаться вечным ждуном.
Постепенно стажировка подходила к концу и предстояло собеседование в реальную команду. И, как вы уже поняли, я его тоже прошел (раз пишу эту статью). Работа на реальном проекте — это интересно, сложно и увлекательно.
Уделите время на изучение инструментов тестирования. Будет очень полезно изучить технологию TDD, ведь некоторые проекты требуют работать с такой техникой. Будет полезно понимать, как работают интеграционные тесты, как их можно написать и для чего это нужно. Ну и, конечно же, JUnit. Ведь вам предстоит писать много Unit-тестов. А если в проекте не пишут Unit-тесты — бегите оттуда.
Так же выделю, что понимание Docker — must have. Большинство проектов работает с докером, и вам лучше знать его основные команды, что такое контейнеры, и зачем они в программировании. Та же история с Git.
Часть 0. Hello, Java!
Итак, как все начиналось? Однажды, в 2018 году, сидя в маршрутке и смотря на забытые Богом улочки, я подумал:А если быть точнее, в далеком 2018 году, когда я учился в 11-м классе, мой друг, который купил себе подписку на JavaRush, предложил мне попробовать себя в программировании и поучиться на этой платформе. Я подумал «А почему бы и нет?». Ведь программирование было у всех на слуху, и это было хорошей возможностью попробовать себя и понять, нравится ли мне.
Зима 2018 года, на носу ЗНО, а я сижу ночами, учусь-играю на JavaRush. По началу было ничего непонятно. Я проходил уроки очень медленно, вчитывался в материал по нескольку раз и все равно не всегда понимал. Но главное, мне было интересно, и это не давало остановиться. Ну и что тоже немаловажно — я смог сам написать и запустить приложение «Hello, world!». Стоит отдать должное платформе JavaRush, обучение построено в максимально понятной и игровой форме, очень хорошо помогает в начале.
Потому моим первым советом будет: попробуйте себя на какой-то бесплатной или недорогой платформе обучения, чтобы понять, интересно ли вам это. И только потом стоит идти и обучаться этому профессионально.
Часть 1. Высшее образование: быть или не быть
Моё обучение на JavaRush продлилось не так долго, всего месяц-полтора. Мне пришлось с головой погрузиться в подготовку к ЗНО, так как оставалось очень мало времени до этого веселого экзамена. И тут больше всего внимания я уделил английскому языку, и как оказалось, не зря.Английский язык поможет в обучении, ведь большинство курсов и лекций по Java — именно на английском. Документация, работа — тоже на английском.
Я учил язык с помощью просмотра сериалов в оригинале с субтитрами, чтения статей и прослушивания музыки с разбором переводов. И сейчас мой уровень английского языка — C1. Выходит, что английский можно выучить самому, в домашних условиях.
Параллельно я присматривался к украинским ВУЗам, где есть специальности по программированию, и понимал, что тема гиблая. Единственный ВУЗ, который я отметил для себя — ХНУ (Харьковский Национальный Университет имени Каразина), так как там была программа по обмену студентами, сертификат котировался даже в Европе, а программа выглядела современной. Но возможности поступить в Харьков у меня на тот момент не было, и в свои 16 лет я решил не тратить пять лет на учебу, ведь был уверен, что смогу выучить программирование и без ВУЗа. Мои учителя, правда, чуть инфаркт не словили, узнав, что их отличник и олимпиадник никуда не поступает, ведь даже двоечники поступали.
Часть 2. Период забвения. И как я вернулся в Java
Я закончил школу с пониманием, что хочу выучить Java, и непониманием, как это сделать самому. Начался период забвения. Я пробовал обучиться программированию по разным видео, статьям, но это не увенчалось успехом (Java — не английский, и так просто дома этот язык не выучишь). Я понял, что полностью самостоятельно выучить Java у меня не получится, так как в доступных источниках довольно тяжело найти всю нужную информацию. И я начал поиск курсов, подходящих под мои требования.Курсы должны обучать практическому использованию навыков. Преподаватель не должен зарабатывать на жизнь только обучением программистов. Потому что в 90% случаев преподаватели, которые работают только преподавателями, это те, кто не удался в роли программиста и пошел работать в ВУЗы или дешманские курсы. Цена за курсы должна быть адекватной (и не заоблачной, и не низкой).
И нормальные курсы ни в коем случае не будут брать с вас процент от вашей з/п на протяжении двух лет. Если есть такое условия, закрывайте сайт и удаляйте из истории поиска. Лично мне больше всего подошла компьютерная школа Hillel, на обучение в которой я и поставил себе цель заработать денег.
Потому некоторое время я подрабатывал на стройке, садовником, и везде, где платили деньги. И ближе к началу зимы 2019 года началось обучение на курсе Java Elementary, на котором мы должны были дойти до Spring (тут совсем капельку), работы с БД, Git-ом, и пройти весь Java Core. Этот курс был рассчитан на 4 месяца обучения. После него мне предстоял курс Java Enterprise: Spring, Hibernate, Docker, углубленное изучение Java. Итак, началось мое обучение.
Правда, с группой мне не сильно повезло: никто сильно учиться не хотел. 10 из 12 человек забросили занятия к 5-му уроку, причем 2-е из группы приходили на занятия, чтоб поиграть в Clash Royale вместе. К тому времени и мой друг, с которым я когда-то начинал учить джаву, так же забросил обучение. Потому здесь будет совет: в программировании важна усидчивость. Учиться будет тяжело, и это нормально.
Часть 3, короткая. Отрицание. Абсолютно-ничего-непонимание. И как с этим бороться
У вас точно будет время, когда ничего не будет получаться, и вы будете многого не понимать. Но если вы для себя решили, что хотите стать программистом — никогда не останавливайтесь, и через время вы об этом не пожалеете (звучит как-будто я какой-то Игорь Войтенко и пишу мотивационную речь для своего следующего видео). Посидите где-то дольше, почитайте разные статьи, разберитесь в теме, которая непонятна. Ответы можно найти на все вопросы, но ни в коем случае нельзя забивать и останавливаться.Часть 4. Первые попытки попасть на галеру во времена великой пандемии. Или как я на время стал коллектором
Подходил конец обучения на первом курсе. Начался 2020-й год и карантин, мы перешли на дистанционное обучение на несколько последних занятий. По итогу курса мне удалось занять первое место в списке лидеров по оценкам (было бы странно, если бы не получилось с такой-то группой). Но из-за проблем с финансами попасть на второй курс у меня не получалось.В это время я попробовал себя на двух собеседованиях, в одном из которых мне предложили перейти на другой язык программирования, что мне не очень понравилось, а во втором — предложили взять на себя проект и двух джунов в подчинение, создать архитектуру и начать писать приложение с нуля. На минуточку, это была вакансия Junior Java Developer. Работодатели в Украине, вот честно, вы иногда перегибаете палку.
Учитывая всё это, мне пришлось пойти на другую работу, и около полугода я работал в банковской сфере, вообще не связанной с программированием (да-да, работал с опасными должниками). В это время я уже съехал от родителей и начал самостоятельную жизнь. И все еще планировал попасть на второй курс программирования. Но то, что я учил раньше, понемногу начало забываться. Потому тут мой совет — не растягивайте обучение на долгие годы. Лучше сразу подготовиться, всё спланировать и иметь финансовую подушку на время поиска работы и обучения, чтобы потом не пришлось перекантовываться на разных временных работах, и заново учить то, что уже забыли.
В это время я пробовал подать свое резюме в ПриватБанк на позицию уровня Junior, где мое резюме сначала успешно рассмотрели, заинтересовались... а потом, узнав, что у меня нету высшего образования, обещали «перезвонить завтра». Да, даже в программировании не всегда берут на работу без «корочки».
И здесь я посоветую, что если вы планируете получать высшее образование — выбирайте хороший ВУЗ, это не помешает при приеме на работу, плюс вы выработаете полезные навыки в поиске решений задач, появится какой-никакой опыт в программировании, и, что самое главное, получите немного больше детства. Взрослая жизнь, коммуналка и прочая ерунда — такой отстой.
Часть 5, большая. Новая жизнь. Первая желанная работа
В начале 2021 года, спустя больше полугода после окончания курса Hillel, в списке вакансий я наткнулся на предложение стажировки от Luxoft. Как раз то, что было нужно, ведь они набирали на трехмесячную стажировку с написанием проекта, а это опыт и дополнительное обучение. Я решил попробовать. На ± 10 мест в компании претендовали более ста человек, как я потом узнал.Но никогда не сдавайся. И я советую: пробуйте себя, подавайте резюме в разные компании, ходите на собеседования. И хоть по началу вам могут отказывать, однажды вы не упустите свой шанс попасть на желаемое место работы.
Я подготовился к первому тестированию и успешно его прошел. Меня пригласили на интервью, к которому я готовился. Перед собеседованием вспоминайте ответы на, как кажется, простые вопросы. В интернете есть много примеров типичных вопросов и ответов на разные темы. На YouTube можно просматривать записанные интервью с разными уровнями программистов (вот один из каналов с такими примерами).
Собеседование было довольно сложным. На некоторые вопросы я ответить не смог, но, как вы уже поняли, я его прошел. И меня взяли на позицию стажера в компанию.
Весной 2021 года я начал работать в команде стажеров под руководством тимлида и двух техлидов над проектом, который включал в себя Spring, работу с базами данных, REST API, Docker и искусственным интеллектом. Как бы это весело не звучало, но я практически ничего из этого не понимал. Так что предстояло полное погружение в программирование.
Я смотрел много видео, читал статьи по темам. В программировании, даже когда уже работаете — вы должны учиться, конечно, если вы не хотите остаться вечным ждуном. Не пожалейте потратить время на полезную статью или хороший подкаст по пути на работу, выделить время и посмотреть лекцию. Ведь если вы не учитесь, ваша цена как разработчика падает.
И для только погружающихся в программирование на Java: думаю, вы уже понимаете, что Spring ждет вас. Все хорошие проекты сейчас работают со спрингом. Он собрал в себе реализацию лучших дизайн-паттернов программирования и делает жизнь проще.
Не рассчитывайте, что вас не спросят о Spring на собеседовании. Конечно, могут быть такие проекты, которые сидят на Singleton`ax и Object Factory, но Господи упаси, не идите туда. Помочь в изучении Spring могут лекции на ютубе, к примеру, Spring-потрошитель. В работе со Spring Boot может помочь канал letsCode, там много полезных видео и на другие темы. Внизу прикреплю ссылки на несколько видео и канал.
Обязательно стоит уделять время работе с REST API, чтобы понимать основные принципы. Это обязательно пригодится и во время собеседования, и на работе. Уже на стажировке мы вовсю работали с REST-запросами и REST API.
И, что очень важно, учитесь работе в команде. Когда меня брали в команду, плюсом для меня была хорошая коммуникация во время стажировки. Программирование — это работа в команде людей, важно иметь хорошо развитые софт скиллы, уметь договариваться и помогать, и просить помощь (но не переусердствуйте, ибо новой команде может не сильно понравится).
Не стесняйтесь спрашивать, если что-то не понимаете. Лучше спросить, чем сидеть, тупить, и ничего не сделать. На стажировке один парень из нашей команды брал задачки, сидел с ними неделями, потому что не мог спросить ни у кого совет, и даже отказывался, когда ему предлагали помощь. До конца стажировки он не дошел.
Часть 6. Трудности в работе и советики от Свята
Мне было очень сложно погружаться сразу в такой огромный проект, не зная многих технологий, с которыми надо работать. Но для себя вынес хороший урок: не стоит бояться сложных задач.Может казаться, что если вы возьмете задачу, то никогда с ней не покончите. Но лучше взять что-то новое, чего вы не знаете, и научиться этому, чем сидеть и делать одно и то же (зато это будет легко и быстро, как думают некоторые), ведь, снова же, можно остаться вечным ждуном.
Постепенно стажировка подходила к концу и предстояло собеседование в реальную команду. И, как вы уже поняли, я его тоже прошел (раз пишу эту статью). Работа на реальном проекте — это интересно, сложно и увлекательно.
Уделите время на изучение инструментов тестирования. Будет очень полезно изучить технологию TDD, ведь некоторые проекты требуют работать с такой техникой. Будет полезно понимать, как работают интеграционные тесты, как их можно написать и для чего это нужно. Ну и, конечно же, JUnit. Ведь вам предстоит писать много Unit-тестов. А если в проекте не пишут Unit-тесты — бегите оттуда.
Так же выделю, что понимание Docker — must have. Большинство проектов работает с докером, и вам лучше знать его основные команды, что такое контейнеры, и зачем они в программировании. Та же история с Git.
Часть 7. Итог
Мне нравится, что у меня получается браться за задачи, которые всё сложнее и сложнее. Мне нравится, что команда помогает в моих вопросах. Мне нравится работа. И если вы решили стать программистом — не останавливайтесь.DOU
DOU – Найбільша спільнота розробників України. Все про IT: цікаві статті, інтервʼю, розслідування, дослідження ринку, свіжі новини та події. Спілкування на форумі з айтівцями на найгарячіші теми та технічні матеріали від експертів. Вакансії, рейтинг IT-компаній, відгуки співробітників, аналітика...
dou.ua