Что нужно знать java программисту

Александр Чебыкин уже полгода работает Java-разработчиком в компании «Сбербанк-технологии». До этого он писал код на Фортране, работал над диссертацией в Институте прикладной математики имени М. В. Келдыша РАН и успел закончить две четверти в GeekUniversity. Этих знаний хватило, чтобы успешно пройти собеседования в Сбертехе и получить сразу два интересных предложения работы.

— Чем вы сейчас занимаетесь?

— В Сбертехе я работаю Java-разработчиком в отделе эквайринга, в команде клиринга.

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

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

— Какие знания нужны, чтобы получить такой оффер?

— Если вы хотите писать backend корпоративных приложений, нужно хорошо разобраться в следующих темах:

  • Java SE (Collections, многопоточность);
  • Maven;
  • Git;
  • Linux OS;
  • Spring (IoC, DI) — от джуниора обычно ждут общего представления, что это и для каких задач используется. Но знание этого фреймворка будет большим преимуществом при трудоустройстве и в дальнейшей разработке.

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

  • Как устроены ArrayList и LinkedList? В чем разница?
  • Как устроены HashMap/HashSet?
  • Что такое Deadlock (с примерами)? Как его избежать? Как убедиться, что в запущенном приложении он случился?
  • Что вы знаете про жизненный цикл потока? Приведите схему перехода между состояниями;
  • Как бы вы проводили ревью кода другого разработчика?
  • Выполните умножение двух чисел, представленных строкой (пример):

— Как нашли эту работу?

— Она сама меня нашла. После первой четверти в GeekUniversity (факультет Android-разработки), когда достаточно изучил Java, я выложил резюме Java-разработчика на HeadHunter. Честно написал, что работал только с Фортран, что Java освоил самостоятельно и прохожу обучение.

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

После трех–четырех собеседований у меня сложилось понимание, как отвечать. Я стал увереннее, но приостановил поиски. Решил уделять больше внимания учебе, пошел на стажировку по Java-разработке в GeekBrains.

Чуть позже сотрудники кадрового агентства, с которым работает Сбертех, увидели мое резюме на HeadHunter и предложили пройти два собеседования. Первое — с командой в отделе кредитов. Вопросы, которые мне задавали, мы хорошо изучили на курсе «Java 3». Второе собеседование, в отделе эквайринга, проводил руководитель направления. На следующий день рекрутер позвонил и сообщил, что мне готовы сделать оффер. Позже поступило предложение и из первого отдела.

— Были какие-то сложности в первые месяцы работы?

— Команда, в которую я пришел, работала над проектом уже больше года. Было сложно сразу во всем разобраться. Хочу сказать одногруппникам, которые жаловались на количество кода в наших учебных проектах (например, когда мы писали сетевой чат в первой четверти): «Это вовсе не много кода!». Там было от силы 3 модуля по 20 классов в каждом. На момент, когда я подключился к работе своей команды в Сбертехе, в нашем рабочем проекте было около 20 модулей и сотни классов. Поэтому первый месяц на реальном проекте был для меня непростым.

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

— Почему вы решили учиться программированию?

— Я закончил МИФИ, факультет теоретической и экспериментальной физики, по специальности «Прикладная математика и информатика». После вуза я полгода работал аналитиком в компании «Филип Моррис». Мне не нравились мои задачи: рутинная работа над статистикой и контроль того, как работают другие. На тот момент у меня не было четкого представления, чем хочу заниматься дальше. Увидел, что Институт прикладной математики проводит конкурс на место научного сотрудника — и пошел туда работать, поступил в аспирантуру.

Там я занимался разработкой, 70% из которой занимала матфизика и только 30% — программирование. За 4 года такой работы я понял, что физики с меня хватит — мне интереснее рассматривать задачи с точки зрения математики и программирования. Поэтому начал искать учебные программы для разработчиков.

Точно не знал, хочу заниматься корпоративной или мобильной разработкой или уйти в геймдев. У меня были базовые знания в Python и Java. Я работал только с простыми задачами, которые можно решить любым процедурным языком. Опыт разработки на Фортране дал мне неплохую базу, но объектно-ориентированное программирование пришлось осваивать почти «с нуля». Но я хотел развиваться и писать полноценные проекты.

— Почему поступили именно в GeekUniversity и выбрали факультет Android-разработки?

— До определенного профессионального уровня я не мог придумывать задачи сам. Хотел, чтобы мне их ставили опытные специалисты.

На тот момент программа GeekUniversity только запускалась. Было открыто три направления: веб-разработка, Android и iOS. Факультет Android-разработки выбрал методом исключения. iOS мне был не очень интересен, так как сам не пользуюсь техникой Apple и не обладаю нужными базовыми знаниями. Веб-разработку не рассматривал, потому что на тот момент не знал ничего о HTML, CSS, JavaScript. А вот моих минимальных знаний по Java для поступления на факультет Android-разработки было достаточно.

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

— Какие впечатления об обучении в GeekUniversity?

— В целом, мне понравилось, как и в каком объеме нам давали материал. Были преподаватели и курсы, которым я до сих пор благодарен, а были темы, которые не особо запомнились и пригодились.

Понравился курс Алексея Степченко «Java 2». Он же показал, как писать игру под Android. На курсе «Java 3» преподаватель Николай Дмитриев подробно объяснил всю теорию, которая требуется на собеседованиях. Хочу отметить, что Николай лучше всех давал обратную связь по домашним заданиям — он обращал внимание не только на очевидные ошибки, но и расписывал замечания по стилю кода.

Из преподавателей по Android запомнился Станислав Хижняк — подробно и понятно объяснял нужные нам инструменты. С преподавателем первого курса по Android Александром Аникиным писали погодное приложение — он разложил «по полочкам» всю работу.

У меня были замечания к информации в методичках по некоторым курсам (иногда они были недостаточно согласованы с тем, что мы проходили) и к формулировке задач по курсовым проектам. Сообщил преподавателям — надеюсь, эти моменты доработают.

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

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

Александр Чебыкин уже полгода работает Java-разработчиком в компании «Сбербанк-технологии». До этого он писал код на Фортране, работал над диссертацией в Институте прикладной математики имени М. В. Келдыша РАН и успел закончить две четверти в GeekUniversity. Этих знаний хватило, чтобы успешно пройти собеседования в Сбертехе и получить сразу два интересных предложения работы.

— Чем вы сейчас занимаетесь?

— В Сбертехе я работаю Java-разработчиком в отделе эквайринга, в команде клиринга.

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

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

— Какие знания нужны, чтобы получить такой оффер?

— Если вы хотите писать backend корпоративных приложений, нужно хорошо разобраться в следующих темах:

  • Java SE (Collections, многопоточность);
  • Maven;
  • Git;
  • Linux OS;
  • Spring (IoC, DI) — от джуниора обычно ждут общего представления, что это и для каких задач используется. Но знание этого фреймворка будет большим преимуществом при трудоустройстве и в дальнейшей разработке.

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

  • Как устроены ArrayList и LinkedList? В чем разница?
  • Как устроены HashMap/HashSet?
  • Что такое Deadlock (с примерами)? Как его избежать? Как убедиться, что в запущенном приложении он случился?
  • Что вы знаете про жизненный цикл потока? Приведите схему перехода между состояниями;
  • Как бы вы проводили ревью кода другого разработчика?
  • Выполните умножение двух чисел, представленных строкой (пример):

— Как нашли эту работу?

— Она сама меня нашла. После первой четверти в GeekUniversity (факультет Android-разработки), когда достаточно изучил Java, я выложил резюме Java-разработчика на HeadHunter. Честно написал, что работал только с Фортран, что Java освоил самостоятельно и прохожу обучение.

Читайте также:  Станок для изготовления печатных плат своими руками

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

После трех–четырех собеседований у меня сложилось понимание, как отвечать. Я стал увереннее, но приостановил поиски. Решил уделять больше внимания учебе, пошел на стажировку по Java-разработке в GeekBrains.

Чуть позже сотрудники кадрового агентства, с которым работает Сбертех, увидели мое резюме на HeadHunter и предложили пройти два собеседования. Первое — с командой в отделе кредитов. Вопросы, которые мне задавали, мы хорошо изучили на курсе «Java 3». Второе собеседование, в отделе эквайринга, проводил руководитель направления. На следующий день рекрутер позвонил и сообщил, что мне готовы сделать оффер. Позже поступило предложение и из первого отдела.

— Были какие-то сложности в первые месяцы работы?

— Команда, в которую я пришел, работала над проектом уже больше года. Было сложно сразу во всем разобраться. Хочу сказать одногруппникам, которые жаловались на количество кода в наших учебных проектах (например, когда мы писали сетевой чат в первой четверти): «Это вовсе не много кода!». Там было от силы 3 модуля по 20 классов в каждом. На момент, когда я подключился к работе своей команды в Сбертехе, в нашем рабочем проекте было около 20 модулей и сотни классов. Поэтому первый месяц на реальном проекте был для меня непростым.

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

— Почему вы решили учиться программированию?

— Я закончил МИФИ, факультет теоретической и экспериментальной физики, по специальности «Прикладная математика и информатика». После вуза я полгода работал аналитиком в компании «Филип Моррис». Мне не нравились мои задачи: рутинная работа над статистикой и контроль того, как работают другие. На тот момент у меня не было четкого представления, чем хочу заниматься дальше. Увидел, что Институт прикладной математики проводит конкурс на место научного сотрудника — и пошел туда работать, поступил в аспирантуру.

Там я занимался разработкой, 70% из которой занимала матфизика и только 30% — программирование. За 4 года такой работы я понял, что физики с меня хватит — мне интереснее рассматривать задачи с точки зрения математики и программирования. Поэтому начал искать учебные программы для разработчиков.

Точно не знал, хочу заниматься корпоративной или мобильной разработкой или уйти в геймдев. У меня были базовые знания в Python и Java. Я работал только с простыми задачами, которые можно решить любым процедурным языком. Опыт разработки на Фортране дал мне неплохую базу, но объектно-ориентированное программирование пришлось осваивать почти «с нуля». Но я хотел развиваться и писать полноценные проекты.

— Почему поступили именно в GeekUniversity и выбрали факультет Android-разработки?

— До определенного профессионального уровня я не мог придумывать задачи сам. Хотел, чтобы мне их ставили опытные специалисты.

На тот момент программа GeekUniversity только запускалась. Было открыто три направления: веб-разработка, Android и iOS. Факультет Android-разработки выбрал методом исключения. iOS мне был не очень интересен, так как сам не пользуюсь техникой Apple и не обладаю нужными базовыми знаниями. Веб-разработку не рассматривал, потому что на тот момент не знал ничего о HTML, CSS, JavaScript. А вот моих минимальных знаний по Java для поступления на факультет Android-разработки было достаточно.

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

— Какие впечатления об обучении в GeekUniversity?

— В целом, мне понравилось, как и в каком объеме нам давали материал. Были преподаватели и курсы, которым я до сих пор благодарен, а были темы, которые не особо запомнились и пригодились.

Понравился курс Алексея Степченко «Java 2». Он же показал, как писать игру под Android. На курсе «Java 3» преподаватель Николай Дмитриев подробно объяснил всю теорию, которая требуется на собеседованиях. Хочу отметить, что Николай лучше всех давал обратную связь по домашним заданиям — он обращал внимание не только на очевидные ошибки, но и расписывал замечания по стилю кода.

Из преподавателей по Android запомнился Станислав Хижняк — подробно и понятно объяснял нужные нам инструменты. С преподавателем первого курса по Android Александром Аникиным писали погодное приложение — он разложил «по полочкам» всю работу.

У меня были замечания к информации в методичках по некоторым курсам (иногда они были недостаточно согласованы с тем, что мы проходили) и к формулировке задач по курсовым проектам. Сообщил преподавателям — надеюсь, эти моменты доработают.

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

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

Привет. Если Вы читаете данную статью то, скорее всего, у Вас возникал вопрос, как стать программистом. Возможно Вы даже решили изучить язык программирования Java, но не знаете с чего начать изучение. Осмелюсь также допустить, что многие задавали себе вопрос: Возможно ли выучить Java за 1 год? Что если я не учился на программиста в университете? У меня даже специальность не техническая. Смогу ли я? Сколько мне придется тратить времени на это занятие? Что придется учить? С чего начать обучение? Если у Вас возникал хотя бы один из перечисленных вопросов, то вы сейчас в правильном месте.

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

Мотивация

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

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

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

Как? – Как достигнуть значительных результатов за адекватные сроки.
Если на первый вопрос каждый должен ответить самостоятельно, то с последними двумя мы можем разобраться вместе.

Какой язык выбрать?

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

Думаю, пришло время подкрепить слова цифрами. По разным опросам среди пятерки лидеров находятся Java, JavaScript, C++, C и Python.

Примеры опросов Вы можете найти в изобилии в Интернете. Приведем только несколько из них:

К примеру, по версии сайта tiobe.com, регулярно публикующего рейтинг языков программирования, Java остается лидером уже который год. В пятерке также С++ и Python.

Другой авторитетный источник статистики, сайт Stackoverflow, проводивший опросы среди своих пользователей, говорит от том, что на первом месте JavaScript, в то время как Java находится на пятой строчке рейтинга. Но здесь в расчет брали так же языки разметки HTML и CSS.

Тут стоит учитывать тот факт, что многие Java-программисты в той или иной степени могут знать JavaScript. Среди JavaScript разработчиков меньше людей которые также знают и Java. Это прибавляет JavaScript несколько очков в предыдущем опросе.

Теперь давайте посмотрим на количество вакансий и откликов кандидатов по разным языкам. Для того чтобы не объяснять долго, приведу просто несколько ссылок. Например сайт DOU.ua регулярно публикует разного рода статистику по вакансиям, зарплатам и т.д. К примеру, Вы можете наблюдать интересные тренды роста количества вакансий по топовым языкам и тут же Вы можете использовать разного рода фильтры, которые покажут соотношение количества вакансий по разным городам и по разным языкам. Данные доступны как в табличном так и в графическом виде. Среди фаворитов здесь, как обычно, Java, Python, C++, .NET. При чем соотношение количества вакансий/откликов за 2018 год лучше всего у С++, 2-3 человека на место. К сожалению, мне не удалось найти похожую статистику по другим странам. Зато на Хабре есть хорошая статья с инфографикой конкретно по Java.

Читайте также:  Nfs most wanted не видно спидометра

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

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

Обзор Java-экосистемы

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

В центре вселенной, как обычно, у нас сам язык Java. Если сказать точнее, то Java Core. На момент написания данной статьи свет увидела Java JDK 10. Компания Oracle поменяла политику работы с версиями Java и сейчас уже нет такой огромной разницы между версиями, как это было при выходе, например, Java 8. Именно эта версия остаётся наиболее популярной и часто используемой в абсолютном большинстве компаний и проектов. Можно смело начинать изучать язык с этой версии, а новые фишки усваивать, накладывая их на знание основ. Изучение этой части, пожалуй, самое сложное задание для новичка. Приходится освоить новый род деятельности и начать думать по другому. На это все накладывается еще и большой объем материала который нужно усвоить. Большинство тех, кто только начинает бросают именно на этом этапе. Тут все зависит только от Вашей мотивации.

Если освоение языка Java проходит нормально, тогда Вам понадобятся еще и дополнительные инструменты, такие как система контроля версий (Version Control System) и система для сборки проектов. В качестве VCS рекомендую использовать Git, который является абсолютным лидером среди себе подобных. Все остальные системы, как например Subversion и Perforce уходят в прошлое. Плюс Вы можете использовать репозитории Github или GitLab, для Вашего кода, бесплатно. С большой долей вероятности в энтерпрайзе вы будете использовать BitBucket от Atlassian. Но это всего лишь оболочка. Если вы научитесь пользоваться Git, то все остальное будет не существенно. Компания Atlassian является так же поставщиком таких продуктов как Jira и Confluence, но для Вас на этапе учебы это роли не играет.

Что касается инструментов для сборки проектов, то тут есть два варианта: Maven и Gradle. По моему субъективному мнению Maven предпочтительнее, но у других разработчиков может быть свое мнение. В принципе оба фреймворка являются равноценными.

После того как Вы познакомились с вышеперечисленными вещами, стоит задуматься в какую сторону двигаться дальше. На рисунке выше Вы видите четыре основных направления движения: Front-End (HTML, CSS, JS), Back-End (Hibernate, Spring, SQL), Android и Big Data. Эти четыре части хоть и разделены на рисунке, но на самом деле довольно плотно связаны. Например, если Вы решили стать Full-Stack Java разработчиком, то Вам придется хорошо изучить Back-End часть и иметь общее понимание основ Front-End части. От Вас не должны ожидать что Вы будете заниматься версткой сайта, но знать HTML стоит. Также должен заметить, что в разделе Back-End под Spring подразумевается в первую очередь Spring Core. Именно с этой части фреймворка нужно начинать. Сейчас он уже разросся до такой степени, что покрывает все аспекты Java разработки. В качестве альтернативы, компания Oracle пытается продвигать Java EE спецификацию, но у них это не слишком хорошо получается.

Что касается BigData, то тут тоже довольно большой стек технологий. В основном все они рассчитаны на распределенное хранение и распределенную обработку данных с помощью подхода Map-Reduce. Самой древней и самой известной технологией здесь является Hadoop.

Думаю, что такое Android, объяснять не стоит. Скажу только, что для того чтобы писать приложения под эту мобильную платформу, придется выучить Java.

Как Вы могли заметить, областей применения Java довольно много, так что в обозримом будущем, выучив Java, без работы Вы не останетесь.

С чего начать? Что читать?

Очевидно что начинать нужно с основ, т.е. с Java Core. Потом Maven, Git, и дальше уже то направление, которое Вам больше по душе.

Здесь у Вас есть три возможных варианта. Ситуацию, когда Вы выбрали данную специальность в университете, мы не рассматриваем. Она все равно не исключает те варианты, которые описаны далее.

Вариант первый — книги по Java

Самый древний, традиционный и пока что наиболее проверенный способ. Преимущества: большинство книг от известных издательств написаны профессиональными авторами, у многих из которых за плечами десятки лет опыта разработки и преподавания в престижных западных ВУЗах. Также эти книги проверяются тщательно самими издательствами, так что вероятность ошибок очень мала. Особенно, когда одна и та же книга переиздается снова и снова по мере обновления языка. После прочтения базовых книг, придется переходить к более продвинутым. Мало где можно найти продвинутые темы по программированию рассмотренные с той же глубиной. Недостатки: многие книги написаны сухим академическим языком и походят больше на справочники. Знаменитый автор Кей Хорстманн сам неоднократно признавался, что читает подобные книги не полностью, а только те главы, которые помогают ему решить текущую проблему.

Среди наиболее популярных и лучших книг для новичков следующие (названия приведены на английском, в тех случаях, когда книга не была переведена на русский или перевод не был найден):

  1. Java How to Program — Пол Дейтел и Харви Дейтел. Эта книга пережила кучу переизданий и является, пожалуй, наиболее объемным руководством по Java. Кроме самого языка там еще довольно неплохо объясняются основы алгоритмов.
  2. Философия Java — Брюс Эккель — также заслужила почетное место в библиотеке программистов. Доступные и понятные объяснения. Хорошо подойдут для новичков.
  3. Head First Java, 2nd Edition — Bert Bates, Kathy Sierra — книга, ставшая популярной благодаря способности авторов объяснять сложные концепции на простых жизненных примерах. Не слишком глубокая по содержанию, но все таки интересная.
  4. Java. Библиотека профессионала. Том 1,2 — Кей Хорстманн. Эта книга-справочник тоже давно поселилась на полках многих Java разработчиков. Она как раз из разряда тех книг из которых читают отдельные главы для решения задач, а не книгу целиком.
  5. Java 8. Руководство для начинающих — Герберт Шилдт. Сам эту книгу не читал, но слышал несколько положительных отзывов. Читать или нет — решайте сами.
  6. Структуры данных и алгоритмы в Java — Роберт Лафоре. Одна из лучших книг по структурам данных.
  7. Java. Эффективное программирование — Джошуа Блох. Немного более продвинутая книга по Java. Содержит огромное количество советов и рекомендаций касательно того, как можно улучшить Ваш код. Недавно вышло 3-е издание данной книги. Настоятельно рекомендую к прочтению.
  8. Java Concurrency in Practice — Brian Goetz. – старое доброе руководство по многопоточности в Java, которое не выходит из моды.

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

Вариант второй — видеокурсы по программированию и не только.

Видеокурсы и разного рода видеоуроки сейчас стали набирать большую популярность. Сама идея очень хороша и мне лично нравится. Этот вид учебных материалов особенно хорошо подойдет визуалам, людям которые лучше всего воспринимают информацию зрительно. Дополнительно Вы также можете задействовать восприятие на слух. Одним из преимуществ является доступная цена. Кроме того, на YouTube Вы можете найти огромное количество бесплатных уроков, среди которых бывают и весьма неплохие. Среди недостатков уроков на YouTube, должен заметить частую разрозненность и несистематизированность, а также то, что материал в них изложен довольно поверхностно. Но даже тут есть исключения в хорошем смысле этого слова.

Альтернативой YouTube урокам могут быть такие площадки:
Safari O’Reilly — огромная коллекция книг, видеоуроков и вебинаров на разные темы. Качество материалов является серьезным преимуществом. Книги и видео тренинги записаны признанными профессионалами в области. Главный недостаток здесь — цена. 400$ в год если платить сразу или 480$ если платить помесячно. Все материалы здесь на английском языке. Если решитесь подписаться, рекомендую материалы подготовленные самим издательством O’Reilly, они обычно качественнее уроков других издательств.

Pluralsight — неплохая площадка для видеоуроков. Выбор материалов по темам большой, но они в основном более поверхностны чем в предыдущем случае. Все материалы здесь тоже на английском. Стоимость подписки 29$ в месяц, или 299 за год. Тут, как и в предыдущем случае, доступ к материалам есть пока платите за подписку. Нельзя просто купить один-два курса навсегда.

Udemy — большая библиотека разного рода курсов. Отличается тем, что курсы здесь не только на английском, но и на русском языках. Ценовая политика здесь совершенно отличается от предыдущих ресурсов. Здесь Вы можете купить курс и он останется у Вас навсегда. Выбирая курс на Udemy обращать внимание нужно на количество часов видеоуроков, качество звука (обычно доступно несколько лекций без регистрации), отзывы других слушателей. Тут я хочу порекомендовать курс «Java. От простого к сложному». По соотношению качества (количества часов) к цене это, пожалуй, самый выгодный курс на Udemy на русском языке. Переходя по ссылке вы получаете фиксированную цену со скидкой 90%. Всего 10 с небольшим долларов за 33 часа отменного видеоконтента. В процессе подготовки курса, автором было проанализировано большое количество курсов, книг и учебных материалов, а также был приложен семилетний опыт разработки приложений энтерпрайз уровня.

Вариант третий — очные курсы
Еще один вариант обучения, который может привести Вас к заветной цели. Тут все неоднозначно. С одной стороны, идя на очные курсы Вы ожидаете, что Вам покажут и расскажут все что нужно. С другой стороны, учиться придется все равно самому. Ни один преподаватель не сможет просто научить Вас, каким бы хорошим он не был. Здесь, как и во всех других местах, всё зависит от личной мотивации и собственной сообразительности. Так что говорю с уверенностью, от книг и видеоуроков никуда не деться. Преимуществом может быть то, что хороший преподаватель поможет Вам понять те вещи с которыми Вы не смогли разобраться самостоятельно и немного ускорить процесс обучения.

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

Читайте также:  Ssl сертификат joomla 3

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

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

Как практиковаться?

Практика это самый важный вопрос. Она предполагает не столько умение писать код, сколько умение делать это правильно. Многие говорят, что нужно контрибьютить в опенсорс проект или писать свой. Тут я должен Вас огорчить. Если Вы знаете не намного больше чем как написать Hello World программу, никто коммитить в опенсорс проект Вам не позволит. В этих проектах подход очень похож на подход к работе в компаниях. Там есть задания, выполнение каждого из них предполагает код ревю. Задача людей отвечающих за проект — фиксить баги, а не плодить новые.

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

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

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

В этот момент пора обзавестись репозиторием на GitHub или GitLab. У Вас должна быть там парочка нормальных проектов с юнит тестами, которые не стыдно показать работодателю. Попросите кого-нибудь из опытных друзей сделать код ревю. Это хорошая практика для опытных девелоперов, не только новичков. Если друга, знающего хорошо язык, который Вы изучаете, нет, наймите ментора на час или два. Если Вам скажут что все хорошо, стоит с подозрением отнестись к такому код ревью. Всегда есть место для дискуссии.

На таком уровне Вы уже скорее всего сможете контрибьютить в опенсорс. Если пока нет работы, практикуйтесь там. Вам опыт, обществу польза.

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

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

В мире около 10 млн. разработчиков на Java, и постоянно требуются новые специалисты. Это связано с популярностью языка программирования. Его востребованность еще долго не снизится. Более 3 млрд. устройств работают на софте, написанном на Джава, в том числе мобильные устройства на операционной системе Android.

Программисты Java востребованы, их труд хорошо оплачивается. Этот язык подойдет тем, кто имеет техническое образование, знает английский язык и хочет работать в корпоративном секторе удаленно или в офисе. Ниже мы расскажем об особенностях профессии Джава разработчика: как им стать, с чего начать новичку, сколько можно заработать и многое другое. Также в статье будут ссылки на бесплатные курсы и полезные книги для начинающих.

Java разработчик – кто это такой и что он делает?

Язык Джава (реже называют Ява) распространен в корпоративной среде. На нем пишут различное программное обеспечение, SAP-системы, облачные проекты, используют в области Big Data наравне с языком Python. Также Java программисты создают приложения в области AR/VR (виртуальной реальности), мобильные приложения для платформы Android, разрабатывают игры (например, на Java написан Minecraft) и даже ПО для беспилотного транспорта.

Область применения Java чрезвычайно широка, что позволяет разработчикам на этом языке быть востребованными во многих сферах.

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

Плюсы и минусы профессии

  • Высокие зарплаты.
  • Востребованность профессии.
  • Возможность работать по всему миру.

Возможность участвовать в разнообразных проектах.

    Чтобы стать Java разработчиком, желательно иметь техническое образование. Если у вас его нет, но есть желание работать в ИТ, рассмотрите профессию iOS-разработчика или Python-программиста. Эти направления проще освоить новичкам.

Необходимо знать английский язык для чтения документации.

Сколько зарабатывают программисты на Java?

Зарплата новичка, знающего язык Джава и владеющего минимальным набором других технологий, начинается от 50-70 тыс. рублей в месяц. Junior разработчики могут зарабатывать от 80-100 тыс. рублей в месяц. Чтобы ими стать, необходим опыт работы от 1 года.

По мере роста уровня знаний и опыта зарплата Ява программиста быстро увеличивается. Например, специалисты уровня Middle (опыт работы от 2 лет) могут зарабатывать от 120-140 тыс. рублей в месяц. Программисты на Java уровня Senior и Team-lead (руководители команд) обычно получают от 160-200 тыс. рублей в месяц, но чтобы ими стать, нужно многое уметь делать.

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

Что должен знать и уметь Java программист?

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

Базовые знания и навыки для Java программиста:

  1. Язык программирования Ява (синтаксис, команды, библиотеки, фреймворки).
  2. Знание принципов ООП (объектно-ориентированное программирование).
  3. Знание методологий разработки и их отличий (каскадная модель, гибкая разработка (Agile) и другие).
  4. Базы данных (MySQL и другие), уметь составлять SQL-запросы.

Умение работать с системами контроля версий Git.

Остальные знания и навыки зависят от сферы, где вы хотите работать. Например, для занятия веб-разработкой необходимо освоить язык разметки HTML, CSS, XML, Java Script, желательно знать PHP.

Как стать Java разработчиком?

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

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

2. Обучиться основам программирования на Джава можно по книгам. Среди книг на русском языке можно назвать следующие:

  • Java. Эффективное программирование (автор: Джошуа Блох). Одна из лучших книг по этой теме на русском языке.
  • Java. Новое поколение разработки (авторы: Бенджамин Эванс, Мартин Вербург)

Программирование на Java (авторы: Патрик Нимейер, Дэниэл Леук)

3. Чтобы стать Java разработчиком, можно пройти курсы на сайте Geekbtrains.ru. Курсы помогают быстрее освоить язык программирования с нуля и лучше в нем разобраться, получить базовую подготовку для начала работы. Также на курсах можно получить практику и некоторый опыт, связи и знакомства.

Как найти работу?

  1. Поскольку Java активно используется в корпоративной среде, важно сделать хорошее резюме. Можно нанять консультанта, который поможет его составить. Также рекомендую прочитать статью, как сделать резюме, чтобы выделиться.
  2. Просматривайте актуальные предложения на сайтах вакансий для разработчиков. Оценивайте уровень своих знаний и навыков и подтягивайте необходимые знания для получения работы.
  3. Активно ходите на собеседования. Если вам отказали, старайтесь узнать, каких навыков вам не хватило для получения работы и устранить пробелы в подготовке.
  4. Если вы начинающий разработчик, попробуйте устроиться на стажировку, попасть в стартап или небольшую компанию. Как правило, маленьким фирмам и стартапам сложно находить сотрудников и они охотнее берут новичков без опыта.
  5. Попробуйте зарегистрироваться на Hackerrank.com и выполнять там задания, набирая рейтинг. На этом сайте программисты демонстрируют свои способности, выполняя разные задания, а работодатели ищут толковых кандидатов.

Работайте над собственными проектами, которые могут привлечь внимание заказчиков или продемонстрировать ваши способности.

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

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

Adblock detector