Выбор языка программирования
Публикация начинает выглядеть как многие подобные материалы. По закону жанра я должен буду написать название пары тройки языков программирования, назвать парочку плюсов и минусов и, в итоге, так и не ответив на вопрос, перейти к следующей части. Отчасти в этом есть доля правды, ведь каждый выбирает для себя тот язык, который ему ближе, исходя из того, разработкой какого вида продуктов он хочет заниматься в будущем. Большинство из вас изучали в школе Turbo Pascal и вряд ли для вас будет новостью, что на этом языке сейчас уже практически ничего не пишут. Так и в данном случае, выбирать язык надо грамотно, хотя много знаний никогда не бывает, но если вы хотите за короткий промежуток времени эффективно влиться в ряды программистов, к выбору языка надо подходить с умом. В самом начале запомните:
Если же обратиться к другому источнику, в основе которого анализ выложенных в Twitter вакансий, вы увидите очень похожую ситуацию с первым примером. И да, обе статьи на английском, привыкайте к этому, если хотите стать программистом, запомните, что практически вся документации и источники полезной информации написаны на английском, так что если ваши знания в этом языке слабоваты, добавьте себе в список дел на завтра и на ближайшее будущее изучать и практиковать английский. Думаю, я даже напишу отдельную статью, посвященную изучению иностранного языка.
Исходя из этих двух источников мы уже можем себе представить, какие языки программирования сейчас «в моде». Как видно по названию, автор статьи выбрал для себя Java. Хотя я считаю его лучшим для изучения ООП, найдется много людей, которые не согласятся со мной, и это логично — сколько людей, столько и мнений. Тут мы встаем на небольшое перепутье дорог: выбирать Java, С# (очень похож на Java), Phyton, если мы хотим работать с начинками программ и приложений (back-end) или же PHP, JavaScript, HTML, если хотим заниматься веб-разработкой (front-end). В первом случае я бы свой выбор остановил на Java, а во втором — на PHP, хотя опять же, тут больше по вкусу, надо уже самому искать информацию о различных языках и вообще понимать, чем ты хочешь заниматься. Для размышлений вот подборка языков, которые используются в крупнейших интернет компаниях мира.
Есть 2 основных причины, почему бы я выбрал либо Java, либо PHP. Первая — это очень популярные языки и найти соотвествующую работу не составит труда, а вторая — в том, что ни по каким другом языкам вы не найдете столько обучающего материала как по этим двум, причем как на русском, так и на английском.
Обучение
Итак, мы подошли к стадии, до которой большинство доходят без проблем, но этот период по праву является одним из самых сложных в карьере программиста. Хотя программист учится в течение всей своей жизни, то время, когда он начинает делать свои первые шаги, во многом определяет дальнейшую его судьбу. Вообще обучение проверяет человека на прочность, выдержит ли он, не потеряет ли интерес через месяц (как это у некоторых бывает), сможет ли дойти до конца и освоить базовые знания, на которые потом будут наслаиваться уже целые пласты информации.
В данном случае я буду рассматривать язык Java, так как он мне все таки ближе. Благо в интернете полно людей, которые безвозмездно помогают другим в обучение, поэтому найти подходящий для вас материал не составит труда. Здесь выложены более 1000 часов лекций по Java, которые можно с пером и бумагой просматривать в стенах свою уютной квартиры (пока только на русском языке). Для тех, кто привык вчитываться в проходимый материал, опять же интернет предоставляет большие возможности и это только один из всевозможных сайтов с уроками по Java. Теории хоть отбавляй, но не могу сказать про такой обучающий сайт, как Coursera.org, где вы сможете найти обучающие курсы на различных языках и по различным областям, в том числе и программированию — опять же все абсолютно бесплатно. Таких сайтов не один и не два, стоит всего лишь поискать.
Но как бы не была познавательной теория, в программирование без практики не обойтись. Но даже тут за нас уже сделали пол дела и не надо искать различные задачи, чтобы улучшать свои навыки, такой сервис как JavaRush очень в этом поможет. В целом данный сайт дает как теорию, так и практику, начиная просто с дублирования кода с экрана и заканчивая комплексными задачками, а в перерывах даже предлагает расслабиться и посмотреть небезызвестный мультсериал. По заверениям авторов, достигшие 20 уровня в сервисе будут иметь достаточные знания, чтобы уже устраиваться в IT компанию.
Ну и конечно, кто-то спросит, а как же книга? Разве не надо их читать, а если надо — то что? На это я отвечу, что от чтения книг еще никто глупее не становился. Книг тоже очень много, но я перечислю только небольшую часть из них:
Помощь в практике
Как уже упоминалось, практика — это неотъемлемая часть в любом обучение, особенно в программировании. Тут вам придется кодить и кодить, вплоть до мышечной памяти пальцев. Это, конечно, немного утрировано, но на первых порах придется и вправду много бить по клавишам, чтобы запоминать значения различных конструкций, чтобы в будущем использовать практически на автомате.
- Cyberforum — по моему мнению, самый популярный русскоязычный форум ITшников, тут можно найти ответы на вопросы, при чем и не только в области программирования;
- Programmers forum — крупный русскоязычный форум;
- Searchengines — небезызвестный форум, но специализируется больше в веб- программирование;
- Stack overflow — а это уже, не побоюсь этих слов, самый популярный во всем мире IT-форум, ответы практически на все свои вопросы вы найдете именно здесь;
- Dev shed — тоже крупный англоязычный форум;
Quora — форум прямо не специализирующийся на программировании, но зато большая вероятность, что вы получите ответ от настоящего профессионала.
Форумы — это, конечно, не единственный способ получить ответы на интересующие вопросы. В своей практике программисты повсеместно работают с официальной документацией языка, на котором они пишут. Там описываются, как работают те или иные классы и интерфейсы, порой документация является единственным источником, который может помочь в разрешение вопросов, ведь это только на начальном этапе у всех схожие вопросы и без проблем можно найти готовые решения, но чем дальше вы забираетесь в дебри, тем сложнее и сложнее находить ответы, поэтому приходиться уповать на свою, я надеюсь, уже умную голову.
Компилируем код
Довольно много я уже написал, конечно, сложно охватить такую большую тему в рамках одной статьи, но, думаю, первые шаги уже сделаны и вызвать у вас соответсвующие мысли они должны. Думаю, это только первая статья из серии «Как стать программистом» и, соответственно «зачем?», если вы стоите на перепутье дорог и пока не знаете, какой выбрать путь. В следующий раз я затрону более интересные в материальном плане вещи, ведь не секрет, что программисты люди не бедные, а уж где и сколько они получают, посмотрим в следующий раз.
Наконец, для тех, кто хочет действительно стать программистом, желаю взять быка за рога, собрать всю волю в кулак и делать то, что вам нравится. До меня уже тысячи раз говорили, но я повторюсь, главное — желание и труд. Тогда все у вас получится. Запомните самое главное: воспринимайте изучение языков программирования и различных технологий не как цель, а как СРЕДСТВО. Только представьте, какие возможности перед вами открываются. Может быть, именно вы станете одним из тех, кто меняет мир в режиме реального времени. Так что удачи и спасибо за внимание!
Видео-бонус
Как начать программировать на Java? — Хабр Q&A
Я начал изучать программирование еще на 3 курсе института. Попыток начать было очень много, но как только я стопорился на каком-то моменте, изучение прекращалось. Со временем, я преодолел определенный барьер и начал двигаться дальше. Вокруг меня было много советчиков, которые подсказывали мне, как именно изучать программирование. Еще был Хабрахабр, на котором, я черпал идеи, как же изучать программирование.Итак, основные концепции, по которым, я неправильно учился. Самое главное, что советовали знакомые и Хабр — это книги. Читай книги, чувак, без этого никуда. На Хабре каждый день появлялись заметки, где люди либо рассказывали, как нужно учиться, либо спрашивали и ответы были почти одни и те же, книги, вот верный путь к понимаю программирования. Да еще и какие книги. Очень часто новичкам советовали книги Брюса Эккеля (программисты поймут).. Чтобы понять, что пишет Эккель, нужно как минимум проработать программистом пару лет и получить массу практики. В общем, все советы сводились к одному, читай книги, брат, читай! Что сказать, я так и делал. Я просыпался в 4 утра и садился за учебники по программированию. Читал, читал, читал, читал очень много, пока не становилось плохо. Пытался одну и ту же тему читать в разных книгах, у разных авторов, чтобы понять все тонкости этого момента. Может, мне просто нравилось читать. Я читал по 6 часов в день и больше ничего не делал. Нет, я пытался кое что сделать на практике, но, как правило, это были тривиальные примеры из учебника, которые давали мало пользы. И вот так, не закрепляя ничего на примере, я двигался и двигался дальше к самым дебрям технологии программирования. Я мог побазарить с любым опытным программистом на различные темы, но на практике, я не мог сделать ничего. Я смотрел видео уроки, качал их гигами, я слушал подкасты, я читал Хабр — на этом все, я не программировал. На собеседованиях меня быстро отшивали, потому что, я не программировал. Я отвечал на теорию, но не мог ничего сделать. Да и познания теории у меня были сомнительные, я плавал, как балкер, по теории, понимая одну и ту же тему каждый раз по разному. Еще один момент, который я делал не так — писал конспект. Я писал его так, как будто его будут проверять и критиковать мой почерк. Я писал его разными цветами, я подчеркивал все под линеечку. В конце концов, у меня скопилось стопка из 50 тетрадей, переписанных из книг. Кому это было нужно?
Еще одна из моих грубейших ошибок — я брался за все сразу. Я сделал для себя план занятий, по которому учился. Например, в понедельник у меня была Java, во вторник — SQL, в среду — C# и т.д. Этот подход просто катастрофический, он ведет только в психушку. У меня в голове образовалась каша из технологий, но друзья говорили: «Программист должен знать все, он не должен быть привязан к технологии!». Они так же, где то этого начитались, интерпретировали это по своему и начали доносить это до меня, как до новичка, который верит во все, тем более, таким прохаванным прогерам. Самое интересное, что-то в этом всем есть, просто оно было понято не так и не вовремя.
Итак, подытожив все написанное, можно сделать некоторые выводы из этого плохого примера. Если учесть, что я только начал изучать программирование, можно сказать, что я делал не так: много читал, ничего не программировал, читал Хабрахабр, слушал друзей, изучал сразу все, лез в дебри технологий, учился по расписанию, учился рано утром, писал конспект, ходил на лекции в институте (вообще бесполезное мероприятие).
Начинающим Java программистам / Хабр
Программирую на Java вот уже 7 лет. Но на работе часто приходится обучать новое поколение. В связи с этим и решил сделать некоторую шпаргалку, которая, надеюсь, пригодится и для хабрчан. Если кто-то может помочь дополнить чем-то информацию из этой статьи, то пишите! Итак:Основные ресурсы для начального обучения
- www.javable.com — сайт со статьями и tutorial’ом по Java. Все в основном на русском.
- www.exampledepot.com — очень полезный ресурс, где собраны краткие примеры использования классов для тех или иных пакетов
- java.sun.com — без первоисточника не обойтись. Для любого Java программиста JavaDoc должен быть истиной в последней инстанции. Так же здесь можно найти серию tutorial’ов на все возможные темы.
Основные Java пакеты
Ниже приведён список Java пакетов, в которых программист должен свободно ориентироваться. Знакомиться с ними рекомендуется как по JavaDoc’ам, так и с помощью www.exampledepot.com. Все пакеты выстроены в рекомендуемом порядке для изучения. Итак:
- java.lang — основа основ. Каждый класс в этом пакете нуждается в отдельном внимании.
- java.io — ни одна программа не может обойтись без операций с вводом-выводом.
- java.util — пакет в основном содержит все необходимое для работы с коллекциями: Collection, Enumeration, Set, List, Map и т.д. и т.п.
- java.net — содержит основные классы для работы с сетью.
- java.text — все необходимое для форматирования текста
- java.lang.reflect — Java не была бы Java’ой если бы не Reflection. Reflection стирает грань между данными и кодом.
- javax.sql — все необходимое по работе с базами данных
- javax.xml.*, org.w3c.dom.*, org.xml.sax.* — без этих пакетов работа с XML просто немыслима
Ресурсы для расширения кругозора
- onjava.com — рано или поздно все новости мира Java попадают сюда
- www.javaspecialists.eu — ресурс полезен как новичкам, так и продвинутым программистам, так как содержит много статей о тонкостях работы с Java.
- www.theserverside.com — рекомендуется подписаться на RSS, так как часто проскакивают весьма интересные вещи по Java.
Java Библитеки, которые должны знать все
Java не заканчивается знаниями лишь о возможностях JSDK. Чтобы чувствовать себя комфортно необходимо знать еще десятка два сторонних библиотек, используемых Java программистами повсеместно. Итак, начнем с основных:
- Commons Lang — то что «забыли» включить в JDK
- Commons Math — отличное дополнение для java.math
- Commons Logging — логирование должно быть грамотным. За System.out.println для вывода логов начинающим программистам уже через неделю обучения следует отрубать руки.
- Commons Net — логическое продолжение для пакета java.net. Множество классов для работы с основными сетевыми протоколами.
- Commons VFS — отличная библиотека для абстрагирования от способа хранения файла. Позволяет достаточно обобщено иметь доступ до файлов по FTP, SFTP, WEBDAV, (G)ZIP и т.д.
- Commons IO — работа с вводом-выводом часто получается весьма муторной, но с этой библиотекой все становится несколько веселее.
- HttpClient — библиотека по работе с http ресурсами.
- JUnit — любой код, должен сопровождаться тестированием. Для автоматизации тестирования и предназначена эта библиотека.
На этом пока все. Если подобные шпаргалки по Java вам интересны, то могу так же выложить свою коллекцию «простейших» задач по Java, которые ориентированы, на то, чтобы быстро освоить основные пакеты Java.
Изучаем Java: зачем это нужно и с чего начать
Перевод статьи «How to learn to code in Java: why you should and where to start».
Определите свои карьерные цели и выберите язык. Это самый главный совет для каждого, у кого есть желание влиться в сообщество разработчиков, имея нулевой опыт в программировании. Но как выбрать язык, если у вас нет никакого представления о том, какой из них лучше всего подходит для ваших целей?
Насколько было бы проще, если бы на рынке языков программирования существовал какой-нибудь лидер. Тогда все новички могли бы делать безопасный выбор: изучать именно этот язык, зная, что их навыки будут пользоваться спросом. Конечно, это нереально. Языки это лишь инструменты для решения многочисленных задач. И, тем не менее, есть среди них один, который можно назвать «звездным» выбором, – Java.
Java это хорошо структурированный, объектно-ориентированный язык, который может считаться легким для начинающих. Овладеть им можно довольно быстро, поскольку многие его процессы запускаются автоматически. Вам не придется слишком углубляться в то, как все это работает. Java это кроссплатформенный язык. Благодаря этому приложение, созданное на этом языке, можно разворачивать на любом устройстве. Java применяется в интернете вещей и в качестве подходящего инструмента для корпоративных приложений.
Что еще важно для начинающих, это наличие у Java больших международных сообществ разработчиков и высококачественной документации. Если у вас возникает проблема, скорее всего вы найдете уже готовый ответ. Java имеет и другие преимущества, например, огромные коллекции и фреймворки, покрывающие практически любые нужды разработчика-джуниора.
Наконец, у этого языка респектабельный бэкграунд и блестящее будущее. Две последние его версии, обогащенные новым функционалом, были выпущены всего за шесть месяцев. Это помогает Java сохранять свое преимущество и лидирующие позиции в солидных рейтингах.
И хотя мы говорим о языке программирования с пологой кривой обучения, новичков все равно подстерегает множество подводных камней. Сколько времени уйдет на учебу? Каким ресурсам можно доверять? Каких ошибок избегать? Давайте рассмотрим все эти стороны изучения Java.
Постарайтесь не угодить в распространенные ловушки
Итак, программирование для вас это совершенно новая сфера деятельности. Поздравляю: вы можете воспользоваться опытом других программистов и избежать распространенных ловушек самообразования. Вот некоторые из них.
Учеба без определенных целей
Чтобы оценить, сколько всего нужно выучить для достижения желаемого уровня знаний, прежде всего нужно спросить себя, зачем вам вообще нужно программирование.
Если вы настроены серьезно и намерены стать Java-разработчиком, вам нужно будет учиться ежедневно по крайней мере по 4-5 часов. Но если вы просто хотите расширить свои горизонты, можно выбрать и более спокойный темп. В любом случае, старайтесь не растягивать обучение на долгие годы, потому что технологии развиваются и изменяются. Пока вы будете изучать какой-то фреймворк или инструмент разработки, они могут устареть.
Чтение «чего-нибудь полезного» по мере его выхода не является лучшей стратегией обучения. План обучения, конечно, можно корректировать. Однако, если вы вовсе не будете следовать этому плану, вы потеряете мотивацию.
Попытка изучить слишком много технологий одновременно
Эта ошибка приводит к бесконечному обучению. Не пытайтесь вместить в свой учебный план слишком много технологий и инструментов, иначе вам грозит выгорание. На обработку информации и испытание всех изучаемых вещей на практике нужно время.
Слишком много теории без практики
Программирование это навык, который можно приобрести только путем большого количества практики. Вам необходима солидная теоретическая основа, но пока вы лишь читаете (или смотрите) лекции и курсы, вы не умеете писать код. Подумайте об этом. Никто не может научиться плавать, не пытаясь собственно плавать. Вам нужны пояснения, но прежде всего нужны действия.
Только большое количество практики научит вас решать проблемы, ежедневно встающие перед программистами. Например, у вас появится привычка регулярно проверять свой код и не позволять связанным проблемам накапливаться. Начинать вы будете с самых простых решений. Затем, постоянно работая над улучшением своего кода, постепенно перейдете к более изящным. И, что важнее всего, вы привыкнете писать код ежедневно.
Изучение программирования в одиночестве
Новички часто сомневаются, стоит ли им присоединяться к онлайн-сообществам или посещать какие-то мероприятия для программистов. Основная причина их сомнений – синдром самозванца.
Но следует помнить, что никто на самом деле не хочет вас как-то унизить. Сообщество программистов это сотрудничество. Именно благодаря сообществам появляются многочисленные открытые источники информации. Программисты привычны к работе в команде и, конечно, все они в какой-то момент жизни были новичками.
Обратите внимание, как много есть форумов и прочих веб-ресурсов для программистов. Разработчики стремятся делиться своими знаниями, они открыты для сотрудничества. Обучаясь онлайн, вы можете получать полезные подсказки от своих более опытных коллег.
Уверенность в том, что однажды вы полностью поймете все аспекты программирования
Если кто-нибудь изобретет волшебную пилюлю, позволяющую немедленно овладеть любым языком программирования, он станет богатейшим человеком на земле. Но до тех пор, если вы решили стать программистом, ваш учебный путь не имеет какого-то определенного конца. Даже устроившись на работу, не прекращайте учиться. В мире программирования все меняется очень быстро.
С другой стороны, когда вы еще только учитесь программировать, старайтесь принимать некоторые факты как данность. Не нужно слишком углубляться в изучение предмета, поскольку его бэкграунд может оказаться «неподъемным».
Составьте отличную учебную программу
Достичь цели проще всего шаг за шагом. Зная при этом о распространенных ошибках, вы сможете их избежать. А теперь давайте рассмотрим шаги, которые вы можете предпринять, изучая Java.
1. Поставьте себе цель и выберите язык
С помощью Java можно делать очень многое. Вы можете создавать серверы приложений, десктопные и мобильные приложения, корпоративные приложения, запускать модульные тесты. Но, разумеется, чтобы стать профессионалом, недостаточно просто знать язык программирования. Попробуйте обдумать, где конкретно вы сможете применять свои знания.
Сегодня в тренде создание облачных приложений (вам также потребуется изучить основы облачных вычислений и специфические инструменты), работа с интернетом вещей, осуществление анализа больших данных, создание игр и т. д.
2. Создание учебного плана
Вы готовы сделать программирование на Java своей профессией? Тогда уделяйте учебе как минимум 2-3 часа в рабочие дни и 5 часов в выходные. В этом случае вам потребуется от 3 до 6 месяцев, чтобы начать претендовать на позицию разработчика-джуниора.
В целом, ваш процесс обучения будет состоять из нескольких этапов, включающих:
- Установка JDK (Java Development Kit) с сайта Oracle и Java runtime environment (среда выполнения для Java, JRE) – IntelliJ IDEA, Eclipse или NetBeans.
- Изучение синтаксиса Java.
- Изучение основ Java.
- Изучение Java Collections.
- Изучение популярных библиотек и фреймворков.
- Знакомство с часто используемыми API (например, servlets, JSP, JDBC, Junit).
- Овладение Git.
Старайтесь следовать плану и поддерживать баланс между теорией и практикой. Программирование это навык, который нужно тренировать ежедневно. Завершив изучение какого-нибудь раздела, выполните несколько упражнений на программирование (от 3 до 10, в зависимости от сложности).
Изучая Java, можно успешно применять известный принцип Парето (правило 80/20). «20» отводите на теорию, а «80» – на практику. Это не преувеличение: чтобы запомнить изученное и приобрести навык, практики нужно в 4 раза больше, чем чтения. К сожалению, если сразу же не приступить к написанию кода, вы забудете прочитанное уже на следующий день. Но если вы проходите хороший курс, вам не нужно изобретать собственную программу.
3. Выберите подходящие инструменты и вступите в сообщества программистов.
Будем откровенны: безукоризненный курс по Java просто не существует. Какие-то курсы дадут вам теоретические знания, какие-то обеспечат хорошей практикой. Выберите несколько платформ для обучения, общения и практики. А также выберите один онлайн-курс, комбинирующий простые объяснения с реальным написанием кода.
Вступите в сообщества, где вы сможете задать любой вопрос по программированию на Java, делиться своими идеями и находить единомышленников. Топовые сообщества Java-разработчиков указаны ниже.
Используйте разнообразные ресурсы для изучения Java
Для достижения ваших целей вам понадобятся многие инструменты. Например, вам могут пригодиться следующие:
1. Чистая практика: CodeAcademy
Это, пожалуй, одна из самых известных платформ для изучения многочисленных языков. Конечно, есть раздел и для изучающих Java.
На этой платформе вы с самого первого урока начнете писать код. Если какое-то задание покажется сложным (а это нормально для начинающего), вы сможете воспользоваться весьма полезными подсказками.
Процесс прост: читаете задание, пишете код, запускаете его и наблюдаете результат. А затем переходите к следующему шагу. Постепенно задания становятся все сложнее, аж пока вы не научитесь писать собственный код с нуля. Очень полезен раздел FAQ. Также вы имеете возможность обсудить каждое задание с другими студентами.
Этот курс может стать отличным дополнительным инструментом для изучения Java. Как уже было сказано, чтобы овладеть языком программирования, нужно писать код.
2. Играйте и пишите код с самого начала: CodeGym.cc
Это онлайн-курсы для изучающих Java с особой фичей – геймификацией. Сегодня элементы игры это распространенная практика для онлайн-курсов, поскольку они увеличивают мотивацию и дают ощущение постоянных достижений, а это облегчает ваш путь к достижению цели.
В CodeGym вы начинаете с нулевого уровня в футуристической вселенной с путешествиями между мирами, роботами и прочими клевыми штуками. Ваша цель – пройти образовательные квесты и прокачать своего персонажа – робота. Каждый квест состоит из 10 уровней, а каждый уровень – из 10-12 уроков. Обучение ведут члены команды галактического корабля.
Урок содержит минимум теории и набор заданий с немедленной проверкой, а также советы, как улучшить ваш код. Вы начинаете программировать с самых простых задач и постепенно продвигаетесь к более сложным и массивным проектам.
Все это позволяет вам не застревать на отдельных предметах или задачах, продвигаясь вперед и возвращаясь позже к отложенным головоломкам. В целом весь курс содержит больше 1200 задач. Это примерно 300-500 часов кодинга.
3. Программистские задачи: Codewars
Еще одна платформа с обилием практики. Правда, она больше подходит учащимся с хотя бы небольшим бэкграундом в программировании. Codewars позволяет вам отточить свои навыки работы с определенным языком, практикуя каты.
Вы можете писать свой код в браузере и использовать test cases для его пошаговой проверки. Также можно сравнивать свое решение с вариантами решения других людей, чтобы расширять свои знания и обсуждать лучшие подходы.
Для улучшения навыков вы постоянно будете получать все более сложные задачи. От других эту платформу отличает возможность практиковаться в группе.
4. Слушайте лекции профессионального уровня: EdX
EdX это образовательная платформа, основанная Гарвардским и Массачусетским университетами. Она охватывает множество предметов, включая программирование на Java и смежные дисциплины. Названные университеты предоставляют множество проверенных вступительных курсов и сертифицированных программ.
Каждый курс ограничен по времени и содержит видеолекции с субтитрами. В любой момент можно вернуться к предыдущим урокам и повторить материал. Таких курсов на платформе десятки, некоторые из них бесплатны. Но в любом случае, речь идет только о теории, поэтому позаботьтесь о том, чтобы подкрепить ее практикой.
Хотите быть в курсе последних новостей мира Java? Это правильно. Java постоянно развивается, обновляется и обзаводится новыми фичами. Стоит завести себе пару медиаресурсов для ежедневного чтения. Среди самых крупных можно назвать:
- Javaworld (новости, полезные руководства и много всего другого, что позволит вам оставаться в курсе событий в Java).
- Java Code Geeks (ресурс ориентирован на помощь людям, самостоятельно изучающим Java, найти работу).
- DZone (множество статей и руководств для начинающих и опытных разработчиков).
- Javarevisited (ежедневно обновляемый блог, охватывающий многие темы, связанные с изучением Java).
Помните совет присоединиться к сообществу, чтобы учиться более эффективно? Вы можете задать любой вопрос в разделах, посвященных Java, на Stack Overflow или Coderanch. Также есть как минимум три больших сообщества на Reddit: learnprogramming, java и learnjava. Там вы найдете полезные советы по изучению Java и по программированию в общем.
Если вам нужна более конкретная информация, например, подсказки по улучшению вашего кода в определенных задачах, попробуйте специальный раздел help на CodeGym, где студенты и наставники помогают с любыми проблемами. Наконец, существует огромное сообщество в Oracle, открытое как для начинающих, так и для опытных разработчиков.
Организуем обучение самым эффективным образом
https://d2xzmw6cctk25h.cloudfront.net/post/2195/og_image/5516b577079450e9f3f3ff831e019c3c.jpg
Java — строго типизированный объектно-ориентированный язык программирования, разработанный и выпущенный в 1995 году компанией Sun Microsystems. В настоящий момент занимает достойное место среди самых популярных языков программирования. Владея Java, вы можете писать как оконные приложения для десктопов (используя Swing или JavaFX), так и бэкенд для веба, а также мобильные приложения для Android.
Разработчики языка вдохновлялись синтаксисом C/C++, однако Java проще в изучении. К тому же он имеет удобную систему управления памятью с автоматическим сборщиком мусора. Умный компилятор способен отловить «глупые ошибки» неопытного разработчика. На Java легко создавать модульные, многопоточные и кросс-платформенные приложения, хотя новичку может быть сложно поначалу оценить все эти преимущества.
В настоящий момент потребность в Java-разработчиках достаточно велика. Чтобы убедиться в этом, достаточно ввести соответствующий поисковый запрос, к примеру, на сайте hh.ru. И если вы решили начать или уже начали двигаться в направлении Junior Java Developer – поздравляю, это хороший выбор. Подготовка может занять от нескольких месяцев до года (в зависимости от ваших текущий знаний и опыта). И вот несколько советов, которые, уверен, помогут вам в этом пути:
Конкретизируйте свою цель. Например, целью можно поставить работу в качестве java-разработчика. Для этого выясните, что должен знать и уметь джуниор, спросив это у Google или, к примеру, в телеграм-чате для java-новичков. Составьте примерный план обучения, наметьте контрольные точки. Не смущайтесь регулярно уточнять и детализировать свой план.
Определитесь, будете ли вы учиться самостоятельно. Или доверитесь специалистам и проверенным учебным программам, записавшись на курсы по Java. Первый вариант сложнее и затратнее по времени, второй — легче и быстрее, однако за курсы придётся платить.
Настройтесь на то, что обучение займёт не один месяц. Поэтому сделайте его частью своей жизни. Занимайтесь, пусть даже понемногу, но каждый день. Регулярные долговременные усилия принесут больше пользы, чем периодические рывки.
Смиритесь с тем, что поначалу у вас не будет 100% понимания изучаемого материала. И периодически придётся принимать на веру, что делать нужно именно так, а не иначе. Однако со временем мозаика знаний сложится в цельную картину. Не стоит застревать на детальной расшифровке каждого непонятного термина.
Найдите хорошую книгу по Java, регулярно читайте и перечитывайте её. Я рекомендую новичкам всего две книги: «Java программирование для начинающих» Майка МакГрата, «Изучаем Java» Берта Бейтса и Кэти Сьерра. Первая короткая, 193 страницы, написана очень просто. Годится для изучения самых основ. Вторая в три раза толще, 720 страниц, охватывает больший объём материала, весело и доступно рассказывает о сложных вещах — например о том же объектно-ориентированном программировании.
Закрепляйте практикой всё, что изучаете теоретически. Программирование — это 20% теории и 80% практики. А может даже 10% теории и 90% практики. А может даже и 99% и 1% – для кого как. Практикуйтесь в написании кода каждый день. Существует множество сайтов, на которых можно упражняться в программировании – найдите себе по вкусу. В книге по Java, которую вы читаете, должны быть задания и упражнения – не пренебрегайте ими.
Повторение поможет достичь лучшего понимания. Перечитывайте снова и снова непонятный вам до конца как текст, так и код. И с каждым разом он будет становиться понятнее и понятнее.
Не стесняйтесь задавать вопросы — только научитесь их грамотно формулировать. Говорят, что правильно заданный вопрос уже содержит 50% ответа. Невозможно ответить на неконкретный вопрос. Можно следовать рекомендациям форума GeekBrains. Обсуждая код, не делайте скриншоты, не размещайте «простыни» в сообщениях — освойте инструменты, позволяющие делиться кодом с помощью ссылки, например codeshare.io или github.com. Но есть вопросы, которые задавать не стоит. Например «как работает этот фрагмент кода?» Или «что будет, если изменить в коде вот это?» У вас есть редактор и компилятор – напишите, измените, скомпилируйте, запустите и всё увидите сами.
Освойте систему контроля версий git, например, с помощью вот этого бесплатного курса. Создайте свой профиль на сайте Github.com и регулярно отражайте (commit) там все свои упражнения с кодом. В таком случае, разбираясь с кодом и задавая вопросы, достаточно будет указать ссылку на проблемный файл в вашем репозитории.
Подружитесь с английским языком. English is the key to the world’s treasures of programming and development. Учитесь читать англоязычный Java doc. Пишите на английском языке комментарии в своём коде. Известный анекдот: чем отличается Java Junior от Java Senior? Junior пишет поисковый запрос в гугл так: “java как конвертировать массив в список”. А Senior так: “java how to convert array to list”.
Если вы решили встать на путь системного образования java-разработчика, приглашаем на факультет Java-разработки GeekBrains. За 12 месяцев обучения вы разработаете сразу несколько вариантов распространённых проектов на Java — сетевой чат, мобильную игру, облачное хранилище, интернет-магазин — а также подготовитесь к собеседованию и получите первые предложения о работе!
Самоизоляция заканчивается — самое время освоить новую профессию, чтобы начать карьеру мечты и уверенно смотреть в будущее! Мы хотим помочь вам и с 1 по 10 июля 2020 г. дарим скидку 40% почти на все программы обучения GeekBrains. Будьте здоровы и успешны! 🙂
Часто получаю вопросы, вроде: «Какой язык программирования изучить первым?», «Java-тот самый язык программирования, на котором стоит начать писать?», «Насколько Java хорош в качестве первого языка программирования?», «Который из языков программирования самый подходящий для начинающих?» или «Начать с Java или Python?».
Ответом на все эти вопросы является то, что Java – один из самых популярных языков программирования, и есть много причин начать его изучать, начиная с карьерных возможностей и заканчивая получением поддержки со стороны сообщества.
По моему мнению, самая веская причина начала программирования на Java или выбора его в качестве первого языка – Java освоить проще.
Некоторые могут утверждать, что Python ещё проще Java и даже не требует компиляции, но лично я нахожу Java языком, понимать и читать на котором много легче (много лёгким для чтения и понимания).
Последнее поколение программистов начинало учиться писать код с Бейсика и только потом переходило на C и C++ с Java в качестве своего второго или третьего языка программирования.
Одной из причин для этого может быть то, что C и C++ были более востребованными в те дни в отличие от Java. Но действительная причина в том, что учебная программа была построена так, что нас обучали C и C++, поскольку тогда ещё не было Python, по крайней мере, в нашем колледже.
И правда, часто нам не приходится выбирать, и мы изучаем в школе или колледже программирование как часть учебной программы. В моё время C был первым языком программирования в нашем инженерном колледже, потом мы изучали C++, VB, VC++, и, наконец, Java.
Сейчас я говорю о том, что Java проще и легче освоить, но помню, как отметил, что он сложнее по синтаксису по сравнению с C++, поскольку мне приходилось прописывать System.out.println() вместо короткой формы записи cout для того, чтобы вывести сообщение на экран, однако это просто кратковременное неудобство.
Когда я начал писать и поддерживать большие программы, я нашёл код на Java более читабельным, и вы можете понять, что делает код. В Java отладка и поиск ошибок были много более удобные, чем в C++ или C.
Кстати говоря, я учусь профессиональному программированию или, как вы скажете, настоящему кодингу на моей первой работе. Именно тогда я и начал серьёзно изучать Java.
Java – язык программирования, с которого стоит начать?
Несколько причин, почему я считаю Java подходящим языком программирования, чтобы на нём учиться писать код:
- Java проще, синтаксис гораздо более читабельный, чем синтаксис C, C++ или другого языка.
- Язык Java хорош для изучения объектно-ориентированного программирования, но не для процедурного, где он уступает C. ООП или Объектно-Ориентированное Программирование является полезным навыком, потому что оно достаточно хорошо справляется со сложностью реального приложения. Проще думать с точки зрения класса и объектов.
- Java имеет богатый API, и вы можете делать очень много в Java, например, работать с графикой, звуком и, что всего вероятнее, писать небольшие игры, такие как Крестики-Нолики, Тетрис и др. Не то, что вы не можете сделать это на других языках, но тогда вам придётся часто загружать и устанавливать различные программы и библиотеки, что для начинающего программиста работа непростая. Когда вы устанавливаете Java, большая часть всего необходимого для работы устанавливается уже в процессе установки языка.
- Java имеет сильную поддержку сообщества, неважно, какого рода вопросы, сомнения или проблемы у вас возникли, Google сможет найти ответы. Если не Google, то есть Stack Overflow, форумы Java и множество других сообществ, которые вам помогут. Это действительно самая главная причина, почему я советую начинающим учиться писать код на Java, поскольку, когда вы начнёте учиться программировать, вы столкнётесь с множеством различных проблем, прежде чем начать понимать основы программирования и сам Java. Поскольку Java-разработчиков насчитывается несколько миллионов и оказывается поддержка сообщества, всего вероятнее вы быстро отыщите ответы без каких-либо разочарований и недовольств.
- Java – строго типизированный язык, который исправляет множество ошибок, допущенных начинающими программистами. Также, в меньшей мере, подходит для статической типизации. Это ещё одна причина, по которой я предлагаю начинающим изучать сначала Java, а не Python, потому что Python – язык с динамической типизацией, и вам не нужно определять типы, что обычно запутывает.
- Java устанавливается со встроенным Garbage collection (автоматическое управление памятью, что занимают неиспользуемые объекты), что является большим плюсом для абсолютных новичков. Управление памятью – это большое дело в начале обучения программированию.
Это те несколько причин, почему я считаю, что начинающим следует сначала освоить Java и только потом любой другой язык программирования. Я могу быть предвзятым, потому что я Java-программист, но я также знаю Python и я также занимался профессиональным программированием на C и C++.
Исходя из этого опыта, я могу сказать, что Java, несомненно, является одним из лучших языков программирования для начинающих, и вы определённо можете выбрать Java в качестве первого языка программирования для изучения программирования.
Достаточно ли Java для успешной карьеры программиста?
Вопрос не в различии языков программирования, нет. Как программист, вы должны знать много вещей, таких как структура данных, алгоритмы, управление памятью, объектно-ориентированное программирование, скрипты и так далее. А другой язык учит вас другому.
Как только вам будет легко работать с Java, вы можете перейти на другие языки программирования, такие как Scala, JavaScript или выбрать скриптовые языки, например, Python, которые не нужно компилировать.
Самая большая проблема в этой сфере — нужно продолжать учиться и развиваться, чтобы построить успешную карьеру программиста. Если вы любите программирование и осваиваете новые технологии и языки программирования, то эта сфера для вас.
Для того, чтобы быть успешным программистом, также важно развивать навык отладки программ, который основан на умении логически мыслить.
Если вы дружите с логикой и можете сделать вывод, основанный на ограниченной доступной информации, тогда вам не составит труда устранять проблемы и находить ошибки в коде.
Хороший опыт работы с такими интегрированными средами разработки (IDE), как Eclipse, NetBeans или IntelliJ IDEA и действительно отличные инструменты Java также помогут вам в написании кода и его отладке.
На этом всё. На мой взгляд, Java, безусловно, является прекрасным языком, с которого стоит начать, потому что он проще большинства других языков и сосредоточен непосредственно на самом написании кода, а не на управлении системами, такими как управление памятью.
Вкратце, вы определённо можете выбрать Java в качестве своего первого языка программирования, и, когда вы его освоите, попробуйте выучить ещё парочку языков, например, JavaScript или Python.
Как стать Java разработчиком за 1,5 года / Хабр
Меня зовут Сергей, мне 40 лет и сейчас я работаю Java разработчиком в немецкой компании. Мы занимаемся разработкой программного обеспечения для пивоварен оценки финансовых и кредитных рисков. Это моя первая работа в качестве разработчика. До этого я работал в сфере IT-поддержки и системной интеграции. Первого февраля 2019 г. закончился мой шестимесячный испытательный срок, и у меня на руках бессрочный контракт. Я хочу поделиться своим опытом, как можно самостоятельно выучить Java так, чтобы получить работу.
Это мой рабочий стол. Пить пиво в рабочее время у нас разрешено, мы же в Германии.
Моя первая статья: «IT-эмиграция с семьей. И особенности поиска работы в маленьком городе Германии, когда ты уже там»
Моя вторая статья: «Получить работу в Германии станет проще».
Disclaimer
Скажу сразу, что всякие варианты «выучи яву за 10 дней» (21 день, 30 дней и т.д.) – это утопия. Нет никакой красной таблетки, чтобы быстро попасть в матрицу. Но за год-два параллельно с основным местом работы – вполне реально.
Что у меня было в активе, прежде чем я начал изучать Java
Сначала я хотел назвать статью «Как стать Java разработчиком за 1,5 года с нуля», но передумал. Я ведь пришел в программирование не из совершенно другой области, а из IT. Но работал я не в разработке, а в поддержке. Вероятно, дальнобойщику будет не так просто повторить мои шаги, чтобы стать программистом. Хотя, если у моей жены получится в свои 34 переквалифицироваться из чистого гуманитария в разработчика (или тестера), то напишу еще одну статью.
Стоит сказать о том, что я уже умел, когда решил стать разработчиком.
В университете в течение 2-х семестров мы изучали программирование на Си и С++. Ничего особенного или каких-то глубоких знаний. Сдали – забыли. Далее, будучи студентом, я писал какие-то простенькие программы на Delphi для себя. И всё. Это было более 20 лет назад.
Дальше моя карьера выглядела так:
- Системный администратор
- Системный инженер
- Зам. руководителя отдела
- Руководитель
- Инженер тех. поддержки
Непосредственно программированием я вообще не занимался.
Онлайн-курсы.
Я начал со следующих специализаций на coursera.org:
Java Programming and Software Engineering Fundamentals – 4 месяца
Я прошел следующие онлайн-курсы:
После этой специализации я уже более-менее разбирался в языке, но писать самому программы было еще нереально. Последний capstone-проект я не сделал. Мне было сложно. И у меня, честно говоря, пропал энтузиазм. Я сделал перерыв.
Object Oriented Java Programming: Data Structures and Beyond– 5 месяцев
Через месяц я решил всё-таки вернуться к занятиям снова. Я пошел на специализацию из пяти курсов:
Последний capstone-проект я также не осилил. Но предпоследний курс в списке «Mastering the Software Engineering Interview» помог мне неплохо подготовиться к последующим собеседованиям. А еще я смог написать свой первый простенький парсер простого сайта на чистом HTML. Уже было неплохо, но не впечатляло.
How to Code – 3 месяца
Следующим шагом были эти два странных курса на edx.org:
Я написал «странных», потому что там вообще речь не идет о Java. Авторы курса используют специальный язык программирования Beginning Student Language (BSL). Я где-то прочитал, что они мега-полезные. Наверное, эти два курса помогли мне лучше понять некоторые приемы написания программ и стали хорошим подспорьем для написания Unit-тестов в реальной работе. Но, если быть честным, их можно пропустить.
Data Structures and Algorithms – 2 месяца
Потом я снова вернулся на coursera.org и начал новую специализацию, сотоящую из следующих четырёх курсов:
Но осилил только первых два. На остальные даже не стал записываться. Параллельно с этими курсами я начал читать книгу OCA, о которой речь пойдет дальше.
Топтание на месте
В тот момент я понял, что топчусь на месте. Прохождение новых курсов не давало такого ощутимого количества новых знаний, как это давали первые. Т.е. знания вроде прибавляются, но это никак не приближает меня к получению работы. Я не понимал, как с такими знаниями можно вообще найти на работу. Я всё также не мог написать ничего, что было бы сложнее парсера. Ну как так-то?!?!? Я даже пытался написать свой сервис парсинга сайтов с блэк-джеком и путанами, но уже после недели разработки мой проект превратился в кашу из классов. И я уже сам не мог разобраться в том, что я там понаписал. Кроме того, мне всё ещё были непонятны некоторые аспекты функционирования языка. И это после того, как я уже потратил примерно год на все этих курсы!!! Двенадцать онлайн-курсов и целый год времени, Карл, вы только вдумайтесь в это. На самом деле, это был провал. Я был уверен, что за год я смогу стать разработчиком благодаря этим курсам. Я заблуждался. Мне нужен был план Б.
Альтернатива
Я стал искать курсы, которые бы помогли мне получить какие-то практические навыки, востребованные в реальной работе. Но ничего толкового не было, либо стоило приличных денег. Те же курсы от отуса стоят 50000 за шесть месяцев и отзывы на них противоречивые. Я не был готов к таким расходам. Я был готов впахивать самостоятельно и искал, как это можно сделать бесплатно или совсем недорого. В итоге все онлайн-курсы, которые мне попадались, делились на две категории:
- Первая рассчитана на новичков или людей с нулевой подготовкой. С их помощью ты достигаешь уровня «три с минусом». Это я! Это про меня!
- Вторая для «хорошистов» с опытом работы, которые хотят стать «отличниками». Вроде таких: «Как писать микросервисы на Java для высоконагруженных проектов с использованием WildFly Swarm». Что это вообще такое???
А между ними зияющая пустота. Ну где я и где все эти микросервисы??? Получалось, что для «троечников» вообще ничего нет. Или есть, но за хорошие деньги. И как стать «хорошистом» бесплатно, без регистрации и СМС, вообще непонятно.
Сертификация Oracle
Тогда я решил стать сертифицированным разработчиком на Java. Потому как фраза «Я профессиональный программист на Java» звучит очень круто и должна сразить будущего работодателя наповал!!! Во всяком случае, тогда я так наивно думал.
OCA: Oracle Certified Associate Java SE 8 Programmer – 2 месяца
Для этого я купил книгу:
На освоение этой книги у меня ушло примерно 2 месяца. Она реально открыла мне глаза на многие аспекты и заставила понять, как работает язык в деталях. Это было хорошее продвижение вперед. Но не в поиске работы, а в понимании языка Java. На экзамен я шел с уверенностью, что сдам его хорошо, и я его сдал. Я набрал 84% при необходимых 65%. Я был безмерно горд собой.
Стоимость экзамена $245. В России он стоит немного дешевле.
Оцените стоимость официального тренинга от Oracle для подготовки к этому экзамену
OCP: Oracle Certified Professional Java SE 8 Programmer – 4 месяца
Я с энтузиазмом принялся за вторую книгу тех же авторов:
На освоение второй книги я потратил уже 4 месяца. И это оказалось реально сложно. Два раза я делал перерывы по одной неделе, потому как понять лямбда выражения или многопоточность мне было действительно непросто. Также меня убивало обилие классов для ввода и вывода. Все эти NIO и NIO2, которые так похожи и которые нужно было знать. Что там базовый класс, что производный? Это был настоящий кошмар. В итоге я назначил дату экзамена за месяц, потом перенес его на две недели, потом еще на две. Меня поджимали сроки, на горизонте маячило собеседование. И мне нужен был этот сертификат. Я не стал переносить экзамен в третий раз и пошел с тем, что имел. В отличие от первого экзамена, я уже не был уверен в хорошем результате. Я вообще не был уверен, что смогу его сдать. От былой гордости не осталось и следа. Объем информации для понимания и запоминания во второй книге раз в пять больше чем в первой. Но я сдал и этот экзамен. К счастью, тестовые задания в книгах оказались сложнее, чем те, которые были на экзамене. Но это был прорыв… для меня. Прорыв в плане знаний и понимания того, как работает язык и какие инструменты он предлагает.
Стоимость экзамена также $245.
Могу сказать, что эти две книги мне дали больше, чем все те онлайн курсы, что я прошел ранее. Но я не знаю, смог ли бы я вообще сдать эти экзамены, если бы не прошел предварительно курсы. С помощью этих экзаменов я перешел на уровень «три с плюсом». И это было уже что-то. Но я всё также не был способен самостоятельно реализовать какой-нибудь интересный проект. WTF????
Я понял, что я достиг максимума от того, что я мог получить сам, и изучать язык дальше было бессмысленно. Более того, я понимал, что мои знания, которые я с таким трудом получил, без практики очень быстро улетучиваются. Тянуть было нельзя, и я занялся подготовкой к собеседованию и приобретением навыков, которые могут потребоваться при устройстве на работу.
Что нужно, чтобы получить работу?
Нужно пройти собеседование и техническое интервью! Про подготовку к собеседованию писать не буду. Это тема для отдельной статьи. Напишу только про те знания, которые нужны, чтобы пройти техническое интервью.
Подготовка к интервью – 1 месяц
Я купил следующую книгу:
Настоятельно ее рекомендую. Она поможет подготовиться к техническоой части собеседования. На неё я потратил примерно месяц. Многие задания были непонятны, поэтому я нашел еще один экземпляр на русском, и когда мне было совсем непонятно, я смотрел в него.
Дополнительные навыки
К этому моменту я уже активно мониторил рынок вакансий в своём городе и выбрал компанию, в которой хотел бы работать. У них была вакансия Java Developer. В вакансии в числе желаемых навыков стояли знания Oracle SQL, GWT, Eclipse, SVN, Maven, Jenkins. Мне не нужны были глубокие знания всех этих технологий, мне нужно было простое понимание, что это такое и как оно работает. Чтобы на собеседовании можно было сказать, мол да, я знаком, но не глубоко.
Oracle SQL – 1 неделя
SQL я уже неплохо знал, так как по долгу службы приходилось делать много произвольных отчетов для руководства. Но это был T-SQL от Microsoft, а тут требовался SQL от Oracle. Пришлось купить книжку, чтобы вспомнить основные моменты и понять разницу.
Эту книжку я пробежал быстренько за неделю. И понял, что я на 70% готов сдать еще один экзамен. Но мне было уже не до этого.
SVN – 1 неделя
SVN распределённая система управления версиями. GIT или SVN используется в большинстве компаний, которые занимаются разработкой ПО. Курсов по SVN я не нашел, поэтому решил взять короткий курс по GIT: «Version Control with Git», чтобы быть в курсе темы. Я даже подумал, что если спросят про SVN, то скажу, что имел дело с GIT. А потом на месте сориентируюсь. Если вдруг будет что-то непонятно, то всегда можно будет сказать, что в GIT это немного по-другому. И это, кстати, сработало.
GWT – 3 дня
Следующая технология из списка – GWT. Потратив несколько дней на поиски информации, я понял, что с этим Фреймворком от Google мне просто не разобраться. Если упрощенно, то можно писать сложные сайты на Java, а этот Фреймворк преобразовывает твой код в HTML + JavaScript и отображает в браузере без всяких надстроек и дополнений. Слишком всё круто. GWT я решил пропустить.
Eclipse – 3 дня
Eclipse — среда разработки, основной инструмент разработчика, с которым я имею дело каждый день. Каких-то специальных курсов я не брал. Посмотрел несколько видео на youtube, понял основные приемы. Попробовал всё сам руками.
Maven, Jenkins – 15 минут.
На эти две вещи времени просто не осталось. Собеседование было уже утром, поэтому я просто прочитал 2 статьи в википедии и лёг спать.
Время
Мной было потрачено примерно 18 месяцев, 2 недели, 6 дней и 15 минут на получение знаний и навыков, необходимых для получения места разработчика. Этим я занимался по вечерам, тратя 1-3 часа в будние дни. И около 5-6 часов на выходных.
Деньги
Я готов был тратить свое время и не готов был тратить деньги. Но потратить их всё же пришлось.
Курсы:
- Все онлайн курсы я прошел бесплатно Бесплатно. Как это сделать на coursera.org я писал тут.
Книги:
Экзамены:
Дополнительные расходы:
- Проезд в другой город на экзамены, т.к. в моем нет сертификационных центров – 120€.
Итого: 702€
Совсем бесплатно, к сожалению, не получилось. Книги покупал на английском, т.к. экзамен тоже на английском.
Результат
Этих знаний хватило, чтобы пройти собеседование и подписать контракт в достаточной крутой немецкой компании. Я бы даже сказал, что их хватило с запасом.
Их также хватило, чтобы пройти шестимесячный испытательный срок и получить постоянное место в штате разработчиков.
За эти 6 месяцев работы в качестве разработчика я закрыл более 200 заявок на разработку, доработку и исправление ошибок в коде совершенно разных подсистем и модулей. И ни от одной заявки я не отказался «потому что я не смог». Да, мне приходилось и сейчас приходится разбираться в новых вещах, искать информацию, вникать в детали. Что-то я делаю медленно, но мне это интересно и процесс идёт. А ещё за это хорошо платят!!!
Но не надо думать, что я очень умный. Я самый простой парень, который просто решил изменить свою жизнь к лучшему. Я такой же, как и ты. А если смог я, то сможешь, и ты!
На самом деле, чтобы стать разработчиком, у меня ушло не 1,5 года, а два. Но это по моей собственной глупости (читайте об этом в моем телеграм-канале). Непосредственно на яву я потратил 1,5 года. Но необязательно повторять мои ошибки. Думаю, что можно достичь того же результата за более короткий срок. Выкидываем всё лишнее и получаем примерно такой путь:
Часть первая – 5 месяцев
Берем следующие курсы специализации Object Oriented Java Programming: Data Structures and Beyond на курсере:
Параллельно читаем книжку:
По результатам сдаем экзамен.
Часть вторая – 2 месяца
Берем следующие курсы специализации Data Structures and Algorithms:
Параллельно читаем книгу:
Часть третья – 4 месяца
Читаем книжку:
По результатам сдаем экзамен.
Часть четвертая – 1 месяц
Смотрим, что конкретно хочет работодатель от соискателей, и тратим по одной неделе на каждую из 4-х самых нужных технологий, программ или Фреймворков (Git, Eclipse, Maven, Spring и т.д.). Плюс изучаем предметную область, в которой работает работодатель, его продукты, если есть и т.д.
Итого год. За год – вполне реально.
О том, как я изменил свою жизнь в 40 лет и переехал с женой и тремя детьми в Германию я пишу в своем телеграм-канале @LiveAndWorkInGermany. Пишу о том, как это было, что хорошо и что плохо в Германии, о планах на будущее. Коротко и по делу. Присоединяйтесь – будет интересно.
Цель этой статьи — сделать обучение программированию доступным для всех.
Как наставник, меня постоянно спрашивают:
«Какой язык программирования мне следует изучать, если я новичок?»
«Какой язык программирования наиболее востребован для работы?»
«Какой самый популярный язык программирования?»
Если вы ищете официальный рейтинг лучших языков программирования, вы можете найти его здесь: IEEE Spectrum топ-языки программирования
Этот список отлично подходит для проверки того, используется ли конкретный язык программирования сегодня.Однако, если вы новичок в программировании, я не рекомендую выбирать язык исключительно на основе списка.
Информатика является полностью кумулятивной областью изучения. Это означает, что каждая последующая тема основана на предыдущих темах.
Если вы ранее пытались изучать программирование (или любую область STEM) в школе, старались изо всех сил, но не смогли — у вас не было проблемы. Хороший профессор любого кумулятивного предмета тщательно следит за учебной программой. При условии, что каждый студент достаточно подготовлен и удовлетворяет предварительным условиям, ожидания в отношении предыдущих знаний студентов должны быть ясными.Хороший профессор понимает ожидания и не предполагает никаких знаний за пределами этой области. Все, что находится за пределами ожиданий, нужно учить. Каждая тема в учебной программе упорядочена последовательно, в соответствии с другими темами.
Когда предмет кумулятивный, необходимо уделять пристальное внимание при разработке учебной программы курса или пути обучения. С учетом сказанного не выбирайте язык для своего рейтинга; выберите язык, для которого у вас есть полный путь обучения, который не делает никаких предположений о предыдущих знаниях.
Прежде чем вы начнете изучать кодирование, важно подумать над тем, что я высказал выше: все в информатике накапливается.
Мне нравится повторять это, потому что самая большая ошибка, которую вы можете сделать как начинающий программист, — это сдаться, потому что вы не думаете, что вы достаточно умны, чтобы изучать программирование. Обучение кодированию не имеет ничего общего с вашим интеллектом. Да, изучать программирование сложно, не из-за того, кто вы есть, а из-за того, что есть много тем для изучения.
Первое правило: примите, что произойдет следующий сценарий: вы познакомились с новой темой, которая для вас абсолютно бессмысленна.
Этот сценарий будет происходить снова и снова. То, как вы справляетесь с этой ситуацией, каждый раз, когда это происходит, является единственным фактором, который будет определять ваш успех.
Если текущая тема, которую вы изучаете, не имеет для вас смысла, оставайтесь на месте. Не переходите к следующей теме. Чтобы повторить, темы являются кумулятивными. Пропуск вперед — это все равно что пытаться прикрепить крышу к дому, в котором нет каркаса, стен и фундамента.
Я нахожусь в этой ситуации все время . Мне часто приходится пересматривать одну и ту же лекцию видео-урока несколько раз, чтобы понять, что я изучаю. Не расстраивайтесь, если окажетесь в моих туфлях.
Если используемый вами учебник (или книга) недостаточно объяснил тему, вам придется искать другие подходящие для вас ресурсы. Нет оправдания тому, чтобы сдаться только потому, что освещение вашего учебника по теме не сработало для вас. На YouTube вы можете найти практически все, что вы хотели бы узнать бесплатно.Выясните, что искать (например, [тема] на [ваш язык программирования] + любые другие полезные ключевые слова).
Если вы ищете на YouTube учебные пособия, сначала проверьте статистику. Посмотрите на рейтинг и / или количество просмотров. Если вы все еще не уверены, стоит ли видео потратить ваше время, прочитайте некоторые комментарии, чтобы оценить мнение других.
Многие темы не будут иметь смысла с первого раза. Поэтому воздерживайтесь от негативных мыслей о себе.
Цель состоит в том, чтобы осознавать свое понимание в процессе обучения.По мере продвижения по пути обучения вам необходимо саморефлексировать. По каждой теме, которую вы освещаете, задайте себе такие вопросы, как:
- «Имеет ли эта тема смысл для меня?»
- «Была ли новая терминология? Если да, было ли дано формальное определение для каждого нового термина? »
- «Были ли новые навыки? Я понимаю, как каждый новый навык используется в приложении? Могу ли я продемонстрировать свое понимание этого навыка, решая практические задачи? »
- «Я буду помнить то, что я только что изучил завтра? И послезавтра? Если нет, то как я запишу это в память?
Последний совет: никогда не стоит недооценивать силу запоминания.Запоминание — это совершенно недостаточно используемый подход к обучению. Да, понимание темы является конечной целью. Однако понимание может занять время. Если вы действительно пытаетесь понять тему, разбейте тему и запомните важные термины. Если вы не можете понять, как что-то работает, вашей непосредственной целью должно быть запоминание. Если вам нужны советы о том, как справиться с запоминанием, подумайте об использовании метода учебной карточки. Подробнее о том, как я использую эту технику, вы можете прочитать в моем документе «Подготовка к собеседованию».
Первым шагом является изучение основ информатики, о которых я расскажу в своей статье: Введение в терминологию информатики. Эта статья написана специально для моей аудитории — для всех. Я специально создал это так, чтобы его было легко понять любому, кто не имеет опыта работы с компьютерами.
Понятия, описанные в статье, являются преимущественно дефиниционными. Вы можете случайно прочитать статью, и этого вполне достаточно. Я рекомендую зафиксировать эти условия в памяти.Подходите к каждому термину так, как если бы вы были в школе, и вы должны иметь возможность вспомнить определение каждого термина для экзамена. Вам не нужно брать на себя такую тщательность, если вы этого не хотите. Однако чем больше этих концепций вы можете зафиксировать в памяти, тем легче будет понять более поздние темы.
Нет, вам не нужно быть сильным в математике, чтобы быть программистом. Математические навыки могут быть полезны, но они не нужны.
Если вы не уверены в своих математических способностях, я рекомендую изучить логику высказываний.Принципы, охватываемые пропозициональной логикой, являются строительными блоками программирования.
Вы можете изучить логику высказываний из этого учебника YouTube: Основные понятия в логике высказываний.
После того, как вы изучите основы информатики, вы будете готовы выучить язык программирования.
Я приложил много усилий и усилий для разработки пути, который подходит всем, независимо от их происхождения. Я выбрал Java для этого пути обучения, потому что Java — это язык, на котором я больше всего разбираюсь.
Java — один из самых востребованных языков программирования. Он классифицируется как объектно-ориентированный язык программирования (вы узнаете, что это значит позже) и используется для создания настольных, веб-и мобильных приложений.
Если вы предпочитаете учиться по книге, я рекомендую следующее: Head First Java.
Если вы ищете видеоурок, я рекомендую посмотреть видео № 1–19, 31–33, 88 и 93 в руководстве Java YouTube от Дерека Банаса: Руководство по видео Java.
Первое видео в руководстве YouTube направит вас на скачивание компьютерной программы под названием Eclipse .Eclipse является интегрированной средой разработки (IDE ). Вы можете думать о IDE как о необычном термине для текстового редактора, созданного для программистов. Это просто компьютерное приложение, которое предоставляет текстовый редактор для программирования, а также другие инструменты для запуска ваших программ. Вот ссылка на видео Дерека Банаса на YouTube о том, как загрузить Eclipse: Установите Eclipse для Java.
Алгоритм — это набор инструкций (или шагов) для выполнения конкретной задачи, где каждый шаг должен быть четко определен, может быть выполнен и конечен (то есть он не продолжается бесконечно).
Структура данных — это способ организации данных в памяти.
Алгоритмы и структуры данных являются двумя наиболее сложными темами программирования. Вам не нужно , чтобы учить алгоритмы для базовых навыков программирования. Тем не менее, если вы стремитесь работать инженером-программистом в авторитетной технологической компании, вы должны будете продемонстрировать понимание алгоритмов и структур данных во время интервью.
Что касается личной информации, то из приведенного ниже учебного руководства мои навыки работы с алгоритмом перешли от новичка к эксперту: учебник по удемскому алгоритму по алгоритмам и структурам данных.Я купил много учебников по алгоритмам. Это был, безусловно, самый полный из всех, с которыми я сталкивался. Если вы хотите изучить алгоритмы и структуры данных или подготовиться к техническим собеседованиям, этот учебник — ваш лучший выбор для успеха.
Примечание: курс дорогой, но необходимый. Мне удалось связаться с инструктором, и она щедро предложила код купона, который снижает стоимость с 50 до 10 долларов. Код купона будет применен автоматически при нажатии на ссылку.
Я рекомендую использовать следующий учебник вместе с учебником Udemy: VisuAlgo. VisuAlgo — это бесплатный ресурс, который демонстрирует, как значения, вводимые в алгоритм, меняются в процессе его выполнения.
Разработка Android, на мой взгляд, одно из самых забавных приложений Java-программирования. Приложения Android в основном запрограммированы на Java, поэтому, как только вы изучите Java, вы будете готовы изучать Android.
Вот лучшее бесплатное видеоурок для начала изучения Android: Udacity-Android Development для начинающих.
После того, как вы пройдете курс Udacity, описанный выше, у вас есть несколько вариантов, куда идти дальше. Там должно быть расширение вышеупомянутого курса, который преподается той же группой сотрудников Google. Дополнительные лекции должны стать видимыми после прохождения курса (если вы не можете его найти, найдите его в Udacity). Это хороший вариант, тем более что он бесплатный.
Тем не менее, если вы готовы потратить деньги на выдающуюся книгу, я настоятельно рекомендую следующее: Head First Android Development: руководство для мозга.Эта книга дает подробные объяснения и полезные наглядные пособия, которые действительно помогут вам изучить основные понятия Android. Каждая глава проведет вас через пример приложения. Все подробно объясняется с использованием слов и диаграмм, понятных каждому.
Stack Overflow — это веб-сайт, на котором программисты могут получить бесплатную помощь по своему коду. Если вы застряли и хотите задать вопрос, сначала найдите его. Если вы не можете найти свой вопрос, создайте аккаунт и опубликуйте вопрос самостоятельно!
Есть множество образовательных сайтов, где вы можете найти учебники по программированию.Некоторые из моих любимых — Codecademy, Udemy, Udacity, Team Treehouse и Khan Academy.
почему вы должны и с чего начать
от John Selawsky
Фото Boskampi на PixabayОпределите свои карьерные цели и выберите язык. Это самый важный совет для тех, кто имеет нулевой опыт программирования и стремится присоединиться к сообществу разработчиков. Но как сделать выбор, не зная, какой язык больше всего подходит для ваших целей?
Не было бы легко, если бы среди всех языков программирования был «лидер рынка»? Тогда у всех новичков всегда будет безопасный выбор — выучите этот язык, и вы наверняка будете востребованы.Конечно, это невозможно. Языки являются «инструментами» для решения многочисленных задач. Но, тем не менее, есть один, который можно рассматривать как звездный выбор — это Java.
Java — это хорошо структурированный, объектно-ориентированный язык, который может показаться простым для начинающих. Вы можете справиться с этим довольно быстро, так как есть много процессов, которые запускаются автоматически. Вам не нужно слишком углубляться в «как там все работает». Java — это кроссплатформенный язык. Это позволяет программисту создать приложение, которое можно развернуть на любом устройстве.Это предпочтительный язык для Интернета вещей и правильный инструмент для создания приложений уровня предприятия.
Что важно для новичка, Java имеет одно из крупнейших глобальных сообществ и высококачественную документацию. Если у вас возникла проблема, более чем вероятно, что ответ готов и ждет вас. Еще два преимущества Java — это обширные коллекции и инфраструктуры, которые охватывают большинство задач, с которыми вам придется столкнуться как младшему разработчику.
Наконец, это язык с респектабельным прошлым и выдающимся будущим.Две последние версии, дополненные новыми функциями, были выпущены в течение шести месяцев друг от друга. Это помогает Java стоять на переднем крае и удерживать самые высокие позиции в респектабельных профессиональных рейтингах.
Но даже когда мы говорим о языке программирования с низкой кривой обучения, есть много скрытых камней для начинающих. Сколько времени тебе нужно учить? Каким источникам доверять? Какие ошибки следует избегать? Давайте пройдем весь ваш учебный опыт.
Итак, вы новичок в программировании.Поздравляем: так как вы можете использовать опыт других программистов и избежать распространенных ошибок в самообразовании. Вот несколько частых ошибок.
Обучение без постановки конкретной цели
Чтобы оценить масштаб и желаемый уровень знаний по определенному языку программирования, прежде всего, вы должны ответить на простой вопрос: зачем вам программирование?
Если вы серьезно относитесь к кодированию и собираетесь стать Java-разработчиком, вам придется заниматься каждый день не менее 4–5 часов.Но если вы просто хотите расширить свои возможности, вы можете выбрать более спокойный темп. В любом случае, постарайтесь не продлевать свое образование на долгие годы, потому что технологии развиваются. Пока вы изучаете определенную структуру или инструмент разработки, чтобы получить работу, она устареет.
Чтение всплывающего «чего-нибудь полезного» — не лучшая стратегия обучения. Внести коррективы в общий план. Однако, если вы не будете следовать этому, это неизбежно демотивирует вас.
Попытка изучить слишком много технологий одновременно
Это последующая ошибка, которая приводит к обучению без конца.Не пытайтесь наполнить свой учебный план слишком многими технологиями и инструментами, чтобы избежать выгорания. Вам нужно время, чтобы обработать информацию и посмотреть, как все работает на практике.
Слишком много исследований и теории без практики
Программирование — это навык, который вы можете получить только с большим количеством практики. Вам понадобится серьезный теоретический опыт, но пока вы только читаете (или смотрите) лекции и курсы, вы не можете действительно писать код. Подумай об этом. Никто не может научиться плавать, не пытаясь это сделать.Вам нужны объяснения, но, прежде всего, вам нужны действия.
Только много практики научит вас, как справляться с повседневными проблемами программистов. Например, у вас появится привычка регулярно проверять код и не допускать накопления связанных проблем. Вы также начнете с самых простых решений. Затем переходите к более изысканным, постоянно работающим над улучшением вашего кода. И самое главное, вы привыкнете к кодированию ежедневно.
Обучение кодированию в отдельности
Начинающие часто сомневаются, стоит ли им присоединяться к сообществам онлайн-программирования или посещать мероприятия, в основном из-за
.Learn Java Programming с примерами
Это руководство поможет вам изучить Java как профессионал. Я поделился 500+ учебниками по различным темам Java, включая учебники по ядру Java и расширенным концепциям Java, а также примеры программирования на Java. Этот основной учебник по Java содержит ссылки на все учебники в систематическом порядке, начиная с уровня новичка и заканчивая сложными темами. Независимо от того, являетесь ли вы студентом колледжа, изучающим программирование на Java, или сотрудником компании, изучающим продвинутые темы по Java для создания приложения на Java, этот учебник по Java наверняка вам пригодится.Давайте начнем учиться.
Java Tutorial
Чтобы изучить программирование на Java, обратитесь к этим учебным пособиям в указанном порядке. Эти учебные пособия написаны для начинающих, поэтому, даже если у вас нет предварительных знаний по Java, вы не столкнетесь с какими-либо трудностями при понимании этих учебных пособий (эта страница содержит базовое учебное пособие по Java и расширенное учебное пособие по Java).
Учебники по основам Java
Начните отсюда. введение в Java и основы Java с примерами.
1. Введение в Java
2.Основы виртуальной машины Java (JVM)
3. Первая программа на Java
4. Переменные в Java
5. Типы данных Java
6. Операторы Java
7. If-else в Java
8. Случай переключения в Java
9. Java Цикл For
10. Цикл Java While
11. Цикл Do-while в Java
12. Оператор Java Continue
13. Оператор Java Break
Учебник по Java OOPs
14. Конструктор в Java
15. Статическое ключевое слово в Java
16. Наследование Java с примером
17. Типы наследования в Java
18.Агрегация в Java
19. Ассоциация в Java
20. Супер-ключевое слово в Java
21. Перегрузка метода в Java
22. Переопределение метода в Java
23. Перегрузка метода против переопределения метода
24. Полиморфизм в Java
25. Типы полиморфизма в Java
26. Статическое и динамическое связывание
27. Абстрактный класс в Java
28. Java Абстрактный метод с примером
29. Интерфейс в Java
30. Java — Абстрактный класс против интерфейса
31. Инкапсуляция Java с примером
32 ,Пакеты Java с примерами
33. Модификаторы доступа в Java
33. Сборка мусора в Java
34. Последнее ключевое слово
Учебник по обработке исключений Java
35. Java Exception обработка
36. Java try-catch блок
37. Java finally блок
38. Как вызвать исключение в Java
39. Пользовательское исключение в Java
40. Примеры исключений
Учебник по коллекциям Java
41. Java ArrayList
42. Java LinkedList
43. Вектор в Java
44.HashMap в Java
45. Java TreeMap
46. Java LinkedHashMap
47. Java HashSet
48. TreeSet в Java
49. LinkedHashSet
50. Хэш-таблица в Java
51. Очередь
52. PriorityQueue
53. Deque & ArrayDeque
54 Сопоставимый интерфейс
55. Интерфейс компаратора
Java-учебник по аннотациям, Enum и Regex
56. Java Enum
57. Java аннотации
58. Java Regex
Разное Базовое руководство по Java
59.String in Java
60. Многопоточность Java
61. Сериализация Java
62. Учебное пособие по Java AWT
63. Учебное пособие по Java Swing
64. Автобокс и распаковка Java
65. Класс Wrapper в Java
Java 8 Tutorial
В Java 8 появилось несколько новых функций. Я рассмотрел все функции Java 8 в отдельных руководствах, ссылки здесь:
66. Лямбда-выражения Java
67. Ссылки на методы Java
68. Функциональные интерфейсы Java
69. Учебник по Java Stream
70.Учебник по фильтру потоков Java
71.
- Товары
- Клиенты
- Случаи использования
- Переполнение стека Публичные вопросы и ответы
- Команды Частные вопросы и ответы для вашей команды
- предприятие Частные вопросы и ответы для вашего предприятия
- работы Программирование и связанные с ним технические возможности карьерного роста
- Талант Нанимать технический талант
- реклама Связаться с разработчиками по всему миру