Как стать Java разработчиком — путь специалиста Leantech с нуля до уровня Middle

Привет! Меня зовут Дима, я Java-разработчик. Хочу рассказать как я пришел в профессию, вырос до мидла и перешел из госучреждений в аутсорс компанию по разработке приложений. Рассказ будет полезен джунам и тем, кто хочет изучать Java, но боится потратить время впустую.
Я стараюсь следить за трендами в разработке, чтобы знать какие технологии набирают популярность и не отставать от коллег. Так вот, судя по статистике от Github, Java до сих пор находится в топ-3 самых востребованных языков разработки, хоть и немного сдала позиции за последние пару лет. На первом месте JavaScript, а на втором Python.

Неудивительно, что сейчас многие выпускники и студенты-программисты думают о том, чтобы учить Java. Я этот путь уже прошел, поэтому решил помочь новичкам и рассказать про свой опыт.
Почему я решил стать программистом
Интерес к технологиям у меня был с детства — в 7-8 лет у меня появился плейстейшен, я много играл в игры и мне была интересна сфера IT. В школе мне нравилась математика, и в старших классах я подумал, почему бы не пойти учиться на программиста.
Я не очень хорошо сдал ЕГЭ, у меня было около 150 баллов, но на техническую специальность мне хватило. Сначала я хотел на информатику и вычислительную технику, но решил подать документы на все специальности, связанные с программной инженерией, чтобы наверняка попасть на программирование. В итоге я поступил в ОмГТУ АСОИУ — универ меня заинтересовал агитацией по разработке роботов, сайтов и стажировками в крупных компаниях.
Универ или самообучение?
Для меня главным приоритетом в учебе было получить профессию и стать хорошим специалистом. Я понимал, что для этого нужно много усилий и старался все курсовые и рефераты сдавать сам — это все равно дает какой-то опыт и развивает самостоятельность. У нас в группе была здоровая конкуренция, это тоже помогало нам развиваться.
Универ давал базовые знания, но я понимал, что этого недостаточно. Я старался самостоятельно учиться через YouTube, но в процессе понял, что лучше начать изучение с классических книг по языкам. Потом можно комбинировать с роликами на YouTube, чтобы закрепить информацию. Дело в том, большинство роликов основано именно на этих книгах, а авторы каналов часто пропускают важную информацию — с первоисточником можно заполнить эти пробелы.
Например, у студентов-программистов нет возможности посмотреть, как правильно писать код, все вставляют свои костыли. Преподы смотрят только на результат, а не на то, как реализован код. Чтобы самому разобраться как писать хороший код, можно сначала посмотреть реализацию в книге, потом посмотреть гайды на YouTube и совместить.
Лучше всего смотреть разные источники информации, черпать знания отовсюду — учеба, книги, статьи и видео экспертов, потом все это пробовать на практике.
Вот мой топ книг и каналов для обучения для Java-разработчиков:
Как новичку выбрать язык?
Я не сразу определился, на каком языке хочу писать, поэтому пробовал себя в разных направлениях. Попробовал верстку, PHP, изучил базовый синтаксис C++, и понял, что это все не мое. На втором курсе я начал изучать Java и меня зацепило. У джавы простой синтаксис, она легкая для понимания, выражения мыслей и реализации кода. Если вы не знаете, с чего начать, можно попробовать языки разметки HTML и CSS, потом потестить JavaScript, посмотреть приятно ли на нем писать. Тут нет универсальной формулы, все делается методом проб и ошибок.
Кроме того, нужно опираться на рынок труда в вашем городе. Посмотрите, какие языки и технологии используют компании, куда вы хотели бы попасть, и какие языки вообще востребованы. Попробуйте поизучать их, но если синтаксис не нравится, не нужно себя мучать — лучше переключиться на другой язык. Я с первого курса интересовался компаниями, чтобы выбрать, где проходить практику. Когда я пробовал C++, я посмотрел рынок и оказалось, что тогда язык был не актуальным, это тоже повлияло на меня и я решил сменить направление.

Что делать если после стажировок и тестовых не берут на работу?
Первая моя стажировка была в IT компании и прошла она не очень успешно. Я пришел туда с однокурсниками, нам дали проект — нужно было сделать систему опроса сотрудников на Java. Я не понимал, как это сделать, не знал многих функций и инструментов. Уже на половине практики я понял, что не вытягиваю, для меня это был полный фейл. А друг, с которым я практиковался, знал хорошо и начал делать большую часть работы. В итоге этот провал меня мотивировал совершенствоваться и начать изучать Java глубже. Я читал книжки, смотрел ютуб и понял, что я знаю только базовый синтаксис языка, а там есть еще фреймворки, библиотеки для работы с сетью, форматами передачи данных и т.д.
На второй стажировке я познакомился с паттернами проектирования на Java и научился правильно верстать страницы по макету. Было очень сложно, но очень интересно. Я не пропустил ни одного занятия и не жалею, потому что после этой стажировки у меня остались очень хорошие знания и навыки.
Начинающим разработчикам я советую искать как можно больше стажировок, выполнять все тестовые задания. Даже если по итогу вам откажут в работе, то знания и навыки у вас останутся. Вас научат правильно писать код, покажут нужные инструменты и как ими пользоваться, будут давать реальные задачи и полезный фидбэк. Вы сможете изучить все процессы изнутри и с каждой стажировкой вам будет легче.
Если вы учитесь или работаете, вы все равно можете пойти стажироваться. Помните, что работодатели тоже люди и обо всем можно договориться. Можно, например, попросить дать больше времени на задачу. На стажировках и при выполнении тестовых не стесняйтесь задавать вопросы, даже самые дурацкие — главное разобраться в задании. У меня была ситуация, когда в тестовом было 4 задачи, я сделал две и остальные не понимал из-за ТЗ. Я спросил как это делать, и мне все объяснили, в итоге с задачами я справился.
Многие переживают, что им нечего писать в резюме, так как нет опыта. Напишите, какие курсы и стажировки вы проходили, может быть вы ходили на воркшопы или выполняли тестовые задания — подойдет любой релевантный опыт. Также пишите сопроводительные письма к откликам, HR-ы их читают и они на самом деле даже важнее резюме. Большинство кандидатов просто откликаются на вакансии, поэтому сопроводительное письмо будет вашим преимуществом. В письме можно написать, почему вы хотите работать в этой компании и чем вы будете им полезны.


Как я вырос до Middle и попал в крутую аутсорс компанию
На третьем курсе я искал работу, ходил по собеседованиям, ориентировался на Java и базы данных. Я хорошо оформил резюме, но работу удалось найти только к концу четвертого курса — в областной клинической больнице. Там я работал с Oracle и базами данных. Самыми крупными проектами там для меня были система электронных заявок на тех.поддержку и командная разработка онкологической карточки пациента, также мне очень нравилось решать баги в отчетах. В государственных учреждениях особо развития нет, поэтому я начал искать коммерческие компании.
Потом я перешел в единую службу такси (EST) на специалиста по базам данных, также под Oracle. У меня это хорошо получалось, но все равно хотел перейти в Java разработчика. Компании нужно было реализовать один проект на Java, у них не было джавистов и предложили мне это сделать. Я испугался, потому что не представлял как без наставника самому реализовать проект — там была огромная кодовая база, а у меня не было коммерческого опыта с Java, только учебные проекты. Сначала я отказался, но в итоге меня убедили, что все получится и команда будет поддерживать на новой позиции. Первую неделю я изучал ту часть кода, с которой мне предстояло работать, потом мне стали прилетать задачи от мобильного подразделения. В целом, все оказалось не так страшно, как я думал сначала.
Моей основной мотивацией в основном были даже не деньги, а развитие, я мечтал стать Java разработчиком. В EST были отличные инженеры и мне было с кем обмениваться опытом, но компания не выдержала конкуренции с крупными агрегаторами и у них начались финансовые трудности. Тогда мне написали из Leantech и в 2020 году я пришел туда одним из первых джавистов. Это мой первый опыт в аутсорсе, и я могу сказать, что там развития гораздо больше, чем в продуктовых компаниях. Продуктовые компании хоть и развиваются, но у них может быть устаревший стек и база. А в аутсорс компании есть возможность поработать с разными технологиями и улучшить свои знания. Плюс это возможность работать в команде с разными людьми, а обмен знаниями и опытом это самое важное.
Для меня каждый проект в Leantech становится толчком для развития. Например, у меня была возможность позаниматься небольшим pet-проектом по выгрузке данных из Jira — там я предложил использовать Spark, так как хотел поработать с этим инструментом. В аутсорс компаниях ты можешь предлагать новые инструменты и технологии, а не только пользоваться основным стеком компании — даже если в итоге инструмент не подойдет для задачи.
У меня есть наставники, но я также стараюсь решать задачи самостоятельно и отстаивать свою точку зрения на ревью кода. Сейчас я себя оцениваю как мидл плюс и развиваюсь дальше, компания это приветствует и предоставляет нужные ресурсы.
Подписывайтесь на Leantech в ВК, там мы делимся знаниями, полезными штуками для разработчиков и новостями IT-индустрии. Также в группе можно следить за актуальными вакансиями.
Как стать Java-программистом с нуля?


Артур Куприянов Эксперт в Java, Spring Boot.
Java стабильно входит в тройку самых популярных языков по индексу TIOBE и нужен везде: от популярных игр до финансового сектора, от смартфонов до серверов крупных компаний. Вместе с Java-разработчиком Артуром Куприяновым разобрались, что нужно знать и уметь, чтобы начать программировать на нем.
Немного о языке Java
Java появился в 1995 году благодаря инженерам компании Sun Microsystems и, в частности, Джеймсу Гослингу. Инженеры разработали его как язык программирования для управления бытовой и домашней техникой. Но в итоге язык оказался нужен всем.
Для чего нужен Java?
Любая программа на смартфоне или компьютере состоит из двух частей: frontend и backend. Чтобы лучше понять, что это такое, представьте, что программа — это автомобиль.

Освойте профессию «Java-разработчик»
Java-разработчик
Java уже 20 лет в мировом топе языков программирования. На нем создают сложные финансовые сервисы, стриминги и маркетплейсы. Освойте технологии, которые нужны для backend-разработки, за 14 месяцев.

Профессия / 14 месяцев
Java-разработчик
Освойте востребованный язык
3 933 ₽/мес 7 150 ₽/мес

Frontend — это все, что вы видите перед креслом водителя: руль, кнопки, рычаги, стрелки приборов. Backend — это все то, что находится под капотом и на самом деле заставляет автомобиль двигаться. Java — это язык backend-разработки, на котором собирают «двигатель» приложения, чтобы он был мощным, надежным, безопасным, быстрым, универсальным и просто красивым. Java используют системы с тысячами пользователей. Вот только несколько примеров: Финансовая сфера и банки — Сбер, Тинькофф, Альфабанк. Социальные сети — Twitter, LinkedIn, Одноклассники. Маркетплейсы — Ozon, Яндекс.Маркет, Amazon. Онлайн-кинотеатры и видеохостинги — YouTube, Кинопоиск, Netflix. Игры — Minecraft, Assasin’s Creed, The Sims 3 (мобильная версия). Android-приложения — WhatsApp, Telegram, Viber. Другие быстрорастущие компании, например Apple, Microsoft, Google, также используют Java, Читайте также: Кому и зачем нужен Java Одна из причин популярности языка — кроссплатформенность: программы на Java одинаково хорошо работают на разных устройствах. Это выгодно для бизнеса: во-первых, стоимость разработки ниже; во-вторых, чем больше устройств, на которые можно установить ПО, тем больше его аудитория.

Станьте Java-разработчиком
и создавайте сложные сервисы
на востребованном языке
Кто такой Java-программист?
- Проверил, есть ли в Telegram такой функционал.
- Нашел несколько библиотек, посмотрел документацию по ним и, сравнив, подключил одну через Maven — фреймворк для автоматизации сборки проектов.
- Создал тестового бота и попробовал сделать простой пример, который показывал, как работает Inline Keyboard.
- Начал продумывать архитектуру приложения: выделил модули, создал пакеты.
- Выбрал стиль разработки.
- Реализовал бота в соответствии с задачей.
Как стать Java-разработчиком?
Как и в случае с почти любой IT-профессией, стать программистом на Java с нуля можно либо самостоятельно, изучая открытые ресурсы, либо на курсах. В первом случае придется много гуглить и собирать большую часть материалов для изучения самостоятельно. Во втором вас будет сопровождать команда опытных преподавателей и менторов.
На курсе SkillFactory «Java-разработчик» вы за 14 месяцев освоите профессию с нуля до уровня junior+. Для этого вам необязательно будет жертвовать основной работой или учебой, достаточно будет посвящать курсу 10−12 часов в неделю.
У курса есть ряд преимуществ, которые позволят вам не только успешно пройти обучение, но и получить работу:
- Актуальная программа, составленная экспертами на основе вакансий разных компаний, чтобы вы точно были востребованы на рынке.
- Индивидуальная поддержка — личные созвоны с ментором (экспертом-консультантом) для обсуждения всех вопросов, и даже когда вы не знаете, как задать вопрос.
- Постоянная поддержка ментора — в любой момент можно написать в чат и получить помощь.
- 20% теории, 80% практики — 20+ тренажеров и заданий каждую неделю помогают развивать навыки программирования.
- Уже через 7 месяцев вы станете junior-специалистом — сможете откликаться на вакансии, Карьерный центр проведет консультацию, а ментор — даст советы по прохождению собеседований.
Как изучить Java самостоятельно?
Шаг 1
Лучше всего начать изучение с синтаксиса, а уже потом освоить основы объектно-ориентированного программирования, не обязательно в контексте Java. Разберитесь в типах данных и операторах. Попробуйте создать простые Java-объекты с разными вариантами поведения.
Шаг 2
Разобравшись с основными понятиями, установите программное обеспечение для кодинга и запуска программ — JDK (Java Development Kit).
Исходный код пишется в текстовом формате. Скачайте и установите одну из IDE (Integrated Development Environment) — это среда для разработки программного обеспечения (интерфейс, в котором пишут код).
Самая популярная среда — IntelliJ IDEA. Это удобный инструмент с подсказками, возможностью проверки и отладки кода, удобной интеграцией с базой данных и серверами. Подробная документация о классах и инструментах языка доступна на сайте Oracle.
Шаг 3
Научитесь работать с базами данных. Для этого нужно освоить систему управления базами данных (СУБД), например SQL. Посмотрите, как действуют операторы и функции, научитесь манипулировать структурой таблиц и писать сложные запросы.
Шаг 4
Спроектируйте первое приложение. Разберитесь в принципах построения архитектуры, научитесь проектировать. Освойте фреймворки (готовые программные продукты, которые упрощают создание и поддержку проектов) для создания веб-проектов, например Spring.
Полезные ссылки
Книги:
- Java How to Program П. Дейтел и Х. Дейтел.
- «Изучаем Java» К. Сьерра и Б. Бейтс.
- «Java 8. Руководство для начинающих» Г. Шилдт.
- Java. Эффективное программирование — Дж. Блох.
- Java. Библиотека профессионала — К. Хорстманн.
Можно посмотреть бесплатные курсы на Stepik или вебинары. Видеоуроки по Java есть на YouTube — например, канал Java Brains (если у вас хорошо с английским). На канале «Уроки Java» размещено около 300 бесплатных видеоуроков, а на «Онлайн уроки по Java» можно, среди прочего, найти курсы для тестировщиков.
Много информации о том, как начать кодить на Java, есть в хабе Java на Хабре. Полезно прокачивать свои навыки и участвуя в хакатонах. Узнавать о митапах и конференциях по Java можно на сайте jugru — это сайт российского сообщества Java-разработчиков. Вопросы по митапам можно задать в их Telegram-канале.
Практические навыки
- Лучший способ получить навык программирования — писать проекты. Начните с простых программ, которые увидите в книгах или видео. Затем попробуйте их немного модифицировать и усложнить.
- Создайте собственное приложение. Параллельно стоит практиковаться выполнять задачи и писать код на ресурсах для программистов, например HackerRank. Работодатели часто начинают процесс поиска разработчиков именно на таких платформах.
- Заведите аккаунт на GitHub или GitLab, выложите туда код, который готовы показать другим программистам и будущим работодателям.
Чтобы перейти из джуниоров в мидлы, разработчику важно работать с паттернами (шаблонами), и определять качество кода. Научитесь думать архитектурно, выделять модули и правильно проектировать зависимости. Учтите, что требования к мидл-разработчикам могут сильно отличаться в разных компаниях.
Чтобы перейти на более высокий уровень, джуниору может понадобиться от года до двух лет работы — в зависимости от того, сколько сил он вкладывает в учебу.
Как искать работу?
Чтобы стать Java-разработчиком уровня junior, мы советуем написать небольшой, но коммерческий проект, даже с минимальным количеством активных пользователей. Страница на GitHub с кодом ваших проектов также будет плюсом и поможет компаниям лучше понять ваш уровень владения языком.

Не стоит бояться откликаться на вакансии, даже если вы чего-то не знаете, — предложений на рынке достаточно и многие ищут junior-разработчиков. На момент написания статьи на сайте hh.ru было 3445 вакансий по запросу «Java-разработчик».
Вакансии для Java-специалистов размещают и на других крупных сервисах поиска работы: SuperJob, Работа.ру — и на специализированных сервисах, например «Хабр Карьера».
Попробовать свои силы и набрать портфолио можно на биржах фриланса — например, на русской Freelance.ru или американской Upwork или Guru. Кроме того, поискать вакансии или стажировки можно в Telegram-каналах, например, Фриланс Таверна, Jobs Code: IT вакансии, Finder.vc.
Во время и после прохождения курса «Java-разработчик» вы будете пользоваться поддержкой карьерного центра. Наши специалисты помогут вам оформить резюме, откликнуться на вакансии и пройти собеседования.
Востребованность и зарплата
Разработчики, владеющие Java, востребованы уже сейчас. Специалистов, пишущих на этом языке код, не хватает, из-за чего работодатели готовы предложить им большую зарплату и лучшие условия. Число запросов, связанных с Java, в Яндексе колеблется в районе одного миллиона в месяц. Вот еще несколько фактов, которые показывают востребованность профессии:
- Медианная зарплата по данным за 2020 год — 140 тыс. рублей («Хабр Карьера»).
- Java-разработчики входят в топ самых востребованных IT-профессий на удаленке (CNews).
- Работодатели в Москве готовы предложить программисту со знанием Java до 350 тыс. рублей в месяц (Superjob).
- Работодатели в России ищут свыше 10 тысяч программистов с разным уровнем владения Java (hh.ru).
- 59% опрошенных HR-менеджеров сталкиваются с нехваткой специалистов на Java (CodingGame:).
Как стать программистом Java
Привет. Если Вы читаете данную статью то, скорее всего, у Вас возникал вопрос, как стать программистом. Возможно Вы даже решили изучить язык программирования 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.
В общем, нужно выбирать один из топовых языков и тогда на момент окончания обучения у Вас будет хороший шанс найти работу.
По моему скромному мнению, хороший вариант для начала карьеры — 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
Самый древний, традиционный и пока что наиболее проверенный способ. Преимущества: большинство книг от известных издательств написаны профессиональными авторами, у многих из которых за плечами десятки лет опыта разработки и преподавания в престижных западных ВУЗах. Также эти книги проверяются тщательно самими издательствами, так что вероятность ошибок очень мала. Особенно, когда одна и та же книга переиздается снова и снова по мере обновления языка. После прочтения базовых книг, придется переходить к более продвинутым. Мало где можно найти продвинутые темы по программированию рассмотренные с той же глубиной. Недостатки: многие книги написаны сухим академическим языком и походят больше на справочники. Знаменитый автор Кей Хорстманн сам неоднократно признавался, что читает подобные книги не полностью, а только те главы, которые помогают ему решить текущую проблему.
Среди наиболее популярных и лучших книг для новичков следующие (названия приведены на английском, в тех случаях, когда книга не была переведена на русский или перевод не был найден):
- Java How to Program — Пол Дейтел и Харви Дейтел. Эта книга пережила кучу переизданий и является, пожалуй, наиболее объемным руководством по Java. Кроме самого языка там еще довольно неплохо объясняются основы алгоритмов.
- Философия Java — Брюс Эккель — также заслужила почетное место в библиотеке программистов. Доступные и понятные объяснения. Хорошо подойдут для новичков.
- Head First Java, 2nd Edition — Bert Bates, Kathy Sierra — книга, ставшая популярной благодаря способности авторов объяснять сложные концепции на простых жизненных примерах. Не слишком глубокая по содержанию, но все таки интересная.
- Java. Библиотека профессионала. Том 1,2 — Кей Хорстманн. Эта книга-справочник тоже давно поселилась на полках многих Java разработчиков. Она как раз из разряда тех книг из которых читают отдельные главы для решения задач, а не книгу целиком.
- Java 8. Руководство для начинающих — Герберт Шилдт. Сам эту книгу не читал, но слышал несколько положительных отзывов. Читать или нет — решайте сами.
- Структуры данных и алгоритмы в Java — Роберт Лафоре. Одна из лучших книг по структурам данных.
- Java. Эффективное программирование — Джошуа Блох. Немного более продвинутая книга по Java. Содержит огромное количество советов и рекомендаций касательно того, как можно улучшить Ваш код. Недавно вышло 3-е издание данной книги. Настоятельно рекомендую к прочтению.
- 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 часа отменного видеоконтента. В процессе подготовки курса, автором было проанализировано большое количество курсов, книг и учебных материалов, а также был приложен семилетний опыт разработки приложений энтерпрайз уровня.
Вариант третий — очные курсы
Еще один вариант обучения, который может привести Вас к заветной цели. Тут все неоднозначно. С одной стороны, идя на очные курсы Вы ожидаете, что Вам покажут и расскажут все что нужно. С другой стороны, учиться придется все равно самому. Ни один преподаватель не сможет просто научить Вас, каким бы хорошим он не был. Здесь, как и во всех других местах, всё зависит от личной мотивации и собственной сообразительности. Так что говорю с уверенностью, от книг и видеоуроков никуда не деться. Преимуществом может быть то, что хороший преподаватель поможет Вам понять те вещи с которыми Вы не смогли разобраться самостоятельно и немного ускорить процесс обучения.
Тут, как и в случае с видеокурсами, нужно тщательно подходить к выбору. Так же как в других сферах, спрос здесь рождает предложение и вполне ожидаемо, что на рынке будет много некачественных очных курсов. Причины плохого качества бывают разные и не всегда причина в преподавателе. Частой проблемой есть то, что в целях увеличения дохода школы-курсы набирают слишком большое количество студентов, и даже самый лучший тренер не сможет уделить достаточно времени каждому студенту. Чем больше группа тем более разного уровня будут студенты в группе. В конце концов группа делится на более сильных и слабых. В конечном итоге Вы или топчитесь на месте, потому что преподаватель должен объяснять одно и то же по несколько раз или если большая часть группы имеет больше опыта чем у Вас, Вы начинаете безнадежно отставать. Через короткое время теряется интерес и становится понятно, что деньги потрачены зря. Выбирая курсы, обратите внимание на отзывы тех, кто уже окончил курсы, на количество часов курса, сколько людей в группе. Важным показателем служит наличие входного тестирования и описание минимальных требований.
Какой вариант выбрать?
Тут у каждого должен быть свой оптимальный вариант. По мнению автора, наилучший вариант это сочетание всех трех вариантов в той или иной степени. Однозначно без книг обойтись не получится. Если Вы решаете пойти на очные курсы по программированию, то прежде всего нужно понять подходит ли Вам это занятие вообще. Если да, тогда перед тем как туда идти, прочитайте хотя бы одну книгу, посмотрите парочку видеоуроков. Во-первых, Вы будете четко понимать Ваше это или нет. Во-вторых, имея минимальную базу, Вы сможете ставить правильные вопросы и в итоге возьмете из курса максимум. В-третьих, Вы сможете пойти на курс, где от студента требуют немного больше чем базовые компьютерные навыки.
После того как у Вас наберется минимальный набор знаний, хорошо бы найти ментора. Удовольствие это недешевое, но если ментор хороший, то он сэкономит Вам кучу времени. Помните, ментор — это не человек который Вам все разжевывает, это тот, к кому Вы приходите за советом, с конкретными вопросами, тогда, когда сами не нашли ответ.
Как практиковаться?
Практика это самый важный вопрос. Она предполагает не столько умение писать код, сколько умение делать это правильно. Многие говорят, что нужно контрибьютить в опенсорс проект или писать свой. Тут я должен Вас огорчить. Если Вы знаете не намного больше чем как написать Hello World программу, никто коммитить в опенсорс проект Вам не позволит. В этих проектах подход очень похож на подход к работе в компаниях. Там есть задания, выполнение каждого из них предполагает код ревю. Задача людей отвечающих за проект — фиксить баги, а не плодить новые.
Начать нужно с малого. Сначала Вы научитесь писать программы, которые видите в книгах или видеоуроках так чтобы они просто работали. Попробуете их немного модифицировать. Потом переходите к заданиям в той же книге. Они помогут Вам не только научится быстро и без ошибок набирать программы, но и думать по другому.
Следующий этап — начинайте писать свой маленький проект. Он должен решать практическую задачу, пускай даже маленькую. В процессе обучения Вы будете изучать новый материал, алгоритмы и шаблоны проектирования. Все это должно найти применение в Вашем проекте. Не получается применить здесь, начните новый проект.
Параллельно стоит практиковаться выполнять задания на ресурсах типа hackerrank. Вы можете не только попрактиковаться писать код, но и понять механику работы платформы. Все больше компаний начинают процесс найма сотрудников с заданий на этом сайте и ему подобных.
В этот момент пора обзавестись репозиторием на GitHub или GitLab. У Вас должна быть там парочка нормальных проектов с юнит тестами, которые не стыдно показать работодателю. Попросите кого-нибудь из опытных друзей сделать код ревю. Это хорошая практика для опытных девелоперов, не только новичков. Если друга, знающего хорошо язык, который Вы изучаете, нет, наймите ментора на час или два. Если Вам скажут что все хорошо, стоит с подозрением отнестись к такому код ревью. Всегда есть место для дискуссии.
На таком уровне Вы уже скорее всего сможете контрибьютить в опенсорс. Если пока нет работы, практикуйтесь там. Вам опыт, обществу польза.
Параллельно с репозиторием пора готовить резюме и начинать оббивать пороги компаний. Не забудьте указать ссылки на проекты в своем репозитории. Проходите как можно больше собеседований. Умение их проходить — очень важный скил, который принесет Вам в итоге дополнительный доход.
В заключение хочу пожелать Вам удачи. Помните, Facebook и Apple тоже когда-то были маленькими компаниями у кого-то в гараже или в общаге. Просто нужно учится. Не настолько важно сколько часов в день Вы учитесь, как то, сколько дней подряд вы это делаете.
- Java
- образование
- самообразование
- книги по Java
- учебные материалы
- Как стать программистом
Программист Java

Программист Java (Java Developer) создает приложения разной сложности, используя один из самых распространенных языков программирования «Джава» (Java). Он не только пишет программный код, но и занимается внедрением, тестированием, русификацией программ, модификацией кода. Кстати, недавно центр профориентации ПрофГид разработал точный тест на профориентацию, который сам расскажет, какие профессии вам подходят, даст заключение о вашем типе личности и интеллекте. Профессия подходит тем, кого интересует информатика (см. выбор профессии по интересу к школьным предметам).
Краткое описание
Язык программирования Java профессиональному сообществу представила компания Sun Microsystems в 1995 году. Сегодня его используют более 9 млн разработчиков. На этом языке написаны:
Как узнать, подходит ли вам профессия «Программист Java»?

- веб-сайты;
- приложения для «Андроид»;
- клиент-серверные приложения;
- видеоигры и многие другие продукты разной сложности.
На текущий момент львиная доля продуктов, которые разрабатываются на Java, – это enterprise-решения для больших и мелких компаний. Это всегда бэкенд-часть, которая необходима для вычисления и хранения каких-либо данных, а также для их обработки и передачи по запросу либо на фронтенд, если, допустим, это какой-то сайт, либо в другие системы. Видеоигры программисты на Джаве пишут сейчас, только если мы говорим про Android, ну и, конечно, же Minecraft. Самый большой плюс Java – это его кроссплатформенность, т. е. продукты, которые были написаны на Java, могут быть запущены на любой операционной системе без перекомпиляции и адаптации к каждой операционной системе (в отличии от того же C++).