Болит душа, не знаю как быть. Как двигаться дальше (Java/Android/Clojure)?
Был от меня подобный эмоциональный вопрос, касающийся тем Java, Android, Clojure, но вектор был направлен немного не в ту сторону.
В общем, цель вопроса этого проста - выяснить, основываясь на вашем опыте, друзья, какой мне путь выбрать, исходя из моих предпочтений в программировании.
Немного о себе:
Я - тестировщик. Тестировщиком стал только потому, что неуспел получить достаточно навыков для позиции Java-Junior Developer. Думаю, типичная история. Но суть не в этом, а в том, что мне нравится в программировании.
Что мне нравится (а что не очень)?
А нравится мне кодить. Банально, но поясню. Я люблю писать код, и чтобы был виден результат. Много кода! Много Java кода! И результат. Не обязательно чисто визуальный результат, а просто результат, при котором можно сказать: "Работает!". Я пробовал разработку под Android. Немного я на нём сделал, поэтому выводы могут быть неверны, но мне ненравилась в нём избыточная возня с UI. Очень много XML. Очень много. На самом деле, я не знаю, как это выглядит - разработка под Android. Вот как в Java EE сфере всё выглядит я знаю. Багфиксы и саппорт - ололо! Так вот...
Несмотря ни на что, после Android, я стал знакомиться с программированием веб-<чего-бы-то-ни-было> на Java EE. Пробовал, пробовал. Пока не могу сказать, что я эксперт, но всегда смущало то, что Java EE это область рассчитанная на промышленность. На ней пишут огромные веб-сервера с кучей сервисов, а для души что на ней можно сделать, я так и не понял. Опять же, мои суждения очень могут быть ошибочны, как и с Android, ибо знания поверхностны. Но я и задаю вам сей вопрос, дабы углубиться, пока ещё не позвала меня старуха с косой: "Эй, упырь, харэ писать свои Хэллоуворды! Тебя хочет видеть Один, у тебя с ним митинг назначен!".
Clojure:
В своей вечной маяте и неопределённости я нашёл чудо. Сначала я открыл для себя Lisp и был поражён. "Это же язык, на котором бы я хотел писать в раю, если он есть" - сказал я себе. Но окончательным фанатом Lisp я стал когда открыл Clojure - тот же Lisp, на на JVM, с полной совместимостью с Java. И месяца нет, как я открыл для себя это чудо, и что я вижу, на Clojure можно: писать крутые Enterprise веб-приложения, а можно и не крутые и огромные, а просто веб-приложения, можно писать фронтенд (ClojureScript), можно пилить игры под LibGDX, можно под Android писать!!! Боже!!! И всё же... Clojure - это, в основном, бэкенд тема, для этого она создавалась, для того чтобы веб-сервер мог предоставить хорошую многопоточность, в основном, помимо массы других пюшечек.
Что я люблю кодить?
Все мои идеи крутятся вокруг игр и прикладных программ. Немного идей приходит по поводу web, потому что, по большей части, в вебе я нуб-нубом. Но я исправляюсь. Чиатю умные штучки про веб-службы-сервисы, изучаю Java EE, стараюсь как могу.
И вот, если вы дочитали до конца, наверное, было интересно почитать моё нытьё. Если нетрудно, просто, исходя из своего опыта, посоветуйте, куда мне двигаться, тыкнете на заблуждения, скажите: "а-та-та, батенька, да как вы можете? Это-ж не это, это - то!". В общем, что угодно, только не молчите!
Ну, если в ближайшие пару месяцев особо тяжкой работы не наблюдается, можете прочитать одну-две книги из серии Классика Computer Science(академические книги расчитанные на университетский семестр). Расширите кругозор и со стопроцентной вероятностью найдете чем заняться.
Александр Василенко: чукча не читатель, чукча писатель?
Александр, серьёзно, хотите заниматься программированием, ознакомьтесь хотябы с базовым курсом алгоритмов и структур данных.
Пополнять ряды говнокодеров за которыми потом всё переписывать надо, не очень достойное занятие.
дима кубитский: Скажем так, алгоритмами я занимаюсь каждый день, чтобы не забыть (маленькое упражнение на 20 минут сутра), а по воскресеньями занимаюсь по книге Кормэна. Разве этого недостаточно?
дима кубитский: Я к тому ответил сначала, что целесообразней заниматься чем-то, что решает проблемы, а алгоритмы и всё что с ними связано, это обязательная программа, но не основная для меня. На алгоритмах, и вообще, на программировании как математическом искусстве, если угодно, к огромному сожалению, заработать трудно, а для таких макак как я - вовсе невозможно))
Я не Java программист, конечно. Но мне кажется, что Java EE для фана - не совсем то, что надо. Если хочется фана - мейнстрим в руки и поехали! Для мобилок писать круто - можно выйти на рынок с минимальными вложениями. И даже выстрелить, как Flappy Bird (так, по моему, эта задрот-игра называлась).
Если ставить во главу процесс, а не результат - мейнстрим в технологиях. Распределенные приложения, контейнеризация с Docker'ом, CI и CD, оркестрация и т.п. Все это без реальных задач неприменимо, а применяется в суровом ентерпрайзе. Ну, Вы в курсе уже поди. А вообще, изучение таких штук приведет в devops.
Ну и третий путь. Тут я соглашусь с jackroll: можно заняться самообразованием и двинуться в сторону тех областей, где помимо программирования есть еще и математика, и computer science. Например, Big data, искусственный интеллект.
Кстати, для общего развития и для того, чтобы быть в курсе последних новостей, неплохо подходят подкасты типа радио-та или разбора полетов. Первый - про все-все-все, второй с упором на java.
p.s. В постановке вопроса косяк.
выяснить, основываясь на вашем опыте, друзья, какой мне путь выбрать, исходя из моих предпочтений в программировании
В идеале - попробовать все самому. Вот я попробовал PHP - мне не понравилось. Больше я туда ни ногой :)
Если вам нравятся игры попробуйте юнити
Кратко про Android ─ ui и в правду много, но xml это совсем не проблема, его быстро перестаешь замечать.
Кстати попробуйте kotlin, лично я не использую его на работе(не от меня зависит), но язык очень приятный.
О да! Kotlin отличная штука. У меня был в своё время выбор: "Что изучить помимо Java, но чтобы работало на JVM? Kotlin? Scala? Clojure?". Несмотря на всю приятность Kotlin, я выбрал Clojure, просто по причинам его принадлежности к Lisp. Но, думается, вполне логичным будет то, что Kotlin, по крайней мере для Android, заменит Java через лет пять.
Кстати, если вы работаете Android-разработчиком, расскажите о всех плюсах и минусах работы в компании. Возможно, вы в курсе того, как работают программисты Java, пилящие приложения для предприятий, было бы в этом случае очень интересно оценить некоторое сравнение.
Александр Василенко: тут я скорее немного разочарую ─ во первых как работают java ee разработчики я знаю только теоретически(пробовал писать для себя, но как вы верно отметили java ee это не для фана )) ), из плюсов работы в кампании это стабильность и меньше маразма по сравнению с фрилансом (тут как повезет конечно), можно тратить время на тестирование, рефакторинг и тд(фриланс с этим сочетается хуже). Проект пилит обычно один человек ─ больше обычно просто не нужно, исключения есть, но львиную долю того что требуется рынку действительно проще сделать одному разработчику, чем тратить время на коммуникацию между ними. Ноги тут по сути растут из архитектуры ─ попытки делать из android web были, есть и будут, но они пока преждевремены (да есть dagger, сейчас появился data-binding ... может через пару лет что то изменится, но пока java ee и java для android это два разных мира)
Если вам нравится java и не нравится ее многословность в java ee то android хороший компромисс ) но от ui в android действительно не скрыться )
gadfi: С другой стороны, в разработке UI есть достаточно банальный плюс - результат не просто ощутим, он виден)) Огромное спасибо за развёрнутый ответ!
Александр Василенко: рад если смог помочь )) на самом деле мобильная разработка временами реально весело ─ мне приходилось писать программу "хуификтор", сборник порно (был интересный опыт работы с изображениями, контекст конечно специфичный, но это так ... скорее повод посмеяться), обилие датчиков приближает к интернету вещей и многое другое, чего не встретишь в обычном энтерпрайз))
Хотя не буду врать, временами и у нас есть энтерпайзные проекты, которые пилятся долго, едят мозг а для чего они понять не просто, особенно когда новая задача перечеркивает прошлую ))