В институте, как и у многих технарей, у меня был TurboPascal 7.1, Deplhi 7 и C образца книжки Кернигана и Ритчи. Ну, сами понимаете, какой в институте даётся уровень языка на непрофильных программированию кафедрах. Бонусом была экзотика в виде "Максима" и менее экзотичный mathcad.
В школе были короткие курсы по Visual Basic и HTML. Показанный мне тогда паскаль показался странным и неудобным (и это я ещё джаву не видел на тот момент!).
В общем, в 1с я пришёл уже с некоторым пониманием не только циклов и условий, но и с небольшим опытом визуального "программирования форм" на VB/VBA и Deplhi.
После начала работы с 1С я продолжил знакомиться с другими языками, например, проходил туториалы по R и Haskell, и вносил в опенсорс проекты небольшие правки на JavaScript и CoffeeScript, который на тот момент выглядел очень перспективно. Где-то в тоже время был небольшой экскурс в Python и перевод precommit1c с питона на оскрипт (кто-то вообще помнит, что он был на питоне? :)).
С подачи Жени Сосны и Вики Дорохиной и их работы над плагином поддержки 1С в VSCode я познакомился с TypeScript и однозначно убедился в том, что я сторонник статической типизации в языка программирования. И чем строже, тем лучше. После динамической слабой типизации в 1С это было глотком свежего воздуха.
В общем, в лето 2016 года я входил пускай и не с коммерческим опытом разработки на других языка кроме 1с, но как минимум с пониманием того, что мне нравится в языках программирования и экосистемах вокруг них. Я бы даже сказал, что опыт в других языках программирования стал важным шагом на пути изучения джавы: синтаксис - дело десятое, важно понимать идею и проблемы, которые призван был решить язык, его идеоматику. И с джавой у меня, что называется, случился мэтч.
Моей первой джава-задачей стало не Фибоначчи или сортировка строк в файле, а вполне конкретное прикладное решение - нужно было написать с нуля плагин для поддержки 1С в SonarQube. И кода для нулевого опыта в джаве надо было написать достаточно много. Да, у меня было примерное понимание того, что должно получиться на выходе, был опыт разработки плагина для vscode, но все равно с многими концепциями языка и экосистемы вы столкнетесь только после начала активной работы с языком.
На своём опыте могу сказать, что коммерческий или пет-проект - это второй важный кирпичик в процессе обучения языку. Именно он позволяет вам с головой окунуться в исследование и обучение. Мне пришлось разобраться и с концепциями dependency injection, и с шаблонами проектирования, и с профилированием (как cpu так и памяти), и конечно же богатейшей системой библиотек и системой сборки maven.
В плане источников получения информации в джаве все очень хорошо. Есть огромное количество кода, который можно исследовать. Хорошо бы при этом понимать, какой код хороший, а какой плохой, но это дело наживное.
Есть туториалы от Oracle с разбором решения различных задач, используя стандартную библиотеку джавы. Хорошим источником информации являются и спецификации - как самого языка, так и различных частей экосистемы - например, Java Persistence API, которая легла в основу библиотеки entity.
До сих пор очень много вводной информации по той или иной библиотеке я подчерпываю с сайта Baeldung. Он является отличной точкой входа с быстрым how-to для использования, и понимания, нужно ли углубляться в чтение документации.
Я начинал проходить несколько видеокурсов, но кажется, это не мой формат поглощения информации (мне ближе статьи и референсная документация). Могу отметить хороший курс от Tim Buchalka на Udemy.
Специализированных книг по джаве я
Ну и конечно же фреймворки. Рано или поздно вы с ними столкнетесь, не со спрингом, так с даггером, микронавтом или с чем-нибудь другим.