Обучение Java, часть 2.1
Тут придется иногда повторять то, что я писал ранее
Список полезных сайтов
Сразу приходят в голову -
stackoverflow, о котором я уже писал - ответы на 95% вопросов можно найти тут. Чаще все выскакивает первой же ссылкой в гугле по любому запросу на тему джавы. Есть и на русском, но рекомендую именно английский вариант.
habrahabr - здесь можно почитать статьи по более узкоспециализированным вещам (как, к примеру, устройство HashMap, LinkedList и других коллекций)
Cамый полный источник любой информации о языке - это сайт оракла, а также туториал по языку. Здесь можно из первоисточника узнать обо все базовых вещах - про компиляцию, что такое JVM, JDK и JRE, примитивные типы, объекты, аргументы для JVM и прочее.
Youtube - вы удивитесь, но на этом ресурсе помимо котиков и ДТП можно найти множество полезных видео. В одном из предыдущих постов я уже писал свое мнение про видеокурсы и книги. Рекомендуются эти курсы
Различные образовательные видеосервисы. Udemy, Coursera, российский Computer Science Center и еще миллион подобных сервисов. Полные курсы видео так же можно найти на торрентах.
Очень полезный сайт, который стоит открывать первым при начале изучения какой-либо новой фичи/фреймворка - TutorialsPoint, в частности, раздел про основы языка Все разбито по темам, приводятся примеры кода и объяснения. Для знакомства с чем-то новым очень хороший вариант.
WikiBooks - тоже можно найти инфу по java (да и не только). Не очень много изучал этот ресурс, но пару раз обращался.
Сайт где выложена различная информация о языках в виде шпаргалок, куда можно быстро подглядеть. Для изучения не очень полезны, но для подготовки к собеседованию будет кстати освежить знания или просто проверить себя.
Очень годная статья, чтобы понимать потенциальный карьерный путь. Это один из моментов, которые привлекают меня в программировании - если ты опытен, имеешь достаточно знаний и умеешь продавать свои услуги, то найти работу с соответствующей зарплатой не составит проблем. Карьерная лестница достаточно прозрачна и получать должность, к примеру, главного разработчика в проекте "через постель" не нужно. Не получается здесь, но есть уверенность и знания - с руками оторвут в другом месте.
Сайт российского программиста, много статей для углубленного изучения какой-либо темы.
Еще один сайт, здесь можно найти миллиард туториалов по написанию хелловорлда с использованием любых совместимых технологий. Все с картинками и разжевано до мелочей. Зачастую помогает сделать минимальную работающую программу. Почти любой запрос наподобие "hello world hibernate example" выдаст вам в топе этот сайт.
Еще стоит помнить, что почти всегда самая подробная информация о чем-либо находится в документации на сайте производителя. Для Java это приведенный выше сайт оракла, для Spring framework - spring docs и т.д.
upd -
По поводу изучения джавы могу посоветовать еще один ресурс: udacity.com У них есть курс, называется "Intro to java programming". Состоит из девяти модулей (охватывает такие темы как классы, обьекты, методы, циклы, списки, массивы, интерфейсы, наследование и пр.), каждый из которых делится на несколько десятков небольших тем и упражнений. После каждого модуля идет practice set в котором нужно ответить на вопросы по пройденному материалу и решить практические задачи разной степени сложности. В конце финальный проект по реализации бота для игры в color 4. Сам курс разработан небезизвестным Кеем Хорстманом, соавтором книги "Java. Библиотека профессионала". Заявленная продолжительность у него 4 месяца, но скажу сразу, что это с ОГРОМНЕЙШИМ запасом. Я играл в покер, занимался делами, тратил кучу времени на разную ерудну и все равно управился за три. Начинать можно в любое время, курс бесплатный (есть платная версия отличия которой в том, что вы получите возможность советоваться с преподавателем и получить сертификат по окончании). Минус - необходимо знание английского, умение либо понимать речь на слух, либо читать субтитры. В общем, рекомендую всем, кто хочет изучать джаву, но не знает с чего начать
Теперь о том, что читать не стоит.
Один конкретный туториал, которого стоит избегать. Он выдается в топе по запросу "создание веб приложения Java" - ссылка. Такой пример научит только плохому, поскольку в реальной жизни это не сработает, увидев подобные вещи (прямой запрос в базу данных с веб-страницы) ваше тестовое задание дальше даже смотреть не будут.
Еще достаточно популярный ресурс JavaRush. Идея - обучение языку в игровой форме с героями футурамы. Постепенно поднимаешь свой уровень и решаешь все более трудные задачи.
На мой взгляд - полнейшее говно. С какого-то уровня чтобы подняться дальше, нужно платить или пригласить сколько-то там друзей, что лично у меня уже вызывает рвотные позывы. В комментах на стенах джава-групп в контакте периодически проскакивают кретины, которые постят свои реферральные ссылки.
Не стоит долго заморачиваться, если вы что-то не понимаете, читая туториал/книгу/документацию и т.п. Гугл большой, всегд можно найти альтернативу - или другой источник информации, или другую технологию.
С чего начать
1. Качаем с оф. сайта java development kit, устанавливаем все по туториалу. Устанавливаем себе интегрированную среду разработки, она же IDE. Считается, что основными являются бесплатный NetBeans от самого оракла (считается не очень хорошим), бесплатный Eclipse от IBM, и платная IDEA от JetBrains. Выбор между ними - предмет давнего срача. Я рекомендую поставить себе Eclipse, поскольку авторы многих туториалов в интернете используют именно его, что на начальном этапе немаловажно. Затем можно попробовать другие варианты и выбрать наиболее удобный для себя. Любители особого хардкора могут все писать в блокноте и компилировать через командную строку винды. Для нормальных людей придумали удобный софт
2. Изучаем основы языка. Сайты для самостоятельного обучения описаны выше. Если вы решите пойти на платные курсы - то не стоит повторять моих ошибок.
Сделайте следующее - обязательно почитайте отзывы о курсах. Тут еще стоит помнить, что позитивные отзывы публикуются чаще негативных (и как правило, однотипны), поэтому к последним стоит отнестись внимательнее.
Просмотрите план обучения. Если там освещается много тем, если обещают за полтора месяца с нуля довести до уровня Junior или гарантированное трудоустройство после курсов - от таких мест лучше держаться подальше.
Наличие лабораторных работ (или какой-то выпускной работы) - хороший знак.
Узкоспециализированный преподаватель - тоже хороший знак, а если еще и практикующий - то вообще супер
3. Choose your path... Выбираем направление, которое будем делать основным для изучения. Дело в том, что несмотря на общий язык, разработка под Андроид, Java EE (веб-приложения и серверное ПО), чистая джава для всяких highload-приложений и десктопные приложения с использованием Swing отличаются очень сильно. Я выбрал второй вариант (серверное ПО и веб), хотя изначально хотел делать что-то под андроид
Если вам все равно, то просто ходим по сайтам поиска работы и смотрим на количество вакансий с использованием ключевых слов и отсутствием опыта.
Ремарка - к примеру, в написании серверного ПО не так важны современные технологии, т.к. большая часть уже работающих приложений написаны достаточно давно(с совр. технологиями того времени) и переводить их на что-то более современное сейчас просто бессмысленно.
К примеру, необязательно понимать смысл нововведений восьмой версии джавы. Большинство компаний используют седьмую, шестую или даже пятую версию.
А для Андроида - наоборот, надо знать последние тенденции.
4. После этого ищем вакансии, смотрим какие технологии требуются и начинаем их постепенно изучать. Можно попытаться порешать тестовые задания. Найти их можно на сайтах компаний или на форумах. На мой взгляд, это достаточно эффективная форма обучения - есть какая-никакая реальная задача, бери и делай. Нужна база данных - пошел учить SQL и ставить себе MySQL. Нужны конфигурационные файлы - пошел читать про XML, и т.д.
Из личного опыта - я наткнулся на список тестовых заданий минской компании и попробовал сделать одно из заданий (№5, Java и JSP). Узнал много нового, особенно когда целый день провозился с новыми для себя вещами - AJAX-запросами и JavaScript.
Или пытаться с помощью интернета реализовывать какие-то свои идеи (к примеру, сделать свой рандомайзер).
5. Пытаемся попасть на работу
Лучше всего это делать через стажировки или джава-школы. В таком случае вас обучат вещам, которые приняты в компании, будет кому задать непонятные вопросы и познакомиться с конторой. Про собеседования читаем выше
Получилось многовато текста, я решил разбить пост на 2 части. Часть 2.2, скорее всего, выйдет на следующей неделе. Stay tuned, и ставьте плюсики если вам интересны мои тексты.
Spoiler
Как вы знаете, "Плюсики - это как секс, только лучше" (с)