Как стать разработчиком java: пошаговая инструкция для java junior
Содержание:
- Вступление. Краткая история и особенности языка
- Чем занимается Java разработчик
- Программа курса
- Профессия Java-разработчик (SkillFactory)
- Кто такой Java-программист?
- Есть ли у Java альтернатива?
- Функционал Java-разработчика
- Java Developer Job Description
- Язык программирования Oak
- Где научиться программировать на Java, чтобы начать работать
- Установка среды разработки IntelliJ IDEA Community (Windows)
- Минимальные навыки и обучение с нуля
Вступление. Краткая история и особенности языка
Как-то давно мы с моим товарищем и коллегой Егором готовили обучающий курс по Java Core. Но как-то не срослось и это дело не было доведено до какого-либо логического конца. И вот, спустя время, я решил, что не стоит пропадать добру и по-этому запускаю серию статей про Java Core для самых маленьких.
Начало разработки языка было положено еще в 1991 году компанией Sun Microsystems, Inc. Вначале язык был назван Oak (Дуб), но в 1995 он был переименован в Java. Публично заявили о создании языка в 1995 году. Причиной создания была потребность в независящем от платформы и архитектуры процессора языке, который можно было бы использовать для написания программ для бытовой электротехники. Но поскольку в таких устройствах применялись различные процессоры, то использование популярных на то время языков С/С++ и прочих было затруднено, поскольку написанные на них программы должны компилироваться отдельно для конкретной платформы.
Особенностью Java, которая решила эту проблему, стало то, что компилятор Java выдает не машинный исполняемый код, а байт-код — оптимизированный набор инструкций, которые выполняются в так называемой виртуальной машин Java (JVM — Java Virtual Machine). А на соответствующую платформу предварительно устанавливается JVM с необходимой реализацией, способная правильно интерпретировать один и тот же байт-код. У такого подхода есть и слабые стороны, такие программы выполняются медленнее, чем если бы они были скомпилированы в исполняемый код.
Чем занимается Java разработчик
Еще на стадии зарождения интернета и современных телефонов каждый пользователь хотя бы раз слышал про Джава (или Ява). В кнопочных устройствах с довольно узким (на наш искушенный взгляд) функционалом нередко можно было встретить иконку в виде чашки кофе. Особенно, если ты рискнул выйти во всемирную сеть или загрузить какое-нибудь приложение.
Java появился в 1995 году и теперь является одним из самых востребованных языков программирования. На нем пишут:
- приложения для телефонов на базе Android;
- различные видеоигры (в том числе и такие популярные, как Майнкрафт);
- Cloud-сервисы и разнообразные клиенто-сервисные приложения, личные кабинеты и т.д.;
- приложения виртуальной реальности;
- ПО для беспилотного транспорта и пр.
И это, конечно, совсем не полный перечень направлений, в которых используют Джава. Его активно применяют в Big Data наравне с Python, для написания корпоративных ПО. Данный язык программирования в 2020 году занял первое место по востребованности, переплюнув даже С++ и РНР. Стоит ли говорить, что разработчики, освоившие Java, могут реализовать себя во многих сферах.
А теперь разберемся подробнее, кто такой Ява-разработчик. Это специалист, который владеет языком программирования Java, занимается разработкой и написанием программ с его использованием, внедрением данного языка в уже готовые продукты, русификацией англоязычных приложений и ресурсов, тестированием, выявлением и устранением ошибок.
Java-разработчик работает с разными версиями программ (приложений): web- , десктопная или мобильная. И нередко ему приходится разрабатывать для приложения, представленного в одной версии, другие форматы.
Большая часть обязанностей разработчиков приходится на работу с уже готовыми продуктами: поиск багов, исправление ошибок, доработка. Довольно часто заказчики, оценив предпочтения пользователей, просят добавить новые функции и формы в приложение. Поэтому специалисту приходится общаться с клиентами напрямую, чтобы выяснить их пожелания и проблемы.
В список трудовых обязанностей Ява-разработчика входят:
- Клиентская работа. Сюда и относится личное общение с заказчиками и пользователями.
- Разработка и создание программ с использованием Джава (разработка архитектуры и программных модулей).
- Тестирование готового продукта, выявление имеющихся ошибок и их устранение.
- Разработка и внедрение в программы (приложения) новых функций и решений, доработка.
- Техническая поддержка и ведение готового проекта.
- Консультация пользователей и других разработчиков по вопросам работы приложения или программы.
- Составление грамотного технического задания для специалистов команды.
- Контроль работы других разработчиков группы, проверка кода, написанного программистом более низкого уровня.
Это обобщенный, но далеко не полный перечень обязанностей специалиста. Здесь еще много зависит от выбранного направления (ПО, видеоигры и т.д.) и занимаемого уровня. Да-да, у разработчиков существует своя шкала карьерного роста, так что новичкам есть, куда стремиться.
Теперь остановимся подробнее на ступенях карьерного роста. Всего выделяют несколько уровней:
- Младший специалист. Тот самый «зеленый юнец» из колледжа. Не имеет практического опыта, но освоил теоретическую базу.
- Junior developer стоит чуть выше. Программист, имеющий небольшой опыт работы. Он может решать простые задачи, такие как: выявление ошибок и их устранение, поиск решений для дополнения функционала продукта, его реализация. Может писать код, но его нужно проверять.
- Уровень Middle. Более опытный специалист, способный самостоятельно выполнять задачи средней сложности. Пишет код, который не нуждается в проверке.
- Senior, то есть старший разработчик. Может самостоятельно выполнять задачи любой сложности и решать вопросы команды. Он контролирует работу других разработчиков, консультирует их при необходимости. Отвечает за проект непосредственно перед руководителем. Не нуждается в проверке, поскольку редко допускает ошибки и знает, как себя проверить.
- Team Lead. Руководитель отдела разработчиков. Может самостоятельно выполнить проект, знает все нюансы. Составляет техзадания для специалистов отдела, курирует работу по реализации проекта.
Стать хорошим разработчиком может каждый, если сильно захочет. Но это совсем не значит, что можно устроиться на работу, имея только желание и смутное представление о языках программирования. Хотя бы базовые знания должны быть, а мы расскажем, какие навыки и умения необходимы Java-разработчику для карьерного роста.
Программа курса
Урок 8. Собеседование и испытательный срок
Собеседования для программистов: как себя вести, что говорить, к чему прислушиваться; испытательный срок и правила его прохождения.
Урок 9. Фриланс: первые шаги
Обзор площадок для фриланса; особенности регистрации; оформление аккаунта; как выделяться среди большинства исполнителей.
Урок 10. Фриланс: начало работы и поиск заказов
Стратегия поиска заказов; приоритет заказов: что брать в работу; ведение переговоров; задания и подводные камни ТЗ; методы обращения к клиенту; написание ответов и привлечение внимания клиентов; правильные вопросы.
Урок 11. Фриланс: выполнение заказа и оплата
Способы оплаты: безналичный или наличный расчёт; предоплата или постоплата; обзор ситуаций, в которых лучше сработает каждый из способов; подготовка к работе и обязательные договорённости с клиентом; особенности процесса работы; завершающие этапы сотрудничества; обмен отзывами; техника «посоветоваться».
Урок 12. Специальности в сфере IT
Как проходит разработка в крупных компаниях? Кто такие аналитики, дизайнеры, тестировщики, архитекторы, projectmanager-ы, team-lead-ы и пр.
Урок 13. Карьерная лестница в сфере IT
Как выглядит карьерная лестница в сфере IT? В каких специальностях проще начинать свой путь? Какие есть перспективы развития?
Профессия Java-разработчик (SkillFactory)
Курс поможет с нуля освоить востребованную специальность Java-разработчика. Программа построена таким образом, что вы не просто познакомитесь с основами Java и объектно-ориентированным программированием на нем, а научитесь разбираться в типах данных, использовать алгоритмы и коллекции Java. Вы также освоите работу с базами данных, SQL, фреймворком Spring, типами данных HTML, XML, JSON и инструментами DevOps.
Основные преимущества
- Научитесь писать серверную логику, разворачивать сайты, отлаживать код, разрабатывать микросервисы, тестировать приложения и многое другое.
- Реализуете три практических проекта, среди которых программа-парсер и банковское приложение.
- Обучение включает теорию, отработку практических навыков на тренажере и выполнение заданий.
- Работа с ментором в режиме онлайн и поддержка координаторов курса.
- Пожизненный доступ к материалам курса.
- Преподаватели курса — практикующие специалисты Skyeng, BPC Banking Technologies, МТС.
- Карьерный центр помогает выпускникам с составлением резюме, подбором вакансий и подготовкой к собеседованию.
- При покупке в период новогодней акции студенты получают доступ к бесплатным бонусным курсам (Google Sheets, Soft-skills и пр.).
Кто такой Java-программист?
Java-программист — это человек, который пишет программный код на языке Java. Помимо написания кода, он часто взаимодействует с заказчиком, тестирует приложение на всех этапах его создания, исправляет баги и занимается техподдержкой.
Пример: одной из рабочих задач Артура Куприянова была разработка бота. Требовалось реализовать Inline Keyboard для отправки ссылок в Telegram. Inline Keyboard — online-клавиатура, привязанная к сообщению. Вместо отправки сообщения с обычной клавиатуры она использует функцию обратного вызова, то есть отложенного выполнения. Функция обратного вызова названа по аналогии с заказом обратного звонка: когда вы не хотите ждать на линии и заказываете звонок от оператора, а он набирает вам, как только освободится.
Вот что он сделал:
- Проверил, есть ли в Telegram такой функционал.
- Нашел несколько библиотек, посмотрел документацию по ним и, сравнив, подключил одну через Maven — фреймворк для автоматизации сборки проектов.
- Создал тестового бота и попробовал сделать простой пример, который показывал, как работает Inline Keyboard.
- Начал продумывать архитектуру приложения: выделил модули, создал пакеты.
- Выбрал стиль разработки.
- Реализовал бота в соответствии с задачей.
Есть ли у Java альтернатива?
Может показаться, что Java — абсолютный лидер и у неё нет соперников, но на самом деле всё совсем наоборот. Её часто сравнивают с С# и Python, и это только главные «противники». Давайте посмотрим на них внимательнее.
Java против Python
Java и Python соревнуются не первый год: в рейтингах они раз за разом занимают места рядом друг с другом (вот рейтинг 2019 года). Сравнивают их не просто так, у них действительно есть общие черты: оба языка очень популярные, объектно-ориентированные и работают вне зависимости от платформы.
Давайте посмотрим, что у них различается.
Типизация
У Java статическая типизация вы должны прописывать тип данных, когда вводите новую переменную.
У Python динамическая типизация: это значит, что типы данных не надо прописывать, они определяются автоматически. Ещё одно отличие типизации: в Python разные типы переменных можно смешивать. Но и тут есть свои границы: например, вы можете сделать массив со строками и числами, но прибавить строку к числу уже нельзя.
Python даст вам больше гибкости и лёгкости в написании, зато Java предупредит ошибки.
Читаемость
Этот пункт связан с предыдущим, потому что то же указание типов влияет на конечный вид кода. Хотя у Java достаточно простой синтаксис по сравнению с другими языками, здесь Python выигрывает. Гораздо лучше слов эту разницу покажет пример.
Вот так может выглядеть код в Python:
То же самое, написанное в Java:
В целом у синтаксиса в Python простая ясная структура, он хорошо читается, его можно даже назвать интуитивным. Он хорошо подойдёт новичкам.
В Java код более комплексный, со множеством слов и знаков: на английском такой синтаксис называют словом «verbose», то есть «говорливый» код, многословный. Он хуже читается и может быть сложноват для новичков, хотя многие разработчики чувствуют себя комфортнее со строгим синтаксисом.
Функционал Java-разработчика
Теперь более подробно и по порядку попробую описать должностные обязанности специалиста. Функционал разработчика включает следующие этапы:
- выявление проблемы у клиента (предполагает общение с заказчиком) – что нужно создать или переделать;
- непосредственно разработка программы (архитектура и программные модули);
- проведение тестирования приложения и выявление возможных ошибок или недочетов;
- устранение проблем и доведение программы до идеального состояния;
- внедрение приложения в работу.
Помимо разработки нового продукта или доработки существующего приложения, специалист осуществляет техническую поддержку своего «детища» на всех этапах его использования и консультирует пользователей программного обеспечения.
Все, что я перечислила выше – это стандартный набор функций разработчика. В своей карьере он проходит несколько стадий, в зависимости от этого его функционал может меняться:
- начинающий специалист – нет практического опыта, стажер, работает на подхвате;
- Junior – небольшой опыт работы, может выполнять тестирование, исправлять ошибки, писать код, но под присмотром старшего специалиста;
- Middle – специалист самостоятельно выполняет задания, пишет код и исправляет ошибки без старшего наставника;
- Senior – это уже старший разработчик, который не только самостоятельно выполняет любые сложные задачи, но и контролирует работу менее опытных коллег, часто отвечает за работу команды над проектом перед руководителем;
- Team Lead – это руководитель группы разработчиков, который составляет техническое задание для специалистов, контролирует сроки выполнения заказа, принимает решения в спорных ситуациях.
А если специалист способен самостоятельно в одиночку вести весь проект — это уже суперпрофессионал. как видите, в профессии есть куда расти по карьерной лестнице.
Java Developer Job Description
In this section, we will be covering all the expectations from a java developer. We also see what a typical java developer profile looks like with tips for your resume. And most importantly, give you pointers for preparing for java developer roles.
The roles and responsibilities of a Java developer/engineer vary greatly depending on the company and specific position. Some typical responsibilities:
- Design, implementing and maintaining Java applications that are often high-volume and low-latency, required for mission-critical systems
- Deliver high availability and performance
- Contribute to all phases of the development lifecycle
- Write well-designed, efficient, and testable code
- Conduct software analysis, programming, testing, and debugging
- Manage Java and Java EE application development
- Ensure designs comply with specifications
- Prepare and produce releases of software components
- Transform requirements into stipulations
- Support continuous improvement
- Investigate alternatives and technologies
- Present for architectural review
As a Java developer, you will be part of the IT/Software Product team within an organization. Depending on how your enterprise is structured, there could be a single software team, or much smaller software teams that work on individual projects often practiced in agile environments.
Java Developers are also hired on different levels based on their experience. These levels can often be categorized with the years of experience one has:
- Entry-level Java developers – Zero years of experience or Internships.
- Mid-level / Junior Java developers – 1-2+ years of experience.
- Senior Java developers – 5-10+ years of experience.
Profile based Job Descriptions
Typical java developer profiles expect employees to work on software/back-end development or mobile application development. General qualification and requirements include the following:
- B.Tech/B.Sc in Computer Science and Engineering / Information Technology
- Work Experience (Depending on the level of role)
- Soft Skills – Communication
Let’s take a look at a typical job description for different java developer profiles:
Senior Software Engineer Job Description – Java with React
Company: UnitedHealth Group
Primary Responsibilities:Follow the terms and conditions of the employment contract, company policies, and procedures. The Company may imply, vary or rescind these policies and directives in its absolute judgment and without any limitation (implied or otherwise) on its ability to do so.
Required Qualifications:
- Undergraduate degree or equivalent education
- JAVA 8, SOAP, REST, Spring, Hibernate, ReactJS, SQL, basic cloud concepts
- Any Java optimization tool experience
- Strong development experience in building and fine-tuning REST/SOAP-based web services, Angular and has very good knowledge of SQL as well
- Good grasp in Spring and Hibernate
- Good grasp of Containerization and Cloud technologies
- Good grasp of Security features
- Good grasp of Agile, CI/CD and Jenkins, etc.
Backend Developer Job Description – Java/Node.js
Company: Paytm
Job DescriptionWe are looking for developers who want to help us design Avant-grade scalable products to meet our swift-growing business. We are building out a team and looking for multiple levels but you should have at least 3 years of programming experience.
Key Responsibilities
- Develop high accessibility and extremely reliable high-volume transactional systems.
- Deliver reliable and efficient solutions that handle immense data and high traffic.
- Skills required
- MS or BS/B.Tech in computer science or equivalent educational background from top colleges.
- Hands-on experience in coding advanced Java, Node.js applications.
- Proficiency in numerous programming languages, both dynamic (JavaScript, Python, etc.) and strongly implemented object-oriented language.
- Experience and knowledge of open source tools & frameworks, eclectic cutting edge technologies around server-side development.
- Outstanding data structure & algorithm and problem-solving skills.
- Active contributor to developer communities like Stackoverflow, Topcoder, Github, Google Developer Groups (GDGs).
Bonus if you have:
- Familiarity with: Java, PHP, Couchbase, DynamoDB
- AWS experience
- Full-stack knowledge
- Prior startup experience
Язык программирования Oak
Разработкой нового языка вплотную занимался Джеймс Гослинг и изначально назвал его Оak (в переводе с английского Дуб). Рядом с офисом разработчика действительно рос дуб. Наверное Джеймс, работая в офисе, поглядывал в окно и видя крепкий дуб, излучающий здоровье и долголетие, решил назвать новый язык в честь зеленого дерева. К лету 1992 года команда смогла продемонстрировать части новой платформы, включая операционную систему Green OS, язык Oak, библиотеки и аппаратное обеспечение.
Их первая попытка, продемонстрированная 3 сентября 1992 года, была сосредоточена на создании устройства PDA (Personal Digital Assistant, карманный компьютер) под названием Star7, которое имело графический интерфейс и смарт-агента под названием «Duke» для помощи пользователю. Карманный компьютер Star7 был принципиально новым устройством, которое намного опередило своё время, но из-за высокой стоимости не смогло произвести переворот в мире технологии и постепенно было забыто. Возможно, в настоящее время именно оно вернулось к нам в виде умных андроид устройств.
Где научиться программировать на Java, чтобы начать работать
ВУЗ
Есть разные мнения о том, стоит ли тратить 4-5 лет на получение образования, чтобы овладеть профессией программиста. Одни считают, что это слишком долго, другие уверены, что серьёзное образование — это солидно с точки зрения работодателя. Однако, кроме фундаментальности подхода, высшее образование даёт и прагматичные плюсы. Во многих ВУЗах крупные компании открывают кафедры и учебные центры, а некоторые работодатели предлагают программы стажировки для студентов. К тому же, обучаясь в ВУЗе, можно начать работать уже на 2-3 курсе.
Если в дальнейшем вы не исключаете работу за границей, то полезно знать, что в ряде стран наличие профильного высшего образования может упростить получение разрешения на работу. Это, например, США, Канада и Австралия.
Самообразование
Этот подход требует самодисциплины. Но она имеет шанс быстро «окупиться».
Следует начать с книг:
- Берт Бейтс, Кэти Сьерра (Bert Bates, Kathy Sierra): Изучаем Java.
- Герберт Шилдт (Herbert Schildt): Java 8. Руководство для начинающих.
Кроме знания языка программирования важно в самом начале научиться писать код, который будет легко воспринимать и поддерживать. В этом поможет книга Стива Макконнелла «Совершенный код» (Steven C
McConnell). Также существует множество видеокурсов, которые помогут изучить различные аспекты разработки на Java, причём бесплатных.
Онлайн-школы
Отличие онлайн-школ от бесплатных видеокурсов — домашние задания. Их проверяют преподаватели, которые являются действующими опытными разработчиками и могут дать рекомендации не только по изучению технологий, но и по качеству и стилистике кода.
Замечу, что какой бы вариант обучения вы не выбрали, стоит подтянуть уровень английского языка до уверенного чтения технической литературы.
Практика
Это важная часть обучения программированию! Не стоит ждать момента, когда вы почувствуете, что готовы переходить от теории к практике — так можно остаться вечным студентом и ещё долго не получать хороший доход от Java-разработки. В качестве практики уже на начальном этапе образования можно понемногу писать свой небольшой проект, которым вам будет интересно заниматься по вечерам и на выходных. Если нет идей для проекта — есть игры для программистов, которые помогают прокачать свои навыки: Robocode, Codewars, Codingame, Code Hunt.
Установка среды разработки IntelliJ IDEA Community (Windows)
Intellij IDEA — это интегрированная среда разработки (IDE), то есть система программных средств для создания проектов на разных языках программирования.
Сегодня это самая популярная IDE для языка Java. А ещё есть Eclipse, NetBeans и немало других, но мы рекомендуем именно IDEA, потому что даже её бесплатная версия обладает широкой функциональностью, подходит для профессиональной разработки и вообще делает Java проще в использовании.
В IDE обязательно входят:
- текстовый редактор для написания кода (он знает синтаксис нужных языков);
- компилятор;
- отладчик.
1. Какую версию (редакцию) выбрать
Intellij IDEA доступна в бесплатной (Community) и платной (Ultimate) версиях. Чем они различаются, видно на скрине ниже:
Пока что нам хватит возможностей бесплатной версии.
IntelliJ предлагает студентам и преподавателям к своим продуктам.
2. Сама установка
Заходим сюда и качаем версию для Windows.
Запускаем скачанный файл .exe:
Жмём Next (Далее) и выбираем путь для установки:
Снова Next, и настраиваем параметры установки:
В общем случае это:
- 64-bit launcher — для запуска 64-разрядной версии приложения (будет создан ярлык на рабочем столе);
- Add ”Open Folder as Project“» — позволяет открывать папки с исходниками как проекты прямо через контекстное меню;
- .java — файлы такого типа (с таким расширением) будет открывать IDEA (по умолчанию и через контекстное меню).
Кликаем Next (Далее) и выбираем папку для ярлыков IDEA (оставляем по умолчанию):
Нажимаем Install (Установить), после чего стартует установка:
Дожидаемся её окончания и жмём Finish (Завершить):
3. Запуск IntelliJ IDEA и настройка параметров
При первом запуске принимаем пользовательское соглашение и нажимаем Continue (Продолжить):
Далее выбираем тему оформления (доступны тёмная и светлая):
Жмём Next: Default plugins и переходим к выбору устанавливаемых плагинов:
Если не знаете, что вам точно пригодится, — оставляйте всё как есть. А если, например, с Андроидом вам не работать — выключите соответствующий пункт.
Не волнуйтесь, если надобавляете лишнего или о чём-то забудете. Всё можно будет переиграть — в настройках среды.
После чего нажмите на кнопку Next: featured plugins и выберите другие нужные плагины (или оставляйте всё по умолчанию):
И наконец, нажимаем Start using Intellij IDEA.
Вас встретит начальный экран среды разработки (Welcome screen). Здесь можно создать новый проект, открыть или импортировать существующий, а также скачать проект из системы контроля версий:
Минимальные навыки и обучение с нуля
- Английский.
- Java Core (синтаксис, OOP возможности, многопоточность, стандартная библиотека).
- OOP и OOD (парадигмы, основные паттерны проектирования).
- Базы данных (Hibernate, JDBC, язык SQL).
- Языки разметки (HTML, XML и другие).
- Технологии и фреймворк (веб-сервисы и Spring).
Мидл понимает и знает:
- Английский.
- OOP, различные архитектуры.
- Алгоритмы и структуры данных.
- Системы управления версиями (GIT).
- Сокеты и многопоточность.
- Понятный и короткий код (KISS, DRY).
- Базы данных (PostgreSQL или MySql).
- SQL запросы.
Сеньор обладает всеми навыками из предыдущих пунктов и демонстрирует их на практике. Отличается также уровень и опыт владения сервисами и алгоритмами, которые используются в компании. Имеет опыт проектирования сложных систем и управления командой, а также отлично знает:
- Веб-службы на основе Java.
- Реляционные базы данных, SQL и ORM.
- Фреймворк J2EE.
- Объектно-ориентированный анализ и проектирование.
- EJB (Enterprise Java Beans).
- XML, X-запрос, XSL.