×

Як почати вивчення Java?

Періодично доводиться шукати джуніорів, десятки інтервю, слухачі різноманітних курсів і у більшості проблеми з розумінням що робити і куди рухатись. Також доволі часто мене питають знайомі і незнайомі з чого почати навчання — курси, книжки, вправи?

В кого яка думка є? Як в нормальну толкову людину з технічною (а може й ні) освітою швидко засунути необхідний мінімум знань? Навіть не зусунути а просто вказати що вона має прочитати/зробити самостійно, щоботримати цей мінімум. Так щоб без перекосів у сторону фреймворків, але з можливістю почати робити базові речі на середньостатистичному проекті?
Є в кого дієва роадмапа?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn

Найкращі коментарі пропустити

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

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

Я писал на этом форуме много раз что требуется от новичка, книги по каким лучше учить, что спрашивают на собеседовании у джунов. Умение гуглить — важно для будущего ИТ-шника.

Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

кажется, мы катимся в Индию, по наклонной

в Індію треба повзти вверх і повзти ще далеко

в Індію треба повзти вверх і повзти ще далеко

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

i є пiдозри, що там провина на конторах, якi намагаються продавати трешак.

Spiegel: Украина это европейская Силиконовая долина
www.spiegel.de/...e-ukrainer-a-1124815.html

Детройт — это когда производство уходит из страны.
Нам это грозит, если потеряем своё реноме «толковых пацанов».

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

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

можна тоді і leetCode брати але це не відповідь на питання як вивчити джава

ну хз може й так, просто співбесідую зараз джуніорів і після джаварашу теж, в них бракує розуміння що програмування це не один клас із main методом, а всі задачі мають прикладне застосування, а не просто посортувати методом бульбашки числа ((

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

Вы тот ,который видимо даже не смотрел программу джавараш))
Все что вы говорите

изучение языка, технологий, ООП, паттернов и прочего.
-там есть:

Я ее не проходил, но ради интереса посмотрел программу:

План обучения 40 уроков:
1.Знакомство с Java: вывод на экран, типы String и int
2.Знакомство с Java: переменные, методы, классы
3.Первая программа: ввод с клавиатуры, работа в IDE
4.Знакомство с ветвлениями и циклами
5.Знакомство с классами: написание своих классов, конструкторы
6.Знакомство с объектами: написание своих объектов, время жизни, статические переменные
7.Массивы и списки: Array, ArrayList, знакомство с Generics
8.Коллекции: LinkedList, HashSet, HashMap. Date — дата.
9.Знакомство с исключениями: try, catch, throws, multy-catch.
10.Приведение примитивных типов: расширение и сужение.
11.Основы ООП: основные принципы, наследование, инкапсуляция.
12.Основы ООП: перегрузка, полиморфизм, абстракция, интерфейсы.
13.Интерфейсы: сравнение с абстрактным классом, множественное наследование.
14.Приведение типов, instanceof. Большая задача на интерфейсы.
15. Перегрузка методов, особенность вызова конструкторов
16.Знакомство с нитями: Thread, Runnable, start, join, interrupt, sleep
17.Знакомство с нитями: synchronized, volatile, yield
18.Знакомство с потоками: InputStream/OutputStream, FileInputStream, FileOutputStream
19.Знакомство с потоками: Reader/Writer, FileReader/FileWriter
20.Сериализация
21.Устройство объекта Object: equals, hashCode, clone, wait, notify, toString(),...
22.String: mutable, immutable, format, StringTokenizer, StringBuilder, StringBuffer
23.Внутренние классы, примеры: Map.Entry
24.Внутренние классы, особенности реализации
25.Создание и остановка нитей: start, interrupt, sleep, yield.
26.Совместный доступ к монопольным данным: synchronized, volatile
27.DeadLock. Wait, notify, notifyAll
28.ThreadGroup, ThreadLocal, Executor, ExecutorService, Callable. Опыт работы с Jsoup
29.Autoboxing, особенности реализации
30.Операторы: числовые, логические и бинарные. Опыт работы с Swing
31.Работа с файлами и архивами
32.RMI и динамический прокси. Опыт работы с Swing
33. JSON, JavaScript. Опыт работы с Guava, Apache Commons Collections, JUnit
34.Рекурсия. Сборка мусора и типы ссылок в Java. Логгирование
35.Системы контроля версий: Git и SVN. Generics
36.Основные паттерны для создания веб приложений. Углубленное изучение коллекций
37.Паттерны проектирования. Утилитные классы Arrays. Collections
38.Методологии разработки. Аннотации в Java. Иерархия исключений
39.Создаем первое веб приложение. Работа с Tomcat и Idea
40.URI, URL. REST сервисы. Создаем свое клиент-серверное приложение.

+ДОПОЛНИТЕЛЬНО 12 недель реальный проект:
Неделя 1: Системы управления версиями
Неделя 2: Maven. WAR. Веб-контейнер Tomcat. Сервлеты. Логгирование
Неделя 3: Обзор Spring Framework. Spring Context. Слои приложения. Создание каркаса приложения.
Неделя 4: Spring context, JUnit, ORM
Неделя 5: Hibernate. JPA.
Неделя 6: Транзакции. Профили Maven и Spring. Пулы коннектов. Spring Data JPA. Spring кэш
Неделя 7: Кэш Hibernate. Spring Web MVC
Неделя 8: REST
Неделя 9: Bootstrap. Datatables. AJAX. jQuery. Spring Security.
Неделя 10: Шифрование пароля. Binding. Spring Security Test.
Неделя 11: CSRF. JSTL. Taglib.
Неделя 12: Деплой в PaaS-платформу Heroku.

Я ее не проходил, но ради интереса посмотрел программу:
А я вот проходил...
s15.postimg.org/4eo3h33tn/erghaerfw.jpg
s16.postimg.org/...y5x/rgaerfawehrserfsd.jpg
И считаю это бесполезной тратой денег и времени.
Джавараш не учит думать головой, джавараш учит решать задачки.
Реальное осознание того КАК что-либо работает и КАК что-либо делать джавараш не даёт.
Любой достаточно опытный и уважаемый джавист скажет новичку желающему стать Java разработчиком обходить джавараш стороной, начать с книг, с собственных проектов, менторов, бесплатных курсов, интернатуры.
Реальное осознание того КАК что-либо работает и КАК что-либо делать джавараш не даёт.
Я вас умоляю ,половина айтишников только педалят, не вникая в суть процессов под капотом- для джуна вполне достаточно -списка технологий джавараш, мне кажется- не каждый мидл ими владеет..
с собственных проектов
ну и реальный проект вы на джавараш не делали, судя по всему?

И вы считаете что это нормально не понимать суть процесса и называть себя джуниором или сеньором? Я считаю это деградацией. «Реальный проект» я затронул уже после первого опыта мелкого фриланса и считаю его таким же бесполезным как и первая часть программы.

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

Совсем недавно была джуниором и воспоминания очень свежи. Расскажу, что сработало именно в моем случае:
I. Эккель — не сработал. Просто чтение не дало абсолютно ничего. Практиковаться у меня ума не хватило.
II. Хорстман — поняла чем отличается for от while. Кажется все.
III. Попала на курсы в епам. Там начали ставить задачи. Основы джавы, которые мусолила до этого несколько месяцев, дошли очень быстро, т.к. надо было не просто читать, а делать.

Считаю, что самое важное в обучении — грамотная постановка задач. Неопытный человек не в состоянии поставить сам себе задачу (для тех, кто не верит, выберите область, в которой вы абсолютный 0 и попробуйте)

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

1. Поиск максимального элемента в массиве и другие подобного уровня задачи, типа поменять элементы местами, прочитать с консоли, написать в консоль (бот) и т.д. Помогает научиться работать с базовыми конструкциями языка, а также с массивами на самом базовом уровне, I/O.

2. Т.к. из нас готовили веб-программистов, то дальше было написание http сервера. Самого простого, который в while(true) слушает сокет на определенном порту и пишет в консоль ответ, когда запрос приходит. Уровень сложности задания можно повышать, добавить потоки и т.д. Что-то типа такого habrahabr.ru/post/69136. Помучавшись недельку, человек уже понимает что примерно творится под капотом любого http сервера.

3. Сервлеты. То, что очень любят сейчас опускать в обучении современные джуны, т.к. «друг сказал, что их никто уже не использует. Друг — миддл в епаме, непререкаемый авторитет».
В идеале, улучшаем наш http сервер, чтобы он парсил полностью запрос, определяя какой тип пришел (дада, if(data.equals( «POST» )))) - именно вот так. Потом path и т.д. В соответствии с полученными тяжким трудом данными из запроса, пишем в консоль то или другое.

Потом показываем магию, которая называется HttpServlet и web.xml. После этого нашего многострадального джуниора можно в 3 ночи поднимать с вопросом — что делает метод service. Не сфейлит.
Я твердо уверена, что опыт с сервлетами, маппингом в web.xml и миллионами doGet() и doPost() просто необходим. Иначе первый затык с path в Jersey, или данные с того же фб будут приходить немного не так, как ожидается (и написана моделька) — и все. Разработчик в жизни не догадается пойти во фронтконтроллер фреймворка и поставить брейкпойнт в service, чтобы посмотреть, что же там все таки приходит (пример из жизни). После такого опыта всякие спринги, аннотации, rest фреймворки и прочие улучшатели жизни будут выглядеть действительно улучшателями, которые построены на одной, известной уже базе, а не «блин, и это еще зубрить»

4. База данных. Подключать все максимально ручками. Транзакции — ручками. Откатывать на каждый чих (exception) тоже ручками. Маппинг!!! Маппинг данных из базы на entity ручками! Никаких хибернейтов. Таким образом основы любой ORM будут понятны без слов, а детали всегда можно дочитать в доке.

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

Вобщем, это краткий хау-ту — как из человека за короткий срок под грамотным менторством можно сделать джуна на 500 баксов. После пары лет работы в ход пойдут алгоритмы, основы и остальная база. Нагибать человека, которому надо работать вот прямо сейчас ковырять указатели в С++ чаще всего гиблое дело. Если он не дурак — спокойно въедет во все попозже, попивая чайок с хамоном, а не борясь за выживание на 3х рабочих сменах. И на 5й год работы что результат будет примерно одинаковый что для тех, кто начал с основ, что для тех, кто ими закончил.

Вы ошибаетесь, недавно писал тест, попасть реально, задание не сложные.

А когда писали , если не секрет?

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

Зря я про епам написала, теперь сотня прочитавших найдёт для себя отмазку не учиться(так как в епам не берут). Мой пост — это попытка структурировать план обучения для тех кому нужно. Со старшим товарищем можно вполне пройти все самостоятельно, без курсов. И не доставая товарища сильно.

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

смешно
это меньше чем надо знать для того чтобы участвовать в школьных олимпиадах по информатике
почему это вас удивляет?

Роботу знайшли? В мене вакансія джуніора є ))

спасибо, но боюсь, интервью на джуниора уже не пройду :)

Вы извините, конечно, но вы сейчас выступили в худших традициях HR: кликнуть по пользователю — и посмотреть его профиль, где она живёт и работает, перед тем как делать предложение это непосильный труд. «Открытые данные о пользователе пусть дураки анализируют — а мне вакансию закрывать надо.»

:) так я вчинив жахливо

Нічого жахливого, проте диявол у деталях, а вам, мабуть, ще доведеться наймати людей у майбутньому.

ничего жахливого, вы рекрутер — к вам по умолчанию как к долбо#бу относяться, пора бы уже привыкнуть

ви мабуть ще й на скляній кулі гадаєте? :)

Возвращаемся чуть назад по ветки и читам коментарий
dou.ua/...rums/topic/19215/#1026678
думаем ещё раз :)

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

даже не знаю что вы называете твердым джуниором. Я училась задолго до 2015го

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

и sql, и tdd, и «средний» английский, и от года опыта..
по крайней мере в подавляющем большинстве вакансий..

Это рынок, торговля, компромисс. На моей памяти не было ни одной работы, куда бы меня взяли, и где бы я соответствовал требованиям вакансии хотя бы на 90%. Требования вакансии почти всегда сильно отличаются от того, что фактически знает/умеет человек, которого на эту позицию возьмут.

молодец. я считаю лучший способ это пойти стажером в какой-нибудь бодишоп, чтобы совмещать учение с реальной практикой. работа девелопера состоит в написании кода всего на 10%. остальное — написание юнит тестов, поиск и воспроизведение багов, и прочий скрам. этому вряд ли научишься «в отрыве от производства»

0. Научится гуглить.
Так как новички обычно задают одни и те же вопросы, в том числе и «с чего начать», то ответы на большинство вопросов уже есть.

так і більшість відповідей у такому ж дусі як ваш))

Если вы хотите стать специалистом, которого HR будут рвать с руками и ногами)) то для этого есть простой путь с нескольких пунктов:
1. Английский — продвинутый.
2. oracle.com — знать , посещать, читать , любить — там есть все материалы и задачи, примеры реализации.
3. Постоянная работа в IDE над проектом, закончили один — создаете новый и добиваете до конца.
Не буду говорить про доп литературу и ответы на другие вопросы — в поиске сами найдете оптимальные варианты для себя.
В один прекрасный момент поймете , что легко можете устроиться в любую кампанию.... У каждого этот момент свой. Удачи Вам и трудолюбия.

це надто розмито, людина яка нічого не знає про джаву по цих рекомендаціях зможе вивчити лише англійську

1. Только на английском вы сможете найти адекватную информацию по языку программирования, кейсы и решения.
2. Английский — станет вашим основным языком, если вы хотите получить работу в международной компании. А 90% всех вакансий на Украине — это аутсорсинг.
3.

oracle.com
 — дает полную информацию по языку и кейсы от новичка и уровнем выше. Остается только побороть лень и перейти на сайт и найти эти материалы.
4. Имхо: найдите ментора....и все поймете сами.

це нереалістично, соррі але це утопія. Принаймні якщо ми говоримо швидко і з прийнятною якістю

Быстро и качественно?)) Это больше похоже на фаст фуд. Можно перекусить по дороге раз или два, но постоянно так питаясь вы погубите свое организм. Так в программировании, это понимают и работодатели — поэтому даже джуниоров берут часто с требованием от года коммерческой разработки и знанием английского. Уточню: я говорю про серозный проект уровня интерпрайз...

Только ситхи возносят все в абсолют.

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

в хроме кликнуть «перевести эту страницу»
Господи помилуй. А потом такие идут учить других и на apple watch говорят «епл вотче» и студенты с него ржут.

Та на ютюбе как то попал как андроид дев выступал с лекцией перед студентами и некоторые слова неправильно произносил. Наверно так же читал все на русском или переводил гугл транслейтом.

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

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

понятно, спасибо.. что-то я сегодня слишком лично все воспринимаю, извините..

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

И когда же это произойдет?) Спустя 10 лет...

Для многих он не наступает никогда))

английский в приоритете над базовыми знаниями? Допустим если у меня довольно свободный английский, будет ли это перевешивать какие-то недочеты в практике при приеме?

Ответ всегда заложен в вопросе. Подумайте сами...)) Ну чуть — чуть...

Моя версія як почати вчити java
Отож беремо Thinking in Java Bruce Eckel і читаємо до 791 сторінки (пропускаємо I/O частину сторінка 647) до частини Concurrency яку треба читати трохи пізніше коли появиться розуміння основ. Чатину про графічн інтерфейси ігноруємо взагалі Але оскільки це все ще ~700 сторінок можна взяти study guide by Kathy Sierra www.amazon.com/...TF8&qid=1480754048&sr=1-2
Це менша книжка дуже зручною структурою і завданнямим в кінці теми. Читаємо знову ж таки все окрім потоків і I/O.
В момент коли в книжці попадається перша задача сетапимо на компютер java та eclipse і надалі робимо всі задачі там в одному проекті намагючись давати пакетам, класам і змінним осмисленні назви. Коли пройшов всю книжку ставиш собі задачу зробити тестовий проект — наприклад телефонну книгу, просто консольну версію. Тестовий проект повинен зберігатись на GitHub. коли буде базовав версія проекту поставити задачу вичитувати і записувати дані на файлову систему, вернутись до книжки і прочитати частину I/O. Модифікувати проект. Сам проект повинен містити хоча б 50 класів щоб набити руку на типові структури. Тепер можна підключити базу даних, беремо туторіал по JDBC сетапимо MySql і пробуємо підключити базу, коли база підключена і ви можете записати і вичитати з бази, читаємо що таке патерн DAO та які є альтернативи. Коли це все пророблено. Можемо почитати тему про потоки. В принципі програма мінімум є з якою вас можуть взяти на роботу (а можуть і не взяти). Далі я б рекомендував почитати овервю Spring викачати SpringMvc example та спробувати запустити. Для цього вам доведеться розібратись що таке maven або gradle а також як запускати tomcat або інший webserver

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

Я писал на этом форуме много раз что требуется от новичка, книги по каким лучше учить, что спрашивают на собеседовании у джунов. Умение гуглить — важно для будущего ИТ-шника.

ми вам вдячні за ваші старання :)

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

Что, на самом деле так все плохо?

Единого road map быть не может, но в целом, это выглядит, примерно так:

Главное!!!
Ни в коем случае не начинайте читать кучу книг по Java, БД, фреймворкам и т.д.
Это путь к депрессии, разочарованию и ненависти к окружающему миру.
Прочитать их придётся, но потом.

0. Сама по себе Java практически не востребована на рынке — необходимо знание стека технологий.
1. Крайне не рекомендуется идти на курсы с самого начала. Шанс попасть на г#@внокурсы крайне велик.
Вероятнее всего — будут начитывать материал из книги и писать програмки а-ля «Hello, World»
2. Для начала попробуйте найти туториал по Java для начинающих (если с туториалом от Oracle не сложилось) либо выбрать !!!ОДНУ!!! книгу Шилдт, Эккель, и т.д.
3. После изучения базового синтаксиса — переходите изучению основ БД, здесь подойдёт MySQL (простенько и со вкусом).
4. После изучения основ БД — JDBC — учимся вязать Java приложение c БД и работаем над простыми примерами (консольное CRUD приложение — будет в самый раз).
5. JDBC прошли — Hibernate — туториалы на официальном сайте будут полезными.
Берем приложение, которое писали для JDBC и пишем имплементацию на Hibernate.
6. Начинаем учить писать простые веб приложения — учим Spring. Читаем туториалы.
После чтения тутоиралов — возьмите ваше приложение с Hibernate и прикрутите к нему Spring и веб-морду.
Основы HTML + CSS учатся на коленке за 1 день.

Не пиара ради, а для пользы читающего оставляю ссылку на видяшку с примером создания простого CRUD приложения со Spring + Hibernate + MySQL (видео предназначено для обучающих целей и примеры кода часто не могут применяться в промышленном програмировании)

youtu.be/e7swABdqOS4

7. Читаем основы по Maven + Junit.
Покрываем тестами наше CRUD приложение.
8. Ищем работу на позицию Java Junior, либо пытаемся попасть на курсы при компании, чтобы попасть на работу в эту же компанию.
Рано или поздно, получаем оффер в ООО «Рога и Копыта», либо устраиваемся в лидеры рынка через курсы.
9. Успех.

Чаще всего, это занимает от 4 до 9 месяцев, в зависимости от ситуации.

Если найдёте адекватного ментора — сэкономите кучу времени и сил. Но и самому освоить всё это также можно, просто потребуется больше усилий.
Удачи Вам.

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

1. Зачем новичку вникать в бинарные данные. Вы сами часто используете их в работе?
2. Зачем железное знание стрим-сокет? Половина мидлов его толком не знает и нормально работают.
3. Подключаться к БД через современные IDE это, конечно же, катастрофически сложно (редкие синьоры могут это сделать) и это действительно намного важнее ООП.

1. Да, а что?
2. Я так понял, что вы и сами не очень-то понимаете о чем это.
3. Ну да, программировать без ИДЕ категорически невозможно.
В целом — мнение человека, который всю жизнь просидел на паре-тройке типовых задач.

1. Допустим, но вы же должны понимать, что эта крайне специфичная задача и подтянуть знания возможно именно под проект.
2. Даже если это было бы так, это не помешало бы мне выполнять мою работу, да и большинству разработчиков.
3. Это в духе «Ну да, жить без электричества категорически невозможно». Конечно возможно. Жонглировать переходя дорогу на красный свет тоже можно. Но это, опять таки, исключение из правил.

Выучит человек всё, что касается бинарных данных и пойдёт искать работу. А на собеседовании спросят про реализацию HashMap в Java и архитектуру Hibernate. И его знания окажутся крайне полезными.
Блеснуть знаниями и плюнуть с высоты своего эго на уровень интеллекта собеседника, это конечно же хорошо, но человеку нужен ответ, который ему поможет, а не покажет, что вы намного умнее большинства читающих ваш комментарий и решаете задачи уровня CERN.

В целом ответ человека, который не понимает требований к Java Junior разработчику на рынке Украины и способен отбить у начинащего всё желание заниматься разработкой.

эта крайне специфичная задача и подтянуть знания возможно именно под проект.
Под проект можно подтянуть конкретный фреймворк. А вот фундаментальные вещи, типа представления данных должны быть на уровне рефлекса.
Впрочем похоже вы и здесь не понимаете о чем я говорю.
А на собеседовании спросят про реализацию HashMap в Java и архитектуру Hibernate.
Не, что серьезно? От entry-level требуются знания того что под капотом?
решаете задачи уровня CERN.
Сокеты и регэкспы уже стали rocket science?
не понимает требований к Java Junior разработчику на рынке Украины
Рынок Украины в глубоком системном кризисе, потому что полон людей, которые не могут самостоятельно решить задачи средней сложности, но хотят денег на уровне западного спеца с хорошим университетом и 10-15 годами опыта за плечами.

Евгений, сразу хочу извиниться, если ненароком перешёл на личности и написал лишнее.

По моему опыту:
Битовые данные — слишком глубоко для Java Junior — просто негде будет применить, а с опытом подтянет.
По поводу HashMap — естественно, практически на любом собеседовании на junior разработчика спрашивают как именно устроены коллекции под капотом.

Не видел, чтобы новенькому давали работать с Socket’ами. Хотя, в других компаниях, возможно.

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

Битовые данные — слишком глубоко для Java Junior
Не битовые, а бинарные = !текстовые.
практически на любом собеседовании на junior разработчика спрашивают как именно устроены коллекции под капотом.
Не видел, чтобы новенькому давали работать с Socket’ами
Лишнее доказательство, что у нас на собеседованиях привыкли спрашивать всякую ересь, абы потешить ЧСВ интервьюера.
В большинстве случаев абсолютно не имеет значения, как именно реализован готовый компонент.
А вот между потоковым/датаграммным сокетами настолько же принципиальная разница, как между массивом и списком. И обе должны отлетать от зубов.
Не видел, чтобы новенькому давали работать с Socket’ами. Хотя, в других компаниях, возможно.
Вы просто не видели, чтобы на Джаве писали что-н. кроме энтерпрайза.

И вот сейчас кто-то может действительно решить изучить сокеты их виды и вообще tcp/ip. Только вот вероятнее на работу возьмут того кто знает спринг.

Не раз слыхал подобные заявления, только потом эти же люди без посторонней помощи к базе данных приконнектится не могли.
P.S. Все, что программист должен знать о сокетах вкладывается в страницу текста и применимо для любого языка и любой операционной системы.
«Изучать» там положительно нечего.

P.S. Все, что программист должен знать о сокетах вкладывается в страницу текста и применимо для любого языка и любой операционной системы.
«Изучать» там положительно нечего.

Шорт побьери. Реально завидую кодерам, которым не надо спускаться ниже уровня класса типа HttpRequest.

Создатели джава с этим не согласны
docs.oracle.com/...ial/networking/index.html, но настоящие профи ведь никогда не читают туториалов.
Всегда с интересам наблюдаю, когда «тру-джаверам» попадает в работу что-нибудь типа RTP.

На этом месте я расскажу одну историю. Сразу оговорюсь никого не хочу обидеть, просто офигел, когда увидел.

Был у нас один оригинальный проэктик. Однажды пришла нам в глову идея саять веб интерфейс к существующему решению, немного подумав мы решили написать Пруф-оф-концепт поверх существующего CLI клиента — консольной програмки принимавшей текстовые команды и выдававшей какой-то текстовый результат. Для этих целей был нам был выделен дежурный джава джуниор, а ему в поддержку опытный джава-синьёр и тимлид, наставник и ментор. Вобщем студент писал код, в какой-то момент возникла у них проблемма на своей стороне они команду в файловый дескриптор записывают, а на сторону клиента она не приходит. Как быть? Что делать? Пришли к нам, мы им «А вы флушать вывод не пробовали?» они «а зачем его флушить?» мы «ну вы все-таки попробуте». После этого джава тим-лид и наставник проконсультировалась с другим джава-тим лидом (а по совместительству мужем) и пришла к нам с предъявой «Мужики, вы не правильно стандартный инпут открываете! (ну тот откуда клиент команды текстовые читает). Чините. Флушить ничего не будем!». Ну ей обяснили что бы ерундой не занималась, потом через какое-то время она пришла с другим политически более грамотно сформулированным вопросом. «Ну хорошо, проблемму мы решили, с Флушем все вроде работает... Но я не знаю как это объяснить моему студенту, помогите пожалуста». Помогли, рассказали про буферизацию ввода-вывода. Вроде все остались довольны.

Аналогичный кейс.
Сервер общается с клиентом по одному из индустриальных протоколов — передачей форматированной текстовой строки.
Часть команд не работает. Продолжительные и громкие обвинения сишников во всех тяжких.
Дальнейший анализ показывает:
1. Не работают команды с ненулевым пейлоадом.
2. Пейлоада приходит ровно половина.
3. В заголовке поле длины пакета содержит количество символов, а не количество байтов.
4. Кодировка UTF-16
5. Занавес.

Мрак. Я-то имел в виду, что там при действительно серьёзном знании не страничка, а книга нужна, а тут такое...

Вот после таких ситуаций и приходиться самому учить Джаву.

Приходите до нас на курси -> вчимо -> вчимо -> вчимо -> profit :)

А как там с ассоциативностью у вашей стрелки? :)

Я тогда уже понял) Просто от Вас все время комменты «приходите к нам» видел, поэтому только в этом контексте и рассматривал)

вот, читайте: dou.ua/...es/java-enterprise-guide
Желательно 2-3 раза ;)

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

Пожалуй, лучший комментарий, описывающий значимость синтаксиса языка в работе разработчика :)

Як в нормальну толкову людину з технічною (а може й ні) освітою швидко засунути необхідний мінімум знань?
Навіть не зусунути а просто вказати що вона має прочитати/зробити самостійно, щоботримати цей мінімум.
Так щоб без перекосів у сторону фреймворків, але з можливістю почати робити базові речі на середньостатистичному проекті?

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

Обучение Джаве само по себе нелёгкое дело. Трудоёмкое.

ну що значить системно? от відівчилась людина на якомусь фізичному, захотіла піти в програмування — душа лежить до такого діла. І що йому сказати повчіться системно кілька років а тоді ми вас на роботу візьмемо? Якщо прямі руки — основи можна взяти за кілька місяців, а далі як не дурний то за кілька років на реальних проектах і з додатковою літературою довчить все що треба

ок, що значить несистемно?

це коли крок влiво — вправо — прiрва невiдомого.

та воно так і є, все житя чим більше ти знаєш тим більше невідомого навколо.

ну, не знаю, в мене вже по другому колу пiшло.
це коли нове — то знайоме старе.

Мне кажется, самое сложное для начинающих — это поддерживать долгое время уверенность в себе, что получится выучить джаву (или какой-то другой язык программирования). Я бы посоветовал прежде всего почитать для начала Нейла Фьоре «Легкий способ перестать откладывать дела на потом». Во-вторых, просмотреть курс — ru.coursera.org/...arn/learning-how-to-learn. И только потом уже браться за java и практику.

Это легкий способ отбить желание учиться в принципе )

а еще начать лучше с курса для чайников : «Как перестать быть чайником»
или если еще глуюже копать то начтаь с курса «Как отказаться от родительской сиськи»

вы бы еще курс по мотивации посоветовали или как смывать за собой в туалете)

для очень запущенных случаев — тоже вариант)

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

а може спершу треба визначитись — чого хоче людина ? до чого їй ближче душа лежить ? Я розумію, що в більшості це зп в доларах, але всерівно треба напрямок якийсь

Что там ту джаву учить, 50 ключевых слов
Учить надо структуры данных, паттерны, фреймворки, библиотеки

Что там ту джаву учить, 50 ключевых слов
а в цих 50 слів входять особливості роботи віртуальної машини?
а в цих 50 слів входять особливості роботи віртуальної машини?
Як в нормальну толкову людину з технічною (а може й ні) освітою швидко засунути необхідний мінімум знань?

Особливостi роботи віртуальної машини для мiнiмуму, це занадто..

казалось бы при чем здесь Г*л*вач...

Сначала Schildt — Java The Complete Reference, дальше Goncalves — Beginning Java EE 7, потом по Spring что-то почитать. У указанных книг есть переводы. Плюс не забывать про основы типа алгоритмов и структур данных.

жава и швидко это слова антонимы

особенно, после выхода 8-й

это на 3-ю можно было с разбегу запрыгивать.

Устаревший материал

И в чем он конкретно устарел?)

Очень много зависит от ситуации.
Минимум для чего?
Какие «базовые» вещи?
Написать текстовый квест в командной строке?
Калькулятор?
Интернет-магазин со Спрингом и Хибернейтом?
Ответить на 327 вопросов по собеседованию?
Начать стартап с краудфандингом?
Вести лекции по информационной безопасности?

Я считаю для настоящего звания Junior надо потратить 500 эффективных часов на обучение и написать самому какой-нибудь веб-проект.

швидко засунути необхідний мінімум знань?
з можливістю почати робити базові речі на середньостатистичному проекті?

Никак.

серв має курси трьохмісячні, як правило відсотків десять звідтіля дуже навіть толкові джуніори, так що все таки можна

Абсолютно верно, мне предлагали пойти на эти курсы... после года работы)

А з яким бекграундом ті 10% приходять на ті курси?

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

Ну.. Найкращий джун, якого я бачив, теж прийшов до нас після 3-х місяців курсів. І то ті курси були розраховані до 6 місяців, він був єдиний, хто подужав їх за 3... правда в нього до того був якісь там досвід комерційної роботи :).

А ще попадаються люди які ще до Універу закінчуюють всякі фізматліцеї і бігають ще в шільні роки по олімпіадах по програмуванню і малих академіях. В самого крутого в плані програмування мого одногрупника тато теж був програмістом і він прийшов вже на перший курс непогано програмуючи на С заради власного задоволення, а ми всі тільки починали вчитись всерйоз. Мені все ж таки здається що ти трохи занижуєш їх бекграунд, хоча звістно і квік-стартери і просто люди талановиті в природі теж є.

ну вони просто не друшляли в універі я так думаю, врешті мене особисто вчили доволі непогано баз даних в універі, трохи розуміння ООП, які неякі алгоритми, теорію ймовірності, курсаки і дипломні писав на джаві так що це не так і мало як на джуніора

Так, але то трохи більше ніж

тобто піврічний курс джави/плюсів/шарпа
Але звістно нічого надзвичайного.

Підписатись на коментарі