Итак, ты испытываешь острое желание стать программистом. Куда теперь бежать?
На этот вопрос существует множество ответов в сети. Некогда мы уже писали статью об этом. Тем не менее, судя по вопросам, которые нам задают в социальных сетях, новички часто теряются в обилии информации и не знают, с чего конкретно начинать. В принципе, мы на JavaRush только тем и занимаемся, что помогаем ответить на этот вопрос. Однако для тех, кто совсем растерялся, мы решили составить приблизительный план действий.
Для начала определись с пулом технологий
- Выбери 2-3 основных источника знаний, а также с десяток дополнительных. Но не забывай «гуглить», если что-то не ясно.
- Выбери среду разработки и установи на свою рабочую машину всё необходимое ПО.
- Определись с тем, что еще учить и где черпать информацию.
Ну хорошо, допустим, Java. Как платят специалистам по этому языку?
Чтобы это выяснить, есть много прекрасных сайтов, например, DOU. Кроме всего прочего на этом сайте собирается статистика о том, сколько зарабатывают специалисты по разработке и другие «айтишники» в Украине. Итак, переходим по ссылке, выбираем там, например, город Киев и должность Junior Developer (или просто Developer), выбираем Java и сравниваем с другими языками. Если ты живешь не в Киеве, не переживай: мы отслеживали разницу стоимости работы в разных городах и в статье «Путь программиста», приводили таблицу с приблизительными данными. Скопируем её сюда, вот она: Это — докризисная таблица. В настоящий момент ситуация несколько изменилась, киевские зарплаты остались примерно на том же уровне, а вот московские приблизились к киевским. Если ты изучил ссылку с DOU, то, вероятно, заметил, что Java-программисты — не только самые востребованные, но также и одни из самых высокооплачиваемых специалистов.А, может, Java — это слишком сложно?
...На самом деле, нет. Есть языки, которые на первом этапе обучения покажутся проще. Однако у Java есть огромный жирный плюс: он массовый, нужный и присутствует на рынке уже много лет. Соответственно материалов для обучения, лекций, книг, форумов как для новичков, так и для матерых программистов — великое множество. Комьюнити очень помогает учебе. Главное во всем этом разнообразии не запутаться и подобрать учебные материалы. Об этом мы напишем в следующем пункте. Ты решил, что точно хочешь разрабатывать игры и прочитал, что большинство суперхитов написано на C++. Так может сразу его и учить, этого старейшину мира универсальных языков? Можно попробовать, но идея не лучшая: С++ чрезвычайно сложен для новичка. А вот после подготовки на Java ты без проблем сможешь перейти на C++, если захочешь. Кстати, далеко не все «большие» игры написаны на C++. Знаменитый Minecraft, например, создан на Java.Краткие выводы
- Самые востребованные разработчики пишут на Java и потребность в них постоянно растет;
- У Java-разработчиков высокие зарплаты;
- Java — универсальный язык. На нем можно писать почти что угодно. Игры в том числе;
- Java относительно прост в изучении;
- После Java несложно перейти на C#, совсем просто изучить JavaScript, Ruby, Python. После Java программист готов к подробному знакомству со сложным С++;
- Android основан на Java;
- Реализация многопоточности в Java доставляет. Если ты новичок, ты, скорее всего, пока не понимаешь, как это классно. Просто запомни эту фразу=);
- Подавляющее большинство программистов владеет JavaScript в качестве второго языка.
Что касается Шилдта, Эккеля и курса JavaRush: сначала я тоже плевался на книгу Эккеля, так как считал её слишком мудрёной, и перешёл на Шилдта. Но со временем выработал такую систему: когда я в JavaRush дохожу до предела имеющихся знаний (то есть ты уже решаешь задачу наугад, неосознанно) — я погружаюсь в Эккеля, причём штудирую его пример за примером, упражнение за упражнением, набирая всё ручками, иногда даже на листке бумаги, так бывает быстрее озаряет. Причём штудирую его последовательно, не прыгая по главам, поскольку его курс очень грамотно построен, и проходить его нужно последовательно. Так вот когда ты прошёл нужный материал, и возварщаешься на JavaRush, то все страшные до этого задачи автоматически становятся детскими, и ты с пониманием сути довольно быстро идёшь дальше.
Что же касается Шилдта, полный курс — то я его читаю последовательно в свободное время, и использую уже как закрепление пройденного, или восполнения пробелов. Примеры в его книге не такие мудрёные, но некоторые вещи он очень грамотно и просто объясняет.
Плюс с помощью Эккеля я разобрался в package-ах, import-ах, classpath-ах, и модификаторах доступа, как самостоятельно из блокнота собрать решение из нескольких пакетов, и достучаться до классов и членов класса из разных пакетов. А главное — после Эккеля прохождение JavaRush становится приятным времяпровождением, а чтение Шилдта — как сказка на ночь, или как полировочка неровной поверхности.
Headfirst у меня лежит на полке, я её начинал проходить, но как раз-таки почему-то она на меня навевает скуку.
Мой совет, время от времени, попробуйте смириться и тихо с ручечкой или карандашиком и листком бумаги, набивая в блокнотик штудировать примерчики Эккеля. Если очень непонятно, постарайтесь на бумаге нарисовать те же классы, и взаимоотношения между ними. Когда примеры проходят через написание, то начинаешь улавливать тонкости, которые при простом осмотре незаметны. Уверен, в этом случае, вы заметите ценность и красоту примеров Эккеля. Эккеля нужно именно грызть, это не диванное чтиво. Быть может опытные программисты и могут бегло его читать и находить для себя новое, но не новички.
Он не основан на Java, он использует синтаксис Java(да как бы частями там Java есть), и использует собственный байт код и виртуальную машину. При этом для Android внезапно с тем же успехом можно писать на C++, C#, ruby, Ada(есть компилятор под Freebsd) и куча всего еще, так что это лучше убрать из плюсов.
:)))) Если сурьезно, то Java нативна для Android, а все остальное подпадает под ваше уместное «можно». Если точнее, то андроид это пирог, нижний слой которого Linux, потом библиотеки C++/C, потом исполнительная среда — основные либы, которые все на Java, потом идут api приложений, потом идут сами дефолтные приложения. Зачем было придираться к этой фразе — не понятно
^Вот это тоже работает в Androide? скажете менее наитевно?
1) Задание должно быть интересным (вызывать азарт, бессонные ночи)
2) Готовый проект должен быть таким, чтоб его захотел юзать хоть кто-то, кроме меня.
3) Игры не подходят, писать игры это фан, но не профессиональная разработка
Хорошая игра — содержит несколько баз данных, позволяет выбирать уровень сложности, позволяет настраивать себя, может учитывать игровое время и вообще вести какую либо статистику, содержать искусственный интеллект, обращаться к интернет ресурсам, реализовывать многопользовательский интерфейс, иметь консольные, декстопные, мобильные вебклиенты и GUI… и это ещё далеко не всё :) Чем же это — не профессиональная разработка? :)
Если не интересует Веб и декстоп, есть ещё базы данных например и мобильный контент…
К тому же не хочется учить старый убогий Свинг — учите новый перспективный FX :)
И когда оно заканчивается… это понятие — начинающий?
Я так понял, что есть индивидуумы, которые и после 40-го уровня считают себя начинающими.
Второй путь предлагает более рациональное зерно — взять ходовой язык (джаву или сишарп) и учиться по нему. Бонусы здесь в том, что много хорошей литературы и легко найти задачники (тот же джава-раш), легко найти ответы на вопросы.
В любом случае — очень важно понимать следующее — когда спрашиваете, какую литературу взять, увидите несколько разных предложений — так вот здесь важно понимать, что книга, которая кому-то подошла, вам может не подойти (та же Философия Джава, которая многих восторгает — она больше как справочник для тех, кто уже несколько в теме, а не для тех, кто ноль! Тут гораздо доступнее поясняет Шилдт в своем «полном руководстве»), так что не стесняйтесь пробовать другие варианты.
Но есть разительная разница между книгами, которые просто информируют и темы, что разъясняют. Я, когда с нуля начал рыть инфу, то первой откопал, конечно же, «философию»… но даже в этой «философии» была ссылка — мол, подите, про С почитайте, чтобы раздуплится для начала, а потом за джаву беритесь. Потом я наткнулся на Шилдта — после этого дядьки Эккель кажется косноязычным и бездарным писакой… но это впечатление ошибочно, т.к. они просто ориентированы на аудиторию с разным уровнем подготовки.
говоря о Шилдте, нужно понимать, что у него по джаве две книги — одна больше на Эккеля похожа, имхо. А та, что «Полное руководство» — достаточно четко всё расставляет на свои места, имхо.
з.ы. представляю, чтоб у нас так математику преподавали — «детки, вот вам пример, достали планшетики и полезли гуглить, что это такое и как его решать» )) И ищи среди горы треша подходящее пояснение )
Если моих деток заставить читать Шилда, я уже не говорю про Эккеля… у них шарики за ролики завернутся и Java как и в принципе любое программирование будет сброшено в анналы детского недоразумения :), JavaRush подкупает своей игровой формой и для первых уровней это вполне нормальная замануха. :) А вот когда начинаешь понимать, что мир тесен в рамках JavaRush тогда самое оно подключить доп источники. Если заранее были изучены эти самые доп источники конечно это только в плюс, но мы говорили о самом простом пути стартануть для общих масс и тут JavaRush приуспел.
А что касается детей и как их спровоцировать интересоваться программированием или литературой в школе (очень важная вещь — литература наряду с математикой развивает мозги), или еще чем-то кроме компьютерных игр — так это ж отдельная интересная тема :)
з.ы. на счет игровой формы джавараша — я, честно, не проникся. Просто решаю задачки, все подряд.
Ресурсов ведь много, и JavaRush это вовсе не панацея, просто на этом ресурсе можно увидеть результаты своего обучения.
Если же строить цепочки, то кроме Java в чистом виде очень желательно подучивать и другие средства разработки.