Профессия программист java. Отборные вакансии для Java программистов. С чего начать? Что читать

Привет. Если Вы читаете данную статью то, скорее всего, у Вас возникал вопрос, как стать программистом. Возможно Вы даже решили изучить язык программирования Java, но не знаете с чего начать изучение. Осмелюсь также допустить, что многие задавали себе вопрос: Возможно ли выучить Java за 1 год? Что если я не учился на программиста в университете? У меня даже специальность не техническая. Смогу ли я? Сколько мне придется тратить времени на это занятие? Что придется учить? С чего начать обучение? Если у Вас возникал хотя бы один из перечисленных вопросов, то вы сейчас в правильном месте.


Не удивительно что многие люди теряются в самом начале, не зная с чего начать, ведь кругом так много языков, куча книг по программированию, разного рода тренинги, видеокурсы и даже индивидуальный менторинг. Как выбрать то, что подходит именно Вам и как добиться результатов в адекватные сроки? Давайте поговорим обо всем по порядку.


Мотивация


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


Почему? – самый сложный вопрос. Он лежит в основе мотивации. Вы должны четко представлять какова Ваша цель и к чему Вы стремитесь. Деньги здесь не должны быть ключевой причиной, а просто важным дополнением. Если Вам нравятся современные технологии, Вы любите что-то создавать, можете часами просиживать за любимым делом, готовы им заниматься бесплатно и у Вас есть логическое мышление, тогда вполне вероятно, что это занятия как-раз для Вас. Вы должны уметь получать удовольствие от работы. Только в таком случае возможно достигнуть действительно хороших результатов.


Что? – это довольно логичный вопрос. Что нужно делать чтобы добиться успеха в данном деле. Здесь, так же, может стоять вопрос, какой выбрать язык и какие материалы понадобятся для его изучения.


Как? – Как достигнуть значительных результатов за адекватные сроки.
Если на первый вопрос каждый должен ответить самостоятельно, то с последними двумя мы можем разобраться вместе.


Какой язык выбрать?


Предположим что с мотивацией все хорошо и мы можем переходить к следующему вопросу. Прежде чем выбрать какой-либо язык, Вы должны понимать есть ли вакансии на рынке труда, будут ли они на момент когда Вы освоите базовый уровень и приметесь за поиск работы. Так же, играет роль сложность языка программирования. Чем сложнее язык, тем больше времени Вам понадобится на его освоение. С другой стороны – выбирать то, что легче всего тоже не всегда хорошо, ведь конкуренция может быть здесь выше чем в других категориях. Для того чтобы определиться с перспективностью языка, нужно проанализировать где он используется, насколько широка область применения и как часто выходят новые фреймворки на выбранном Вами языке. Тут нам может помочь рейтинг языков программирования.


Думаю, пришло время подкрепить слова цифрами. По разным опросам среди пятерки лидеров находятся Java, JavaScript, C++, C и Python.


Примеры опросов Вы можете найти в изобилии в Интернете. Приведем только несколько из них:


К примеру, по версии сайта tiobe.com , регулярно публикующего рейтинг языков программирования, Java остается лидером уже который год. В пятерке также С++ и Python.

Другой авторитетный источник статистики, сайт Stackoverflow , проводивший опросы среди своих пользователей, говорит от том, что на первом месте JavaScript, в то время как Java находится на пятой строчке рейтинга. Но здесь в расчет брали так же языки разметки HTML и CSS.




Тут стоит учитывать тот факт, что многие Java-программисты в той или иной степени могут знать JavaScript. Среди JavaScript разработчиков меньше людей которые также знают и Java. Это прибавляет JavaScript несколько очков в предыдущем опросе.


Теперь давайте посмотрим на количество вакансий и откликов кандидатов по разным языкам. Для того чтобы не объяснять долго, приведу просто несколько ссылок. Например сайт DOU.ua регулярно публикует разного рода статистику по вакансиям, зарплатам и т.д. К примеру, Вы можете наблюдать роста количества вакансий по топовым языкам и тут же Вы можете использовать разного рода фильтры, которые покажут соотношение количества вакансий по разным городам и по разным языкам. Данные доступны как в табличном так и в графическом виде. Среди фаворитов здесь, как обычно, Java, Python, C++, .NET. При чем соотношение количества вакансий/откликов за 2018 год лучше всего у С++, 2-3 человека на место. К сожалению, мне не удалось найти похожую статистику по другим странам. Зато на есть хорошая статья с инфографикой конкретно по Java.


В общем, нужно выбирать один из топовых языков и тогда на момент окончания обучения у Вас будет хороший шанс найти работу.


По моему скромному мнению, хороший вариант для начала карьеры - Java. Не слишком сложный язык, большая область применения и достаточное количество вакансий. Именно о Java и будет вторая половина нашей статьи. Если бы мне пришлось начинать все сейчас, то неплохой альтернативой мог бы стать Python, так как он сейчас активно набирает популярность.


Обзор Java-экосистемы


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



В центре вселенной, как обычно, у нас сам язык Java. Если сказать точнее, то Java Core. На момент написания данной статьи свет увидела Java JDK 10. Компания Oracle поменяла политику работы с версиями Java и сейчас уже нет такой огромной разницы между версиями, как это было при выходе, например, Java 8. Именно эта версия остаётся наиболее популярной и часто используемой в абсолютном большинстве компаний и проектов. Можно смело начинать изучать язык с этой версии, а новые фишки усваивать, накладывая их на знание основ. Изучение этой части, пожалуй, самое сложное задание для новичка. Приходится освоить новый род деятельности и начать думать по другому. На это все накладывается еще и большой объем материала который нужно усвоить. Большинство тех, кто только начинает бросают именно на этом этапе. Тут все зависит только от Вашей мотивации.


Если освоение языка Java проходит нормально, тогда Вам понадобятся еще и дополнительные инструменты, такие как система контроля версий (Version Control System) и система для сборки проектов. В качестве VCS рекомендую использовать Git, который является абсолютным лидером среди себе подобных. Все остальные системы, как например Subversion и Perforce уходят в прошлое. Плюс Вы можете использовать репозитории Github или GitLab, для Вашего кода, бесплатно. С большой долей вероятности в энтерпрайзе вы будете использовать BitBucket от Atlassian. Но это всего лишь оболочка. Если вы научитесь пользоваться Git, то все остальное будет не существенно. Компания Atlassian является так же поставщиком таких продуктов как Jira и Confluence, но для Вас на этапе учебы это роли не играет.


Что касается инструментов для сборки проектов, то тут есть два варианта: Maven и Gradle. По моему субъективному мнению Maven предпочтительнее, но у других разработчиков может быть свое мнение. В принципе оба фреймворка являются равноценными.


После того как Вы познакомились с вышеперечисленными вещами, стоит задуматься в какую сторону двигаться дальше. На рисунке выше Вы видите четыре основных направления движения: Front-End (HTML, CSS, JS), Back-End (Hibernate, Spring, SQL), Android и Big Data. Эти четыре части хоть и разделены на рисунке, но на самом деле довольно плотно связаны. Например, если Вы решили стать Full-Stack Java разработчиком, то Вам придется хорошо изучить Back-End часть и иметь общее понимание основ Front-End части. От Вас не должны ожидать что Вы будете заниматься версткой сайта, но знать HTML стоит. Также должен заметить, что в разделе Back-End под Spring подразумевается в первую очередь Spring Core. Именно с этой части фреймворка нужно начинать. Сейчас он уже разросся до такой степени, что покрывает все аспекты Java разработки. В качестве альтернативы, компания Oracle пытается продвигать Java EE спецификацию, но у них это не слишком хорошо получается.


Что касается BigData, то тут тоже довольно большой стек технологий. В основном все они рассчитаны на распределенное хранение и распределенную обработку данных с помощью подхода Map-Reduce. Самой древней и самой известной технологией здесь является Hadoop.


Думаю, что такое Android, объяснять не стоит. Скажу только, что для того чтобы писать приложения под эту мобильную платформу, придется выучить Java.


Как Вы могли заметить, областей применения Java довольно много, так что в обозримом будущем, выучив Java, без работы Вы не останетесь.


С чего начать? Что читать?


Очевидно что начинать нужно с основ, т.е. с Java Core. Потом Maven, Git, и дальше уже то направление, которое Вам больше по душе.


Здесь у Вас есть три возможных варианта. Ситуацию, когда Вы выбрали данную специальность в университете, мы не рассматриваем. Она все равно не исключает те варианты, которые описаны далее.


Вариант первый - книги по Java

Самый древний, традиционный и пока что наиболее проверенный способ. Преимущества: большинство книг от известных издательств написаны профессиональными авторами, у многих из которых за плечами десятки лет опыта разработки и преподавания в престижных западных ВУЗах. Также эти книги проверяются тщательно самими издательствами, так что вероятность ошибок очень мала. Особенно, когда одна и та же книга переиздается снова и снова по мере обновления языка. После прочтения базовых книг, придется переходить к более продвинутым. Мало где можно найти продвинутые темы по программированию рассмотренные с той же глубиной. Недостатки: многие книги написаны сухим академическим языком и походят больше на справочники. Знаменитый автор Кей Хорстманн сам неоднократно признавался, что читает подобные книги не полностью, а только те главы, которые помогают ему решить текущую проблему.


Среди наиболее популярных и лучших книг для новичков следующие (названия приведены на английском, в тех случаях, когда книга не была переведена на русский или перевод не был найден):

  1. Java How to Program - Пол Дейтел и Харви Дейтел. Эта книга пережила кучу переизданий и является, пожалуй, наиболее объемным руководством по Java. Кроме самого языка там еще довольно неплохо объясняются основы алгоритмов.
  2. Философия Java - Брюс Эккель - также заслужила почетное место в библиотеке программистов. Доступные и понятные объяснения. Хорошо подойдут для новичков.
  3. Head First Java, 2nd Edition - Bert Bates, Kathy Sierra - книга, ставшая популярной благодаря способности авторов объяснять сложные концепции на простых жизненных примерах. Не слишком глубокая по содержанию, но все таки интересная.
  4. Java. Библиотека профессионала. Том 1,2 - Кей Хорстманн. Эта книга-справочник тоже давно поселилась на полках многих Java разработчиков. Она как раз из разряда тех книг из которых читают отдельные главы для решения задач, а не книгу целиком.
  5. Java 8. Руководство для начинающих - Герберт Шилдт. Сам эту книгу не читал, но слышал несколько положительных отзывов. Читать или нет - решайте сами.
  6. Структуры данных и алгоритмы в Java - Роберт Лафоре. Одна из лучших книг по структурам данных.
  7. Java. Эффективное программирование - Джошуа Блох. Немного более продвинутая книга по Java. Содержит огромное количество советов и рекомендаций касательно того, как можно улучшить Ваш код. Недавно вышло 3-е издание данной книги. Настоятельно рекомендую к прочтению.
  8. Java Concurrency in Practice - Brian Goetz. – старое доброе руководство по многопоточности в Java, которое не выходит из моды.

Вариант второй - видеокурсы по программированию и не только...

Видеокурсы и разного рода видеоуроки сейчас стали набирать большую популярность. Сама идея очень хороша и мне лично нравится. Этот вид учебных материалов особенно хорошо подойдет визуалам, людям которые лучше всего воспринимают информацию зрительно. Дополнительно Вы также можете задействовать восприятие на слух. Одним из преимуществ является доступная цена. Кроме того, на YouTube Вы можете найти огромное количество бесплатных уроков, среди которых бывают и весьма неплохие. Среди недостатков уроков на YouTube, должен заметить частую разрозненность и несистематизированность, а также то, что материал в них изложен довольно поверхностно. Но даже тут есть исключения в хорошем смысле этого слова.


Альтернативой YouTube урокам могут быть такие площадки:
Safari O’Reilly - огромная коллекция книг, видеоуроков и вебинаров на разные темы. Качество материалов является серьезным преимуществом. Книги и видео тренинги записаны признанными профессионалами в области. Главный недостаток здесь - цена. 400$ в год если платить сразу или 480$ если платить помесячно. Все материалы здесь на английском языке. Если решитесь подписаться, рекомендую материалы подготовленные самим издательством O’Reilly, они обычно качественнее уроков других издательств.


Pluralsight - неплохая площадка для видеоуроков. Выбор материалов по темам большой, но они в основном более поверхностны чем в предыдущем случае. Все материалы здесь тоже на английском. Стоимость подписки 29$ в месяц, или 299 за год. Тут, как и в предыдущем случае, доступ к материалам есть пока платите за подписку. Нельзя просто купить один-два курса навсегда.


Udemy - большая библиотека разного рода курсов. Отличается тем, что курсы здесь не только на английском, но и на русском языках. Ценовая политика здесь совершенно отличается от предыдущих ресурсов. Здесь Вы можете купить курс и он останется у Вас навсегда. Выбирая курс на Udemy обращать внимание нужно на количество часов видеоуроков, качество звука (обычно доступно несколько лекций без регистрации), отзывы других слушателей. Тут я хочу порекомендовать курс «Java. От простого к сложному» . По соотношению качества (количества часов) к цене это, пожалуй, самый выгодный курс на Udemy на русском языке. Переходя по ссылке вы получаете фиксированную цену со скидкой 90%. Всего 10 с небольшим долларов за 33 часа отменного видеоконтента. В процессе подготовки курса, автором было проанализировано большое количество курсов, книг и учебных материалов, а также был приложен семилетний опыт разработки приложений энтерпрайз уровня.


Вариант третий - очные курсы
Еще один вариант обучения, который может привести Вас к заветной цели. Тут все неоднозначно. С одной стороны, идя на очные курсы Вы ожидаете, что Вам покажут и расскажут все что нужно. С другой стороны, учиться придется все равно самому. Ни один преподаватель не сможет просто научить Вас, каким бы хорошим он не был. Здесь, как и во всех других местах, всё зависит от личной мотивации и собственной сообразительности. Так что говорю с уверенностью, от книг и видеоуроков никуда не деться. Преимуществом может быть то, что хороший преподаватель поможет Вам понять те вещи с которыми Вы не смогли разобраться самостоятельно и немного ускорить процесс обучения.

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


Какой вариант выбрать?

Тут у каждого должен быть свой оптимальный вариант. По мнению автора, наилучший вариант это сочетание всех трех вариантов в той или иной степени. Однозначно без книг обойтись не получится. Если Вы решаете пойти на очные курсы по программированию, то прежде всего нужно понять подходит ли Вам это занятие вообще. Если да, тогда перед тем как туда идти, прочитайте хотя бы одну книгу, посмотрите парочку видеоуроков. Во-первых, Вы будете четко понимать Ваше это или нет. Во-вторых, имея минимальную базу, Вы сможете ставить правильные вопросы и в итоге возьмете из курса максимум. В-третьих, Вы сможете пойти на курс, где от студента требуют немного больше чем базовые компьютерные навыки.


После того как у Вас наберется минимальный набор знаний, хорошо бы найти ментора. Удовольствие это недешевое, но если ментор хороший, то он сэкономит Вам кучу времени. Помните, ментор - это не человек который Вам все разжевывает, это тот, к кому Вы приходите за советом, с конкретными вопросами, тогда, когда сами не нашли ответ.

Как практиковаться?

Практика это самый важный вопрос. Она предполагает не столько умение писать код, сколько умение делать это правильно. Многие говорят, что нужно контрибьютить в опенсорс проект или писать свой. Тут я должен Вас огорчить. Если Вы знаете не намного больше чем как написать Hello World программу, никто коммитить в опенсорс проект Вам не позволит. В этих проектах подход очень похож на подход к работе в компаниях. Там есть задания, выполнение каждого из них предполагает код ревю. Задача людей отвечающих за проект - фиксить баги, а не плодить новые.


Начать нужно с малого. Сначала Вы научитесь писать программы, которые видите в книгах или видеоуроках так чтобы они просто работали. Попробуете их немного модифицировать. Потом переходите к заданиям в той же книге. Они помогут Вам не только научится быстро и без ошибок набирать программы, но и думать по другому.


Следующий этап - начинайте писать свой маленький проект. Он должен решать практическую задачу, пускай даже маленькую. В процессе обучения Вы будете изучать новый материал, алгоритмы и шаблоны проектирования. Все это должно найти применение в Вашем проекте. Не получается применить здесь, начните новый проект.


Параллельно стоит практиковаться выполнять задания на ресурсах типа hackerrank . Вы можете не только попрактиковаться писать код, но и понять механику работы платформы. Все больше компаний начинают процесс найма сотрудников с заданий на этом сайте и ему подобных.


В этот момент пора обзавестись репозиторием на GitHub или GitLab. У Вас должна быть там парочка нормальных проектов с юнит тестами, которые не стыдно показать работодателю. Попросите кого-нибудь из опытных друзей сделать код ревю. Это хорошая практика для опытных девелоперов, не только новичков. Если друга, знающего хорошо язык, который Вы изучаете, нет, наймите ментора на час или два. Если Вам скажут что все хорошо, стоит с подозрением отнестись к такому код ревью. Всегда есть место для дискуссии.


На таком уровне Вы уже скорее всего сможете контрибьютить в опенсорс. Если пока нет работы, практикуйтесь там. Вам опыт, обществу польза.


Параллельно с репозиторием пора готовить резюме и начинать оббивать пороги компаний. Не забудьте указать ссылки на проекты в своем репозитории. Проходите как можно больше собеседований. Умение их проходить - очень важный скил, который принесет Вам в итоге дополнительный доход.


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

Теги:

Добавить метки

Основы программирования
Азы программирования, основные термины и понятия

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

Урок 3. Первая программа

Выбор языка программирования. Подготовка браузера. Программа «Hello, world!».

Урок 4. Переменные

Установка удобного редактора кода. Знакомство с переменными. Простой калькулятор.

Урок 5. Типы данных

Типы данных. Операции с разными типами данных. Преобразование типов данных.

Урок 6. Алгоритмы и блок-схемы

Алгоритмическое мышление. Визуальные блок-схемы.

Урок 7. Оператор ветвления if

Выбор вариантов в программе. Оператор ветвления if. Игра в загадки.

Урок 8. Логические операции

Комплексные условия выбора. Логические И, ИЛИ. Игра «Злые птицы».

Урок 9. Циклы do, while

Циклы do и while. Игра в русскую рулетку.

Урок 10. Цикл for

Цикл for. Финансовый калькулятор.

Урок 11. Массивы

Большие наборы данных и массивы. Игра в рулетку.

Урок 12. Функции

Функции. Подготовка к написанию игры «Black Jack (21)».

Урок 13. Игра «Black Jack». Часть 1

Написание полноценной игры. Основа – раздача карт и подсчет очков.

Урок 14. Игра «Black Jack». Часть 2

Завершение написания игры. Определение результатов и победителя.

Урок 15. Карьера программиста

Обзор основных направлений в программировании. Как выбрать язык программирования? Чему учиться дальше?

Git. Быстрый старт
Основы работы с Git

Видеокурс дает опыт командной разработки с использованием Git. Учит «с нуля» организовать совместное хранилище кода и эффективно его использовать. Студенты осваивают git-клиенты с графическим и консольным интерфейсом, учатся контролировать выпуск версий программы и «откатываться» к предыдущим версиям. Подробно рассматриваются распространенные ошибки командной разработки: при слиянии веток, создании commit-ов, хранении исполняемых файлов в репозитории.

Урок 1. Назначение и возможности

Узнаем, зачем нужен git и какие возможности он открывает для программистов.

Урок 2. Базовые операции

Создаем хранилище кода, доступное всем участникам разработки по сети. Осваиваем базовые операции: Clone, Commit, Push, Pull.

Урок 3. Откат изменений кода

Учимся откатывать изменения в коде с помощью git. Осваиваем операции Discard, Revert, Reset.

Урок 4. Работа с ветками

Работа с ветками.
Параллельно разрабатываем несколько версий программы. Осваиваем операции Add branch, Checkout, Merge.

Урок 5. Конфликты

Учимся разрешать конфликты при слиянии веток.

Урок 6. Распространенные ошибки. Часть 1

Боязнь создания новых веток. Хранение исполняемых файлов в репозитории.

Урок 7. Распространенные ошибки. Часть 2

Ошибки при работе с ветками. Ошибки при создании commit-ов.

Урок 8. Pull Request. Работа с Open-Source-проектами

Осваиваем Pull Request-ы на примере работы с Open-Source-проектами.

Урок 9. Pull Request. Сдача домашних заданий.

Сдача домашних заданий в GeekBrains с помощью Pull Request.

Урок 10. Консольный git-клиент. Базовые операции

Осваиваем базовые операции в консольном git-клиенте.

Урок 11. Консольный git-клиент. Работа с ветками

Учимся работать с ветками в консольном git-клиенте.

Урок 12. Работа с версиями программы

Учимся выпускать различные версии программного продукта с использованием git.

Урок 13. Итоги

Подводим итоги проделанной работы.

Java. Быстрый старт
Основы языка Java на примере разработки небольшой игры

Видеокурс познакомит вас с одним из самых популярных, красивых, широко применяемых, надёжных языков программирования – Java. В первой части вы научитесь основам языка и научитесь писать простые консольные приложения. Далее мы расскажем, как можно буквально за несколько минут создать простую игру с графическим интерфейсом и не использовать при этом сторонние библиотеки. Цель курса: раскрыть некоторые возможности языка и показать, что Java – это просто и увлекательно. После успешного прохождения курса вы сможете использовать созданную нами модель для разработки собственных игр. Для эффективного освоения материала требуется минимальный опыт программирования, поэтому совсем начинающим разработчикам мы рекомендуем сначала пройти бесплатный онлайн-курс “Основы программирования”.

Урок 1. Знакомство с языком Java

Краткое описание языка; установка необходимых инструментов разработки; написание первой программы.

Урок 2. Переменные, типы данных, ветвления

Описание фундаментальных понятий языка Java на примере простого консольного калькулятора.

Урок 3. Циклы; игра «Угадай число»

Начинаем писать консольную игру «Угадай число», на примере которой будем продолжать изучение основ языка.

Урок 4. Методы

Демонстрация методов на примере усовершенствования игры «Угадай число».

Урок 5. Завершаем разработку игры «Угадай число»

Доводим код игры до конечного варианта.

Урок 6. Разработка игры «Поймай каплю». Часть 1

Создаём окно игры.

Урок 7. Разработка игры «Поймай каплю». Часть 2

Учимся загружать и рисовать картинки; реализуем игровой цикл.

Урок 8. Разработка игры «Поймай каплю». Часть 3

Ловим события мыши и заканчиваем разработку игры.

Урок 9. Итоги

Собираем проект в один jar-файл, чтобы его было удобно запускать без среды разработки; подводим итоги.

Курс для начинающих разработчиков, тех, кто хочет быстро освоить основы объектно-ориентированного программирования (ООП) и научиться создавать собственные проекты. Главной особенностью курса является сочетание изучения теоретических основ языка Java и практических онлайн-тренировок под руководством наставника.

Урок 1. Введение в Java

  1. Как работает Java. JVM. Общие принципы. Инструменты.
  2. Hello, world!
  3. Переменные и типы данных.
  4. Методы и их применение.
  5. Условные операторы.

Урок 2. Циклы и массивы

  1. Понятие циклов. Цикл while;
  2. Циклы for, foreach;
  3. Понятие массива;
  4. Разбор решения домашнего задания.

Урок 3. Практикум. «Крестики-нолики» в процедурном стиле

  1. Разработка алгоритма;
  2. Создание логики;
  3. Создание логики противника-компьютера;
  4. Разбор домашнего задания.

Урок 4. Введение в ООП

  1. Что такое ООП и зачем он нужен? Основные понятия;
  2. Создание классов и объектов;
  3. Инкапсуляция;
  4. Наследование;
  5. Абстрактные классы, интерфейсы и полиморфизм;
  6. Разбор домашнего задания.

Урок 5. Память, хранение данных

  1. Хранение данных в Java: стек, куча;
  2. Сборка мусора;
  3. Строковые классы, пулы строк;
  4. Разбор домашнего задания.

Урок 6. Графические интерфейсы

  1. Библиотека Swing и другие графические библиотеки. Основы Swing;
  2. Менеджеры размещения и выравнивание элементов;
  3. События в Swing. Меню и диалоговые окна;
  4. Разбор домашнего задания.

Урок 7. Практикум. «Крестики-нолики» в ООП

  1. Определение классов и GUI;
  2. Разработка логики, часть 1;
  3. Разработка логики, часть 2;
  4. Разбор домашнего задания.

Курс для тех, кто хочет укрепить свои знания в Java. На курсе ученики осваивают теорию и параллельно под руководством преподавателя с нуля разрабатывают полноценный проект на Java, получая таким образом практический опыт применения сложных объектно-ориентированных концепций, характерных для языка. Перед прохождением курса рекомендуется освоить курс для новичков: "Java. Уровень 1".

Урок 1. Объектно-ориентированное программирование Java

Углубленное изучение вопросов ООП в Java: основные принципы ООП, абстрактные классы, интерфейсы.

Урок 2. Исключения

Концепция обработки исключений, её сравнение с традиционным механизмом обработки ошибок, блок try-catch-finally, типы исключений, стандартные исключения в Java и их роль, выброс исключения из метода

Урок 3. Коллекции

Виды контейнеров в Java: List, Map, Set. Основные реализации и приемы использования, проход по элементам коллекции, сравнение и сортировка элементов коллекции

Урок 4. Продвинутые вопросы создания графического интерфейса

Создание собственных элементов управления. Работа с графикой. Обработка событий

Урок 5. Многопоточность

Потоки в Java, способы создания и управления состояниями потоков, основные проблемы при работе с потоками и синхронизация.

Урок 6. Работа с сетью

Сокеты. Написание простого эхо-сервера и консольного клиента.

Урок 7. Написание сетевого чата. Часть I

Написание клиентской и серверной части чата. Многопоточная обработка клиентских подключений.

Урок 8. Написание сетевого чата. Часть II

Разработка интерфейса для клиентской части. Авторизация. Механизмы взаимодействия клиента и сервера.

Алгоритмы и структуры данных на Java. 1 месяц.
Работа с массивами, списками, деревьями, графами, хеш-таблицами, стеком и очередью

Курс посвящен использованию структур данных и алгоритмов в программировании на Java. С помощью структур данных определяется способ хранения данных в памяти компьютера. В курсе будут рассморены следующие структуры данных: массивы, стек, очередь, списки, графы, деревья, хэш-таблицы. Для каждой структуры данных будут рассмотрены алгоритмы, которые обеспечивают различные операции над этими структурами, например, поиск или сортировка. Курс рассчитан на слушателей, которые освоили основной курс по Java SE.

Урок 1. Общие сведения об алгоритмах и структурах данных

Введение в алгоритмы и структуры данных

Урок 2. Массивы и сортировка

Работа с массивами и способов их сортировки.

Урок 3. Стек и очередь

Обзор структуры данных, стек, очередь и приоритетная очередь.

Урок 4. Связанные списки

Учимся создавать и использовать списки.

Урок 6. Деревья

Рассмотрим работу с двоичными деревьями.

Урок 7. Графы

Рассмотрим работу с одной из самых гибких и универсальных структур.

Урок 8. Хеш-таблицы

Быстрый поиск и вставка с помощью хеш-таблиц.

Основы баз данных. 20 уроков.
Проектирование БД и запросы SQL

Базы данных (БД) - это системы хранения и обработки данных, для доступа к которым используется язык SQL (Structured Query Language). Любой современный сайт, игра или настольное приложение нуждаются в хранении данных. На данный момент существует множество различных систем управления базами данных (СУБД), самой популярной является MySQL. “Основы баз данных” - это 20 интенсивных видео-уроков (по 10 минут), где мы вместе пройдём все этапы проектирования БД на примере интернет-магазина с использованием языка запросов SQL. После этого курса вы сможете использовать различные базы данных, такие как MS SQL и Postgre Sql, так как синтаксис языка SQL для них практически не отличается.

Урок 1. Реляционные базы данных

Чем отличается БД от СУБД; какие базы данных называются реляционными; обзор современных СУБД.

Урок 2. Установка СУБД

Установка СУБД MySql и графического приложения Mysql Workbench.

Урок 3. Проектирование базы данных, нормальные формы

Проектирование данных в Excel; нормальные формы; первичный ключ.

Урок 4. SQL-команда CREATE

Создание таблиц в графическом интерфейсе MySql Workbench; команда CREATE; типы данных; работа в консоли.

Урок 5. SQL-команда INSERT

Заполнение таблиц данными с помощью графического интерфейса; команда INSERT; AUTO INCREMENT.

Урок 7. SQL-команды DISTINCT, ORDER BY, LIMIT

Получение и фильтрация данных с помощью SQL-команд DISTINCT и LIMIT; сортировка с помощью команды ORDER BY.

Урок 9. Согласованность данных

Понятие согласованности или консистентности данных.

Урок 10. Внешний ключ

Понятие внешнего ключа и ограничений на значения столбцов; FOREIGN KEY CONSTRAINTS.

Урок 11. Создание таблиц с отношением “многие ко многим”

Добавление корзины в базу данных интернет-магазина.

Урок 12. Составной первичный ключ

Использование составного первичного ключа при проектировании таблицы с отношением “многие ко многим”.

Урок 13. Объединение данных из нескольких таблиц

Получение данных из нескольких взаимосвязанных таблиц; несостоятельность подхода с использованием нескольких SELECT-ов.

Урок 14. Оператор INNER JOIN

Объединение данных из нескольких таблиц с помощью оператора INNER JOIN.

Урок 15. Операторы LEFT JOIN, RIGHT JOIN

Объединение данных из нескольких таблиц с помощью операторов LEFT JOIN и RIGHT JOIN.

Урок 16. Оператор UNION

Объединение результатов нескольких SQL-запросов с помощью оператора UNION.

Урок 17. Агрегирующие функции

Агрегирующие функции COUNT, SUM, MIN, MAX.

Урок 18. Оператор GROUP BY

Группировка выбранного набора строк с использованием оператора GROUP BY.

Урок 19. Индексы

Фильтрация в GROUP BY с использованием HAVING; увеличение скорости выполнения запросов с использованием индексов.

Урок 20. Транзакции

Понятие транзакции; оператор TRANSACTION; требования ACID к транзакционной системе.

Java. Уровень 3. 2 месяца.
Профессиональная разработка программного обеспечения

Курс предназначен для тех, кто хочет узнать о продвинутых возможностях языка Java и получить практический опыт в написании приложений. Для успешного прохождения курса студентам необходимо понимать базовые понятия программирования и иметь начальный опыт работы с Java. Курс охватывает все основные темы, необходимые для профессиональной работы.

Урок 1. Обобщения

Что такое обобщения, обобщенные классы, методы и интерфейсы, наследование обобщенных классов, ограничения при работе с обобщениями

Урок 2. Базы данных

Реляционные базы данных, язык запросов SQL. Операторы SELECT, INSERT, UPDATE, DELETE. Подключение к базе через JDBC, отправка запросов и обработка результатов

Урок 3. Средства ввода-вывода

Обзор средств ввода-вывода. Байтовые, символьные, буферизированные потоки. Сетевое взаимодействие, сериализация/десериализация объектов

Урок 4. Многопоточность. Часть I

Многопоточность в Java, разделяемая память, управление потоками и вопросы синхронизации, взаимодействие потоков исполнения, взаимная блокировка

Урок 5. Многопоточность. Часть II

Классы для работы с многопоточностью, Concurrent collections, разбор практических примеров

Урок 6. Обзор средств разработки

Логирование. Тестирование с использованием JUnit, написание тестов, класс Assert

Урок 7. Reflection API и аннотации

Понятие рефлексия, тип данных Class, метаданные классов, доступ к полям и методам, аннотации и их использование, написание собственных аннотаций.

Стажировка в GeekBrains. 2 месяца.
В формате вебинаров

Во время стажировки студентам предстоит поработать в режиме удаленной занятости над Open Source-проектом либо стартапом. Студентам будет предложено выбрать один из набора доступных для разработки проектов. Студенты научатся работать в команде, коммуницировать с другими разработчиками, product- и project-менеджерами, дизайнерами, изучат гибкие методологии, фреймворк SCRUM, освоят принципы дистанционной работы. Результат стажировки - умение работать в команде, пополнение портфолио, возможность указать работу над проектом в качестве профильного опыта работы в резюме. Стажировка проходит в формате дистанционной работы с частичной занятостью, еженедельными встречами-статусами с преподавателем в формате вебинара.

Урок 1. Знакомство, выбор проекта

Какие роли бывают в разработке. Product Manager, Project Manager, разработчик, дизайнер. Что такое MVP. Архитектура современного сервиса. Как разработчики взаимодействуют между собой. REST API, Web Socket. Backend, Frontend, мобильные приложения. Микросервисная архитектура. Основы удаленной работы. Запись в команды.

Урок 2. Методологии разработки

Обзор методологий. Каскад (водопад), Agile-манифест, Канбан, Скрам. Где и для чего применяются. Смешанные методологии.

Урок 3. Методология SCRUM

Работа по SCRUM. Планирование спринта. Причесывание бэклога (backlog grooming). Цель спринта. Инкремент. Гибкая методология в условиях дистанционной работы. Таск-трекеры (Trello, Favro)/

Урок 4. User Story Mapping

Типы задач. Декомпозиция задач. Построение карты пользовательских историй. Работа над пользовательскими историями. Работа с ТЗ по водопаду и в гибких методологиях.

Урок 5. Ответственность, мотивация, личностный рост

Чем и как мотивировать себя. Какие уровни мотивации бывают. Как не сгореть на работе. И как не забить на работу.

Урок 6. Написание резюме

Как написать резюме, чтобы HR его не отсеял. Как заинтересовать работодателя. Как продемонстрировать навыки, полученные в учебе, если профильного опыта работы пока еще нет.

Урок 7. Предварительное подведение итогов, подготовка к защите проекта

Разбор студенческих резюме. Предварительное подведение итогов. Немного о стартапах, монетизации, инвесторах.

Урок 8. Подведение итогов, демонстрация выпускного проекта

Демонстрация рабочего прототипа студентами. Обсуждение полученных результатов. Обратная связь от преподавателя. Напутствие.

Программист Java — специалист, который создает приложения разной сложности, используя старейший язык программирования. Он не только пишет программный код, но и занимается внедрением, тестированием, русификацией программ, модификацией кода. Профессия подходит тем, кого интересует информатика (см. выбор профессии по интересу к школьным предметам).

Краткое описание

Мир увидел язык программирования Java в 1995 году, в конце XX века он был очень популярен, хотя и сегодня его используют более 9 млн. разработчиков. На этом языке написаны следующие продукты:

  • видеоигры;
  • приложения для «Андроид»;
  • клиент-серверные приложения и другие.

IT-специальности сегодня по праву могут считаться самым перспективным направлением, но этот сегмент никогда не испытывает дефицит кадров. И, несмотря на это, программисты Java были и будут востребованы на рынке труда, ведь на долю этих сотрудников приходится около 14% всех IT-вакансий.

Описание профессии

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

Работа программиста, выбравшего язык Java, состоит из таких этапов:

  • работа с заказчиком;
  • разработка архитектуры, программных модулей, Enterprise Application Integration;
  • тестирование и внедрение;
  • исправление ошибок, если они были замечены во время работы с продуктом;
  • дальнейшая техническая поддержка.

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

Классификация

Всех программистов Java условно разделяют на несколько групп, учитывая уровень их профессиональных знаний, индивидуальные способности и ранее реализованные проекты:

  • молодые специалисты, которые знают основы языка программирования, но пока не умеют применять их на практике. Могут работать помощниками или принимать участие в проектах с малым бюджетом и низким уровнем ответственности;
  • младший разработчик (Junior). Имеет минимальный опыт работы, умеет исправлять небольшие ошибки, его работу проверяют коллеги, ведь в случае упущений именно они будут отвечать перед начальством;
  • разработчик (Java Middle). Этот специалист уже имеет опыт работы, он может самостоятельно писать код, который не нуждается в проверке, работает с заданиями средней сложности;
  • старший разработчик (Senior). Легко справляется с любыми задачами, несет полную ответственность за сроки, написанный код, внесенные изменения и т. д.;
  • руководитель группы (Teach Lead). Специалист высокого уровня, который не только занимается написанием кода, но и раздает ТЗ, контролирует работу младших сотрудников;
  • архитектор (Architect). Самый высокооплачиваемый специалист, занимающийся проектированием, который может самостоятельно вытянуть весь проект.

Наиболее востребованы на рынке труда разработчики и старшие разработчики, труд которых могут оплатить небольшие компании. Руководители и архитекторы — штучные специалисты, которых берут в штат представители среднего и крупного бизнеса.

Плюсы и минусы профессии

Плюсы

  1. Вакансий действительно много, поэтому найти работу — не проблема.
  2. Удаленная работа.
  3. Перспективное направление.
  4. Работа в творческой команде.
  5. Если специалист работает в офисе, то для него создаются лучшие условия: бесплатное питание, кондиционер, хороший ПК и т. д.

Минусы

  1. Нестабильный оклад, ведь у молодых программистов Java работа есть не всегда.
  2. Большая ответственность.
  3. Сложно найти рабочее место, если нет опыта.

Важные личные качества

  1. Целеустремленность.
  2. Способности к точным наукам.
  3. Сосредоточенность.
  4. Умение руководить рабочей группой.
  5. Аккуратность.
  6. Пунктуальность.
  7. Лингвистические способности.
  8. Желание самообучаться.

Обучение на программиста Java

В конце прошлого века более 60% программистов были самоучками, на что работодатели закрывали глаза. Но сегодня все изменилось, поэтому первое, что необходимо предъявить во время трудоустройства — это портфолио и диплом о высшем образовании. Изначально необходимо получить специальность, связанную IT-направлением (информатика, вычислительная техника, математика, программная инженерия и другие). Заметим, что для поступления в вуз необходимо сдать 4 экзамена по ЕГЭ: русский язык, ИКТ, информатика, математика. Успешное прохождение тестов — гарантия поступления на бюджет!

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

Курс . Практический 4-х месячный курс для тех, кто хочет научиться основам программирования с индивидуальным наставником, написать код для реальных проектов и получить первые заказы. Вашей дипломной работой станет ваше первое полноценное Java-приложение «Javagram» (аналог популярного приложения Telegram).

Вузы

  1. Московский государственный университет имени М.В. Ломоносова.
  2. Высшая школа экономики.
  3. Московский политехнический университет.
  4. Российский университет дружбы народов.
  5. Московский государственный технический университет имени Н. Э. Баумана.
  6. Институт радиоэлектроники и информационной безопасности (ИРИБ).
  7. Санкт-Петербургский государственный электротехнический университет.
  8. Санкт-Петербургский государственный университет.
  9. Санкт-Петербургский государственный университет аэрокосмического приборостроения.
  10. Санкт-Петербургский государственный экономический университет.
  11. Новосибирский государственный университет.
  12. Новосибирский Государственный Технический Университет.
  13. Южный федеральный университет.
  14. Институт математики, механики и компьютерных наук им. И. И. Воровича.
  15. Оренбургский государственный университет.
  16. Челябинский государственный университет.

Место работы

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

Оплата труда

Представитель профессии начинает работать в крупных проектах уже через 1-1,5 года после прохождения обучения. Его заработная плата зависит от той группы, к которой он принадлежит. Молодой и младший разработчик Java может рассчитывать на оклад, размер которого не превышает 20-40 тыс. руб., разработчики и старшие разработчики претендуют на вакансии с окладом выше 50 тыс. руб. Размер оклада специалистов Teach Lead и Architect оговаривается индивидуально.

Зарплата на 17.09.2019

Россия 60000—90000 ₽

Москва 100000—250000 ₽

Профессиональны знания

  1. Язык программирования Java.
  2. Другие языки программирования (C++, Ruby, PHP и т. д.).
  3. Фундаментальные основы языка Java Core.
  4. Знание SQL, JDBC, OOP, OOD, СУБД, CASE.
  5. Технический английский язык.
  6. Библиотеки классов Java, client—server.
  7. Software Engineering Process.
  8. Языки разметки (HTML, XML и другие).
  9. Кластерные архитектуры.
  10. Опыт работы не мене 1-3 лет.

Здравствуй, дорогой читатель. Давно хотел написать подобную статью, но либо не хватало времени, либо мешала предательская лень. Но, как бы там ни было, все-таки у меня получилось собраться с мыслями, чтобы написать то, что принесет вам, я надеюсь, какую нибудь пользу. С радостью поделюсь своими знаниями и опытом, в ответ с вас причитается время и внимание. По моему мнению, данная публикация хорошо подойдет для тех, кто готов определиться в своих интересах и хочет связать свою жизнь с IT - тем или иным образом. Итак, поехали!

Выбор языка программирования

Публикация начинает выглядеть как многие подобные материалы. По закону жанра я должен буду написать название пары тройки языков программирования, назвать парочку плюсов и минусов и, в итоге, так и не ответив на вопрос, перейти к следующей части. Отчасти в этом есть доля правды, ведь каждый выбирает для себя тот язык, который ему ближе, исходя из того, разработкой какого вида продуктов он хочет заниматься в будущем. Большинство из вас изучали в школе Turbo Pascal и вряд ли для вас будет новостью, что на этом языке сейчас уже практически ничего не пишут. Так и в данном случае, выбирать язык надо грамотно, хотя много знаний никогда не бывает, но если вы хотите за короткий промежуток времени эффективно влиться в ряды программистов, к выбору языка надо подходить с умом. В самом начале запомните: хороший программист никогда не останется голодным, а в большинстве случаев сможет купить себе много икры (это определение подойдет для любой специальности, но ни одна специальность не даст вам такой свободы выбора места работы, как в плане компаний, так и стран - программист он и в Индии программист).

Логично, что чем популярнее язык и востребованность, тем больше шансов будет найти работу в будущем, при этом язык должен быть несложным в освоении. Потому что хотя на C++ и пишут большое количество игр и получают за это хорошие деньги, новичку, тем более не знакомому с ООП (объектно-ориентированное программирование) лучше отложить на некоторое время этот язык куда подальше. Далее по ссылке предоставлен список самых популярный языков программирования 2014 года , и как видно, на первом месте стоит Java, далее идут C языки, затем Phyton, JavaScript, PHP, Ruby и т.д. Если самим поискать подобные статистики, то вы увидите, что в разных источниках места заняты по разному, но в целом первые 10 мест по содержанию везде будут совпадать.

Если же обратиться к другому , в основе которого анализ выложенных в Twitter вакансий, вы увидите очень похожую ситуацию с первым примером. И да, обе статьи на английском, привыкайте к этому, если хотите стать программистом, запомните, что практически вся документации и источники полезной информации написаны на английском, так что если ваши знания в этом языке слабоваты, добавьте себе в список дел на завтра и на ближайшее будущее изучать и практиковать английский. Думаю, я даже напишу отдельную статью, посвященную изучению иностранного языка.

Исходя из этих двух источников мы уже можем себе представить, какие языки программирования сейчас «в моде». Как видно по названию, автор статьи выбрал для себя Java. Хотя я считаю его лучшим для изучения ООП, найдется много людей, которые не согласятся со мной, и это логично - сколько людей, столько и мнений. Тут мы встаем на небольшое перепутье дорог: выбирать Java, С# (очень похож на Java), Phyton, если мы хотим работать с начинками программ и приложений (back-end) или же PHP, JavaScript, HTML, если хотим заниматься веб-разработкой (front-end). В первом случае я бы свой выбор остановил на Java, а во втором - на PHP, хотя опять же, тут больше по вкусу, надо уже самому искать информацию о различных языках и вообще понимать, чем ты хочешь заниматься. Для размышлений вот подборка языков, которые используются в крупнейших интернет компаниях мира .

Есть 2 основных причины, почему бы я выбрал либо Java, либо PHP. Первая - это очень популярные языки и найти соотвествующую работу не составит труда, а вторая - в том, что ни по каким другом языкам вы не найдете столько обучающего материала как по этим двум, причем как на русском, так и на английском.

Обучение

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

Вообще, у меня есть своя теория, не раз подтвержденная мною же на практике: абсолютно всему можно научиться за 1 год. . Поверьте мне, это сущая правда, кому-то даже понадобиться меньше времени, но если человек не перестает сдаваться и в течение года с умом подходит к обучение, то практически невозможно, чтобы он не научился. Это не только в программировании, абсолютно в любой сфере: хочешь играть на гитаре - без проблем (у меня это заняло не так уж много времени и сил), научиться аргентинскому танго, кататься на серфе - на все это хватит одного года. Главное - учитесь!

В данном случае я буду рассматривать язык Java, так как он мне все таки ближе. Благо в интернете полно людей, которые безвозмездно помогают другим в обучение, поэтому найти подходящий для вас материал не составит труда. , которые можно с пером и бумагой просматривать в стенах свою уютной квартиры (пока только на русском языке). Для тех, кто привык вчитываться в проходимый материал, опять же интернет предоставляет большие возможности и это только один из всевозможных сайтов с уроками по Java . Теории хоть отбавляй, но не могу сказать про такой обучающий сайт, как Coursera.org , где вы сможете найти обучающие курсы на различных языках и по различным областям, в том числе и программированию - опять же все абсолютно бесплатно. Таких сайтов не один и не два, стоит всего лишь поискать.

Но как бы не была познавательной теория, в программирование без практики не обойтись. Но даже тут за нас уже сделали пол дела и не надо искать различные задачи, чтобы улучшать свои навыки, такой сервис как JavaRush очень в этом поможет. В целом данный сайт дает как теорию, так и практику, начиная просто с дублирования кода с экрана и заканчивая комплексными задачками, а в перерывах даже предлагает расслабиться и посмотреть небезызвестный мультсериал. По заверениям авторов, достигшие 20 уровня в сервисе будут иметь достаточные знания, чтобы уже устраиваться в IT компанию.

Ну и конечно, кто-то спросит, а как же книга? Разве не надо их читать, а если надо - то что? На это я отвечу, что от чтения книг еще никто глупее не становился. Книг тоже очень много, но я перечислю только небольшую часть из них:

Помощь в практике

Как уже упоминалось, практика - это неотъемлемая часть в любом обучение, особенно в программировании. Тут вам придется кодить и кодить, вплоть до мышечной памяти пальцев. Это, конечно, немного утрировано, но на первых порах придется и вправду много бить по клавишам, чтобы запоминать значения различных конструкций, чтобы в будущем использовать практически на автомате.

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

  • Cyberforum - по моему мнению, самый популярный русскоязычный форум ITшников, тут можно найти ответы на вопросы, при чем и не только в области программирования;
  • Programmers forum - крупный русскоязычный форум;
  • Searchengines - небезызвестный форум, но специализируется больше в веб- программирование;
  • Stack overflow - а это уже, не побоюсь этих слов, самый популярный во всем мире IT-форум, ответы практически на все свои вопросы вы найдете именно здесь;
  • Dev shed - тоже крупный англоязычный форум;
  • Quora - форум прямо не специализирующийся на программировании, но зато большая вероятность, что вы получите ответ от настоящего профессионала.

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

Компилируем код

Довольно много я уже написал, конечно, сложно охватить такую большую тему в рамках одной статьи, но, думаю, первые шаги уже сделаны и вызвать у вас соответсвующие мысли они должны. Думаю, это только первая статья из серии «Как стать программистом» и, соответственно «зачем?», если вы стоите на перепутье дорог и пока не знаете, какой выбрать путь. В следующий раз я затрону более интересные в материальном плане вещи, ведь не секрет, что программисты люди не бедные, а уж где и сколько они получают, посмотрим в следующий раз.

Наконец, для тех, кто хочет действительно стать программистом, желаю взять быка за рога, собрать всю волю в кулак и делать то, что вам нравится. До меня уже тысячи раз говорили, но я повторюсь, главное - желание и труд. Тогда все у вас получится. Запомните самое главное: воспринимайте изучение языков программирования и различных технологий не как цель, а как СРЕДСТВО. Только представьте, какие возможности перед вами открываются. Может быть, именно вы станете одним из тех, кто меняет мир в режиме реального времени. Так что удачи и спасибо за внимание!

Видео-бонус

Теги:

  • как стать программистом
  • научиться программированию
  • выучить java
Добавить метки

Зарплата : от 2 000 до 4 000 USD до вычета НДФЛ

Город : Самара

Опыт : 3–6 лет

Занятость

Made Simple Ventures ищет Java программиста в команду по разработке платформы смс-маркетинга. Платформа коммерчески успешна и активно развивается, и что замечательно – это наш собственный продукт: все решения принимаются оперативно внутри компании.

Предстоит удаленная работа на полный рабочий день в команде из десяти человек. Используется Scrum методология, непрерывно совершенствуется процесс. На проекте уже несколько лет идет постоянная разработка новой функциональности и много планов на будущее.

Ищется опытный разработчик, энтузиаст своего дела, который глубоко понимает принципы разработки ПО, уделяет время самообразованию, интересуется новостями из мира программирования. Того, кто готов к удаленной работе в команде, ответственен и инициативен, способен работать на результат.

Требования:

  • Высшее техническое образование и опыт коммерческой разработки на Java от трех лет;
  • Уверенное владение Java SE, знание Spring Framework;
  • Коммерческий опыт работы с noSQL, предпочтительно MongoDB;
  • Умение работать с Git, Maven, Unix консолью;
  • Плюсом будет опыт с NodeJS, Meteor и front-end разработки;
  • Английский требуется на уровне чтения технической документации, предпочтительно свободное владение.

Условия:

  • Удаленная работа на полный рабочий день;
  • График работы оговаривается индивидуально. Часть команды работает в часовом поясе Нью Йорка (-5 EST), поэтому необходима доступность в вечерние часы по московскому времени;
  • Размер оплаты по результатам собеседования.

Senior Java разработчик

Зарплата

Город : Москва

Опыт : более 6 лет

Занятость : Полная занятость, удаленная работа

Обязанности:

  • Разработка приложения, участие во всём цикле разработки. Приложение имеет доступ к клиентским сервисам, базам данных (JDBC);
  • Основной пул задач на Java;
  • Оптимизация и масштабирование архитектуры по RPS. Бывают задачи на сложную логику;
  • Могут быть отдельные задачи на Node.js и других, используемых в проекте, языках.

Требования:

  • Опыт разработки на java от 5 лет;
  • Отличные базовые знания в области Computer Science (алгоритмы, структуры данных, протоколы, модель OSI и вот это вот все);
  • Опыт разработки высоконагруженных веб-приложений (1k+ rps), умение работать с многопоточностью;
  • Отличное знание Java /JEE, фреймворков, библиотек, протоколов, веб-сокетов;
  • Здорово, если вы разбираетесь в таких вещах как: Class loading, Memory Management, Transaction management, Java Concurrent;
  • Понимание принципов протоколов для передачи сообщений между компонентами системы (AMQP, JMS, etc);
  • Опыт работы с асинхронными фреймворками;
  • Опыт работы с базами (100-200Gb+), понимание механизмов репликации, блокировок, сложных запросов, SQL и ORM (JPA2, Hibernate), JDBC;
  • Уверенный рабочий уровень английского языка (устного и письменного);
  • Опыт удалённой работы, организации своего рабочего времени;
  • Открытость и интерес к новым технологиям (в проекте может быть возможность решить задачи с помощью Scala, Closure, etc..);

Условия:

  • Удалённая fulltime работа, московский тайминг — коммуникация голосом около 19, несколько раз в неделю;
  • Командировки в США (Купертино), примерно на 2 недели каждые 3 месяца — важно наличие визы или отсутствие препятствий для оформления;
  • Уровень дохода 220-300 тыс.руб. (готовы обсуждать выше);
  • Оформление — через ИП (налоги оплачиваются самостоятельно), оплата отпуска — 20 рабочих дней;
  • Компенсация за покупку рабочего компьютера;
  • При желании возможна релокация в Сингапур (компания берёт на себя все организационные вопросы).

Ведущий Java-разработчик

Зарплата : от 250 000 до 350 000 руб. до вычета НДФЛ

Город : Москва

Опыт : 1–3 года

Занятость

Обязанности:

  • Разработка и сопровождение высоконагруженных web и интеграционных решений;
  • Анализ кода и оптимизация алгоритмов;
  • Участие во внедрении современных технологий и методов ведения разработки;
  • Постановка задач разработчикам и проведение code-review.

Требования:

  • Практический опыт разработки серверной логики на Java от 3 лет;
  • Знание Spring;
  • Знание JPA (Hibernate);
  • Опыт работы с любой системой контроля версий;
  • Протоколы и форматы: HTTP/HTTPS, JSON, XML;
  • Понимание принципов работы реляционных баз данных, знание SQL;
  • Опыт разработки многопоточных приложений;
  • Навыки отладки и профилирования кода;
  • Английский: чтение технической литературы;
  • Ответственность, дисциплинированность, умение согласованно работать в команде;
  • Желателен опыт применения или готовность к освоению: Технологий ESB, принципов разработки высоконагруженных отказоустойчивых систем, паттернов разработки ПО.

Условия:

  • Полностью официальные выплаты (зарплата + бонусы);
  • Дополнительное вознаграждение за результат (KPI);
  • ДМС (после испытательного срока);
  • Обучение, повышение квалификации, сертификация;
  • Команда единомышленников, увлеченных своим делом;
  • Уютный, эргономичный и креативный офис;
  • Корпоративная спортивная лига, поддерживающая здоровый образ жизни.

Senior Java —разработчик

Зарплата : от 200 000 до 300 000 руб. на руки

Город : Санкт-Петербург

Опыт : более 6 лет

Занятость : Полная занятость, полный день

Обязанности:

  • Участие в развитии архитектуры проекта;
  • Разработка модулей системы на языке Java;
  • Разработка unit- и интеграционных тестов;
  • Написание и поддержка в актуальном состоянии документации на разработанные модули;
  • Участие в оценке и распределении задач в команде;
  • Участие в выборе технических решений;
  • Участие в Code review.

Требования :

  • Минимум 5 лет опыта работы с Java -технологиями;
  • Java core;
  • Cassandra, elasticsearch /lucene, postgresql, любой распределенный cache;
  • Spring framework;
  • JSon, REST;
  • Владение на профессиональном уровне любыми другими языками будет плюсом;
  • Знание основных сетевых технологий и стандартов;
  • Знание паттернов разработки;
  • Знание какого-либо SQL сервера;

Условия:

  • З/п от 200 до 300 000 руб. по результатам собеседования
  • Оформление по ТК РФ
  • Офис на ПС, ул. Чапаева (ст.м. «Горьковская»)

Java разработчик на аналитическую платформу

Зарплата : от 220 000 до 250 000 руб. на руки

Город : Москва

Опыт : 3–6 лет

Занятость : Полная занятость, полный день

Требования:

  • высшее образование;
  • опыт работы от 3-х лет;
  • знание Java core и представление, о чем 17-ая глава JLS;
  • знакомство с классическими алгоритмами и структурами данных;
  • осознавание, что только он ответственен за поставленную задачу и готов её сопровождать от требований заказчика до рабочего прототипа;
  • понимание того, как оптимизировать SQL запросы.

О проекте:

  • аналитическая платформа помогает собрать и поддерживать эталонную клиентскую базу для маркетинга, продаж, аналитики и отчетности.

Задачи платформы:

  • рассказать бизнесу о его клиентах;
  • исправить ошибки в клиентских данных;
  • найти идентичных клиентов в различных базах и объединить информацию.

Как работает компания:

  • работает по git-flow, через pull-requests на Bitbucket;
  • каждый pull-request проходит код-ревью и сборку c тестирование на TeamCity;
  • доступ к production отсутствует, что накладывает на нас обязанность максимально специфицировать новый код тестами;
  • по результатам итерации проводятся ретроспективы, выявляющие узкие места.

Условия:

  • место работы: г. Москва, комфортный офис в районе метро Кутузовская и МЦК;
  • график работы: пятидневка;
  • работа в команде 10 человек – аналитиков, разработчиков , внедренцев;
  • заработная плата с пересмотром раз в год;
  • любые курсы и конференции по специальности;
  • оплата труда: 220-250,0 тыс.руб.

Senior Java Developer (DataGrip)

Зарплата : от 200 000 руб. до вычета НДФЛ

Город : Санкт-Петербург

Опыт : 3–6 лет

Занятость : Полная занятость, полный день

DataGrip - среда разработки для SQL и баз данных.

Требования:

  • Знание продуктов JetBrains и желание их улучшить;
  • Опыт более 3 лет программирования на Java
  • Любовь к программированию;
  • Умение аргументированно отстаивать свою позицию;
  • Написание понятного код и его поддержка;
  • Опыт работы с базами данных и языками запросов;
  • Опыт участия в проектах с открытым исходным кодом;
  • Знание парадигм программирования.

Чем работа в DataGrip отличается от работы над другими IDE в JetBrains:

  • У DataGrip более пятидесяти конкурентов: все они либо слишком узкоспециальные, либо умеют только базовые вещи, либо стоят очень дорого. SQL существует уже много лет, а среды разработки высшего класса для баз данных так и не создано: в мире на такой инструмент существует сильный запрос. Делать DataGrip - это предлагать SQL-разработчикам совершенно новый опыт написания запросов и работы с данными;
  • В DataGrip нет задачи поддерживать ежегодно выпускаемые фреймворки, и мы добавляем в IDE, в основном, архитектурные новшества. Например, нужно поддержать NoSQL базы данных, расширить возможности диаграмм, сделать дебаггер хранимых процедур, генератор данных или то, до чего мы сами ещё не додумались;
  • Грамматика SQL сложнее, чем у других языков, которые поддерживают DataGrip. Работа с парсером для SQL ставит перед разработчиком необычные задачи;
  • DataGrip - одна из самых маленьких команд в JetBrains и сохраняем бодрый дух стартапа. Много общения, мало формальностей. Частые поездки на конференции, поэтому каждый разработчик , если ему это интересно, может два-три раза в год ездить в США и Европу и рассказывать о DataGrip коллегам;
  • То, что делает DataGrip, попадает почти во все другие IDE в JetBrains: IntelliJ IDEA, PhpStorm, PyCharm, GoLand, RubyMine и Rider.

Как устроено внутри:

  • Исходный код - на Java , Groovy и Kotlin;
  • Для организации командной работы используются: Upsource для ревью кода, TeamCity для автоматического запуска тестов и сборки продуктов, YouTrack для учёта багов и фич;
  • С пользователями общение напрямую.

Что ещё:

  • Страховка для вас, жены/мужа и детей;
  • Свежие и полезные завтраки и обеды в офисе;
  • Уютный и демократичный офис в самом центре;
  • Бесплатные уроки английского и немецкого.

Java Developer

Зарплата : до 180 000 руб. на руки

Город : Москва

Опыт : 3–6 лет

Занятость : Полная занятость, полный день

Обязанности:

  • Анализ требований, предложение способов реализации;
  • Проработка архитектуры решения и исследование узких мест в текущей реализации;
  • Разработка нового функционала;
  • Поддержка существующего функционала;
  • Анализ и исправление ошибок;
  • Написание юнит, интеграционных тестов.

Требования:

  • Опыт работы c Java не менее 3 лет;
  • Высшее техническое образование;
  • Уверенное знание Java (предпочтительно Java 8) — Core/IO/Collections/Concurrency/JMM/GC;
  • Отличные знания: Spring/Spring Boot, Hibernate;
  • Опыт работы с Camel, Hazelcast, Guava, PostgreSQL;
  • Желательно представление о Ansible, Jenkins, Gradle.

Условия:

  • Работа в активно развивающейся международной компании, в коллективе молодых, целеустремленных и талантливых людей;
  • Знание современных трендов в проектировании архитектуры высоконагруженных распределенных сервисов;
  • Постоянное обучение;
  • Стабильная высокая заработная плата;
  • Комфортабельный и уютный офис на метро Павелецкая;
  • Оформление трудовых отношений в соответствии с ТК РФ;
  • ДМС и фитнес.

Java Developer (Junior/Middlle)

Зарплата : от 60 000 до 150 000 руб. до вычета НДФЛ

Город : Москва

Опыт : 1–3 года

Занятость : Полная занятость, полный день

В шведскую ИТ — компанию, создающей решения для крупных финансовых структур, требуется «Java Developer ».

Обязанности:

  • Разработка и поддержка больших бизнес приложений;
  • Взаимодействие с группами аналитики и тестирования;
  • Участие в разработке и проектировании архитектурных решений.

Требования:

  • Высшее образование (информатика/ математика будет преимуществом). Рассматриваем в том числе выпускников технических ВУЗов (в т.ч. студентов последних курсов);
  • Опыт реализации проектов на Java (возможно собственных или в рамках обучения, если нет профессионального опыта).

Будет плюсом:

  • Знание : Spring; JavaEE (EJB 3, JPA, JSF, JMS, Webservices, REST); HTML, CSS, JavaScript; SQL; XSL; Git.
  • Понимание : JBOSS/WebSphere/WebLogic; Camel, OSGi; Hibernate.

Условия:

  • Работа в российском филиале шведской компании, оформление по ТК РФ;
  • Белая заработная плата (в зависимости от опыта кандидата);
  • Оплата обедов в офисе (денежная компенсация около 10 т.р. в месяц);
  • Офис м. Динамо (15 мин пешком или 5 мин бесплатным корпоративным транспортом);
  • Есть офис компании в г. Зеленоград (по желанию кандидата возможна работа в этом офисе);
  • График работы в офисе с 10:00 до 19:00.

Junior Java разработчик

Зарплата : от 50 000 до 70 000 руб. на руки

Город : Москва

Опыт : не требуется

Занятость : Полная занятость, гибкий график

Обязанности:

  • Разработка и развитие публичного и внутреннего API (стек технологий: Java 8, EJB, Hibernate, WildFly, Hazelcast, PostgreSQL);
  • Улучшение существующих функций МоегоСклада: интеграция с внешними системами, кассовыми решениями, развитие внутреннего сервиса биллинга;
  • Доработка клиентской части веб-приложения (пользовательский интерфейс и бизнес-логика) при помощи GWT.

Требования:

  • Выпускник или студент старших курсов технического вуза;
  • Уверенно знаете алгоритмы и структуры данных;
  • Имеете представление о паттернах проектирования и основах ООП;
  • Имеете опыт разработки на Java в учебных или домашних проектах;
  • Знакомы с Java Core (collections, utils, exceptions, concurrency как плюс);
  • Знаете SQL на уровне написания простых запросов;
  • Готовы работать от 30 часов в неделю.

Вы приобретете навыки:

  • Уделять небольшое время анализу задачи перед ее выполнением;
  • Писать грамотные и полезные unit-тесты;
  • Работать в команде, делать ревью кода;
  • Проявлять самостоятельность в постановке и оценке задач, а также оценке эффективности решений.

Условия:

  • Оформление по ТК РФ с первого дня;
  • Белая зарплата 50-70 тысяч рублей (после налогов, на руки);
  • Ультимативно гибкое начало рабочего дня;
  • Комфортный офис в пяти минутах от метро Технопарк;
  • Фирменный мерч (футболки, толстовки, кружки с собаками, блокноты и т.д.);
  • Компенсация оплаты обедов;
  • Компенсация оплаты обучения по профилю;
  • ДМС после окончания испытательного срока.

Программист-стажер Java

Зарплата : до 30 000 руб. на руки

Город : Москва

Опыт : не требуется

Занятость : Стажировка, гибкий график

Обязанности:

  • Участие в развитии интересных и амбициозных проектов в области fintech;
  • Работа в распределенной команде, взаимодействие с внешними разработчиками, взаимодействие с техническими специалистами заказчика;
  • Разработка проектов с нуля — от архитектуры до документации по сопровождению;
  • Развитие существующих проектов, техническое сопровождение, рефакторинг и развитие;
  • Экспертный анализ бизнес‐требований и технических решений, ревью кода;
  • Написание юнит-тестов и интеграционных тестов;
  • Активное участие в развитии команды.

Требования:

  • Неоконченное высшее/Высшее техническое образование;
  • Начальный опыт разработки на Java, возможно Вы только что закончили курсы;
  • Минимальные знания работы с СУБД и SQL (желательно oracle, pl\sql);
  • Опыт разработки web-ориентированных систем, опыт фронтэнд разработки как плюс;
  • Понимание полного цикла разработки ПО;
  • Вас научат работе с системами сборки (мы используем Gradle и Maven);
  • Вас научат работе с фреймворками для тестирования (мы используем JUnit, Mockito, Spock, spring-test);
  • Вас научат работе с инструментами командной разработки (мы используем Jira, Confluence, Stash, Gitlab);
  • Вас научат работе с Linux (в качестве рабочих станций у нас Ubuntu);
  • Знание английского языка — чтение технической документации;

Условия:

  • Заработная плата определяется по результатам собеседования;
  • Дружный, молодой коллектив профессионалов, у которых есть чему поучиться;
  • Обучение полному стеку технологий;
  • Уютный офис рядом с м. Павелецкая;
  • График 5/2 без привязки к рабочему времени, возможность совмещать с учебой;
  • Хорошие перспективы остаться работать в компании после стажировки.
  • Чай, кофе, печенье;)