Зачем мне Java: неудобные вопросы о популярном языке и ответы на них
Собрали по Java популярные вопросы и ответы на них: где применяется, насколько востребованы джависты и как стать Java-разработчиком с нуля.
12К открытий12К показов
Мы собрали список распространённых вопросов о Java, а за ответами обратились к экспертам из Java Mentor. Смотрите, что из этого получилось.
1. Что пишут на Java: сферы применения языка
Станислав, наставник Java Mentor:
На Java можно разрабатывать что угодно:
- высоконагруженные системы (Google, Yandex были разработаны в том числе на Java);
- банковские веб-приложения (Сбербанк, Альфа Банк, ВТБ 24 созданы руками Java-программистов);
- игры (Minecraft);
- искусственный интеллект (Whatson, ViaVoice);
- мобильные приложения (Telegram и Signal);
- интернет-магазины (Ebay, Amazon).
Даже Netflix был создан Java-разработчиками.
2. А насколько востребованы Java-разработчики?
Алексей, наставник Java Mentor:
Широта применения языка обеспечивает Java стабильно лидирующие позиции в рейтинге языков программирования TIOBE. Традиционно Java входит в топ-3 самых популярных языков программирования. Эта тенденция сохранится и в 2021 году. Во многих крупных компаниях (особенно в финансовой и банковской сферах) софт, написанный на Java, нуждается в регулярной доработке и поддержке, спрос на специалистов тут особенно велик. Плюс сохраняется тренд на развитие автоматизации и тестирования, и здесь Java в топе.
По данным Hays, снижения числа вакансий и спрос на Java-разработчиков не предвидится в ближайшее время.
Александр Весновский, выпускник Java Mentor:
Стоит выложить резюме — и у тебя разрывается Телега, WhatsApp, почта и телефон, словно контакты отдали особо злым пранкерам. Наверное, это всё, что нужно знать о востребованности джавистов.
Максим Ткачев, выпускник Java Mentor:
Очень востребованы: выкладываешь резюме, и телефон с электронной почтой переполняются сообщениями от HR, а даже если после закрыл резюме — пишут всё равно каждый день.
3. Java vs PHP: на чём писать бэкенд?
Александр, наставник Java Mentor:
Разницу можно описать одним предложением. У этих языков разная специфика применений: если нужно что-то крупное — Джава, если мелкий сайт — подойдёт PHP.
PHP отлично подходит для написания простеньких веб-проектов, вроде опенкарт, магазинов и т. д. Мелкий сайтик проще, быстрее и дешевле написать на PHP. Для небольших веб-проектов PHP хорош тем, что порог входа ниже, язык сам по себе проще, и реализовать задачу быстрее. Но он слабо масштабируемый и работает медленнее Java, так как скриптовый.
На Java же порог вхождения выше, но он гораздо быстрее PHP за счёт того, что Java — компилируемый язык и легко масштабируется, что позволяет писать огромные системы из миллионов строк кода, в итоге нагрузку держит лучше.
Поэтому если нужно что-то кроме мелкого веб-сайта, то стоит смотреть в сторону Java. Ну, и Java — строго типизированный язык, отчего код более читаемый, а это дополнительный плюс к масштабируемости.
4. Функциональное программирование в Java: плюсы и минусы
Никита, наставник Java Mentor:
В Java относительно недавно появились функциональные интерфейсы, которые предоставляют возможность писать код в функциональном стиле.
Плюсы:
- Плюсом будет привычность для людей, перешедших на Java с функциональных языков.
- В редких ситуациях позволяет сделать код более читабельным и удобным.
- Отдельным пунктом стоит технология Stream API, которая позволяет обрабатывать потоки данных в функциональном стиле. Это действительно удобно и часто применяется на практике, в частности с Java 11+, где повысили эффективность использования ресурсов при создании стрима. В Java 8 создание стрима было более ресурсозатратным. Проще говоря, вы можете в функциональном стиле через точку провести множество операций над потоком (отфильтровать, отсортировать и т. д.).
- Ещё один плюс — лямбда, которая существенно уменьшает объём кода. Например при реализации анонимного класса, реализующего интерфейс с одним методом, а-ля функциональный.
- Распараллеливание стримов.
- Возможность более красиво, с меньшим количеством кода работать с коллекциями: есть готовые варианты с различными реализациями, например Google-коллекции.
Минусы:
- Всё же Java изначально заточена под ООП, а функциональная нотка с 8 версии — всего лишь нотка, и зачастую выглядит лишней.
- Сложная читаемость кода, в частности при обработке данных через Stream API образуется так называемая «простыня» кода, которая тяжела для восприятия.
- Возвращаясь к первому пункту, смесь ООП кода и функционального может выглядеть неуместной, а иногда даже вводить в заблуждение (не относится к лямбде).
Как бы там ни было, возможность писать частично в функциональном стиле вряд ли когда-нибудь сможет полностью заменить ООП.
5. Сколько зарабатывают Java-разработчики?
Станислав, наставник Java Mentor:
Средняя зарплата Java-разработчика в Москве составляет около 150 тыс. руб. в месяц (до вычета НДФЛ). Зарплаты таких специалистов растут каждый год на 5–10%.
Что касается мировых показателей, то, по данным Stack Overflow, средняя зарплата Java-программиста составляет 120 тыс. долларов в год.
6. С чего начать изучение Java?
Иван, наставник Java Mentor:
- Если не знаете с чего начать, то возьмите на вооружение второе издание «Java head first». Будет понятно понятно даже тем, кто вовсе не знаком с программированием.
- Пользуйтесь YouTube. Просто забивайте в поиск то, что вам нужно. Мне было трудно по книге понять, что и как устанавливать в первый раз, поэтому я смотрел видео связанные с темой введения в Java .
- По книге идите вплоть до главы про Объектвиль. Проходите её, а затем начинайте проходить Базовый курс на Степике. Это сложный курс, местами даже покажется, что трудно двигаться вперед, но он эффективный. Сложные задачи помогут быстрее понять особенности языка, да и в целом учиться куда приятнее, когда монструозные задачи удаётся решать как задачки по умножению в начальной школе.
- Ещё для отработки базовых знаний можно пройти 15–20 уровней JavaRush.
По Java Core это всё, а дальше добро пожаловать в Java Mentor. Нигде на другой программе вы не найдёте такого сочетания менторинга, сильного сообщества, практики и подготовки к трудоустройству.
Александр Огарев, выпускник Java Mentor:
Тут нет однозначного рецепта успеха. Кому-то заходят видосики, но мне такой подход показался неудобным. Чтобы был толк, весь представленный в видеоуроках код нужно написать самому, а это крайне неудобно делать, перематывая видео туда-сюда. До этого всё нужно посмотреть от начала до конца, чтобы вникнуть в суть происходящего целиком. На это уходит очень много времени.
Просто решать задачки на JavaRush — тоже не выход. Их космическая сага не повествует о самых базовых концепциях, не раскрывает суть самих задач.
Лучший вариант, на мой взгляд, начать с книги Шилдта «Полное руководство Java». Там есть теоретические выкладки, которые сложны для понимания в русском варианте, но если не лениться, самому модернизировать код из каждого примера, понимание сути изложенного придëт. Я остановился в изучении по данной книге только тогда, когда дошëл до графических интерфейсов Swing и JavaFx. Не сказать, чтобы я стал экспертом, но это позволило мне в будущем быстро находить интересующую информацию по Java Core в уже понятном мне варианте изложения.
7. Каков кратчайший путь с нуля до Junior Java-разработчика?
Герман, наставник Java Mentor:
В первую очередь не надо позиционировать себя как Junior-разработчик. Все хотят, чтобы к ним на работу пришёл человек, готовый решать боевые задачи. Поэтому важно, во-первых, иметь реальный опыт командной разработки. Вы можете его получить на каких-то платных ресурсах, либо на бесплатных. Или просто собраться с друзьями и заняться командной разработкой. Очень важно, чтобы вы имели реальный проект, про который можете рассказать на собеседовании.
Во-вторых, нужно заниматься по 5-6 часов каждый день, минимум. Если вы занимаетесь меньше, скорее всего, ваш путь затянется на год, два, а может вообще никогда не закончится.
В-третьих, неважно, какой у вас бэкграунд, есть он вообще или нет. Самый короткий путь — это делать ровно то, что нужно для трудоустройства, и не закапываться в темы. Очень часто при самостоятельном обучении студенты закапываются в темы глубже, чем надо. Эта одна из популярных ошибок новичков. Сфокусируйтесь на главном и бейте в эту точку.
Владислав Семененко, выпускник Java Mentor:
По поводу кратчайшего пути до Java Developer могу судить только из личного опыта. За 1,5 года работы в индустрии побывал примерно на 50 собеседованиях и поработал уже в 3-х компаниях.
Если мы говорим о кратчайшем пути до позиции Java-разработчика как о том, чтобы просто устроиться на должность, то, на мой взгляд, достаточно просто научиться кодить на Java (выучить синтаксис) и заучить вопросы с ответами для собеседований. Да, качество у такого разработчика будет довольно низким, а процент отказов на собеседованиях высоким. Но здесь поможет тот факт, что это рынок соискателя, а значит найдутся компании, которые будут готовы взять на работу. И да, вряд ли удастся получить среднюю зарплату по рынку. Скорее всего, она будет ниже.
А если мы говорим о пути до разработчика на Java, как о человеке, который сможет достаточно хорошо делать свою работу, которого хантят и у которого уровень зарплаты рыночный и выше, то тут заучиванием вопросов и ответов по Java не обойтись. Тут нужно иметь знания глубже. Этот путь для меня был не самым простым, потому что на тот момент у меня уже был бэкграунд со своими успехами, и он не был связан с IT. Каждый раз, когда я сталкивался со сложной задачей, весь мой опыт говорил, что можно найти что-то намного легче, то, что быстрее даётся. И в таком эмоциональном шуме мне помогли двигаться следующие вещи:
- Зачем я это делаю? На протяжении всего обучения Java я задавал себе этот вопрос, и ответ был всегда одним и тем же. Для меня главной мотивацией было то, что просто зарабатывать деньги — это скучно, и рано или поздно превращается в рутину, а мне бы не хотелось, будучи уже старым, осознавать, что я положил свою жизнь на алтарь нелюбимого дела. IT-индустрия открывала возможность заниматься интересными задачами и зарабатывать достаточно, чтобы не думать о деньгах.
- Ментор. Для меня важно было наличие человека, который направляет и поддерживает. Путь в Java Development довольно сложный, со множеством ям и развилок, и неподготовленному человеку крайне сложно его пройти без того, кто этот путь уже прошёл.
- Комьюнити. Несмотря на кажущуюся асоциальность типичных айтишников, комьюнити решает. У меня будто появлялась дополнительная ответственность перед ребятами, которые учились со мной. И это не давало возможности уводить фокус от обучения.
Это 3 главных критерия которые помогли мне довольно быстро поменять сферу деятельности и влиться в дивный мир IT.
Александр Губанов, выпускник Java Mentor:
Для меня не работало чтение книг и сложных статей, но отлично подошёл вариант с решением задач на JavaRush до 15–18 уровня с ежедневной регулярностью. Одного-двух месяцев хватит, чтобы набить руку и перестроить мышление на лад программирования.
Дальше курс на Степике, порешать в свободное время все задачи, а потом уже идти в Java Mentor. Там уже решать чёткие поставленные задачи, не закапываясь слишком глубоко: есть задача — есть решение, есть вопросы — есть ответы. И так до подготовки к собеседованиям, где ребята из JM также помогли понять, какие темы самые популярные на собесах, и что углубляться нужно именно в них. Очень помогала коммуникация и дух соревнования с одногруппниками.
Заключение
Посматриваете в сторону Java-разработки? Верное решение. Исходя из представленных вопросов и ответов по Java, этот язык применяется во многих сферах, а потому джависты — востребованные высокооплачиваемые ребята, и в ближайшем будущем ситуация вряд ли изменится.
Вооружайтесь советами менторов и выпускников из JM и вперёд — покорять вершины, а полноценный курс по Java в этом сильно поможет.
12К открытий12К показов