Как выучить Java с нуля. Книги, видеоуроки и технологии
Усі статті, обговорення, новини для початківців — в одному місці. Підписуйтеся на телеграм-канал!
Привет всем. Меня зовут Виктор. Я работаю в американской продуктовой компании инженером, где пишу в том числе и на Java. В своей статье «Как пройти плен, не сломаться и стать программистом» я вскользь коснулся темы, как я начинал учить программирование, здесь я расскажу об этом подробнее.
С 27 Февраля 2022 года я служу капеланом от ГО.
Про все, с чем я сталкиваюсь на фронте, включаючи обстрели та боевую работу, я пишу в свой tg-канал — Gideon_IT. Посетите. Если не понравится контент — отпишитесь.
Эта статья в первую очередь для тех, кто только собирается начать заниматься программированием. Будет круто, если мои коллеги-программисты в комментариях добавят что-то из своего опыта. Мое мнение сугубо субъективное, так как большую часть учил я сам, по видеоурокам и книгам.
Как научиться программировать
Каждый из вас должен понять, что программирование — это такой же вид деятельности (ремесло), которому не любой, но многие могут обучиться, имея достаточное количество ума и времени.
Большую часть этого времени обязательно должна занимать практика. Кодить, кодить и еще раз кодить. Забудьте об Instagram, TikTok, играх и видосиках на YouTube на то время, пока будете учить программирование. Без тайм-менеджмента тут никуда. Если у вас есть с этим проблемы, почитайте эту статью, где я поделился, как с этим бороться.
Не верьте тем курсам, которые обещают вас обучить Java и устроить работать за 3 месяца. Это принципиально невозможно, если у вас уже нет базовых знаний. На курсы, которые прошел я, и о которых расскажу ниже, был конкурс — 15 человек на место. Там было 4 этапа! Все поступившие туда студенты уже знали Java Core на нормальном уровне.
Работая с любым языком программирования, потребуется знать еще кучу «около»-технологий, а также английский. В наше время зачастую годы коммерческого опыта и уровень английского прямо коррелируют с количеством зарабатываемых денег.
Изучение любого языка программирования — это в первую очередь о настойчивости, усидчивости, упорстве и умении преодолевать трудности. Без этого вы не сможете заставлять себя заниматься изо дня в день, долго не видя результата своего обучения, который заинтересовал бы вашего будущего работодателя. Скорее всего вы при этом будете учиться или работать, просто чтобы оставаться на плаву.
Могу сказать одно — в IT нет ограничений по возрасту. Я знаю программистов с уже 5 годами реального опыта в 19 лет и людей, которые устроились работать далеко за 40.
Если вы не готовы тратить каждый день выделенное время (минимум 2 часа) на теорию и написание кода, тогда вы никогда не достигните своей цели. Даже если у вас есть время, вы должны быть готовы к тому, что что-то в вашем коде часто не работает как надо, к тому, что на работе будет отсутствовать нормальная документация, старшие коллеги в большинстве своем не будут иметь ни времени, ни желания что-то вам объяснять или учить.
Почему именно Java?
В первую очередь вам нужно понять, для чего вы хотите учить Java. Для веб-разработки? Тогда вам придется выучить и JavaScript. Разработка по Android? Лучше обратить внимание на Kotlin, это язык-наследник Java для мобильной разработки, плюс он поддерживается Google. Думаете о Machine Learning или AI? Тогда смотрите в сторону Python и C#.
Джава отлично зарекомендовала себя в серверной части, а точнее в бекенде энтерпрайз решений, среднего и большого размера. Где вам нужна многопоточность, процессоры — каждый из которых выполняет возложенную на них задачу, модульность, когда один кусок программы можно повторно использовать независимо от другого, надежность, независимо работающие сервисы и т.д. Нормально собранный, не сильно бажный jar-файл может долго крутиться на сервере, не доставляя особых проблем.
Вот этот гайд на DOU, маст хэв для каждого, кто хочет изучать Java. Некоторая информация уже устарела, но он все еще актуален.
Всем начинающим я бы посоветовал канал Сергея Немчинского — наверное, одного из самых известных джавистов в СНГ и точно самого известного в Украине.
Фото с Немчинским
Для пообщаться есть группа в Телеграме, основанная студентами киевского КПИ.
Интересный канал — rozho)))k.
Я начну с того, что если вы чего-то не понимаете, это не значит, что вы безнадежны! Часто это может означать, что вас плохо учат или подача информации вам не подходит.
Если вы в чем-то не разбираетесь, значит вы это еще не выучили и с этим не работали! Не обращайте внимания на разработчиков, которые могут на вас смотреть из-за этого свысока. Принимайте критику, но игнорируйте снисходительное отношение.
Нужно ли идти в университет ради программирования? Не обязательно. Корочка вам пригодится, но в Украине фундаментальные знания по технологиям и алгоритмам преподаются плохо в большинстве случаев.
Мой рецепт успеха такой: Учишь основы — Идешь на бесплатные курсы (интернатуру) в большую IT компанию — Устраиваешься на работу туда или в другую компанию.
Огромный мир Java-разработки
Java (вимовляється Джава) — об’єктно-орієнтована мова програмування, випущена 1995 року компанією «Sun Microsystems» як основний компонент платформи Java. З 2009 року мовою займається компанія «Oracle», яка того року придбала «Sun Microsystems». В офіційній реалізації Java-програми компілюються у байт-код, який при виконанні інтерпретується віртуальною машиною для конкретної платформи. Мова значно запозичила синтаксис із C і C++. Зокрема, взято за основу об’єктну модель С++, проте її модифіковано.
Один из последних мемов о Java
Книги
Изучать язык я начал с «Философии Java» Брюса Эккеля. Книга хороша, но для начинающего будет совсем не понятна. И наверное она уже немного устарела, так как ее давно не обновляли.
В Java-мире есть две основные книги-справочника об этом языке программирования — книга Герберта Шилдта Java: The Complete Reference 11 edition и книга Кея Хорстманна Core Java Volume I—Fundamentals (Core Series). Я читал книгу Шилдта. Можно также прочитать две книги для подготовки к OCA: Oracle Certified Associate Java SE 8. Написаны очень доходчиво.
Это основы основ. В этих книгах не расскажут вам о том, как правильно делать логирование, как пробрасывать наверх исключения и так далее. Все это нужно будет искать по другим книгам и туториалам.
Погуглив «изучение Java», вы обнаружите, что первой ссылкой после рекламы там будет JavaRush. Это очень популярная платформа именно для начинающих джавистов. Мне подача информации не зашла, и я почти опустил руки, думая, что программирование — не мое. Помучавшись там пару недель, я ради интереса загуглил в Youtube «Java за час», и там наткнулся на видео Гоши Дударя. Неспроста там уже почти 800К просмотров. Парень дело говорит и доходчиво объясняет.
Очень рекомендую прочитать книгу: The Complete Software Developer’s Career Guide: How to Learn Your Next Programming Language, Ace Your Programming Interview, and Land The Coding Job Of Your Dreams. Автор специфический. Но книга очень хорошая, там собраны по крупицам умные мысли и лайфхаки, похожими с нами делятся такие ребята, как Сергей Немчинский, Владимир Рожков и другие.
Большинство моих знакомых разработчиков не рекомендовало идти на платные курсы, и я начал учить все сам. Обширный видеокурс по Java. Очень быстро я понял, что мне обязательно нужно выучить Spring.
Spring фреймворк
Java и Spring в наше время — не разделимые вещи. Что такое Spring? Это модульный фреймворк, я бы сказал, целая экосистема, которая конкретно облегчает разработку и уменьшает количество бойлерплейт-кода. Есть отличный курс по Spring. Автор доходчиво объясняет на простом языке.
ORM
Работа бэкенд-разработчика подразумевает под собой взаимодействие с базами данных, и тут на сцену выходят ORM (Object Relational Mapping) tools. Де-факто, в Java-мире Hibernate — монополист при работе с базой. Большинство опытных разработчиков расскажет вам, сколько спагетти-кода приходилось писать на чистом JDBC (Java Database Connectivity), пока на сцену не вышла JPA в связке с Hibernate. Все еще есть проекты, которые работают олдскульно, но это все будет легаси, соглашаться на такое можно только за адекватные деньги.
Системы сборки проектов
Каждый Java-проект так или иначе работает с одним из автоматизаторов сборки. Это будет или Maven или Gradle. Что лучше? Я работаю и с тем, и с тем. Принцип работы у них схож, они используют общий репозиторий, но внутренности кардинально отличаются. Gradle активно развивается и работает на Groovy, что добавляет гибкости в сборку проекта. Вы буквально можете запрограммировать его под себя. Maven старше, работает на XML. Конфиг pom.xml получается увесистым, развивается медленно. Вы сами можете взвесить все «за» и «против» здесь.
Тестирование
В программировании никуда без тестирования. Мидлы-сеньоры тесты писать не любят, поэтому будете их писать вы. По большей части тесты делятся на интеграционные и юнит-тесты. Интеграционные подразумевают под собой бизнес логику, обращение к реальному API и часто работают с реальной базой данных, а юнит-тесты или модульные тесты просто принимают значение от вызова метода и сравнивают полученное с желаемым. Тут рулит JUnit и Mockito.
Прелесть всех описанных выше технологий в том, что они бесплатны.
Java-курсы
Прочитав несколько книг и посмотрев пару курсов, я параллельно начал пилить свои маленькие проекты, и подаваться на разные интернатуры от компаний, в основном от EPAM.
Если сравнивать сложность входа, то попасть на курсы (интернатуру) в SoftServe было конечно сложнее, чем в EPAM.
Я был принят везде где подавался, кроме эпамовских курсов ,но я выбрал Сёрв. Хочу заметить, что у меня за плечами уже было больше года изучения Java и Английский B1. Английский жизненно необходим везде — и в учебе, и в работе. Учите его как можно больше. В этом обсуждении на DOU можно просмотреть и выбрать школу.
Важно уметь продвигать себя. О ваших успехах никто не узнает, пока вы сами о них не расскажете. Из 150 людей, желающих прийти в Сёрв, я знал не больше всех, я уверенно держался на последнем финальном техническом собеседовании, ну и ребус правильно решил в конце.
Курсы при компании хороши тем, что ты работаешь в команде и часто на проектах, приближенных к реальным. Хотя я знаю funny stories о таком подходе от других ребят.
Итак, с Java-миром мы закончили, переходим к вещам, которые необходимо знать в современных реалиях кроме программирования.
Технологии
Базы Данных
Делятся на реляционные и нереляционные. Большой популярностью пользуются именно реляционные. Туда входят RDBMS (Relational Database Management System), такие как MySQL, PostgreSQL и другие. Суть у них одна — запросы и еще раз запросы. Как они работают, знать нужно. Хороший ресурс: SQL Tutorial.
Из нереляционных я знаю MongoDB и Redis. Работал больше с Redis на проекте. Их принцип кардинально отличается от SQL. Вот симпатичный Youtube-курс по MongoDB.
Git — система контроля версий
Ни один проект не работает без Git. Эта штука позволяет разработчикам, работающим на одном и том же проекте, не портить жизнь коллегам своими изменениями в коде. Запилил фичу, создал пулл реквест, заапрувили и в develop смерджили. Только желательно, когда работаете над своим куском кода, почаще стягивать себе последние изменения, иначе это будет тяжело.
Linux
Девяносто с чем-то процентов серверов в мире работают на Linux. 100 процентов супер-компьютеров работает на Linux. Вот вам 111 фактов о линуксе, взрывающих мозг.
Да, перейти с Винды на Линукс — это больно. Зато он быстрее работает, особенно на старых ноутбуках и компьютерах, и не греет процессор. Чем быстрее вы с ним подружитесь, тем вам будет легче в продакшене. Выберете себе подходящий дистро и вперед. Рекомендую Ubuntu, Mint или Centos.
Линукс использует в терминале bash. Ему «сто» лет и он никуда не собирается деваться.
Обязательно поставьте себе сверху fish или zsh. zsh — практически тот же bash, но удобнее.
Облака
Все Java enterprise проекты крутятся на облаках и меньше на собственных серверах. Есть три крупных игрока на этой почве: AWS, Google Cloud и Azure. Я работаю с AWS от Amazon, так что тут на ваше усмотрение.
IDE
IDE — среда разработки программного обеспечения. Я не знаю, как люди раньше в принципе жили без IDE и Maven-Gradle. Intellij IDEA — тут стандарт, и точка. Есть еще Eclipse. Но она не конкурент IDEA. Есть бесплатная урезанная версия и платная. Студентам, кстати, предоставляется бесплатно. Нужен только .edu имейл.
О Docker, Kubernetes тоже можно вспомнить. Но это совсем уже будут DevOps-задачи.
Когда будете готовиться к собесу, есть хороший сборник вопросов на DOU.
Эпилог
Ну вот мы и подошли к концу. Перед вами просто непаханое поле. Но его можно пройти шаг за шагом. Потом будете оглядываться назад на все свои мучения с удовольствием, отдыхая на Бали с коктейлем и красивым пляжем. Стучитесь ко мне в LinkedIn, если у вас появятся вопросы.
65 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів