Изучение Java: мотивация, перспективы, краткий план?

Знаю, что подобные вопросы регулярно поднимаются на всех связанных с разработкой ресурсах, но все же решил обсудить свою собственную ситуацию. Благодарю всех, кто прочитает мое сообщение. А кто прокомментирует/посоветует/покритикует - благодарю вдвойне. И за ранее прошу прощения за много текста.

Собираюсь начать плотно изучать ЯП, а именно Java. Хотел бы узнать ваши мнения/критику/советы.

Вводная такова. Мне 30 лет, живу в Канаде. Первое ВО с IT не связано (языковое/юридическое), второе ВО в IT - Interactive Multimedia Development for the Internet + Information Security, всего 2,5 года учился в этой области. Первый год PHP/MySQL/CMS/JS/HTML/CSS/Action Script/Media Editing and Design. Еще полтора года Infosec - Networking/PenTesting/Access Control Tech./CISSP Preparation/InfoSec Management/Project Management/Strategic IT + самостоятельно Linux, Raspberry PI projects и много чего еще по мелочам в этой сфере.
Опыт в IT - за компом с 12 лет, с 286-х с модемом 2400. Потом был владельцем Dial-up BBS, поинтом/нодой в Фидо, немного кодил на бэйсик/паскаль/дэльфи (но ЯП знал на уровне школьного кружка программирования, не очень серьезно все).
На данный момент работаю в компании (довольно крупной), которая делает игры, но с разработкой не связан - работаю в Marketing/Tech Support департаментах. Основные технологии, которые используются для наших продуктов - С++, Lua. Я понимаю что C++ не совсем то, что мне нужно - очень сложен, привязан к конкретным архитекторам, для выхода на какой-то приличный уровень потребуются годы. Lua - слишком нишевый и не востребованный на массовом рынке труда.

Цели изучения программирования:
- Давно хотел попробовать по серьезному в этой профессии, еще с детства. В любом случае, даже если выяснится что это не мое - понимание процесса будет чрезвычайно полезно для например работы Information Security или Project Management в IT.
- Научиться, получить опыт и в дальнейшем иметь возможность в течении нескольких лет брать работу на фриланс, работать какое-то время без привязки к географическому местоположению.
- Разрабатывать собственные небольшие приложения - десктоп/internet/Андройд привлекает больше всего - уже есть идеи небольших приложений для себя/друзей, возможно они будут полезны и другим людям.
- Возможно в среднесрочной перспективе, когда позволит опыт - работа джуниором на девелоперсокй позиции.
- Возможность участвовать в интересных мне самому проектах типа openworm, drone autopiloting, neuro-interfaces, image recognition и пр.

Почему именно Java (а не Python, C#, JavaScript, Ruby, PHP):

- Средний порог вхождения. Не очень легко, но и не супер сложно по сравнению со многими другими языками. Понимания процесса программирования, ООП. Возможность довольно легкого освоения и перехода например на Python или C#.
- Много вакансий, серьезной работы full time на североамериканском рынке, требуются джуниоры, причем далее есть перспективы развития и дохода (в тоже время, таких перспектив, как мне кажется, меньше для других языков со сравнимым порогом вхождения). Также такое знание будет не лишним в Information Security Industry, однако связь этих двух направлений мне еще предстоит выяснить.
- Очень развитый и универсальный язык, практически в каждой области его можно применить, много проектов, множество поддерживаемых платформ.
- Много литературы и обучающего материала, примеров, разборов, очень живое коммьюнити и на англ. и на русском.
- Разработка под Андройд.

Целеполагание должно быть как можно более конкретным, достижимым в каких-то реальных и оцениваемых временных рамках, и главное - по настоящему желанным, я набросал себе следующий список:

Конкретные пункты и цели:

- Прочтение литературы (Thinking in Java, Effective Java и др.) и прохождение нескольких курсов (в данный момент прохожу JavaRush), просмотр видео и туториалов по Java Core. (немного скучно и нужно будет себя заставлять, но без начальной базы никак).
- Начало практики - написание совсем небольших программ (интереснее чем предыдущее, но тоже обязательный пункт).
- Поиск и нахождение энтузиастов с такими же целями, как у меня для совместного обучения, мотивации, обмена опытом (делаем это социальной вещью, возможно также внести элемент соревновательности).
- Поиск и нахождение ментора (получение обратной связи в процессе изучения).
- Создание пары-тройки простых приложений для себя самого, полирование их и выкладывания на гитхаб (уже какая-то реальная польза для себя; начало работы с собственным портфолио).
- Решение лабораторных для студентов за бесплатно/символическую плату, а при получения навыка и за реальное вознаграждение (практика на реальных задачах, внесение социального элемента в процесс, человеческая и возможно материальная благодарность).
- Взятие задач на фрилансе и решение их под руководством ментора. Возможна ситуация, когда на ментора я потрачу больше, чем будут платить за данную задачу, но при этом все равно очень много в плюс - Опыт выполнения реального задания, опыт получения реальных денег за этот труд что будет мотивировать далее выполнять уже с меньшей помощью.
Некоторые опциональные вещи, которые могут помочь (однако они не должны подменять собой главный процесс): ведение блога по своему обучению, общение на ресурсах по этой тематике, более расширенный поиск людей, которые преследуют ту же цель и возможно реальный совместный проект с ними.

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

Этап в жизни, когда меня что-то увлекало и я страстно посвящал этому всего себя у меня прошел, но на смену пришло умение работать над поставленной задачей даже при скромных запасах энтузиазма и при этом качественно выполнять ее, дисциплина, умение правильно распоряжаться временем и ресурсами, весьма аналитичное мышление.
Я не питаю иллюзий, что я стану гениальным программистом, сениором через какой-то короткий срок, но то, что возможно стать средним сотрудником-кодером, добросовестно работать и получать за это средние по рынку деньги - думаю при моих данных и образовании возможно. При этом у меня есть пару живых примеров как люди это делали.
Имея уже на руках какой-то освоенный язык и понимание того, что кодить - это то, что ты хочешь и можешь делать (как сам процесс - проводить 6-10 часов в день разбираясь в коде, ища решения и пр.) - можно включаться по ходу дела в глубокое изучение и планирования карьеры в этой сфере.

Также некоторые конкретные вопросы, которые я хотел бы обсудить:
- Какие технологии/фреймворки/ аспекты языка помимо Java Core следует изучать с точки зрения большой востребованности фриланса/рынка труда full time? И к изучению каких стоит приступать в первую очередь ?
- Насколько в Jave нужен скилл security programming, и как можно совместить вообще оконченную мною программу Information Security с программированием на джаве? Нужны ли рынку такие специалисты?
- Насколько развит рынок фриланса для джавы? Реально при грамотном подходе через какое-то время получать доход на этом рынке, ну хотя бы сравнимый с доходом в треть того, что получает джуниор на полный рабочий день в средней компании?

Еще раз благодарю тех, кто оставит свои комментарии. Также буду рад предложениям по менторству или совместному изучению - если кто-то будет заинтересован. Я сам тоже смогу что-нибудь вам подсказать/рассказать/помочь, например в изучении английского языка или о жизни в Северной Америке.
  • Вопрос задан
  • 34479 просмотров
Пригласить эксперта
Ответы на вопрос 15
@Lici
Извините, но посмотрите правде в глаза - вы ничего не умеете в этой жизни делать, кроме абстрактной, бесцельной и бесполезной учебы. Два высших образования и годы еще какого-то бесполезного чтения и просмотров чего-то якобы развивающего и полезного. Вы еще небось отличник. Лучше бы вы саус парк смотрели и брейкин бэд, но в остальное время действовали как мужчина - ставили себе задачу и методично ее решали. Не смотрели говнокурсы, а брали задание и кровь из носу выполняли его. А сейчас вам делать просто нечего, пишете тут многабукавы.

Пока не измените вообще методологический подход к своей жизни - у вас все и будет так-же.
Ответ написан
opium
@opium
Просто люблю качественно работать
Поселил я тут к себе нового соседа недавеча, 20 лет джава программист удаленный, работает по 60 часов в неделю получает 5000 баксов в месяц играет в волейбол каждый день , через день в качалку. Ездит с нами на острова
Думаю спрос на джава программистов очевидно есть и он конский если люди готовы платить такие деньги двадцатилетнем юношам
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
Вам в технические писатели))

* Вы должны понимать, что freelance - в основном проекты на одного человека, максимум - несколько.
* На java даже драйвера и приложения для sim-карт пишут, имею ввиду, что спектр направлений деятельности на этом языке - огромен. По этому тыкать пальцем в небо: "учи такой-то фреймворк" ка минимум не корректно. Для начала необходимо определиться с областью.
* Security Programming - вообще говоря нигде не помешает, тут все зависит опять же от области применения, например, у web-а есть золотое правило: "пользователь всегда врет, даже если он этого не знает - все равно врет". В случае, если вы делаете консольную утилиту, например конвертер чего-нить, тут требования будут совсем другие.
* На счет рынка freelance - в чем проблема то? Зайдите на oDesk / fl / любая_другая_freelance _биржа и посмотрите.

Но есть нюанс: java все же mainstream язык, и чаще всего используется не на freelance проектах.

Фриланс на самом деле сложнее, чем стационарная работа, потому как требует серьезной самодисциплины, так же без команды - расти будете медленнее. Сама работа - не постоянна, конечно вы можете сорвать куш в 1 месяц, но рассчитывать на то, что так будет постоянно - как минимум глупо.

Так что подумайте на тем, что бы дотянуть знания до стажера и работать не как фрилансер.
Ответ написан
Комментировать
@Einsteinnew
Тема интересная и меня самого давно занимает, я с очень похожими вводными данными 31 год, два высших, да не тех - учу java на протяжении 9 месяцев, уже сформировалось определенное видение как именно максимально продуктивно обучаться. Как раз занимаюсь поисками единомышленников и на среднесрочную перспективу планирую осваивать Канаду))
Оставляю свою электронку, p.pydzirov@mail.ru, пиши
поделюсь теми граблями на которые я уже наступил )))
Ответ написан
gadfi
@gadfi
https://gamega.org
Если есть желание то почему бы нет ? )
Я присоеденюсь к index0h ─ java для фриланса не самый лучший выбор, если это конечно не android я не говорю что не реально, просто большинство проектов на java действительно чаще всего используется не на freelance проектах. (сам фриласер, android разработчик)
Определитесь какое направление вам интересно, если это android то вам хватит основ java ─ по сути понимание механизма ооп, коллекции и чтоб не допускать глупых ошибок Маленькие хитрости Java , Маленькие хитрости Java. Часть 2 (банальнейшие вещи но часто встречаюсь с их незнанием) а дальше начинается чисто кухня android
Java для веба совсем другой мир, рекомендовать ничего не буду, сам только начал изучать spring (при написание разных api вконец достал php, душе захотелось чего то прекрасного =) )

#JavaRush ─ не счет платного варианта где вас определят в команду ничего не скажу, а так на редкость нудная муть
#На студентов не тратьте время время, мало результативно и в плане опыта и в плане денег

По поводу фриланса ─ почему вы не рассматриваете трудоустройство в местных конторах? с командой вы вырастите намного быстрее
Ответ написан
Комментировать
Adam_Ether
@Adam_Ether
Java Developer
- Какие технологии/фреймворки/ аспекты языка помимо Java Core следует изучать с точки зрения большой востребованности фриланса/рынка труда full time? И к изучению каких стоит приступать в первую очередь ?

По-моему, фреймворки разные и технологии это сильно меняющиеся с течением временем вещи, так что прямо целенаправленно их изучать в отрыве от реальности не очень-то и здорово. А вот с реальным задачами опыт придет, причем неизбежно и с фрейворками, и с технологиями. Главное просто выбрать область в которой вы будете писать программы, так чтобы вам самому это нравилось.

- Насколько в Jave нужен скилл security programming, и как можно совместить вообще оконченную мною программу Information Security с программированием на джаве? Нужны ли рынку такие специалисты?

Любые знания в Computer Science полезны будут. Хотя бы даже для собеседований.

- Насколько развит рынок фриланса для джавы? Реально при грамотном подходе через какое-то время получать доход на этом рынке, ну хотя бы сравнимый с доходом в треть того, что получает джуниор на полный рабочий день в средней компании?

Вот тут могу только догадываться, но похоже, что там (флилансе) java не так популярна, как на работе on-site. Хотя думаю и там можно чего-то добиться, но развитие будет сложнее и дольше (чем работа в команде).

Как итог могу посоветовать командную работу стажером, больше практики, возможно парное программирование с более опытными коллегами.
Ответ написан
@asd111
Попробуйте. Это единственный способ узнать нравится вам писать программы или нет.
Если приходится себя заставлять то не факт что вам понравится каждый день себя заставлять писать программы.
Если не понравится писать программы, то всегда можно заняться чем то другим, особенно с вашим образованием.
Ответ написан
Комментировать
@fomalhaut95
Из фреймворков для web весьма востребован Spring. Можно также посмотреть на фреймворки для других языков JVM: Grails (на Groovy), Play (Scala/Java). Наверно, неплохо будет изучить JUnit (написание тестов), а также Maven или Gradle
Ответ написан
Комментировать
@exapybara
Я тоже решил заняться Java профессионально. Раньше я писал лишь небольшие программы как развлечение: приятно наблюдать, как что-то, созданное тобой, начинает работать. Сейчас я буду рад единомышленникам по Java. Моя почта для связи gyronode@gmail.com
Ответ написан
@sulik93
Начал изучать Java. Продолжаю изучать Java.
Недавно начал изучать Java с прочтения Thinking in Java.
Ваш план по изучению очень понравился.
Буду рад общению. sulik93@gmail.com
Ответ написан
Комментировать
@Alexei1452
Тоже недавно начал изучать Java. Читаю "Thinking in Java" и "Java. Библиотека профессионала (Хорстманн К., Корнелл Г.)". У самого такая же ситуация вобщем. И да, согласен, одному трудно и медленно..
Буду рад общению, если что вот alexei1452@gmail.com
Ответ написан
Комментировать
Только начал изучать Java.
Буду рад общению: gamma.cas.hd5394@gmail.com
Ответ написан
Комментировать
runbyte
@runbyte
Учусь, самообразовываюсь.
Тоже начал изучать Java.
Решил начать с Head First Java, так сказать, с самого элементарного. Потом в плане Хорстманн и "Thinking in Java." Ну и подумываю на JavaRush курс пройти, хотя 200$ с нынешним курсом дороговато выходит.
Тоже буду рад общению: idler1010@gmail.com
Ответ написан
jsaus
@jsaus
Начинающий разработчик
У меня самого подобная ситуация как и у тебя.
Если есть желание пообщаться с тебе подобным, черкни на transnat@mail.ru, очень буду рад ;)
Ответ написан
Комментировать
@Ches_Ter
Alexandr, как успехи по прошествии времени? Я как и вы (тогда) сейчас на старте так сказать. Пара курсов на Udemy видео с Yuotube и пара книг. Очень интересно узнать как у Вас сложилось и может быть узнать ваши шаги по изучению и не прошло ли все. Заранее спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы