• Java, куда именно податься?

    AlPsc
    @AlPsc
    Java/high load/big data
    Во-первых, не забудьте после Шилдта прочесть книгу Джошуа Блоха "Effective Java" (в одном из соседних вопросов упоминается её русский перевод, так что он, видимо, существует) – по моему скромному мнению, это обязательное чтиво для любого Java-программиста.
    Во-вторых, если уж выбирать между Android и чем-то ещё, то надо понимать плюсы и минусы обоих путей. Напишу то, что пришло мне в голову, на полноту и истину в последней инстанции не претендую.

    Android:
    Плюсы:
    • Работы много. Очень. В том числе и удалённой.
    • Получить начальные навыки довольно легко – сейчас есть огромное количество статей, пошаговых руководств и прочих материалов, которые как позволяют учиться новому, так и быстро решать типовые задачи/проблемы.

    Минусы:
    • С точки зрения изучения Java эта среда довольно специфическая. Во-первых, используется довольно старый диалект (Java 6). (В комментариях справедливо поправили, что сейчас на Android доступна Java 7.) Во-вторых, набор библиотечных классов несколько отличается от Java SE, и это значит, что при необходимости писать приложения на "настоящей" Java просто взять и переключиться по щелчку пальцев не получится, а какая-то часть "мобильных" навыков и практик окажется бесполезной.
    • Хорошо программировать на Java значит не только знать язык, но и уметь выбирать прочие инструменты (дополнительные библиотеки и т.п.), которыми, конечно, тоже надо уметь пользоваться. В этом смысле Android тоже довольно далёк от того, к чему привыкли разработчики Java SE/EE: всякие вещи типа JDBC/Hibernate/you-name-it на Android либо отсутствуют в принципе, либо не могут быть использованы из-за ограничений среды (тот же нестандартный набор библиотечных классов). Это опять же означает, что, научившись писать на Java под Android, вы не сможете просто взять и начать разрабатывать, скажем, enterprise/backend приложения, и конкуренцию в этой области с кандидатами, у которых есть соответствующий опыт, выдержать вряд ли сможете. (Я бы ничего этого не писал, но у вопроса есть метка "карьера", так что вы сами напросились :) )
    • Большая часть компаний, занятых мобильной разработкой – сервисные, со всеми вытекающими. Лично для меня это минус, т.к. мне продуктовые компании больше по вкусу.
    Java SE/EE
    Плюсы:
    • Работы много. Очень. В том числе и удалённой.
    • Более широкие возможности применения своих навыков

    Минусы:
    • Более высокий порог вхождения
    • Несколько сложнее наработать портфолио, потому что жизненный цикл "больших" приложений зачастую всё же гораздо длиннее, чем в случае мобильной разработки, где очень большую часть работы составляют проекты для сторонних заказчиков, где изначально задана конкретная конечная цель, сразу оговариваются сроки, и т.п. (Сужу по собственному опыту работы в компании, которая занималась как раз разработкой мобильных приложений для заморских заказчиков.) Конечно, в случае с удалённой работой/сервисными компаниями это может оказаться правдой для приложений любых типов.

    Итак, выбирая Android, вы раньше сможете начать зарабатывать деньги, но "чистая" Java, на мой взгляд, даёт больше перспектив. И по сути Android-программист и Java-программист – совсем не одно и то же. Так что выбор профессионального пути зависит от того, как вы вообще видите себя в ближайшем будущем в этой профессии: хотите ли вы быстро освоиться и получить способ зарабатывать деньги, не сильно задумываясь о смене деятельности в перспективе, либо же вам интересны разные области программирования, и вам хочется многое попробовать.
    Ответ написан
    4 комментария
  • Где найти задачники CS50?

    SimonOsipov
    @SimonOsipov
    Через баги к коммиту!
    CS50 это курс не от JavaRush, а от MIT.
    Оригинал со всем задачами, лекциями, дополнительными материалами и форумом, на котором можно задать вопросы можно найти по ссылке.
    Ответ написан
    Комментировать
  • Какой путь изучения программирования выбрать?

    @MadHarper
    Твоя цель сейчас - как можно скорее устроиться на работу. Можно до бесконечности изучать программирование самым усердным образом, но ты так никогда и не будешь на 100 ÷ готов к реальному программированию. Только на реальных боевых задачах, только в окружении более опытных коллег возможен реальный а не мнимой рост. Отсюда вывод - любой популярный яп. Хотя и тут есть нюансы. Очень не рекомендовал бы скажем питон. По причине из постулата выше - трудно будет найти работу. Я рекомендую php. Все кто пишут про него плохо ничего просто про него не знают. Как тот 4-месячный джуниор выше. Неприятен он ему видишь ли. Может точку с запятой ему не нравится ставить, может какая другая ерунда. Но точно объективного ничего тут не жди. И этим своим мелочным субъективизмом сбивает тут людей с толеу. По факту же современный php это хороший, быстрый (!) язык, с полноценным (не как в старых версиях) ООП. И он становится с каждой версией все лучше и лучше. На нем пишутся как сайты визитки, так и солидные энтерпрайз проекты. И вакансий много. Второй вариант - java. Но если не считать мобильной разработки, то это язык для энтерпрайз проектов. Соответственно одного только знания джавы никак не достаточно. Нужно знать и понимать много еще всяких спрингов или EE. И на работу джуном устоится труднее. А нам что надо? Правильно, как можно скорее начать работать профессионально. Но если есть в себе уверенность что пройдешь этот путь, что хватит настойчивости и терпения - все окупится.
    Короче, беспроигрышных вариантов два - php и java. Но следует помнить, по какому пути не пойдешь сам язык займет меньшую часть времени твоей подготовки.
    И в завершении скажу - прекращай маяться выбором, гуглением по теме "что выбрать". Завязывай тратить на это время. Начни программировать. Вот прямо сегодня.
    Ответ написан
    Комментировать