Найти тему
GeekBrains

Мини-Клондайк начинающего программиста. Часть 2

Оглавление

Меня зовут Игорь Филипенко. Ещё в августе я описал свою историю, связанную с программированием. Там же я обещал поделиться полезными материалами, связанными с определёнными областями программирования. Я подумал и решил всё-таки написать мини-гайд для программистов сразу нескольких специальностей. Первая часть моего гайда - здесь

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

За и против

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

Вот уже 6 лет идёт долгий бескомпромиссный суд между Google и Oracle за легитимность использования Java в ряде основополагающих пакетов разработки Android. В связи с этим логично, что создатели Android всерьёз рассматривают варианты дальнейшего существования без Java. - https://geekbrains.ru/posts/android_on_swift

Или вот такие:

Прошло два года с момента выпуска Java 8 и многие с нетерпением ожидают выхода Java 9, который отодвинули на март 2017 года. Как сейчас стало известно изданию Ars Technica, компания Oracle вовсе прекратила финансирование и разработку Java EE. - https://habrahabr.ru/post/304812/

Можно предположить, что в скором времени Java утратит свои позиции в тех областях рынка, где она была востребована. На это можно ответить фразой Сергея Немчинского, который в одном из семинаров сказал, что «PHP тоже давненько предсказывали смерть, но он сегодня живее всех живых». Что касается перехода Android на Swift - до сих пор неясно, что для Google будет дешевле: судиться с Oracle или договариваться с Apple. В случае с Java EE я также думаю, что разработка энтерпрайз-решений продолжится, просто этим будет заниматься кто-то другой. В общем, если вас не отпугнули приведённые выше новости, идём дальше.

С места в карьер

-2

А дальше я хотел бы вас немножко шокировать. Прошу ознакомиться с этой ссылкой.

Данный материал, написанный Станиславом Лозенко, на мой взгляд, является одним из самых толковых. Я уже чувствую, как вы напряглись и взгрустнули - литературы там действительно много, как и разных инструментов, которые надо освоить. К сожалению, если вы выбрали путь Java-джедая, придётся в это лезть. И лезть с головой. Тем не менее всему своё время. Перед тем, как вы начнёте учиться, предлагаю сделать следующее. Вы устанавливаете себе Unix-систему: Ubuntu, Linux-Mint, CentOs или Mac - всё равно. Ваша задача начать знакомство с ОС данного типа. Если у вас нет MacBook'а, но есть обычный ноутбук, я рекомендую установить рядом с Windows в качестве второй системы Ubuntu или Linux Mint. Да, придётся попотеть с настройкой и подружить две операционные системы. Но если вы правильно прикрутите Grub, всё будет в порядке. И не стоит изобретать велосипед - в сети есть туториалы на эту тему. Предупреждаю сразу: скорей всего после Windows вам будет совсем непривычно, возможно, даже сильно. Но через 2-3 месяца интенсивного использования вы почувствуете кайф от новой системы. Не забудьте ещё установить менеджер пакетов Synaptic, а также почитайте про apt-get.

При работе с Ubuntu и подобными вещами вашей первичной задачей будет ознакомление с командной строкой - терминалом. Быстро смотрим это и записываем основные команды терминала. Тем, кто проникся и относительно свободен, советую осилить курс от Степика. Параллельно держите в уме статью Станислава Лозенко и по возможности знакомьтесь с книгами по Linux, которые он предлагает. Умение работать с данной ОС требуется во многих компаниях. Особенно часто это требуют у Java-разработчиков. Основная идея состоит в том, что вы будете набивать шишки об Linux, параллельно изучая Java, - это сэкономит много времени. Уверен, скажете мне потом спасибо.

Инструменты

-3

В качестве IDE я рекомендую выбрать InteliJ IDEA. Эта среда разработки уже перегнала Eclipse по популярности. На её базе разработана Android Studio. Вполне возможно, вам придётся столкнуться с другими средами от Jet Brains. Они похожи во многом, так что если разберётесь в одной, осилите и другие.

Далее ваша задача прикрутить к IDE сборщик проектов. Ant, Maven, Gradle - выбирайте. Если сложно определиться, подскажу – хватайте Gradle. Данный выбор объясню следующими аргументами:

  • Если вы не работали с XML, с Maven может быть непросто. Gradle мне-новичку показался более понятным, потому что с XML я познакомился позже.
  • Gradle'ом вы будете собирать проекты в Android Studio. Там он идёт по умолчанию.

В общем, я бы начал с Gradle. Поймёте основные моменты, легко сможете “пересесть” на Ant и на Maven. Если вы выбрали Gradle, то разберитесь с тем, как создаётся проект, и с его структурой. Изучите файл gradle.build, научитесь указывать зависимости и подгружать сторонние библиотеки. Для этого смотрим:

По Maven смотрим это:

Про Ant я толком ничего не знаю. Первое, на что я посмотрел бы, официальная документация.

Создайте аккаунт на Гитхабе. Научитесь базовым командам, с помощью которых вы сможете создавать и управлять репозиториями:

После этого, все ваши задания вам следует "коммитить" в ваши репозитории. Причины, по которым стоит это сделать:

  • GIT-практика: устроившись на работу, вы будете пользоваться им регулярно;
  • структурирование кода;
  • насыщение вашего портфолио.

Понимаю, звучит забавно! Какому работодателю будет интересно разглядывать решённые вами простенькие задачки? Однако на одном из собеседований перед стажировкой меня попросили показать примеры моего кода: хотя бы того, что я писал на курсах. Если бы я тогда работал с GIT, то наверняка залил бы в репозиторий несколько решённых задачек и показал бы. А так... Поэтому самые интересные ваши работы я рекомендую заливать на гитхаб.

Итак, вы настроили важные инструменты, которые будете использовать в изучении Java. Конечно, так сложнее, но вы убьёте несколько зайцев одним выстрелом.

Мир Java

-4

Java это полностью ООП-язык, поэтому я и уделил парадигмам ООП внимание в первой статье. После С++ перейти на этот язык программирования большого труда не составит. Знакомство с Java я советую начинать так:

  • Первые 10 уровней javarush.ru бесплатны: регистрируемся, решаем задания, знакомимся с синтаксисом;
  • “Изучаем Java” - книга серии HeadFirst, издательства O’Rilley.

Изучите первые 10 уровней. Дальше решайте сами: нужна ли вам подписка или нет. К этому моменту вы уже получили минимальные знания о синтаксисе. Теперь структурируем и улучшаем их:

  • Этот курс затрагивает те же темы, что вы прошли на javarush, однако многие моменты исследуются подробнее. Более того, в нём показаны некоторые азы, которые вы могли пропустить.
  • Курсы Ивана Головача - преподавателя с огромным опытом и толковыми материалами. К сожалению, я его курсы не осилил из-за своей нетерпеливости. Больше предпочитаю учиться по статьям и книгам, нежели по видео. Однако многие его хвалят.
  • Прекраснейший курс от Mail.ru. К великому сожалению, материалы по практике не выкладываются, но прослушать этот курс я очень рекомендую: улучшите имеющиеся знания и усвоите много нового.

Старт получен! После прохождения вышеперечисленного вы можете записаться на курсы GeekBrains. Насколько я знаю, их ведут Кирилл Ткаленко, Владислав Гасанов, Сергей Лваринов. Под их началом и с уже имеющимися навыками вы ещё сильнее укрепите свои знания. Кроме этого вы можете вернуться в первую часть цикла данных статей и заглянуть в список ссылок. Там есть ещё некоторые курсы по основам Java. Если вам понадобится укрепить базу знаний, вы можете их пройти. Но на первичных этапах вам нужно разобраться и понять Java Core. Также есть смысл пройти курс по Java тут. Как-то я наткнулся на одну из лекций по Java 8, очень понравилось.

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

  • Этот сайт я настоятельно рекомендую добавить в избранное. Польский программист Йенков (да простит он меня, если я не правильно написал его фамилию) рассказывает о Java, некоторых фреймворках, сборщиках и даже затрагивает веб (html, css, jquery и т.д.). Его туториалы отличаются лаконичностью толковым кодом и ясностью.
  • Сергей Луговой собирает на своём сайте очень полезные ссылки для Java-программистов. У него уже есть свой канал на ютубе, где он разбирает основные вопросы с собеседований. Очень рекомендую ознакомиться.
  • Ворох полезных ссылок на технологии, статьи и инструменты.
  • Ещё одна статья, посвящённая литературе, связанной с Java.

Ну что же, мы плавно подошли к моменту, который проходит каждый Java-разработчик.

Выбор специализации

-5

Сегодня Java-специалисты востребованы в мобильной разработке и в области Enterprise-решений. В сторону десктопных приложений и прочих штук я засматриваться не рекомендую. Нет, всё возможно! Но работу искать придётся дольше. Тут нам очень поможет цикл материалов от Станислава Лозенко. Мне кажется, это лучшие рекомендации программистам по выбору учебной литературы и тактике освоения инструментов для профессиональных программистов Java. Внизу есть список технологий для Enterprise-разработчиков. Теперь ваша задача осуществить выбор профессии. Если вы выбрали мобильную разработку, то следующую часть статьи есть смысл пропустить.

Enterprise

-6

Если вы выбрали эту область, то знакомимся с остальными статьями Станислава Лозенко. С точки зрения практики тут тяжело что-то посоветовать. Что я рекомендую сделать:

  • Напишите свой чат на соккетах. Клиент, сервер: чтобы подключить в 1 сеанс больше 1 клиента, выносите клиента в отдельный поток. Туториалов по этой теме хоть отбавляй, поэтому сложно не будет.
  • В самой первой своей статье, где я рассказал свою историю, есть задачка на написание простого сервера на vert.x. Выполните её.
  • Тут куча задачек, связанных с WEB.
  • Порция задачек для начинающих Java-прогарммистов. Мне понравилось.

Я не знаю, что ещё вам порекомендовать. На мой взгляд, изучение Java Enterprise заключается в написании конкретных проектов с использованием конкретных технологий. Тут уже не надо осваивать какой-то новый синтаксис. Главное - понимать типовые задачи, которые решаются инструментами, применяющимися в данной области. Я думаю, если вы и найдёте какой-то курс, то это будет разработка какого-нибудь приложения, а не решение каких-то мелких задач. Вам нужно научиться писать свои проекты и успешно применять Enterprise-инструменты в них. Что это будут за проекты, я не знаю. Но придумать себе задание вам придётся, иначе нормально вы с этими штучками не познакомитесь. Читать книги - хорошо. Правда без практики они принесут мало пользы. Поэтому создание своего проекта необходимо.

Полезные ссылки про соккеты и не только:

Регулярные выражения

-7

Большинство программистов, так или иначе, сталкиваются с “регулярками”. Если прямо сейчас вы с ними не работаете, то всё равно стоит уделить внимание этой теме. Важно хотя бы в общих чертах понимать, что такое "регулярное выражение" и для чего оно может понадобиться.

XML

-8

Выше я уже косвенно касался данного языка разметки. Желательно посмотреть какие-то книжки по HTML и XML. Основы HTML учим на sololearn. По XML просматриваем:

Опять-таки, я не требую от вас наизусть заучивать XML. Вам просто нужно как следует разобраться в его синтаксисе и тегах.

Базы Данных

По базам есть много хороших книг, но если вы совсем ничего не знали про SQL, начните с книги Бена Форта “SQL за 10 минут”. Ваша основная задача понять, что такое базы данных, что такое СУБД, что с ними можно делать, чего нельзя, что такое JOIN- запросы. Помимо этого по SQL есть много отличных книг, но суть в том, что нет смысла лезть в них с головой, если вы - новичок. Исходите от ваших задач. Смысл в том, чтобы найти какую-то практику по написанию запросов. К сожалению, в этой области я не помогу. Если у кого-то есть полезные ссылки, буду признателен, если поделитесь в комментариях.

Говоря про базы данных и Java нельзя обойти стороной такую прекрасную вещь как JDBC. Без неё вы с базами работать не сможете. Этот интерфейс придётся изучить. Для раскачки читаем это

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

Далее следует почитать про SQL- инъекции. Когда вы поймете, что это за бяка, сразу же просмотрите это.

Дорогу осилит идущий

-9

Ну что же, дорогие друзья. На этом я, пожалуй, закончу данную главу.

Финальная ссылка для этой статьи - не совсем о Java, но познавательно.

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

  • освоение синтаксиса языка;
  • написание простенького проекта;
  • написание проекта посложнее с прикручиванием "свистелок" в виде фреймворков;
  • написание профильного проекта: смотрим требования потенциального работодателя и "пилим" домашний проект, используя стек требуемых им технологий; тут два варианта: махнуть в Enterprise или в мобильную разработку;
  • будет просто великолепно, если вы пристроитесь в какую-нибудь конторку на практику или на стажировку ещё в процессе обучения: вы получите всё самое необходимое для скорейшего роста; да, придётся при этом понервничать, но оно того стоит.

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

Также я мог бы рассмотреть ReactJS и поделиться ссылками на изучение данной темы. Кроме того, недавно появилась идея написать что-нибудь по алгоритмам и рефакторингу кода. Пишите ваши просьбы и пожелания в комментариях!

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

Если понравилась статья, ставьте лайк и подписывайтесь на канал.

Почитайте похожие материалы:

Шпаргалка фронтендера: гид по таблицам

TED для программиста: топ-16 выступлений

25 IT-профессий будущего, достойных внимания. Часть 1

С# в 2018 году: спрос, зарплаты и тренды

Что делать, если вы разработчик-одиночка?

Если вы хотите почитать статьи и материалы в нашем блоге, переходите на наш сайт.