Определите свои профессиональные цели и выберите язык. Это самый главный совет для новичков, желающих присоединиться к сообществу программистов. Но как же это сделать, если вы не понимаете, какой язык лучше подойдет для ваших целей?
Разве не было бы проще, если бы среди языков разработки существовал какой-то один «лидер на рынке»? Тогда бы новички не терялись в догадках, а смело приступали бы к изучению данного языка, будучи уверенными в своей востребованности. Конечно же, это — нечто из разряда фантастики. Языки являются «средствами» для решения разного рода задач. И все же, среди них есть один, тот самый — идеальный выбор. Называется он Java.
Java — это хорошо структурированный, объектно-ориентированный язык, который достаточно прост для начинающих. Вы можете изучить язык довольно быстро, ведь в нем есть множество процессов, выполняющихся автоматически. Вам не нужно слишком сильно погружаться в то, как же все устроено. Java — это кроссплатформенный язык. С ним программист может создавать приложения, которые легко развертываются на любом устройстве. Java — это явный фаворит Интернета Вещей и идеальный выбор для создания корпоративных приложений.
Для новичков есть и другой важный плюс — Java имеет крупнейшее мировое сообщество и первоклассную документацию. Если вы столкнулись с какой-то проблемой, то, скорее всего, сможете быстро найти для нее готовое решение. Еще несколько плюсов: обширные коллекции и фреймворки, которые подходят для решения практически всех задач Junior-разработчика.
И, наконец, Java — это язык с достойным прошлым и многообещающим будущим. Две последние версии, дополненные новым функционалом, были выпущены с промежутком в полгода. Такая периодичность позволяет Java оставаться на передовой ИТ-индустрии.
Когда мы говорим о языке программирования с низкой кривой обучения, нельзя не упомянуть о «подводных камнях». Сколько времени потребуется на обучение? Какие источники заслуживают доверия? Каких ошибок нужно избегать? Давайте разберемся со всем этим на личном опыте.
Избегайте стандартных проблем
Итак, вы — новичок в программировании. Поздравляем: вам доступен опыт других программистов, который позволит избежать стандартных ошибок при самообучении. Вот самые частые проколы:
Изучение языка без конкретной цели
Чтобы понять масштаб и уровень знаний в языке, ответьте на один простой вопрос: зачем вам нужно программирование?
Если вы серьезно нацелены на разработку программ и видите себя в роли Java-разработчика, то тратьте на обучение не менее 4–5 часов в день. Если же вы хотите просто расширить свои знания, то выбирайте более «расслабленный» темп. В любом случае, постарайтесь не растягивать процесс обучения во времени, потому как технологии не стоят на месте. Пока вы изучаете конкретные фреймворки или средства разработки, они могут устареть.
Чтение «всего полезного», что попадается на глаза, — это не самая верная стратегия обучения. Нет ничего страшного в корректировках общего плана. Однако если будете сильно отходить от графика обучения, то неизбежно столкнетесь с демотивацией.
Изучать все и сразу
Это следующая ошибка, которая ведет к «бесконечному» обучению. Не пытайтесь впихнуть в план обучения слишком много технологий и инструментов — это первый шаг к выгоранию. Человеку требуется определенное время на усвоение информации и изучение того, как все работает на практике.
Перебор теории и отсутствие практики
Программирование — это определенный навык, который вырабатывается только на практике. Конечно же, вам нужен большой багаж теоретических знаний. Но просмотр лекций и прослушивания курсов не сделает из вас программиста. Подумайте об этом. Нельзя научиться плавать, пока не попробуешь. Вам нужны теоретические разъяснения. Но, прежде всего, вам необходимо выполнять какие-либо действия.
Только при достаточном объеме практики вы научитесь решать повседневные проблемы программистов. Например, вы выработаете привычку регулярно проверять свой код и не откладывать проблемы на потом. Будете начинать с простейших решений. Постепенно дойдете до более навороченных и сложных. И, что самое главное, — привыкните программировать каждый день.
Изолированное изучение кода
Новички часто теряются в догадках, стоит ли вступать в онлайн-сообщества разработчиков или посещать профильные мероприятия. Запомните одно: никто не желает вам зла. Сообщество программистов всегда готово помочь. Ведь так и появляются те самые источники открытых данных. Все программисты когда-либо работали в команде, и каждый из них в свое время с чего-то начинал.
Посмотрите, сколько форумов и интернет-ресурсов посвящено программированию. Разработчики с радостью делятся накопленными знаниями и всегда открыты для сотрудничества. Здесь вы сможете начать свое обучение, получить подсказки от опытных коллег, а затем найти свой первый проект по разработке.
Свято верить, что однажды разберетесь во всех аспектах программирования
Если кто-то сможет создать чудо-таблетку, в мгновение ока превращающую вас в гуру программирования на любом языке, то этот человек станет самым богатым в мире (прости, Джеф Безос). Но до тех пор, при твердом желании стать программистом, никакой конечной точки в обучении быть не сможет. Даже когда вы начнете работать по специальности, не прекращайте учиться. В мире разработки все очень быстро меняется.
С другой стороны, если вы все еще учитесь разработке, то постарайтесь принять некоторые факты как данность. Не погружайтесь с головой в каждую тему, поскольку на деле она может оказаться слишком сложной.
Создайте идеальную программу обучения
Куда проще достичь желаемого, если разбить процесс на этапы. Узнав о распространенных ошибках, вы научитесь их избегать. Вот пять шагов для изучения Java.
1. Поставьте цель и выберите язык
На Java можно написать все, что угодно. Вы можете создавать серверные или корпоративные приложения, а также проводить модульное тестирование. Но, конечно же, знание одного языка не сделает из вас профессионала. Постарайтесь продумать конкретные области применения.
Сейчас в моде создание облачных приложений (здесь вам потребуется изучить основы облачных вычислений и профильные инструменты разработки), работа с Интернетом вещей, анализ big data, разработка игр и т.д.
2. Создайте план обучения
Готовы ли вы сделать Java-разработку своей профессией? Если да, то выделяйте на ежедневное обучение минимум 2–3 (в рабочие дни) — 5 часов (в выходные). Таким образом, где-то за 3–6 месяцев вы дорастете до уровня Junior-разработчика.
Процесс обучения лучше разбить на несколько этапов:
- установка JDK (Java Development Kit) с сайта Oracle и среды выполнения Java (IntelliJ IDEA, Eclipse или NetBeans);
- изучение синтаксиса Java;
- изучение Java Core;
- изучение Java Collections;
- изучение популярных библиотек и фреймворков;
- изучение часто используемых API (например, сервлетов, JSP, JDBC, JUnit);
- освоение Git и т.д.
Старайтесь придерживаться этого плана и находите «золотую середину» между теорией и практикой. Программирование — это навык, требующий ежедневной тренировки. Если вы закончили изучение определенной темы, то выполните несколько задач по разработке (от 3 до 10, в зависимости от сложности).
Изучения Java можно проводить по хорошо известному принципу Парето (правило «80/20»). 20 — это теория, а 80 — практические задания. Это не преувеличение. Для того, чтобы научиться программировать и развить нужные навыки, нужно в 4 раза больше реальной практики, чем чтения учебников. К сожалению, если сразу не написать код, то уже завтра вы забудете о том, чему успели научиться. К счастью, есть полезные ресурсы, которые помогут вам с программой обучения.
3. Выберите правильные инструменты и присоединитесь к сообществу разработчиков
Давайте будем честны: идеального курса по Java еще не придумали. В каком-то курсе вы получите глубокие теоретические знания, а где-то больше времени уделите практике. Подберите несколько платформ для обучения, общения и практики. Выберите онлайн-курс, в котором бы сочеталось понятное объяснение теории и реальные примеры кода.
Присоединитесь к профильным сообществам — так вы сможете задавать вопросы о Java-разработке, обмениваться знаниями и общаться с единомышленниками.
Пользуйтесь несколькими обучающими ресурсами
Вам потребуется множество инструментов для достижения цели. Вот полезные подборки для успешного обучения.
1. Только практика: CodeAcademy
Это, пожалуй, одна из самых известных онлайн-платформ для изучения разных языков программирования. И, конечно же, тут есть специальный раздел для изучающих Java. Здесь вы с самого первого урока начнете писать код. Если задание покажется слишком сложным (а для новичков — это совершенно нормально), то можете воспользоваться полезными подсказками. Логика обучения проста: читаете задание, пишите код, запускаете его, смотрите результат, переходите к следующему уроку. Задания постепенно усложняются до тех пор, пока вы не научитесь писать код с чистого листа. Есть очень полезный раздел FAQ и возможность обсуждения задания с другими учениками.
Данный курс может стать отличным подспорьем при изучении Java. Как уже было сказано выше, для успешного освоения Java нужно писать много кода.
2. Играйте и программируйте с нуля: CodeGym.cc
Существуют онлайн-курсы по Java с необычной особенностью — игрофикацией. Сейчас многие платформы стали внедрять обучение в формате игры. Так вы получаете должную мотивацию, наглядно отслеживаете успехи и легче достигаете нужной цели.
В CodeGym вы начинаете с нулевого уровня. Процесс обучения проходит в футуристической вселенной с космическими путешествиями, роботами и прочими классными штуками. Ваша цель — пройти 4 обучающих квеста и «прокачать» своего персонажа (робота). Каждый квест состоит из 10 уровней. В каждом уровне по 10–12 уроков, которые вам объясняют члены экипажа космического корабля. Урок сводится к минимуму теории и набору заданий с мгновенной проверкой, а также подсказками по улучшению кода. Вы сразу начинаете писать код и решаете простейшие задачи до тех пор, пока не будете готовы к более сложным и масштабным проектам по разработке.
Здесь вы можете не «застревать» на какой-то теме, а переходить к изучению следующей и возвращаться к проблемной задаче позже. В курсе имеется невероятное количество задач — более 1200. Это количество равнозначно примерно 300–500 часам написания кода.
3. Конкурсы по программированию: Codewars
Есть еще одна онлайн-платформа с акцентом на практику. Хотя, конечно, она больше подходит для тех, у кого за плечами есть опыт в разработке. Codewars позволяет отточить свои навыки в каком-то языке программирования с помощью обучающих задач (ката).
Вы можете писать свой код в браузере и пошагово проверять его в тестовых сценариях. Также можете сравнивать свой код с чужим, расширять базу знаний и обсуждать лучшие варианты. Каждое задание представляет собой конкурс с другими программистами, и ему присваивается свой рейтинг. Как только вы научитесь решать не самые простые задачи, то сможете отточить свои навыки и поучаствовать в более сложных конкурсах. Основное отличие данной платформы — здесь вы можете учиться и практиковаться в группе.
4. Слушайте лекции профессионалов: EdX
EdX — это образовательная платформа, созданная Гарвардским университетом и MIT. В ней представлено множество предметов, в том числе, программирование на Java и смежные области. EdX содержит массу утвержденных вводных курсов и сертифицированных программ, проводимых университетами.
Хотите быть в курсе последних новостей, обзоров и обновлений в Java-мире? И это правильно. Java постоянно развивается, обновляется и добавляет новые возможности. Не забывайте каждый день читать полезные статьи по Java.
Помните совет о том, чтобы вступить в профильные сообщества для более эффективного обучения? Можете задавать свои вопросы в разделе Java на Stack Overflow или Coderanch. Кроме того, есть как минимум три крупных сообщества на Reddit (learnprogramming, java и learnjava), где вы познакомитесь с полезными подсказками по изучению как всего программирования, так и отдельно взятого языка. Если нужна более конкретная информация (например, как улучшить код в каких-то заданиях), то почитайте специальный раздел помощи на CodeGym –другие студенты и «наставники по разработке» подскажут вам решение любой задачи. И, наконец, есть еще крупное Java-сообщество на Oracle. Оно рассчитано на новичков и продвинутых разработчиков.
Быть разработчиком — это постоянно совершенствоваться и получать новые знания. Если вы изначально разовьете навык самообразования, то гарантированно добьетесь успехов. Итак, вы готовы начать?
Перевод статьи John Selawsky: How to learn to code in Java: why you should and where to start