Мой путь Java программиста — Личный опыт на vc.ru
Я более 8 лет занимаюсь профессиональной Java разработкой. На данный момент я возглавляю исследовательский отдел в крупной Европейской компании в качестве Ведущего Java Архитектора.
20 269 просмотров
Но так было далеко не всегда и были моменты, когда казалось, что мне вообще не быть Java разработчиком и выбор программирования в университете это моя большая ошибка. В этой статье я хочу поделиться как мне удалось преодолеть личностный кризис и доказать не только себе, но и всем окружающим, что нет ничего невозможного.
Помню молодого себя, только получившего диплом о высшем образовании. За годы обучения я так и не научился программировать ни на C++ ни на Java. Нас заранее учили по устаревшим учебникам и книгам, мы прыгали с одного языка программирования на другой.
Ничего удивительно, что первое время после завершения университета я работал кем угодно, только не программистом. Куча проваленных собеседований на должность Junior Java разработчика, тогда мне казалось что программирование это удел гениев и математиков.
После очередного проваленного собеседования на должность Junior Java разработчика, я встретил своего старого знакомого. Тогда он как раз поделился со мной радостью, что получил оффер от Американской компании и собирает документы на релокацию.
Для меня, это послужило огромной мотивацией и в тот самый момент я поставил себе цель — получить оффер и поработать в крупнейших Американских и Европейских компаниях. Я понимал, что если я хочу следовать за мечтой, мне надо заняться самообразованием и надеяться только на себя.
Так я начал читать книги и прочую литературу по Java программированию. Но чем больше я читал, тем больше вопросов у меня появлялось, непонятных терминов и аббревиатур, а потом голова шла кругом ). Ведь большинство книг для начинающих написаны так, как будто читатель должен быть профессором или обладать 10-ти летним опытом работы в программировании.
Я перечитал с десяток различных книг и статей, доходил до определенной главы и понимал, что ничего не знаю и забрасывал обучение. Учиться я мог по 16 часов в день, пока не выгорал, затем забрасывал обучение на пару дней, накапливал мотивацию и заново продолжал обучение. Так, продолжался месяц, пока я не набрал критическое массу знаний, чтобы пройти собеседование на должность Junior Java разработчика.
Так, в чём же залог успеха?
- Обучение по 16 часов в день, двумя спринтами по 5 дней. Очень важно иметь полноценный отдых, желательно по 2-3 дня межу спринтами.
- Не пытайся учиться на сложных примерах и туториалах. Я наступил на все эти грабли, пытаясь создать сайты, мессенджеры, игры. Не чем хорошим, это не заканчивалась, на половине пути я понимал что ничего не знаю и в голову приходи мысли, что наверное программирование это не моё. Лучше писать очень простые программы, но на 100% понимать как они работают.
- Не пренебрегай тем, как работает виртуальная машина Java, что такое стек, куча, типы переменных. Мне казались эти вещи не важными, ведь я учусь программировать, а не теорией заниматься. Каково же было мое удивление, когда на собеседовании я полностью завалился на теории, даже не приступив к программированию.
- Последовательное изучение материала, очень важно. Перед тем как переходить на следующую лекцию, будь на 100% уверен, что ты полностью понял текущую.
- Не бойся отказов на собеседованиях, я завалил около 8 собеседований, прежде чем найти работу. После каждого проваленного собеседования, я становился только уверенней, выписывая на листочек все вопросы на которых я завалился.
Как стать Java разработчиком за 1,5 года / Хабр
Меня зовут Сергей, мне 40 лет и сейчас я работаю Java разработчиком в немецкой компании. Мы занимаемся разработкой программного обеспечения для пивоварен оценки финансовых и кредитных рисков. Это моя первая работа в качестве разработчика. До этого я работал в сфере IT-поддержки и системной интеграции. Первого февраля 2019 г. закончился мой шестимесячный испытательный срок, и у меня на руках бессрочный контракт. Я хочу поделиться своим опытом, как можно самостоятельно выучить Java так, чтобы получить работу.
Это мой рабочий стол. Пить пиво в рабочее время у нас разрешено, мы же в Германии.
Моя первая статья: «IT-эмиграция с семьей. И особенности поиска работы в маленьком городе Германии, когда ты уже там»
Моя вторая статья: «Получить работу в Германии станет проще».
Disclaimer
Скажу сразу, что всякие варианты «выучи яву за 10 дней» (21 день, 30 дней и т.д.) – это утопия. Нет никакой красной таблетки, чтобы быстро попасть в матрицу. Но за год-два параллельно с основным местом работы – вполне реально.
Что у меня было в активе, прежде чем я начал изучать Java
Сначала я хотел назвать статью «Как стать Java разработчиком за 1,5 года с нуля», но передумал. Я ведь пришел в программирование не из совершенно другой области, а из IT. Но работал я не в разработке, а в поддержке. Вероятно, дальнобойщику будет не так просто повторить мои шаги, чтобы стать программистом. Хотя, если у моей жены получится в свои 34 переквалифицироваться из чистого гуманитария в разработчика (или тестера), то напишу еще одну статью.
Стоит сказать о том, что я уже умел, когда решил стать разработчиком.
Дальше моя карьера выглядела так:
- Системный администратор
- Системный инженер
- Зам. руководителя отдела
- Руководитель
- Инженер тех. поддержки
Непосредственно программированием я вообще не занимался.
Онлайн-курсы.
Я начал со следующих специализаций на coursera.org:
Java Programming and Software Engineering Fundamentals – 4 месяца
Я прошел следующие онлайн-курсы:
- Programming Foundations with JavaScript, HTML and CSS (4 недели)
- Java Programming: Solving Problems with Software (4 недели)
- Java Programming: Arrays, Lists, and Structured Data (4 недели)
- Java Programming: Principles of Software Design (4 недели)
-
Java Programming: Build a Recommendation System (4 недели)
После этой специализации я уже более-менее разбирался в языке, но писать самому программы было еще нереально. Последний capstone-проект я не сделал. Мне было сложно. И у меня, честно говоря, пропал энтузиазм. Я сделал перерыв.
Object Oriented Java Programming: Data Structures and Beyond– 5 месяцев
Через месяц я решил всё-таки вернуться к занятиям снова. Я пошел на специализацию из пяти курсов:
- Object Oriented Programming in Java (6 недель)
- Data Structures and Performance (6 недель)
- Advanced Data Structures in Java (5 недель)
- Mastering the Software Engineering Interview (4 недели)
Capstone: Analyzing (Social) Network Data (6 недель)
Последний capstone-проект я также не осилил. Но предпоследний курс в списке «Mastering the Software Engineering Interview» помог мне неплохо подготовиться к последующим собеседованиям. А еще я смог написать свой первый простенький парсер простого сайта на чистом HTML. Уже было неплохо, но не впечатляло.
How to Code – 3 месяца
Следующим шагом были эти два странных курса на edx. org:
- How to Code: Simple Data (7 недель)
- How to Code: Complex Data (6 недель)
Я написал «странных», потому что там вообще речь не идет о Java. Авторы курса используют специальный язык программирования Beginning Student Language (BSL). Я где-то прочитал, что они мега-полезные. Наверное, эти два курса помогли мне лучше понять некоторые приемы написания программ и стали хорошим подспорьем для написания Unit-тестов в реальной работе. Но, если быть честным, их можно пропустить.
Data Structures and Algorithms – 2 месяца
Потом я снова вернулся на coursera.org и начал новую специализацию, сотоящую из следующих четырёх курсов:
- Algorithmic Toolbox (5 недель)
- Data Structures (4 недели)
Algorithms on Graphs (5 недель)Algorithms on Strings (4 недели)
Но осилил только первых два. На остальные даже не стал записываться. Параллельно с этими курсами я начал читать книгу OCA, о которой речь пойдет дальше.
Топтание на месте
В тот момент я понял, что топчусь на месте. Прохождение новых курсов не давало такого ощутимого количества новых знаний, как это давали первые. Т.е. знания вроде прибавляются, но это никак не приближает меня к получению работы. Я не понимал, как с такими знаниями можно вообще найти на работу. Я всё также не мог написать ничего, что было бы сложнее парсера. Ну как так-то?!?!? Я даже пытался написать свой сервис парсинга сайтов с блэк-джеком и путанами, но уже после недели разработки мой проект превратился в кашу из классов. И я уже сам не мог разобраться в том, что я там понаписал. Кроме того, мне всё ещё были непонятны некоторые аспекты функционирования языка. И это после того, как я уже потратил примерно год на все этих курсы!!! Двенадцать онлайн-курсов и целый год времени, Карл, вы только вдумайтесь в это. На самом деле, это был провал. Я был уверен, что за год я смогу стать разработчиком благодаря этим курсам. Я заблуждался. Мне нужен был план Б.
Альтернатива
Я стал искать курсы, которые бы помогли мне получить какие-то практические навыки, востребованные в реальной работе. Но ничего толкового не было, либо стоило приличных денег. Те же курсы от отуса стоят 50000 за шесть месяцев и отзывы на них противоречивые. Я не был готов к таким расходам. Я был готов впахивать самостоятельно и искал, как это можно сделать бесплатно или совсем недорого. В итоге все онлайн-курсы, которые мне попадались, делились на две категории:
- Первая рассчитана на новичков или людей с нулевой подготовкой. С их помощью ты достигаешь уровня «три с минусом». Это я! Это про меня!
- Вторая для «хорошистов» с опытом работы, которые хотят стать «отличниками». Вроде таких: «Как писать микросервисы на Java для высоконагруженных проектов с использованием WildFly Swarm». Что это вообще такое???
А между ними зияющая пустота. Ну где я и где все эти микросервисы??? Получалось, что для «троечников» вообще ничего нет. Или есть, но за хорошие деньги. И как стать «хорошистом» бесплатно, без регистрации и СМС, вообще непонятно.
Сертификация Oracle
Тогда я решил стать сертифицированным разработчиком на Java. Потому как фраза «Я профессиональный программист на Java» звучит очень круто и должна сразить будущего работодателя наповал!!! Во всяком случае, тогда я так наивно думал.
OCA: Oracle Certified Associate Java SE 8 Programmer – 2 месяца
Для этого я купил книгу:
OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808
OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808
ISBN-13: 978-1118957400
На освоение этой книги у меня ушло примерно 2 месяца. Она реально открыла мне глаза на многие аспекты и заставила понять, как работает язык в деталях. Это было хорошее продвижение вперед. Но не в поиске работы, а в понимании языка Java. На экзамен я шел с уверенностью, что сдам его хорошо, и я его сдал. Я набрал 84% при необходимых 65%. Я был безмерно горд собой.
Стоимость экзамена $245. В России он стоит немного дешевле.
Оцените стоимость официального тренинга от Oracle для подготовки к этому экзамену
OCP: Oracle Certified Professional Java SE 8 Programmer – 4 месяца
Я с энтузиазмом принялся за вторую книгу тех же авторов:
OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809
OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809
ISBN-13: 978-1119067900
На освоение второй книги я потратил уже 4 месяца. И это оказалось реально сложно. Два раза я делал перерывы по одной неделе, потому как понять лямбда выражения или многопоточность мне было действительно непросто. Также меня убивало обилие классов для ввода и вывода. Все эти NIO и NIO2, которые так похожи и которые нужно было знать. Что там базовый класс, что производный? Это был настоящий кошмар. В итоге я назначил дату экзамена за месяц, потом перенес его на две недели, потом еще на две. Меня поджимали сроки, на горизонте маячило собеседование. И мне нужен был этот сертификат. Я не стал переносить экзамен в третий раз и пошел с тем, что имел. В отличие от первого экзамена, я уже не был уверен в хорошем результате. Я вообще не был уверен, что смогу его сдать. От былой гордости не осталось и следа. Объем информации для понимания и запоминания во второй книге раз в пять больше чем в первой. Но я сдал и этот экзамен. К счастью, тестовые задания в книгах оказались сложнее, чем те, которые были на экзамене. Но это был прорыв… для меня. Прорыв в плане знаний и понимания того, как работает язык и какие инструменты он предлагает.
Стоимость экзамена также $245.
Могу сказать, что эти две книги мне дали больше, чем все те онлайн курсы, что я прошел ранее. Но я не знаю, смог ли бы я вообще сдать эти экзамены, если бы не прошел предварительно курсы. С помощью этих экзаменов я перешел на уровень «три с плюсом». И это было уже что-то. Но я всё также не был способен самостоятельно реализовать какой-нибудь интересный проект. WTF????
Я понял, что я достиг максимума от того, что я мог получить сам, и изучать язык дальше было бессмысленно. Более того, я понимал, что мои знания, которые я с таким трудом получил, без практики очень быстро улетучиваются. Тянуть было нельзя, и я занялся подготовкой к собеседованию и приобретением навыков, которые могут потребоваться при устройстве на работу.
Что нужно, чтобы получить работу?
Нужно пройти собеседование и техническое интервью! Про подготовку к собеседованию писать не буду. Это тема для отдельной статьи. Напишу только про те знания, которые нужны, чтобы пройти техническое интервью.
Подготовка к интервью – 1 месяц
Я купил следующую книгу:
Cracking the Coding Interview, 6th Edition: 189 Programming Questions and Solutions
Cracking the Coding Interview, 6th Edition: 189 Programming Questions and Solutions
ISBN-13: 978-0984782857
Настоятельно ее рекомендую. Она поможет подготовиться к техническоой части собеседования. На неё я потратил примерно месяц. Многие задания были непонятны, поэтому я нашел еще один экземпляр на русском, и когда мне было совсем непонятно, я смотрел в него.
Дополнительные навыки
К этому моменту я уже активно мониторил рынок вакансий в своём городе и выбрал компанию, в которой хотел бы работать. У них была вакансия Java Developer. В вакансии в числе желаемых навыков стояли знания Oracle SQL, GWT, Eclipse, SVN, Maven, Jenkins. Мне не нужны были глубокие знания всех этих технологий, мне нужно было простое понимание, что это такое и как оно работает. Чтобы на собеседовании можно было сказать, мол да, я знаком, но не глубоко.
Oracle SQL – 1 неделя
SQL я уже неплохо знал, так как по долгу службы приходилось делать много произвольных отчетов для руководства. Но это был T-SQL от Microsoft, а тут требовался SQL от Oracle. Пришлось купить книжку, чтобы вспомнить основные моменты и понять разницу.
OCA Oracle Database SQL Exam Guide (Exam 1Z0-071)
OCA Oracle Database SQL Exam Guide (Exam 1Z0-071)
ISBN-13: 978-1259585494
Эту книжку я пробежал быстренько за неделю. И понял, что я на 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 я писал тут.
Книги:
- OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide – 36€
- OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide – 34€
- Cracking the Coding Interview – 37€
- OCA Oracle Database SQL Exam Guide – 45€
Экзамены:
- Oracle Certified Associate Java SE 8 Programmer – 215€
- Oracle Certified Professional Java SE 8 Programmer – 215€
Дополнительные расходы:
- Проезд в другой город на экзамены, т.к. в моем нет сертификационных центров – 120€.
Итого: 702€
Совсем бесплатно, к сожалению, не получилось. Книги покупал на английском, т.к. экзамен тоже на английском.
Результат
Этих знаний хватило, чтобы пройти собеседование и подписать контракт в достаточной крутой немецкой компании. Я бы даже сказал, что их хватило с запасом.
Их также хватило, чтобы пройти шестимесячный испытательный срок и получить постоянное место в штате разработчиков.
За эти 6 месяцев работы в качестве разработчика я закрыл более 200 заявок на разработку, доработку и исправление ошибок в коде совершенно разных подсистем и модулей. И ни от одной заявки я не отказался «потому что я не смог». Да, мне приходилось и сейчас приходится разбираться в новых вещах, искать информацию, вникать в детали. Что-то я делаю медленно, но мне это интересно и процесс идёт. А ещё за это хорошо платят!!!
Но не надо думать, что я очень умный. Я самый простой парень, который просто решил изменить свою жизнь к лучшему. Я такой же, как и ты. А если смог я, то сможешь, и ты!
На самом деле, чтобы стать разработчиком, у меня ушло не 1,5 года, а два. Но это по моей собственной глупости (читайте об этом в моем телеграм-канале). Непосредственно на яву я потратил 1,5 года. Но необязательно повторять мои ошибки. Думаю, что можно достичь того же результата за более короткий срок. Выкидываем всё лишнее и получаем примерно такой путь:
Часть первая – 5 месяцев
Берем следующие курсы специализации Object Oriented Java Programming: Data Structures and Beyond на курсере:
- Object Oriented Programming in Java (6 недель)
- Data Structures and Performance (6 недель)
- Advanced Data Structures in Java (5 недель)
- Mastering the Software Engineering Interview (4 недели)
Параллельно читаем книжку:
- OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808
По результатам сдаем экзамен.
- Oracle Certified Associate Java SE 8 Programmer
Часть вторая – 2 месяца
Берем следующие курсы специализации Data Structures and Algorithms:
- Algorithmic Toolbox (5 недель)
- Data Structures (4 недели)
Параллельно читаем книгу:
- Cracking the Coding Interview, 6th Edition: 189 Programming Questions and Solutions
Часть третья – 4 месяца
Читаем книжку:
- OCP: Oracle Certified Professional Java SE 8 Programmer II Study Guide: Exam 1Z0-809
По результатам сдаем экзамен.
- Oracle Certified Professional Java SE 8 Programmer
Часть четвертая – 1 месяц
Смотрим, что конкретно хочет работодатель от соискателей, и тратим по одной неделе на каждую из 4-х самых нужных технологий, программ или Фреймворков (Git, Eclipse, Maven, Spring и т.д.). Плюс изучаем предметную область, в которой работает работодатель, его продукты, если есть и т.д.
Итого год. За год – вполне реально.
О том, как я изменил свою жизнь в 40 лет и переехал с женой и тремя детьми в Германию я пишу в своем телеграм-канале @LiveAndWorkInGermany. Пишу о том, как это было, что хорошо и что плохо в Германии, о планах на будущее. Коротко и по делу. Присоединяйтесь – будет интересно.
Программирование на Java
Java — мощный язык программирования общего назначения. Это один из самых популярных языков программирования, используемый для разработки настольных и мобильных приложений, обработки больших данных, встроенных систем и так далее.
Чтобы начать программирование на Java, посетите Учебники по Java.
Особенности программирования на Java
Java не зависит от платформы
Java был создан с учетом философии «написал один раз, работает везде» (WORA). Код Java, который вы пишете на одной платформе (операционной системе), будет работать на других платформах без каких-либо изменений.
Объектно-ориентированный язык
Объектно-ориентированный подход — один из популярных стилей программирования. В объектно-ориентированном программировании сложная проблема делится на более мелкие наборы путем создания объектов. Это делает код Java пригодным для повторного использования, имеет преимущества дизайна и упрощает обслуживание кода.
Java работает быстро
Предыдущую версию Java критиковали за медлительность. Однако новая версия Java — один из самых быстрых языков программирования.
Хорошо оптимизированный код Java почти так же быстр, как языки более низкого уровня, такие как C/C++, и намного быстрее, чем Python, PHP и т. д.
Java безопасна
Некоторые высокоуровневые функции безопасности, которые поддерживает Java:
- обеспечивает безопасную платформу для разработки и запуска приложений
- автоматическое управление памятью уменьшает повреждение памяти и уязвимости
Большая стандартная библиотека
Одной из причин широкого использования Java является наличие огромной стандартной библиотеки. Среда Java имеет сотни классов и методов в различных пакетах, чтобы помочь таким разработчикам программного обеспечения, как мы. Например,
-
java.lang
— для расширенных функций строк, массивов и т. д. -
java.util
— для структур данных, регулярных выражений, функций даты и времени и т. д. -
java.io
— для файлового ввода-вывода, обработки исключений и т. д.
Приложения программирования на Java
По данным Oracle, компании, владеющей Java, Java работает на 3 миллиардах устройств по всему миру, что делает Java одним из самых популярных языков программирования.
1. Приложения для Android
Язык программирования Java с использованием Android SDK (Software Development Kit) обычно используется для разработки приложений для Android.
2. Веб-приложения
Java используется для создания веб-приложений с помощью сервлетов, Struts или JSP. Некоторые из популярных веб-приложений, написанных на Java, — Google.com, Facebook.com, eBay.com, LinkedIn.com и т. д.
3. Обработка больших данных
в Java) для обработки больших данных.
4. Встроенные устройства
Встроенные технологии Oracle Java Embedded обеспечивают платформу и среду выполнения для миллиардов встроенных устройств, таких как телевизоры, SIM-карты, проигрыватели дисков Blu-ray и т. д.
Помимо этих приложений, Java также используется для разработки игр, научные приложения (например, обработка естественного языка) и многие другие.
Как научиться программировать на Java?
Изучайте Java с помощью Programiz
Programiz предлагает полную серию простых в использовании руководств по Java вместе с подходящими примерами. Эти учебные пособия предназначены для абсолютных новичков без предварительного знания языка программирования Java.
Узнайте из официальной документации по Java
Oracle, компания, владеющая Java, предоставляет качественную документацию по Java. Официальная документация постоянно обновляется. Тем не менее, это может быть не самое простое руководство для начинающих.
Лучшие практики программирования на Java
Вы, должно быть, уже готовы изучать Java. Тем не менее, вот несколько советов и рекомендаций, которым следует следовать перед изучением Java.
- Не читайте руководства по Java и примеры как роман : Единственный способ стать лучше в программировании — писать много кода.
- Изучайте язык Java правильно : Если вы переходите с другого языка программирования (скажем, C#), не пишите код в стиле C# на Java. Кроме того, проверьте эту статью о том, как написать хороший код Java?
- Присоединяйтесь к сообществам Java : Как только вы научитесь писать простые программы Java, присоединяйтесь к сообществам и форумам Java. Затем попробуйте решить проблемы Java других программистов. Это хороший способ расширить свои знания Java. Кроме того, вы можете получить помощь, когда вы застряли.
Final Words
Изучая Java, вы не ошибетесь. Его широкий спектр приложений делает его языком возможностей и возможностей.
11 вещей, которым должны научиться Java-программисты в 2022 году | от javinpaul | Javarevisited
«Кофе в чашке с латте-артом в молоке в Ланкастере» от frankie на UnsplashБудучи разработчиком Java и автором блога Java, я часто получаю запросы от программистов Java со всего мира с вопросами, как они могут улучшить сами себя.
В прошлом я делился своими 10 советами, как стать лучшим программистом, и каждый совет в этой статье по-прежнему актуален, но, учитывая, что сейчас новый год, я решил записать новые советы для Java-программистов, чтобы улучшить себя , расширить свои знания в области программирования на Java и повысить свою ценность для будущего карьерного роста.
Итак, не теряя времени, давайте посмотрим на мои девять идей для Java-программистов в 2019 году. Вы можете черпать вдохновение из этих идей, чтобы создавать свои собственные цели.
Кстати, ребята, в этом посте вы найдете не только то, чему нужно научиться, но и то, чему нужно было научиться, так как многие мои читатели часто возвращаются ко мне, как они могут улучшить те или иные навыки, с чего начать и т. д.
За последние пару лет я провел более 50 собеседований со старшими разработчиками Java, и мне явно не хватает одного навыка — это знания и понимание внутреннего устройства JVM, поведения сборщика мусора и настройки производительности Java.
Изучите внутреннее устройство JVMПо мере того, как ваш опыт работы с Java растет и вы становитесь старшим разработчиком Java с опытом работы более 5–6 лет, от вас ожидается знание как общей картины, так и мелких деталей основ Java.
Если вы не можете профилировать приложение или не можете понять, почему оно работает медленно или как сделать его быстрым, вам следует прочитать хорошую книгу о внутреннем устройстве JVM и настройке производительности, например, бестселлер Скотта Оукса «Производительность Java: полное руководство». .
Я читаю ее уже много лет и до сих пор обращаюсь к ней всякий раз, когда у меня есть время. Моя цель — прочитать ее снова в этом году.
Если вы предпочитаете онлайн-курсы книгам, я предлагаю вам взглянуть на Understanding the Java Virtual Machine 9Серия курсов 0093 по Pluralsight, в которых объясняется управление памятью, загрузка классов, безопасность и отражение.
Понимание виртуальной машины Java: управление памятью
Этот курс охватывает все аспекты сборки мусора в Java, включая разделение памяти на поколения и… вокруг Docker и Kubernetes и их влияние на команды DevOps. Возможно, сначала вы подумали: «Ааа, еще одна новая технология, которую мне нужно изучить», но я скажу, что Docker — это не просто еще одна технология, это действительно меняет правила игры.
Наряду с Kubernetes, это один из самых важных инструментов, который вы можете изучить и который останется с вами на протяжении всей вашей карьеры.
В настоящее время Docker и Kubernetes используются практически каждой командой разработчиков, будь то крупное предприятие или небольшой стартап. Можно с уверенностью сказать, что если вы начинаете работать сейчас, вы, скорее всего, в какой-то момент столкнетесь с Докером.
Короче говоря, независимо от того, являетесь ли вы начинающим разработчиком Java или опытным ветераном с многолетним опытом работы, знание Docker и Kubernetes необходимо для вашего карьерного роста и смены работы.
Если вы уже осознали важность Kubernetes и хотите изучить Kubernetes в 2022 году, то Docker and Kubernetes: полное руководство Стивена Грайдера на Udemy — отличный курс для начала.
Если вы предпочитаете бесплатные ресурсы, например бесплатные онлайн-курсы, вы также можете ознакомиться с этим списком бесплатных курсов по Docker и Kubernetes для разработчиков Java, чтобы начать свое путешествие.
Это еще одна область, в которой я наблюдаю большую поддержку в прошлом году, поскольку все больше и больше компаний переходят на DevOps и внедряют непрерывную интеграцию и развертывание.
DevOps очень обширен, и вам нужно изучить множество инструментов и принципов, и это подавляет многих разработчиков, но вам не о чем беспокоиться. Я поделился дорожной картой DevOps, которой вы можете следовать, чтобы изучать и осваивать DevOps, особенно Jenkins, в удобном для вас темпе.
Это означает, что если вы опытный Java-программист, увлеченный управлением средой, автоматизацией и улучшением общей структуры, вы можете стать инженером DevOps.
Если вы ищете отличные ресурсы, то Дженкинс. От нуля до героя: станьте мастером DevOps. Дженкинс — отличный курс для начала, особенно для Java-разработчиков.
Еще одна вещь, которую я заметил в прошлом году, это то, что по мере того, как ваш опыт растет, вы тратите свое время на координацию, ответы на электронные письма, роль катализатора, устранение неполадок, наставничество и вообще роль менеджера проекта.
Код, код и еще раз кодТо, что вы оставили после себя, — это кодирование, которое является самым важным навыком для программиста.
Если вы чувствуете, что недостаточно программируете, примите решение писать код каждый день. Хоть что-то напишите, будь то ваш проект, опенсорсный фреймворк, библиотека или утилита.
Поскольку начинать — это самое сложное, я предлагаю в любое время, когда вы почувствуете сопротивление, начать читать и рефакторинг кода для удовольствия. Вам это понравится, и в процессе вы также будете писать код.
Вы также можете решить задачи из раздела Cracking the Coding Interview, 189Вопросы по программированию . Это не только подготовит вас к собеседованию, но и улучшит ваши знания о структурах данных, алгоритмах и логике программирования.
Интервью по программированию: 189 вопросов и решений по программированию
Я не рекрутер. Я инженер-программист. И поэтому я знаю, каково это, когда вас просят сделать что-то блестящее…
www.amazon.com
Этот совет прилагается к первому совету о том, как прочитать хорошую книгу о внутреннем устройстве JVM и/или записаться на курс по Java. настройка производительности. Кстати, просто прочитать книгу или записаться на курс будет недостаточно. Вы должны применить эти знания в своем живом проекте.
Я предлагаю вам профилировать ваше Java-приложение не реже одного раза в месяц и уделять достаточно времени изучению и анализу результатов.
Вы также можете сделать дамп кучи своего Java-процесса или, если у вас недавно произошел сбой, сделать дамп кучи и выяснить, какой объект занимает большую часть вашей памяти. Есть ли утечка памяти в вашем Java-приложении?
В чем причина? Что произойдет, если другие 100 000 новых клиентов получат доступ к вашему приложению? Если вы можете спокойно ответить на все эти вопросы, то вы в хорошей форме. Если вам нужно руководство по решению проблем с памятью и ЦП, я предлагаю вам взглянуть на Понимание и решение проблем с памятью Java Ричарда Уорбертона.
Понимание и решение проблем памяти Java
Обзор курса Привет всем, меня зовут Ричард Варбертон, и добро пожаловать на мой курс: Понимание и решение проблем с памятью…
www. pluralsight.com
Эта цель, опять же, несколько относится к нашему второму решению — писать код каждый день по 2 часа. Посмотрим правде в глаза, иногда у вас недостаточно шансов в вашем реальном проекте для кодирования.
Если вам не хватает сложного кода, то нет ничего лучше, чем участвовать в соревнованиях по программированию и кодированию.
В Интернете есть много веб-сайтов, на которых проводятся соревнования по программированию и которые дают вам возможность проверить свои навыки, но TopCoder просто лучший.
Если вам нужны сложные задачи по программированию, вы также можете ознакомиться с моим списком хороших веб-сайтов для практики программирования.
Еще одна вещь, которую я узнал из опросов людей, заключается в том, что разработчикам Java необходимо улучшить основы программирования сокетов и работы с сетями.
Я задал много вопросов из моего списка вопросов по сетевому программированию на Java, но большинство разработчиков не смогли ответить на большинство из них.
Некоторые из них даже с трудом обрисовывают основные различия между TCP и UDP , что, как мне показалось, слишком просто, чтобы спросить об этом любого Java-разработчика с 2–5-летним опытом.
Если вы чувствуете, что у вас недостаточно возможностей для изучения программирования сокетов на Java или что вам это не нужно, потому что вы являетесь веб-разработчиком Java и работаете с JSP, Servlet и JSF, тогда я предлагаю вам прочитать хотя бы одну хорошая книга по сетям Java, NIO и программированию сокетов.
Я настоятельно рекомендую одну книгу: Сокеты TCP/IP в Java, второе издание, Практическое руководство для программистов . Это легко читаемый, интересный и хороший способ изучить основы программирования сокетов.
За последние несколько лет было выпущено несколько крупных релизов, одним из которых был JDK 12 и 13. Мне еще предстоит начать с JDK 11, забудьте о 12, но это первое, что я собираюсь изучить в 2022.
Если вы хотите изучить новые возможности Java 9таких как Jigsaw, Reactive Streams, улучшения API и т. д., то Java 9 MasterClass — хороший курс для начала.
Аналогично для функций Java 10, таких как var для локальных переменных, вы можете проверить хороший курс по Java 10, например The Complete Java MasterClass , который также является самым современным и недавно обновленным для Java 11.
Полный мастер-класс по Java (обновлен для Java 10)
Вы только что наткнулись на самый полный и углубленный онлайн-курс по программированию на Java. С более чем 260 000 студентов…
udemy.com
Spring Framework 5.0 сейчас самая популярная версия Spring. Он поставляется с множеством интересных функций, таких как модель реактивного программирования и внедрение Java 8 и 9, внедрение Spring 5.0 ускорится, и поэтому каждый разработчик Java должен изучить его. Если вам нужна помощь, Spring 5.0: Beginner to Guru — хороший курс для начала.
Еще один интересный релиз 2017 года, который я собираюсь освоить в 2022 году, это Spring Security 5.0. Spring Security 5.0 был основным релизом, и они переписали пару модулей и исправили несколько сотен ошибок.
Самая интересная часть — это модуль OAuth 2.0. К сожалению, на данный момент не так много ресурсов для изучения Spring Security 5.0, но, к счастью, Eugen обновил свой Learn Spring Security до версии 5.0, а также добавил новый модуль для OAuth 2.0.
Изучите Spring Security: мастер-класс
Полное видеоруководство по обеспечению безопасности вашего Java-приложения навыки и умения. И не только модульное тестирование, но и автоматизированное тестирование в целом. Это также включает в себя интеграционное тестирование.
Вы можете изучить JUnit 5 и другие расширенные библиотеки модульного тестирования, такие как Mockito, PowerMock, Cucumber и Robot Framework, чтобы вывести свои навыки модульного тестирования на новый уровень.
Mockito действительно мощен и позволяет вам писать модульные тесты для сложных классов, имитируя зависимости и просто фокусируясь на тестируемых объектах.
Если вы новичок в модульном тестировании и хотите изучить его в 2022 году, то Ускоренный курс JUnit и Mockito от Udemy станет хорошей отправной точкой.
Вот мой совет! Если вы Java-программист с парой лет опыта, вы также можете черпать вдохновение из этого списка, чтобы поставить перед собой цель. Некоторые другие вещи, которые вы можете добавить в этот список, — это изучение Android, Docker и Spark, поскольку они необходимы любому программисту на Java.
Я намеренно сделал это простым и достижимым, потому что лично я считаю, что маленькие успехи ведут к большим успехам.
Лучше ставить маленькие цели и достигать их, чем ставить большие, непрактичные цели и потерпеть неудачу до начала игры.
Так чего же ты ждешь? Запишите свои цели на этот год и поделитесь ими с нами. В конце года вы можете вернуться сюда и рассказать нам о том, чего вы добились.
Other Статьи по программированию you may like
Дорожная карта веб-разработчика на 2022 год
10 причин изучать Python в 2022 году
10 языков программирования, которые вы сможете выучить в 2022 году
10 инструментов, которые должен знать каждый Java-разработчик
10 причин изучать Java-языки программирования
10 фреймворков Java и веб-разработчики, которые должны изучить в 2022 году
10 советов, которые помогут стать лучшим Java-разработчиком в 2022 году
5 лучших Java-фреймворков для изучения в 2022 году
10 тестовых библиотек, которые должен знать каждый Java-разработчик
Спасибо за то, что дочитали эту статью. Вы можете подумать, что так много всего нужно узнать, так много курсов, на которые нужно записаться, но вам не о чем беспокоиться.
Есть хороший шанс, что вы уже знаете большую часть материала, и есть также много полезных бесплатных ресурсов, которые вы можете использовать, я также связал их здесь и там вместе с лучшими ресурсами, которые, безусловно, не бесплатны.