Как стать программистом или Выучить Java за 1 год / Хабр

Здравствуй, дорогой читатель. Давно хотел написать подобную статью, но либо не хватало времени, либо мешала предательская лень. Но, как бы там ни было, все-таки у меня получилось собраться с мыслями, чтобы написать то, что принесет вам, я надеюсь, какую нибудь пользу. С радостью поделюсь своими знаниями и опытом, в ответ с вас причитается время и внимание. По моему мнению, данная публикация хорошо подойдет для тех, кто готов определиться в своих интересах и хочет связать свою жизнь с IT — тем или иным образом. Итак, поехали!

Содержание

Выбор языка программирования

Публикация начинает выглядеть как многие подобные материалы. По закону жанра я должен буду написать название пары тройки языков программирования, назвать парочку плюсов и минусов и, в итоге, так и не ответив на вопрос, перейти к следующей части. Отчасти в этом есть доля правды, ведь каждый выбирает для себя тот язык, который ему ближе, исходя из того, разработкой какого вида продуктов он хочет заниматься в будущем. Большинство из вас изучали в школе Turbo Pascal и вряд ли для вас будет новостью, что на этом языке сейчас уже практически ничего не пишут. Так и в данном случае, выбирать язык надо грамотно, хотя много знаний никогда не бывает, но если вы хотите за короткий промежуток времени эффективно влиться в ряды программистов, к выбору языка надо подходить с умом. В самом начале запомните: хороший программист никогда не останется голодным, а в большинстве случаев сможет купить себе много икры (это определение подойдет для любой специальности, но ни одна специальность не даст вам такой свободы выбора места работы, как в плане компаний, так и стран — программист он и в Индии программист).

Логично, что чем популярнее язык и востребованность, тем больше шансов будет найти  работу в будущем, при этом язык должен быть несложным в освоении. Потому что хотя на C++ и пишут большое количество игр и получают за это хорошие деньги, новичку, тем более не знакомому с ООП (объектно-ориентированное программирование)  лучше отложить на некоторое время этот язык куда подальше. Далее по ссылке предоставлен список самых популярный языков  программирования 2014 года, и как видно, на первом месте стоит Java, далее идут C языки, затем Phyton, JavaScript, PHP, Ruby и т.д. Если самим поискать подобные статистики, то вы увидите, что в разных источниках места заняты по разному, но в целом первые 10 мест по содержанию везде будут совпадать.

Если же обратиться к другому источнику, в основе которого анализ выложенных в Twitter вакансий, вы увидите очень похожую ситуацию с первым примером. И да, обе статьи на английском, привыкайте к этому, если хотите стать программистом, запомните, что практически вся документации и  источники полезной информации написаны на английском, так что если ваши знания в этом языке слабоваты, добавьте себе в список дел на завтра и на ближайшее будущее изучать и практиковать английский. Думаю, я даже напишу отдельную статью, посвященную  изучению иностранного языка.

Исходя из этих двух источников мы уже можем себе представить, какие языки программирования сейчас «в моде». Как видно по названию, автор статьи выбрал для себя Java. Хотя я считаю его лучшим для изучения ООП, найдется много людей, которые не согласятся со мной, и это логично — сколько людей, столько и  мнений. Тут мы встаем на небольшое перепутье дорог: выбирать Java, С# (очень похож на Java), Phyton, если мы хотим работать с начинками программ и приложений (back-end) или же PHP, JavaScript, HTML, если хотим заниматься веб-разработкой (front-end). В первом случае я бы свой выбор остановил на Java, а во втором — на PHP, хотя опять же, тут больше по вкусу, надо уже самому искать информацию о различных языках и вообще понимать, чем ты хочешь заниматься. Для размышлений вот подборка языков, которые используются в крупнейших интернет компаниях мира.

Есть 2 основных причины, почему бы я выбрал либо Java, либо PHP. Первая — это очень популярные языки и найти соотвествующую работу не составит труда, а вторая — в том, что ни по каким другом языкам вы не найдете столько обучающего материала как по этим двум, причем как на русском, так и на английском.

Обучение

Итак, мы подошли к стадии, до которой большинство доходят без проблем, но этот период по праву является одним из самых сложных в карьере программиста. Хотя  программист учится в течение всей своей жизни, то время, когда он начинает делать свои первые шаги, во многом определяет дальнейшую его судьбу. Вообще обучение проверяет человека на прочность, выдержит ли он, не потеряет ли интерес через месяц (как это у некоторых бывает), сможет ли дойти до конца и освоить базовые знания, на которые потом будут наслаиваться уже целые пласты информации.

Вообще, у меня есть своя теория, не раз подтвержденная мною же на практике: абсолютно всему можно научиться за  1 год. . Поверьте мне, это сущая правда, кому-то даже понадобиться меньше времени, но если человек не перестает сдаваться и в течение года с умом подходит к обучение, то практически невозможно, чтобы он не научился. Это не только в программировании, абсолютно в любой сфере: хочешь играть на гитаре — без проблем (у меня это заняло не так уж много времени и сил), научиться аргентинскому танго, кататься на серфе — на все это хватит одного года. Главное — учитесь!

В данном случае я буду рассматривать язык Java, так как он мне все таки ближе. Благо в интернете полно людей, которые безвозмездно помогают другим в обучение, поэтому найти подходящий для вас материал не составит труда. Здесь выложены более 1000 часов лекций по Java, которые можно с пером и бумагой просматривать в стенах свою уютной квартиры (пока только на русском языке). Для тех, кто привык вчитываться в проходимый материал, опять же интернет предоставляет большие возможности и это только один из всевозможных сайтов с уроками по Java. Теории хоть отбавляй, но не могу сказать про такой обучающий сайт, как Coursera.org, где вы сможете найти обучающие курсы на различных языках и по различным областям, в том числе и программированию — опять же все абсолютно бесплатно. Таких сайтов не один и не два, стоит всего лишь поискать.

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

Ну и конечно, кто-то спросит, а как же книга? Разве не надо их читать, а если надо — то что? На это я отвечу, что от чтения книг еще никто глупее не становился. Книг тоже очень много, но я перечислю только небольшую часть из них:

Помощь в практике

Как уже упоминалось, практика — это неотъемлемая часть в любом обучение, особенно в программировании. Тут вам придется кодить и кодить, вплоть до мышечной памяти пальцев. Это, конечно, немного утрировано, но на первых порах придется и вправду много бить по клавишам, чтобы запоминать значения различных конструкций, чтобы в будущем использовать практически на автомате.

У многих начинающих программистов на первых порах возникает большое количество вопросов, особенно когда нужно выполнять самостоятельное задание. Это нормально. Но в таких ситуациях надо понимать, что практически на любой возникший у вас вопрос можно найти ответ в интернете. Вряд ли вы первый, кто с ней сталкивается, поэтому не торопитесь сражу же задавать вопросы на различные форумы программистов (о которых я напишу чуть позже). Посидите минутку, правильно сформулируйте проблему у себя в голове и смело ищите её в поисковике. Наверняка большинство будут искать на русском языке, но не забывайте, что язык программистов — это английский, поэтому, если вы не нашли ответ на великом и могучем, стоит поискать на языке, который в школе вроде бы все учили, но так и не выучили. Но если даже и в этом случае оказалось, что на ваш вопрос нигде нет ответа, в бой вступают лучшие форумы интернета:

  • Cyberforum — по моему мнению, самый популярный русскоязычный форум ITшников, тут можно найти ответы на вопросы, при чем и не только в области программирования;
  • Programmers forum — крупный русскоязычный форум;
  • Searchengines — небезызвестный форум, но специализируется больше в веб- программирование;
  • Stack overflow — а это уже, не побоюсь этих слов, самый популярный во всем мире IT-форум, ответы практически на все свои вопросы вы найдете именно здесь;
  • Dev shed — тоже крупный англоязычный форум;
  • Quora — форум прямо не специализирующийся на программировании, но зато большая вероятность, что вы получите ответ от настоящего профессионала.

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

Компилируем код

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

Наконец, для тех, кто хочет действительно стать программистом, желаю взять быка за рога, собрать всю волю в кулак и делать то, что вам нравится. До меня уже тысячи раз говорили, но я повторюсь, главное — желание и труд. Тогда все у вас получится. Запомните самое главное: воспринимайте изучение языков программирования и различных технологий не как цель, а как СРЕДСТВО. Только представьте, какие возможности перед вами открываются. Может быть, именно вы станете одним из тех, кто меняет мир в режиме реального времени. Так что удачи и спасибо за внимание!

Видео-бонус

«Что нужно знать, чтобы стать Junior Java Developer?» – Яндекс.Кью

Разберем, какими знаниями должен обладать джуниор Джава.

Должно быть четкое понимание ООП (объектно-ориентированного языка программирования), трех принципов ООП, как они работают (кто кого наследует, кто кого переопределяет, какие ограничения на наследования есть и пр.). Эти вопросы будут на любом собеседовании на должность Junior Java.

  • Методы объекта Object Java

Вопросы по данной теме также будут на любом собеседовании. Возможно, не напрямую, но если вы не будете знать Object Java, это вызовет у интервьюера удивление, так как это база.

  • Java Collections Framework

Вы должны знать основные интерфейсы и их реализацию (когда и какую использовать, какие есть особенности, понимать привязку Collections Framework к методам hashCode и equals), понимать, как и почему это работает и пр.

  • Многопоточность

В общих чертах у вас должно быть понимание, что такое многопоточность. Это могут спросить далеко не всегда, но общее понимание должно быть. Что такое мьютекс семафор, для чего методы wait и notify должен понимать любой разработчик.

Знание SQL-запросов обязательно на уровне написания простых запросов на Join на двух таблицах. Если вы пишите их легко, особо не напрягаясь, то, скорее всего, вы пройдете. Понятно, если у вас будут сложности на большом списке ложных запросах, на хевингах и так далее — это не будет критично для джуниора. Но писать джоины с двух таблиц вы должны уметь.

  • Стеки технологий

Вас этого могут не спросить, но знать нужно. На Java сейчас есть два альтернативных стека технологий: Java ЕЕ и Spring. Если вы еще не знаете никакой и только выбираете, какой учить — учите спринговый. Он более популярен и востребован. Что вы должны знать про стек? Список фреймворков, понимать для чего каждый из них предназначен, какие ограничения, какие аннотации и как он вяжется с остальными фреймворками. Хотя бы в общих чертах. По-хорошему, вы должны написать хотя бы одну программу на этом стеке, потому как если вы не имеете практики, только теоретические знания, то вас быстро поймают, поверьте.

Учить ли второй стек технологий — это по желанию. Конечно, в этом случае будет гораздо проще найти работу, и для собеседователя вы будете выглядеть более серьезным кандидатом. Но! Тут вопрос затрат времени и оправданности. Если стоит вопрос в обучении новому стеку или опыт реальной работы, то тут без сомнений выбирайте работу, так как опыт гораздо важнее.

  • Английский язык

Знание языка должно быть не ниже Intermediate. Если нет языка, то найти работу будет очень и очень трудно. Английский по умолчанию должен быть.

Последнее, что я хотел сказать. Некоторые думают, что Junior Java — это человек с улицы, который что-то немного знает и вообще работает за еду, лишь бы его учили. Нет, так дело не пойдет. Если вас берут на позицию Junior Java Developer, это значит, что вы должны иметь конкретные знания для своего уровня, прийти на работу и сразу влиться в процесс. Да, конечно, вам будут помогать и обучать, но не делать за вас то, что вы должны уметь.

Кстати, если выбираете курс изучения выше указанных языков программирования, рекомендую зайти на сайт-агрегатор онлайн-курсов tutortop.ru. Там в удобном виде собраны курсы от всех основных онлайн школ. Удобно выбирать и сравнивать.

Стоит ли становиться Java разработчиком в 2020 — Офтоп на DTF

Данная статья, описывает моё личное мнение основанное на моём опыте и опыте моих друзей. Может быть полезна только людям не знающим не один язык, но имеющим желание начать свою карьеру в сфере IT.

Привет DTF.
Скажу сразу, что если тему заголовка ставить как вопрос, то однозначного ответа я не дам. Я могу лишь описать своё видение и опыт.

Я являюсь Java программистом. Работаю в компании, где присутствуют множество языков. Основной проект компании написан на Java, но все новые проекты написаны на других языках.
Список языков в компании такой:
Java
Java Script
Type Script
C++
Go
Kotlin
Swift
Python

Компания существует уже более 20 лет и т.к. создавалась, для основного продукта и написана была сразу на Java. Отсюда вытекает 1 пункт, который по моему мнению должен знать новичок, решивший выучить Java

Java — это не про создание, а про поддержку.

Поясню. Java долгое время была лидером на рынке языков программирования — это было модно, стильно, молодёжно. Когда-то на ней писали всё: мобильные игры, серверную часть сайтов, десктопные приложения. Многие из успешных проектов, которые существуют и приносят прибыль создателям до сих пор, всё ещё написаны на Java. Их не стремятся переписать т.к. на этом может уйти много времени, сил и денег. Плюс встаёт вопрос куда девать всех jav’истов.
Этим я хочу сказать следующее — если вы решили стать именно Java программистом, буд-те готовы, что в 75% случаев, вас поставят не в молодой проект. Скорее всего вы будете поддерживать и фиксить баги в коде, который мог ещё остаться от java 5 или 6 версии. Вы в любом случае будете прокачиваться, возможно даже быстро, но не ждите что приобретённые вами навыки будут востребованы на рынке.
Так же в подобных проектах много дедов, которые не готовы к изменениям и не хотят разбираться в новых фишках java.
По факту вы будете чем-то вроде Адептус Механикус. Вы поклоняетесь богу машине, уповаете на её работоспособность, при каждом релизе молитесь, чтобы что-то не отвалилось, а всё, что выше java 8 версии является высшей степенью техно-ереси!

Начинающим Java программистам / Хабр

Программирую на Java вот уже 7 лет. Но на работе часто приходится обучать новое поколение. В связи с этим и решил сделать некоторую шпаргалку, которая, надеюсь, пригодится и для хабрчан. Если кто-то может помочь дополнить чем-то информацию из этой статьи, то пишите! Итак:

Основные ресурсы для начального обучения

  • www.javable.com — сайт со статьями и tutorial’ом по Java. Все в основном на русском.
  • www.exampledepot.com — очень полезный ресурс, где собраны краткие примеры использования классов для тех или иных пакетов
  • java.sun.com — без первоисточника не обойтись. Для любого Java программиста JavaDoc должен быть истиной в последней инстанции. Так же здесь можно найти серию tutorial’ов на все возможные темы.
Основные Java пакеты

Ниже приведён список Java пакетов, в которых программист должен свободно ориентироваться. Знакомиться с ними рекомендуется как по JavaDoc’ам, так и с помощью www.exampledepot.com. Все пакеты выстроены в рекомендуемом порядке для изучения. Итак:

  1. java.lang — основа основ. Каждый класс в этом пакете нуждается в отдельном внимании.
  2. java.io — ни одна программа не может обойтись без операций с вводом-выводом.
  3. java.util — пакет в основном содержит все необходимое для работы с коллекциями: Collection, Enumeration, Set, List, Map и т.д. и т.п.
  4. java.net — содержит основные классы для работы с сетью.
  5. java.text — все необходимое для форматирования текста
  6. java.lang.reflect — Java не была бы Java’ой если бы не Reflection. Reflection стирает грань между данными и кодом.
  7. javax.sql — все необходимое по работе с базами данных
  8. 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 developer, обязанности Java разработчиков

Java Developer – это специалист, основной задачей которого является создание сложных корпоративных систем для обработки данных. К таким системам можно отнести настольные приложения, веб-сервисы, облачные хранилища данных, веб-приложения, а также сложные банковские системы.

Java – объектно-ориентированный строго-типизированный язык программирования с С-подобным синтаксисом, который наиболее близок к C++ и C#. В Java есть как свои преимущества, так и недостатки. Учитывая тот факт, что для запуска Java-приложений используется специальная виртуальная машина, то приложения запускаются медленнее, чем в случае с C++, но эта виртуальная машина позволяет запускать приложения на той операционной системе, где она установлена, что обеспечивает независимость от платформы. Java имеет огромное количество библиотек и фреймворков, которые позволяют разрабатывать собственные приложения быстрее.

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

Java-разработчик должен обладать уверенными знаниями объектно-ориентированного программирования, уметь писать простой читабельный код с применением шаблонов проектирования, чтобы разработчик с которым он работает в команде мог разобраться в его коде, знать алгоритмы и структуры данных, так как для многопользовательского приложения важна скорость выполнения и приходится искать самый эффективный алгоритм, знать базы данных, так как очень часто приходится выполнять сложные запросы и выборки из нескольких таблиц. Java имеет множество библиотек и фреймворков. Разработчикам нужно знать их не только на уровне использования, но и понимать, как эти библиотеки и фреймворки устроены внутри.

Для легкого старта в изучении языка Java ITVDN рекомендует пройти курсы Java Starter и Java Essential. Java разработчику не обойтись без глубоких знаний баз данных (SQL), а также алгоритмов и шаблонов проектирования. После этого можно переходить к уровню Java Professional.

Требования к Java Developer:

  • Глубокие знания языка программирования Java
  • Уверенные знания ООП и шаблонов проектирования
  • Уверенные знания алгоритмов и структур данных
  • Знания баз данных (MySQL или PostgreSQL)
  • Знания JDBC и базовые знание Hibernate
  • Знания систем тестирования приложений (TDD)
  • Знание веб-сервисов таких как XML и JSON
  • Базовые знание фреймворка Spring
  • Английский язык на уровне чтения технической документации (углубленные знания будут преимуществом)

Java разработчик может занимать такие должности:


Trainee Java Developer

Junior/Middle/Senior Java Developer

Программист Java

Java Team Lead

Java Solution Architect

Lead Java Engineer

Как стать Java разработчиком за 1,5 года / Хабр

Меня зовут Сергей, мне 40 лет и сейчас я работаю Java разработчиком в немецкой компании. Мы занимаемся разработкой программного обеспечения для пивоварен оценки финансовых и кредитных рисков. Это моя первая работа в качестве разработчика. До этого я работал в сфере IT-поддержки и системной интеграции. Первого февраля 2019 г. закончился мой шестимесячный испытательный срок, и у меня на руках бессрочный контракт. Я хочу поделиться своим опытом, как можно самостоятельно выучить Java так, чтобы получить работу.

Это мой рабочий стол. Пить пиво в рабочее время у нас разрешено, мы же в Германии.

Моя первая статья: «IT-эмиграция с семьей. И особенности поиска работы в маленьком городе Германии, когда ты уже там»

Моя вторая статья: «Получить работу в Германии станет проще».

Disclaimer

Скажу сразу, что всякие варианты «выучи яву за 10 дней» (21 день, 30 дней и т.д.) – это утопия. Нет никакой красной таблетки, чтобы быстро попасть в матрицу. Но за год-два параллельно с основным местом работы – вполне реально.

Что у меня было в активе, прежде чем я начал изучать Java

Сначала я хотел назвать статью «Как стать Java разработчиком за 1,5 года с нуля», но передумал. Я ведь пришел в программирование не из совершенно другой области, а из IT. Но работал я не в разработке, а в поддержке. Вероятно, дальнобойщику будет не так просто повторить мои шаги, чтобы стать программистом. Хотя, если у моей жены получится в свои 34 переквалифицироваться из чистого гуманитария в разработчика (или тестера), то напишу еще одну статью.

Стоит сказать о том, что я уже умел, когда решил стать разработчиком.

В университете в течение 2-х семестров мы изучали программирование на Си и С++. Ничего особенного или каких-то глубоких знаний. Сдали – забыли. Далее, будучи студентом, я писал какие-то простенькие программы на Delphi для себя. И всё. Это было более 20 лет назад.

Дальше моя карьера выглядела так:

  1. Системный администратор
  2. Системный инженер
  3. Зам. руководителя отдела
  4. Руководитель
  5. Инженер тех. поддержки

Непосредственно программированием я вообще не занимался.

Онлайн-курсы.

Я начал со следующих специализаций на 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. Пишу о том, как это было, что хорошо и что плохо в Германии, о планах на будущее. Коротко и по делу. Присоединяйтесь – будет интересно.

10 навыков, которые помогут в карьере Java-программисту

Сокращенный перевод статьи
«10 Skills Java Programmer can Learn to Accelerate their Career».

Советы Java-программисту

Я часто получаю письма от моих читателей,
в которых они спрашивают, как стать
лучшим Java-программистом, что нужно
изучить, над какими вещами поработать.

Я отвечал на подобные письма в
индивидуальном порядке последние
несколько лет, а теперь, наконец, решил
собрать воедино несколько советов для
Java-программистов и разработчиков
приложений.

Прежде чем перейти к самим советам, я
хотел бы отметить, что, становясь лучшим
программистом вообще, вы становитесь
и лучшим Java-программистом в частности.
Но советы общего характера я давал в
другой своей статье.

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

Советы из этой статьи будут в равной
степени полезны и Java-разработчикам,
пишущим серверные приложения и не
нуждающимся в знании JSP, Servlet и JEE, и
веб-разработчикам, чья основная работа
— создавать веб-приложения с использованием
Java.

Если вы хотите улучшить свой набор
навыков, ускорить карьерный рост и стать
лучшим Java-программистом, обратите
внимание на следующие навыки — их
наличие выделит вас на фоне других
разработчиков.

1. Изучайте проектирование
и архитектуру программного обеспечения

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

В общем, если вы хотите продвинуться
по карьерной лестнице и стать
разработчиком-сеньором, одним из тех,
за которыми охотятся компании, я советую
вам изучать архитектуру ПО.

Советы Java-программисту

2. Изучайте контейнеры и
DevOps-инструменты (Jenkins, Docker, Kubernetes)

Для современного Java-разработчика
знание DevOps обязательно. Он должен быть
как минимум знаком с непрерывной
интеграцией и непрерывным развертыванием,
а также знать, какова роль Jenkins в том и
другом.

Эти знания становятся еще более важны
для разработчиков-сеньоров, в чьи
обязанности часто входит внедрение
лучших практик программирования,
создание окружений и сценариев,
составление руководств.

Я советую вам уделить некоторое время
более тщательному изучению DevOps в целом,
а также изучению таких инструментов
как Docker, Chef, Kubernetes и т. п., плюс Maven и
Jenkins.

3. Изучите фреймворк Spring
(Spring Boot)

Для современного Java-разработчика
изучение фреймворка Spring является
практически обязательным. Это связано
с тем, что многие компании предпочитают
вести разработку с применением именно
Spring-фреймворков (Spring MVC, Spring Boot и Spring
Cloud).

Также использование этих фреймворков
предполагает применение лучших практик,
таких как dependency injection, и делает ваши
приложения более тестируемыми, а это
одно из основных требований к современному
ПО.

Если вы начинающий разработчик, я
советую начать с руководств по Spring —
чтобы хотя бы познакомиться с этим
прекрасным фреймворком. А если вы уже
с ним знакомы, можете исследовать Spring
Boot и Spring Cloud — это вам пригодится для
разработки Java-приложений следующего
поколения.

4. Освойте модульное тестирование
(JUnit и Mockito)

Хороших Java-разработчиков от посредственных
часто отличает одна общая черта: навык
модульного тестирования.

Хороший, профессиональный Java-разработчик
практически всегда пишет модульные
тесты для своего кода. А по-настоящему
выдающегося разработчика всегда видно
по его коду и его тестам.

Сейчас Java-разработчикам доступны
многие инструменты модульного,
интеграционного и автоматизированного
тестирования.

На оттачивание навыков тестирования
может уйти довольно много времени. Но
начинающим разработчикам лучше всего
начать этот путь с изучения библиотеки
JUnit. Последняя версия JUnit 5 отличается
и мощью, и гибкостью. С ней должен
познакомиться каждый Java-разработчик!

Советы Java-программисту

5. Изучайте API и библиотеки

Если вам случалось работать с хорошими
Java-разработчиками, вы наверняка замечали,
как здорово они ориентируются в экосистеме
Java и как хорошо знают формы API для большей
ее части.

Java это один из самых популярных и
развитых языков программирования в
мире. В его экосистеме можно найти
библиотеки и API практически для чего
угодно.

Конечно, никто не ждет, что вы изучите
их все. Но вы должны знать некоторые
ключевые API (JSON), обрабатывающие API
(Jackson и Gson), API для обработки XML (JAXB и
Xerces), библиотеки модульного тестирования
(Mockito и JUnit).

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

Библиотеки

6. Изучите, как работает
виртуальная машина Java

Если вы серьезно настроены стать
выдающимся Java-разработчиком, вы просто
обязаны уделить время изучению работы
JVM. То есть, вы должны знать, из каких
частей она состоит и как эти части
работают.

Хорошо зная JVM, вы сможете писать
надежные и одновременно высокопроизводительные
Java-приложения. То есть, делать то, что
делают все выдающиеся разработчики.

В рамках этого вы также должны научиться
профилировать свои Java-приложения и
находить узкие места в производительности
(например, находить, какие объекты
занимают большую часть вашей памяти и
съедают CPU).

По этой теме могу посоветовать книгу
«The Definitive Guide to Java Performance» Скотта Оакса,
это отличный источник знаний по работе
JVM и сборке мусора.

Библиотеки

7. Изучайте шаблоны проектирования

Если вы пишете Java-приложение с нуля,
это означает, что большую часть времени
вы пишете объектно-ориентированный
код. А шаблоны проектирования в такой
ситуации — испытанное и проверенное
решение для распространенных проблем.

Зная шаблоны и применяя их в своем
коде, вы делаете свое приложение более
гибким, а его изменение в будущем —
более простым.

Также применение шаблонов улучшает
качество кода и документации в целом,
потому что другие Java-разработчики тоже
знакомы с этими шаблонами, а значит,
смогут быстрее разобраться в вашем
решении.

Но не следует сосредотачиваться на
конкретном коде. Вместо этого постарайтесь
понять сам дух шаблона и будьте креативны.
Используйте такие свойства Java 8 как
lambdas
и Streams
для переписывания шаблонов вроде
«Стратегии».

Шаблоны проектирования

8. Изучите Kotlin

Пару лет назад я прочел книгу «The
Well-Grounded Java Developer», в которой подчеркивалось
преимущество знания нескольких языков
для программиста. Это вдохновило меня
изучить Scala, а позже я также попробовал
взяться за Groovy, потому что его использование
в написании скриптов сборки и модульном
тестировании заметно растет.

Этот опыт очень мне помог, так что я призываю Java-разработчиков изучить новый JVM-язык. О JVM-языках я говорил отдельно, но если вы спешите, просто изучите Kotlin.

Это отличный язык от JetBrains — компании,
стоящей за IntelliJ IDEA, а кроме того, это
официальный язык Android. То есть, изучение
Kotlin поможет вам не только улучшить свою
производительность, но и войти в сферу
Android-разработки.

Шаблоны проектирования

9. Изучите микросервисы

Архитектура меняется постоянно. Многие
компании переходят от монолитных
приложений к микросервисам.

Так что для Java-разработчиков сейчас
самое время осваивать микросервисную
архитектуру и учиться создавать
микросервисы на Java, чтобы использовать
все преимущества существующего тренда.

К счастью, фреймворк Spring предлагает
Spring Cloud и Spring Boot, очень сильно упрощающие
разработку микросервисов на Java.

Из книг по данной теме я советую «Cloud
Native Java» Джоша Лонга. Это доступное
руководство по созданию облачных
Java-приложений.

Микросервисы

10. Получше познакомьтесь со
своей IDE

Одна из отличительных черт лучших
Java-разработчиков — они очень хорошо
владеют своими инструментами. То есть,
они не просто знают больше инструментов,
чем средний разработчик, они также
гораздо лучше знают каждый из этих
инструментов.

Поскольку самым важным инструментом
для любого Java-программиста является
его IDE (Eclipse, NetBeans, IntelliJ IDEA), имеет смысл
уделить время более глубокому ее
изучению.

Сочетания клавиш

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

11. Глубже изучите Java

Это, безусловно, самое главное для
любого Java-разработчика. Язык Java постоянно
обновляется. С учетом того, что новая
версия выходит каждые 6 месяцев, довольно
сложно уследить за всеми нововведениями.
Я изучал особенности Java 10, но при этом
знаю многих программистов, не написавших
ни единой строки кода с использованием
таких функций Java 8 как lambdas и Stream API.

К сожалению, многие из этих программистов
— опытные разработчики, у них за плечами
по 7-10 лет стажа. Я понимаю, что на каком-то
этапе карьеры скорость учебы снижается,
но если не шевелиться, можно очень скоро
остаться на обочине.

Разница в версиях языка

Сейчас почти все вакансии в Java-разработке
требуют знания Java 8+. Если у вас таких
знаний нет, вам придется туго на
собеседованиях.

Это все, что я хотел посоветовать
Java-разработчикам. Знаю, что следовать
всем этим советам непросто, но вам не
обязательно браться за все сразу, это
слишком непрактично. Можно сфокусироваться
для начала на самом важном, например,
на изучении Java 8 и фреймворка Spring (если
вы с ним еще не знакомы). А если с этими
темами у вас все в порядке, можно выбрать
другие, например, модульное тестирование,
работу JVM и DevOps.

Если вы не настроены на большие свершения, но все равно хотите приобрести какие-то новые полезные навыки, лучшим выбором будет глубокое освоение вашей IDE. Это позволит вам достаточно быстро улучшить продуктивность вашей работы.

Разница в версиях языка

10 вещей, которым должен научиться Java-программист в 2020 году

Author profile picture

@javinpaul Джавин Пол

Я программист на Java, блогер на http://javarevisited.blogspot.com и http://java67.com

Для разработчиков на Java, наконец, через пару лет были внесены многочисленные изменения в
и поставлена ​​сложная задача: обновлять каждые 6 месяцев обновленную версию Java, а также выпускать множество популярных фреймворков, таких как Spring 5, Spring Security 5, Spring Boot 2 и т. д.

Когда я начал 2019 год, я думал, что Java 10 была новой, и прежде чем я смог
закончить изучение Java 10, Java 11 и Java 12 уже вышли.У меня почти нет времени, чтобы взглянуть на них, кроме некоторых ключевых функций, таких как «String in switch case».

Они пришли очень быстро, но у них было много интересных функций, таких как var с локальными переменными, улучшения API, улучшение GC, рукопожатие Thread Local и многие другие. Я задокументировал их здесь, и я очень рад их использовать в 2020 году. То же самое касается Spring Framework и Spring Security, я не знал всех изменений в Spring 4.0 и Spring Security 4.0, мой проект все еще использовал Spring Security 3.1 и бум, теперь у нас есть версия 5.0 для безопасности как Spring, так и Spring. Моя скорость обучения немного снизилась за последние пару
лет, и мне не удалось быть в курсе последних
и, как мне кажется, я еще не освоился с Git, фреймворками JavaScript, такими как Angular и React, последними изменениями в области модульного и интеграционного тестирования и новой версией популярных фреймворков, таких как Spring MVC, Spring Security и Spring Boot. Мне удалось догнать многих из этих последних лет, следовательно, 2020 будет
для консолидации и поддержания себя в курсе того, что
имеет наибольшее значение с технологической точки зрения, улучшая мою цепочку инструментов и
исследуя ландшафт DevOps

Какие навыки должны иметь Java-программисты учиться в 2020 году

Вот мой список того, что разработчик Java должен изучить в 2020 году:

1.DevOps (Докер и Дженкинс)

Это одна из областей, в которой я наблюдаю большой интерес в прошлом году, поскольку все больше
и более компаний переходят на DevOps и внедряют непрерывную интеграцию и развертывание
.

DevOps очень обширны, и вам нужно изучить много инструментов и принципов
, и это то, что подавляет многих разработчиков, но вам не нужно
, чтобы беспокоиться. Я поделился DevOps RoadMap , которой вы можете следовать, чтобы изучать и осваивать DevOps на своей собственной скорости.

Это означает, что если вы являетесь опытным программистом на Java и увлечены
управлением средой, автоматизацией и улучшением общей структуры
, вы можете стать инженером DevOps.

Author profile picture

2. Git

Git и Github существовали уже некоторое время, и хотя я использовал Git в прошлом с Eclipse, но я еще не стал мастером Git в командной строке, и я не одинок

Многие программисты еще не освоили Git? Просто потому, что им это пока не нужно, так как код может быть в SVN или CVS.

Я также иногда загружал проекты из Github и запускал из Eclipse, но все еще далек от того, чтобы быть экспертом по командам Git, особенно по возврату изменений и обработке ошибок.

С тех пор большинство компаний переводят свои проекты с
SVN, CVS на Git, самое время изучить и освоить Git.

Author profile picture

Если вы находитесь в одной лодке и хотите выучить или улучшить свой навык Git
в 2020 году, ознакомьтесь с этим курсом от Удеми, это очень удобно.

3.Java 9,10,11,12 или, может быть, 13

Как я уже сказал, я все еще изучаю Java 8 и многих разработчиков Java тоже. Я также потрачу некоторое время на изучение новых функций Java 9, Java 10, Java 11 и Java 12 в 2020 году, но для меня Java 8 остается приоритетом, пока я не перешел на Java 11, которая является еще одним выпуском LTS. JDK 9 В нем много полезных моментов с точки зрения модулей, Jigsaw, Reactive Streams, Process API, клиента HTTP2, JShell и улучшений API, таких как методы фабрики сбора, и я с нетерпением жду возможности изучить их при первой же возможности.

Аналогично, JDK 10 содержит var, чтобы дать вам представление о динамической типизации и некотором улучшении GC.

В последней продаже Udemy 10 $ я купил множество курсов, один из которых — Полный Java MasterClass , , который обновлен для Java 12, и я с нетерпением жду начала моего путешествия по Java 12 с этим. Кстати, если вы еще не начали с JDK 8, то вот мой список любимых учебников и курсов по Java 8, которые вы можете бесплатно получить: 10 лучших учебников для изучения Java 8. 4. Spring Framework 5

Я слышал о некоторых новых функциях, таких как модель реактивного программирования
в Spring 5, принятие последних функций Java, некоторые модульные тесты по улучшению
и т. Д., Но я еще не попробовал это.

В любом случае, я уже начал изучать Spring 5.0, следуя Spring 5. 0: Начинающий с Гуру и буду поддерживать импульс в 2020 году. Если вы используете Spring, возможно, это лучшее время для изучения Spring 5.0. Если вам нравятся книги, вы также можете просмотреть этот список продвинутых Spring Books для разработчиков Java из публикаций Manning и Packt.5. Модульное тестирование

Еще одна область, которую я хочу улучшить в будущем году. Для программистов на Java доступно множество новых фреймворков и инструментов для модульного тестирования и тестирования интеграции их приложений, таких как Mockito и PowerMock для имитации объектов, Robot Framework и Cucumber для автоматического тестирования интеграции и, конечно же, новой блестящей библиотеки JUnit 5.

На этом фронте есть чему поучиться. Если вы потратите
на усовершенствование своего юнит-тестирования, то не только улучшится ваш навык кодирования
, но и вы станете более профессиональным разработчиком
, который выглядит каждой компанией.Для начала вы можете попробовать JUnit и Mockito Crash Course от Udemy. 6. Веб-служба RESTful

Еще одна вещь, которую я хочу продолжать совершенствовать в 2020 году, это мои знания о написании REST API
и реализации безопасной и масштабируемой службы RESTful Web
в Java с использованием Spring.

Это один навык, который очень желателен в мире Java, и не так много людей, которые хорошо знают и Java, и REST.

Если вы тоже находитесь в той же лодке и хотите узнать, как разрабатывать веб-сервис RESTful с использованием Spring, REST of Spring MasterClass от Eugen Paraschiv является хорошей отправной точкой.Author profile picture 7. Spring Security 5.0

Это третье крупное обновление Spring Eco-System. Пятая версия популярной платформы безопасности
имеет несколько исправлений ошибок и основной модуль OAuth 2
, который вы просто не можете пропустить.

Это еще один приоритетный пункт для меня в 2020 году, наряду с фреймворком Spring 5.0. К счастью, Евгений обновил свой самый продаваемый курс «Учись с Spring Security », чтобы включить функции 5.0, и добавил отдельный модуль для OAuth 2.0. Вероятно, это лучший материал для изучения Spring Security 5.0 на данный момент. 8. Spring Boot 2

У среды Spring Boot также есть новый выпуск Spring Boot 2. Если я получу
когда-нибудь после всех этих целей в этом году, тогда я потрачу некоторое время на
, изучая Spring Boot 2.

Если вы также хотите Изучив Spring Boot 2, вы можете быстро ознакомиться с бесплатным курсом Spring boot от Udemy. Author profile picture Если вам нужно больше вариантов, вы также можете просмотреть этот список лучших загрузочных курсов Spring для разработчиков Java, которые будут изучены в 2020 году.
9.Angular 2+ или React JS

Эти два фреймворка JavaScript полностью изменили способ разработки веб-приложений.

Как разработчик Java, я использовал Servlet, JSP и jQuery на стороне клиента, но еще не пробовал свои силы в Angular или React.

В 2020 году одна из моих целей — выучить Angular, и я начну свое путешествие с Udemy Angular 7 — Полное руководство . Если вы находитесь в одной лодке, вы также можете взглянуть на этот курс, он очень удобен. 10.Android

Если вы не знаете, как писать приложения для Android в 2020 году, вам не хватает чего-то
. Мобильная версия — одна из лучших платформ для охвата
человек, а Android, вероятно, самая популярная платформа для написания мобильных приложений
.

Несмотря на то, что я знаю основы Android, мне еще предстоит опубликовать какие-либо приложения для Android
, возможно, 2020 год изменит это. Если вы хотите изучать Android в 2020 году,
, вы можете проверить The Complete Android N Developer Course , один из лучших курсов для изучения Android.Если вам нужно больше вариантов, я также включил в список некоторые онлайн-курсы по Android, чтобы освежить свои знания и перейти на следующий уровень. Если вы тоже в одной лодке, то вы можете найти их полезными. 11. Apache Spark и Kafka

Еще одна вещь, которую я хочу подробно изучить в 2020 году, — это пространство больших данных, в частности, Apache Spark и Apache Kafka.

Я не уверен, что у меня будет время взглянуть на другие технологии больших данных
, но это действительно хорошая вещь, а вместе с DevOps и машинным обучением,
большие данные, пожалуй, самая горячая технология на данный момент.

Author profile picture

Это все, что нужно учить Java-разработчикам в 2020 году в году. Как я уже говорил, технологии быстро меняются, и самой большой проблемой для программистов является поддержание актуальности.

Помимо этого списка, есть много других вещей, которые вы можете найти
в новом году, например. изучая новый язык программирования, такой как Kotlin
, но для меня я буду более чем счастлив, если смогу достичь этих целей в
2020 году.

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

Всего наилучшего в вашем обучении

Похожие
Теги

The Noonification banner

Подпишитесь, чтобы получать ежедневные обзоры лучших технических историй!

.

10 вещей, которые должен знать каждый программист и программист

Если вы уже давно программируете и хотите научиться программировать, вы можете подумать о том, что делает хорошего программиста. Что может сделать выпускник информатики, чтобы подготовиться к карьере в разработке программного обеспечения и программирования? То, что ожидается от начинающего разработчика, — это некоторые из общих вопросов, которые я получаю от многих учеников в Facebook и электронной почте, которые следуют за мной. В основном это студенты колледжей, которые теперь имеют доступ к большому количеству информации благодаря Интернету и стремятся узнать что-то заранее, чтобы подготовиться к собеседованиям по программированию.

В этой статье я поделюсь 10 вещами, которые, по моему мнению, должен знать каждый программист. Это включает язык программирования, такой как C ++ или Java, основные понятия компьютерной науки, такие как структуры данных, алгоритмы и основы компьютерных сетей, необходимые инструменты, такие как Git, Microsoft Word и Excel, навыки, такие как SQL и UNIX, редакторы, такие как Eclipse или Visual Studio, и текстовые редакторы. ,

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

вещей, которые должен знать каждый программист и разработчик

Без лишних слов, вот список вещей, в которые я лично верю, каждый программист должен знать, независимо от выполняемой им работы. Это базовые навыки и будут служить вам долгое время. Любые инвестиции, вложенные в это с точки зрения времени, денег и усилий, помогут вам пожинать плоды на протяжении всей вашей карьеры.

1) Структуры данных и алгоритмы

Если вы хотите стать программистом, вы должны хорошо знать структуру данных и алгоритмы; нет пути обойти это. Это одна из важных тем любого собеседования по программированию, и без знания базовых структур данных (например, массива, связанного списка, карты, набора) невозможно написать реальное приложение.

Вот почему каждый программист должен приложить серьезные усилия для изучения структур данных и алгоритмов в ходе своего курса по информатике.

Если вы программист-самоучка, то вы также должны знать структуры данных и алгоритмы; на самом деле, многие программисты будут обучать вас структурам данных и алгоритмам в первую очередь.

Если вы хотите изучить это для себя, то Структуры данных и алгоритмы: глубокое погружение с использованием Java — хорошее место для начала.

2) Контроль источника

Контроль версий используется для хранения кода, и если вы хотите стать программистом или разработчиком программного обеспечения, вы должны знать такие инструменты контроля версий, как Git и SVN.

К счастью, Git и Github упростили рынок, и теперь более 70% организаций используют Git, так что вы, вероятно, можете уйти, просто изучив Git.

Кстати, вы должны приложить некоторые усилия для хорошего изучения Git, и вам должны быть удобны такие продвинутые концепции управления версиями, как ветвление и слияние, а также сам инструмент, использующий как командную строку, так и графический интерфейс. Для начинающих GitHub Ultimate: Master Git и GitHub — хорошее место для начала.

3) Текстовые редакторы

Нет ни одного дня, когда я не использовал текстовый редактор, работая программистами.Это один из важнейших инструментов даже для непрограммистов и тех, кто работает с компьютерами.

Я в основном использовал NotePad в Windows и VI в Linux, но у вас есть много вариантов с расширенными редакторами, такими как Sublime и NotePad ++, которые предоставляют функциональные возможности, подобные IDE.

Я предлагаю вам потратить некоторое время на изучение ваших любимых редакторов и сочетаний клавиш, а вот советы по повышению производительности — это то, что вы можете узнать. Если вам нравится Sublime, то Sublime Text для быстрой веб-разработки — хороший курс для изучения подобных вещей.

4) IDE

Современная IDE — это самый важный инструмент для любого программиста. Для программистов на C, C ++ и C # выбор очевиден: Visual Studio. А для разработчиков на Python Jupiter Notebook с каждым днем ​​становится все лучше и лучше.

Для программистов на Java есть три основных среды разработки: Eclipse, NetBeans и IntelliJ. В то время как Eclipse мой любимый, IntelliJ IDEA совсем неплох.

Если вы являетесь поклонником IntelliJ IDEA, то я предлагаю вам пройти трюки IntelliJ IDEA, чтобы повысить производительность для разработчиков Java, чтобы лучше изучить вашу IDE.

5) База данных и SQL

SQL это классика. Он существует уже более 30 лет, и я думаю, что он будет продолжаться еще 30 лет. Учитывая вездесущность базы данных, от программиста ожидается, что он знаком с основными понятиями базы данных, такими как нормализация и дизайн таблиц, а также с SQL.

Есть много баз данных, но достаточно знать только одну. Ключевым моментом является то, что вы должны быть знакомы с базой данных.Вы должны знать, как вставлять / обновлять / удалять данные и писать запросы SQL для их получения.

Знание передовых концепций, таких как присоединение к статистической функции, является большим бонусом, и если вы хотите получить это, тогда Complete SQL BootCamp — отличное место для начала.

6) UNIX или Linux

Как и SQL, UNIX также выдержал испытание временем. Он также существует уже более 30 лет, и я надеюсь, что он будет здесь еще много лет.Поскольку в какой-то момент большинству программистов приходится работать на машине UNIX, хорошее знание командной строки Linx имеет большое значение.

Это позволяет эффективно работать. Вы можете искать файлы, знать, что происходит с системой, проверяя ее использование процессора и памяти, а также выполнять основные и дополнительные задачи. Если вы хотите изучать команды Linux, я предлагаю вам пройти курс изучения Linux за 5 дней и повысить уровень вашей карьеры в Udemy.

7) Microsoft Excel

Excel — один из лучших инструментов для программистов, разработчиков программного обеспечения, менеджера проектов, трейдеров и бизнесменов.Это гораздо больше, чем просто программное обеспечение для работы с электронными таблицами. Он предоставляет множество полезных функций и функций для выполнения сложного анализа данных.

Я использовал Excel для отслеживания прогресса, сверки данных, анализа данных, проверки качества данных и для планирования проекта.

Он имеет несколько применений, и поэтому я призываю каждого программиста углубленно изучать Excel. Вместо того, чтобы просто копировать и вставлять данные, вы должны знать основные функции, такие как поиск, сортировка, фильтрация и VLOOKUP для сравнения.

Если вы хотите изучать Excel с нуля или хотите улучшить свои знания, Microsoft Excel — Excel от начального до продвинутого уровня — отличный курс для начала.

8) Языки программирования

Как программист, вы должны знать язык программирования: C ++ или Java, или, возможно, Python или JavaScript. Вы можете выбрать все, что захотите, но я лично советую вам хотя бы знать Java.

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

У него есть библиотеки от базовых вещей, таких как веб-разработка, до более сложных задач с большими данными и так далее. Если вы решили изучать Java, то, вероятно, лучше всего начать с полного Java MasterClass.

9) Основы работы в сети

Современный мир — это взаимосвязанный мир, и где бы вы ни находились, вы найдете компьютерные сети, начиная от дома, где вы используете Wi-Fi на многих устройствах, до школ, колледжей и офисов, которые используют локальную сеть (LAN) для Интернет.

Большинство приложений, которые вы напишите, также будут не автономными, а клиент-серверными приложениями, где запрос будет передаваться по сети на сервер. Клиенты получат доступ к вашему приложению из любой точки мира.

Суть в том, что вы должны понимать основы работы с сетью, чтобы понимать, разрабатывать и поддерживать ваше приложение. Если вы хотите узнать больше, то я предлагаю вам пройти курс The Complete Networking Fundamentals на Udemy. Это хорошая отправная точка для начинающих.

10) Языки сценариев

В пункте № 8 я попросил вас выучить язык программирования, и все же здесь я прошу вас выучить язык сценариев? Зачем? Может ли тот же язык программирования не использоваться в качестве языка сценариев?

Ну, конечно, есть некоторые языки, которые хороши как для ООП-кодирования, так и для сценариев, такие как Python, и поэтому я попросил вас хотя бы изучить его. Но если вам случится выучить C / C ++ или Java, вы не сможете сделать что-то так быстро, как это могут сделать разработчики на Python или Perl.

Если вы хотите изучать Python и нуждаетесь в курсе, The Complete Python Bootcamp — отличный курс для начала.

Язык сценариев позволяет легко создавать инструменты и сценарии для решения типичных проблем в мире программирования. Если вы хорошо владеете языком сценариев, таким как Python, вы можете легко автоматизировать обычные вещи.

Еще раз, я предлагаю вам изучить Python, чтобы убить двух зайцев одним выстрелом, и если вам нужны дополнительные ресурсы, этот список бесплатных курсов Python также очень полезен

Выпускники информатики и люди, которые стремятся стать программистами, могут использовать этот список, чтобы узнать о вещах, инструментах и ​​навыках, чтобы стать успешным программистом.

Кстати, если вы заинтересованы в том, чтобы узнать больше о том, что должны знать программисты, существует множество руководств, касающихся важных вещей для программистов, и вы можете найти в Интернете отличный совет, например, 97 вещей, которые должен знать программист. должен читать для каждого серьезного программиста.

,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

2024 © Все права защищены.