Java широко используется для создания бекендов высоконагруженных систем, интеграционных процессов, микросервисов и прочего серверного кода, работающего под капотом программного обеспечения крупнейших корпораций. Многие банки, телеком-операторы и государственные системы (даже известные каждому Госуслуги) используют сервисы, написанные на Java.
Как научиться писать на Java?
Обучение можно логически разделить на два блока: концептуальные моменты и языковые конструкции.
К концептуальным моментам относятся:
- Как язык реализует принципы ООП.
- Как язык работает с разными типами и структурами данных.
- Как язык работает с памятью.
Эти ключевые принципы нужно постараться понять, поскольку они формируют мышление программиста. Они необходимы, чтобы правильно спроектировать соответствующее возможностям языка решение.
Языковые конструкции – это конкретные слова и их блоки, команды языка программирования. Основные языковые конструкции и синтаксис нужно запоминать, чтобы не терять много времени на их поиск. При этом все возможные вариации команд помнить не нужно, но такие программные блоки, как циклы, работу с массивами, операции со строками и датами нужно держать в памяти.
Исходные данные
Основным требованием к начинающему программисту Java является не космический IQ, а хорошая усидчивость, ведь для закрепления одной концепции нужны десятки повторов однообразных упражнений. Помните, как в школе на уроках иностранного языка вы учили слова по спискам? Здесь то же самое, только запомнить должны ваши руки.
Лучшим в плане обучения является метод пятой точки: сидеть на ней и кодить, пока не будут освоены основные разделы.
Стоит отметить, что Java в основном используется для программирования систем поддержки бизнеса, что существенно снижает требования по математической подготовке специалиста.
Что касается магической способности к написанию алгоритмов, которая часто проверяется на собеседованиях, то этот навык успешно тренируется институтами, а значит может быть освоен и самостоятельно. В ВУЗе студенты выполняют упражнения по алгоритмизации на бумаге. Эти упражнения со временем помогают крутить языковые конструкции в голове и составлять алгоритмы.
Впрочем, стоит разделять обучение программированию на каком-либо языке и обучение алгоритмизации. Эти навыки можно тренировать независимо.
Существенное подспорье – знание английского. Оно поможет сэкономить деньги, так как бесплатные материалы чаще представлены на английском. Однако на русском языке их тоже достаточно.
1. Самостоятельное обучение
Как учиться?
Для самостоятельного обучения необходимо и достаточно выполнить следующие шаги:
- Примерно представлять план.
- Найти материал для теории и практики.
- Установить постоянное время для занятий.
Планирование
Одной из самых сложных задач для новичка может оказаться определение границ изучаемого материала. Обучение должно иметь понятные рамки и результаты.
У Java есть владелец – корпорация Oracle. Она выпускает новые версии языка, а также проводит сертификацию разработчиков, в требованиях к которой четко определены темы, которые нужно изучить программисту.
Материалы
Эти темы подробно разъясняются в книге производителя «OCP Oracle Certified Professional Java SE 11 Developer Complete Study Guide», Jeanne Boyarsky,Scott Selikoff
Книга выпущена на английском языке, необходимый для чтения уровень владения им – примерно Intermediate. Более старые версии были переведены на русский язык, но ранее материал был разбит на два тома.
Если предыдущее издание покажется вам слишком сложным или скучным, можно начать с книги «Изучаем Java», Бэйтс Берт, Сьерра Кэти
Эта книга переведена на русский язык. Она не только учебная, но и развлекательная, правда есть одна проблема – материал немного устарел. Некоторые языковые конструкции актуальных версий Java в книге не охвачены, однако она поможет понять необходимые концепции когда не у кого спросить.
Курсы для самостоятельного прохождения
Для любителей просмотра видео есть недорогой курс Заура Трегулова «Java (Джава) для начинающих: с нуля до сертификата Oracle» на Udemy
Курс на русском языке. Автор последовательно проходится по базовым темам, необходимым любому джуниору.
Важно для тех, кто на Udemy впервые: курсы на этой платформе никогда не стоят дороже $10 – 15. Если купон на скидку автоматически не применился в корзине, поищите свежий на сайте Retail-me-Not или в другом агрегаторе купонов.
Практика
Читать книги и смотреть курсы недостаточно.
Программирование – практический навык. Вам нужно несколько раз повторить (придумать и напечатать) код, чтобы понять, как он работает. Для тренировки удобно использовать платформу Javarush. Здесь веселое объяснение теории с картинками в духе Футурамы дополняется сотнями упражнений для тренировки.
Обучение последовательное, организованное в виде квестов – тематических курсов. Проверка решений автоматическая. Вам нужно будет установить среду разработки и плагин для проверки задач. На сайте также опубликованы сотни статей в жанре «как это сделать». Для изучения основного джуниорского минимума нужно пройти Квесты Java Syntax и Java Core.
Стоимость без скидок – ₽1800 в месяц, но не спешите покупать подписку. Зарегистрируйтесь на сайте и начинайте смотреть бесплатные материалы. По праздникам платформа делает приятные скидки на годовые подписки, причем цена не особенно меняется последние пару лет.
Еще одним подспорьем в практике может стать англоязычный ресурс HackerRank. Платформа имеет большой бесплатный раздел с задачами на Java и других языках, которые организованы по нарастанию сложности. Английский нужен минимально, чтобы добраться до упражнений. Проверка решений задач автоматическая.
Длительность
Скорость обучения зависит от количества свободного времени, которое вы можете уделять процессу, однако вряд ли получится учиться больше 4 часов в день. Если заниматься без перерыва два-три часа, перестает «варить» голова, да еще, к тому же, иногда нужно «переспать» с проблемой, чтобы материал отложился.
Самый оптимистичный вариант самостоятельного изучения Java – полгода. Обычно обучение растягивается на срок от 6 месяцев до 1,5 лет.
Плюсы и минусы
Безусловным плюсом самостоятельного обучения является его дешевизна, а также возможность управлять своим временем: никто не требует от вас быть перед монитором по расписанию. Также самостоятельно выбирается темп обучения и количество повторов какой-либо из тем.
Минус у самостоятельного обучения довольно существенный – некого спросить. Иногда чтение разных ресурсов и выполнение задач не дает понимания, вот здесь бывает полезно обратиться к специалисту.
Задать вопрос можно на различных форумах, однако адекватный ответ не гарантирован. Также нужны серьезные усилия по самоорганизации, не у всех эта функция встроенная.
Я изучаю самостоятельно Java с перерывами около двух лет. Главная сложность для меня заключается не в самом языке (так как есть определенный бэкграунд), а в нехватке времени из-за основной работы и наличия семьи с маленьким детьми, а так же в невозможности постоянно поддерживать мотивацию на высоком уровне из-за отсутствия возможности практического применения полученных навыков. В то же время мне подходит именно самостоятельное изучение потому, что мне нравится находить ответы самостоятельно и иметь возможность спокойно и неспешно обдумывать концепции и задачи (в редкие свободные минуты).
2. Обучение с ментором
Как учиться?
Если вам требуется поддержка или вы хотите повысить интенсивность, обучение с ментором будет хорошим вариантом.
Важно отличать ментора от тренера. Ментор обычно не читает лекций. Наставник задает направление, помогает в решении конкретной задачи, разбирает затруднения, подсказывает материалы. Ожидается, что разбираться ученик будет в первую очередь сам, а уж если не вышло, тогда придет к ментору за помощью и дальнейшими рекомендациями.
Когда джуниор приходит на первую работу, его в лучшем случае ждет именно такой наставник.
В некоторых случаях ментор может быть и коучем-мотиватором, но этот формат не особенно популярен. Предполагается, что ученик достаточно мотивирован сам. Раздача волшебных пенделей – это уже из области психологии, а не программирования.
Планирование
Важно понимать, что планирование обучения в задачи ментора не входит. Вы можете попросить список тем, однако что и в каком темпе делать, решаете только вы. Наиболее эффективный формат: самостоятельное обучение в течение недели или двух, далее встреча с ментором для проверки заданий, разбора непонятных моментов и выбора источников. Ментор не будет вас подгонять, это не коуч, но если появляется чувство ответственности перед человеком, который дает задание, шансы на завершение обучения повышаются.
Материалы
Сейчас не нужно искать менторов по друзьям друзей и форумам программистов, для этого есть специальные платформы.
Консультант сайта https://solvery.io поможет выбрать ментора по запросу и ценовому диапазону. Есть бесплатная короткая встреча перед тем, как будет проведено первое занятие для определения целей. Далее ученик и ментор встречаются в zoom и ведут переписку в Telegram. Преподаватель может разъяснить конкретную тему, посмотреть код или составить полный план обучения языку.
Украинская платформа foxminded.ua также предоставляет Java-менторов. У ребят «человечный» инстаграм. Можно почитать там полезное и обсудить сомнения. Обучение идет по классической схеме, когда ментор направляет ученика, а не делает всю работу за него.
Стоимость часа работы ментора варьируется от ₽2000 до ₽4000, более дорогие варианты для обучения новичков уже нерациональны.
Длительность
Темп задает ученик, однако обучение с наставником может быть эффективнее за счет направлений от ментора, разобранных с ним задач и подсказанных материалов.
Ученик меньше блуждает, поскольку ментор обрисовывает ему путь.
Обучение обычно организовывается так, что ученик работает самостоятельно 1 – 2 недели над какой-то темой, а потом результаты разбираются с ментором и выбирается следующая тема. Некоторые менторы также проводят тренировочные собеседования, что помогает ученику скорее получить новую работу.
При всех улучшениях срок обучения – от полугода, так как материала меньше не становится.
Плюсы и минусы
Несомненным плюсом формата является поддержка специалиста. При затруднениях можно назначить встречу, обсудить проблему, не возникает подвисания на пару недель в поисках решения в интернете. Ментор рассказывает, как задача решается в рабочем режиме, а не в тренировочном. Те же задачи на Javarush зачастую решаются иначе.
Я обращалась к менторам дважды за последний год. В первый раз мне потребовалось решить новую для меня задачу. Не хотелось кодить «на коленке», а гугление не дало ответа, как эта задача решается в промышленном варианте. Ментор посоветовал мне литературу, показал на своем коде пример такого решения.
Второй раз я начала руководить командой, которая писала код на неизвестном мне фреймворке. Времени разбираться не было. Ментор рассказал в общих чертах о процессе разработки, стало понятно, что и как делается.
Создатель платформы foxminded.ua Сергей Немчинский подробно описывает процесс обучения с ментором на своем канале. Заодно Сергей рассказывает, когда менторинг «не сработает».
3. Обучение на курсах
Курсы программирования на Java сейчас доступны на всех популярных образовательных платформах. Некоторые из них менторскую поддержку, некоторые предназначены для самостоятельного обучения. Конечно, больший уровень поддержки ученика автоматом поднимает цену курса.
Бесплатные курсы
Многие бесплатные курсы по Java опубликованы в youtube. Их авторы, как правило, имеют платные, обновляемые варианты курсов на Udemy.
- Александр Чуев youtube канал follow the white rabbit. Курс записан в 2016 году, однако по нему вполне можно обучиться базе программирования. Некоторые разделы обновлены.
- Александр Петров, youtube канал Уроки Java. Курс записан в 2017 году, у автора множество курсов-продолжений на Udemy.
- Наиль Алишев, youtube канал alishev. Курс записывался в 2015 году, но периодически обновляется. Полная версия, как обычно, на Udemy.
Эти курсы позволят без вложения средств:
- понять, программирование – это ваше или нет.
- узнать, нравится ли вам программировать на Java.
- получить базовые знания, которые вы сможете развивать самостоятельно.
Более продвинутые версии бесплатных курсов есть на Stepik:
- Петр Михалевский «Легкий старт в Java. Вводный курс для чайников». Здесь есть и теоретические материалы и практические примеры.
К сожалению, курс довольно короткий, однако введение в программирование он дает хорошо (и бесплатно).
- Алексей Владыкин «Java. Базовый курс». Курс дает много информации даже сложного уровня, однако содержит мало примеров по сравнению с платными аналогами.
Недорогие курсы
Платформа Udemy лидирует по количеству вариантов и соотношению цена/качество. Курсы здесь представлены на русском и на английском языках.
Средняя цена курса $10 – 15. При входе на сайт отображаются полные цены, но в агрегаторах всегда есть купоны на скидки.
Рекомендации по авторам можно посмотреть в разделах Самообучение и Бесплатные курсы. Заодно можно заранее послушать авторов на их youtube-каналах и понять, подходит ли вам конкретный преподаватель.
Курсы по подпискам
На первый взгляд кажутся недорогими, но это может быть иллюзией.
Например, относительно недорогой курс «Введение в Java» представлен на hexlet.io, однако сайт предоставляет доступ по подписке, так что при неторопливом обучении накапает приличная сумма.
Для знающих английский язык уважаемые университеты мира ведут курсы по Java на Coursera.
Например, есть целая специализация «Java Programming and Software Engineering Fundamentals Specialization» от Duke University.
Модель оплаты также помесячная, да и Javarush не дешев, если растягивать удовольствие.
Крупные платформы
Каждая крупная образовательная платформа имеет курс по Java в своем портфолио. Как правило, «серьезные» курсы длятся около года, и в каждом будут доступны: план обучения, видеолекции, практические задания с проверкой, поддержка преподавателя и иногда live-встречи.
Содержание треков по Java, преимущественно соответствует базовому перечню тем, обозначенному вендором, но это не всегда можно сказать по опубликованной на сайте программе.
Для девушек
Прогресс не стоит на месте, и после курсов вождения специально для дам появились курсы программирования для девушек.
Пионером в сфере курсов Java для девушек выступает Programiss
Не очевидно, с чем это связано, так как Java может обучаться человек любого пола. Чтобы быть уверенным в своем выборе, можно запросить демо-доступ и ознакомиться с первыми уроками.
Как учиться?
Все, что от вас требуется – просматривать видео, делать домашнее задание и подключаться к live-встречам. Если не пропускать уроки, не останавливать обучение надолго и делать домашку, результат будет.
Поддержка преподавателя предоставляется на большинстве курсов верхнего ценового диапазона, для более дешевых доступны форумы.
Длительность
Большинство полных курсов по Java рассчитаны на год или около того. Иногда платформы разбивают курсы на меньшие блоки по 4-6 месяцев.
Плюсы и минусы
Безусловный плюс любого курса – спланированная программа. Впрочем, это же и минус: бесплатные курсы часто слишком короткие, а платные содержат материалы общего характера, которые могут быть вам не нужны.
Отзывы о различных образовательных платформах можно найти на сайте tutortop.ru
Основная проблема дорогих курсов – это добавление для пущей важности модулей, которые вам могут быть совершенно не нужны, типа HTML/CSS бекендеру или Английский для ИТ. С одной стороны, больше лучше, чем меньше, а с другой вас подкупают этим большим количеством часов и «весомостью» образования.
Стоимость обучения часто сравнима с получением второго высшего образования или магистратурой, однако документы дорогих платформ все еще не очень интересуют работодателя.
Я начала изучать Java самостоятельно, будучи в декрете, и используя в качестве источников информации книги, Youtube, бесплатные курсы и примеры задач и решений в сети. Спустя несколько месяцев я поняла, что упираюсь в собственный потолок, преодолеть который самостоятельно, без наставничества, мне трудно. В качестве дальнейшего шага я выбрала 4-месячные курсы от официального учебного заведения и не пожалела, поскольку это позволило мне глубже освоить базу, а также приступить к изучению фреймворков и тут же применить знания на практике в первом командном проекте. Полученные знания помогли обрести уверенность в себе и найти первую работу через 1,5 месяца после курсов.
Сравнительная таблица форматов
Самостоятельно | С ментором | Бесплатные курсы | Платные курсы | |
План обучения | Нет, его надо составить | Нет, но могут помочь составить | Есть | Есть |
Поддержка учителя | Нет | Есть | Нет | Есть у дорогих |
Практика | Есть, ученик ищет сам | Есть, дает ментор | Есть, но не всегда | Есть |
Собственный темп обучения | Да | Да, но надо учитывать график ментора | Да | Не всегда, есть живые встречи и ограничения доступа по времени |
Стоимость | ₽ | ₽₽ | - | ₽₽ – ₽₽₽ |
Полнота материала | Любая по выбору учащегося | Любая по выбору учащегося | Не все есть или что-то есть ограниченно. | Как правило, есть даже больше, чем нужно. |
Ваш вариант
Каждый выбирает наиболее удобный для себя формат и чаще всего это микс.
Например, можно пойти таким путем:
- Записаться на бесплатный интенсив любой платформы и узнать, что же это такое – Java-кодинг. Весь код будет писать тренер, так что можно запастись попкорном и пару часов посмотреть вебинар. Повторить код за тренером в формате интенсива сложновато или вообще невозможно.
- Если увиденное в целом вас не пугает, можно взять какой-то из бесплатных курсов и просматривать лекции, обязательно выполняя задания. Первые несколько дней это будет боль и страдание, ничего не будет работать, ничего не будет получаться, но, если прорветесь, дальше процесс пойдет легче.
- Если какая-то тема непонятна, можно обратиться к ментору, разобрать ее и двинуться дальше. Никто не обязывает вас ходить к ментору постоянно.
- После окончания бесплатных курсов приходит понимание, что требуется дальше: либо свободное плавание самообучения, либо петчворк из курсов разных платформ, либо курс гигантов интернет-образования.
В любом случае:
- Не надо учить язык абстрактно. Лучше найти пару вакансий с целевой работой и оттачивать навыки под них.
- Невозможно научиться программировать, просматривая записи даже самого прекрасного лектора без практики. Чтобы научиться кодить, нужно кодить (ваш Кэп Очевидность).
- Возможно, вы задаетесь вопросом, как программист из головы печатает код, не пользуясь Google. Все просто: работа требует многократного повторения одних и тех же конструкций. Руки помнят.
Я работал в разных сферах, долгое время работал с клиентами в банках, пробовал себя в продажах и интернет-маркетинге. При этом везде мне было интересно систематизировать процессы, упрощать и автоматизировать их. Например, сделать рассчет оборудования на сайте через калькулятор или ускорить процесс ежедневной финотчетности.
Хотелось больше логической работы. Так я увлекся программированием на Java, решил стать разработчиком, и за 11 месяцев у меня получилось это сделать.
Для меня самым действенным способом оказалась работа с ментором: задания на алгоритмы, внутренне устройство структур данных и написание тестов с последующим детальным ревью от ментора. Благодаря этому сложному, но очень продуктивному этапу, многие концепции стали гораздо понятнее. Кроме того, электронные курсы на javarush и stepik помогли втянуться на начальном этапе. Понятные статьи для начинающих с примерами есть на javarush и habr. На Youtube тоже много интересных материалов с конференций и видеолекций успешных разработчиков.
Также я считаю, мне повезло попасть на 3х-месячную стажировку, где под присмотром преподавателя мы поработали с самыми актуальными enterprise технологиями на тот момент. В настоящий момент я работаю в финтех секторе на позиции Middle-разработчика.
Комментарии