• ,

Как стать программистом (часть 2)

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

как стать программистом

Итак, ты определился с технологиями и целью. Что дальше?


Выбери 2-3 основных источника знаний по Java, а также с десяток дополнительных. Но не забывай «гуглить», если что-то не ясно.

В первую очередь тебе нужно изучить Java Core — основа языка, от неё уже можно отталкиваться. Настало время подумать, как именно ты будешь учиться.

Самостоятельно или с наставником?

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

Может на курсы Java пойти? Очень многие в качестве основного источника знаний видят очные курсы. Их сейчас очень много, но найти среди них достойные сложно. Если они и есть в твоем городе, то, скорее всего, или очень дорогие, или совсем бесплатные. Вторые — это курсы при компаниях. Для совсем зеленых новичков таких курсов не бывает: они рассчитаны на тех, кто прочно знает Java Core (а мы его только учить собрались), и чтобы на них попасть нужно пройти тесты. На курсах проходит весьма жесткий отсев, а самых лучших выпускников компании зачисляют в свой штат.

Теперь перемоем косточки дорогим курсам Java.

стоимость платных курсов
Если повезет и тебе попадется отличный преподаватель-практик, они имеют смысл. Однако цена в таком случае будет очень высока. И еще: сможет ли этот наставник уделить достаточно внимания лично твоему коду? Не факт.

В последние годы появилась масса доступных курсов, они обойдутся слушателю примерно в 100 долларов за месяц. Допустим, ты решил на них пойти, какой специалист-преподаватель там тебя ждет? Размышления на эту тему снова загоняют нас на DOU: иди туда и снова оцени зарплаты Java-разработчиков. Скорее всего ты понимаешь, что учить программистов должен не джуниор, а хотя бы «просто» Software Engineer. Средняя зарплата, например, у киевского специалиста этого уровня — 2000 долларов. Допустим, в группу набрали 20 человек. Это само по себе не очень хорошо, слишком большая нагрузка на преподавателя: он просто не сможет физически уделить внимание коду каждого студента.

Чаще всего учебная группа состоит из десятка учащихся. Все вместе они платят 1000 долларов в месяц. Школа, которая ведет курсы, помимо специалиста, должна оплачивать аренду помещений, оборудование, коммунальные счета. И желательно хоть что-то заработать (вряд ли вы найдете много филантропов при платных школах). В самом лучшем случае учителю достанется долларов 500. При этом он тратит 2-3 вечера в неделю на лекции и еще массу времени на проверку задач. По идее, чтобы научиться программировать, человек должен писать программы каждый день, минимум — 5 раз в неделю. Сколько кода сгенерирует за неделю один ученик? А десять? Добросовестный преподаватель должен всё это проверить и проконсультировать студента, что правильно, а что не так. Это — прорва времени.

Это мы ведем к тому, что нанимать хорошего специалиста на недорогие курсы — абсолютно нерентабельно. В самом лучшем случае, Once in a blue moon, как говорят «у них» или «когда рак на горе свистнет», как говорят у нас, ты попадешь на «фаната», которому жутко нравится не только программировать, но и преподавать. Поэтому он нашел себе такую не слишком выгодную подработку. Не денег ради, кайфу ради.

Следующий вариант — онлайн-курсы, платные или бесплатные.

online courses
Большинство платных онлайн-курсов — это те же самые «очные», только лекции проходят через интернет. Недостатки практически идентичные — не лучшие преподаватели, крайне мало времени уделяется практическим занятиям студента и проверке его кода. А вот бесплатные курсы можешь использовать в качестве дополнительных источников. Их можно найти, например, на Youtube — они представляют собой видеоуроки. Если знаешь английский, попробуй найти пару-тройку курсов на западных ресурсах, например, Coursera.

Неплохие видеоуроки Java на Youtube:
www.youtube.com/playlist?list=PLY4rE9dstrJzKUZHdGgECOjJLaZBcUdCC
Новичкам от почти новичка: www.youtube.com/channel/UCK5d3n3kfkzlArMccS0TTXA
Еще курс, немного не структурирован, но многие темы разобраны неплохо: www.youtube.com/channel/UCg1x1VDcSzviGGH995gHnjw
Когда немного освоишься в программировании, какие-то темы можно смотреть здесь: habrahabr.ru/company/golovachcourses/blog/218841/
habrahabr.ru/company/golovachcourses/blog/215275/

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

Онлайн-курсы Java для начинающих

На английском языке, все рассчитаны на тех, кто ещё не программировал.
courses.caveofprogramming.com/courses/java-for-complete-beginners
www.coursera.org/learn/java-programming
www.edx.org/course/introduction-programming-java-part-1-uc3mx-it-1-1x-0

И тут одна загвоздочка…

Курсов и видеороликов много, из них можно почерпнуть очень много всего полезного. Однако при самостоятельном обучении возникает одно «но», очень принципиальное «но». Дело в том, что в программировании самое важное — программировать, то есть писать программы, а не изучать теорию. При самостоятельном обучении придется подбирать себе задачи самому, чтобы усвоить те или иные принципы. Новичку это непросто. Допустим, ты нашел источник упражнений: некоторые книги и бесплатные курсы содержат условия задач. Отлично, поехали решать!.. И тут кроется самая большая сложность: кто будет проверять правильность решения? Ты, наверное, удивишься, но даже если программа запускается и выдает правильный ответ, это вовсе не значит, что она работает правильно! Это может быть сладкой иллюзией. Что же делать? Новые технологии и всемирная паутина знают ответ на этот вопрос. И этот ответ — javarush.ru

javarush

Интерактивные курсы Java с автоматической проверкой задач



Мы разработали самый классный курс для изучения Java. И многие уже знают как он называется — JavaRush. Мы им гордимся, поскольку он из таких новичков, как ты, которые растеряно задают вопрос «что же делать, куда бежать, столько информации вокруг!» помогает делать программистов, готовых к первой работе. Самые главные «фичи» курса:

  • В нем есть продуманная структура. Поскольку его создавал практик, который отлично ориентируется в реалиях рынка, том, что нужно знать и уметь, в курсе отобрано только самое главное и в нужном порядке! Это очень важно для новичка. Для тебя, наверное, тоже, раз ты читаешь эту статью и пытаешься понять, как тебе действовать.
  • Курс на 80% состоит из практических заданий. За время обучения тебе придется решить более 1200 задач. Какие бывают задачи на JavaRush:

1. Маленькие «учебные» на закрепление пройденного в лекциях.
2. Хитрые задачи «на вырост». По уровню сложности они не отличаются от задач на закрепление, но специально помещены в курсе раньше, чем определенный кусок теории, необходимый для их решения. Это мобилизирует и заставляет человека гуглить и искать недостающий пазл теории. Всё как в настоящей работе.
3. Головоломные. Эти ребята заставляют включать голову на полную. Тебе нужно найти не теорию для решения, но само решение, алгоритм. Короче, хорошенько подумать. Это как задачи на сообразительность или задачи повышенной сложности из учебников.
4. Мини-проекты. Полезные большие задачи, разбитые на подзадачи для понимания, каким образом ведется разработка крупных проектов. Ты сам сделаешь несколько игр и полезных программ, которые можно применять в реальной жизни и дорабатывать.

  • И — самое важное — в курсе есть автоматическая проверка правильности решений! Вы можете решать задачи на странице курса или в IDE (интегрированная среда разработки, если еще не знаешь, что это такое, скоро узнаешь). Причем проверка эта происходит в считанные секунды. Это просто огромное преимущество JavaRush!
  • Курс на русском языке и лекции в нем поданы в виде текстового квеста, в котором ты будешь переходить с уровня на уровень, наращивая скиллы — скучно не будет!
  • В курсе даны ссылки на полезные дополнительные материалы, однако скилл гугления также намеренно прокачивается.
  • Вокруг JavaRush за 4 года существования образовалось огромное сообщество. В нем люди обсуждают задачи, решения, проблемы, делятся информацией.
  • Специальный сайт для решения и обсуждения задач: help.javarush.ru/
  • Основной курс состоит из 40 уровней, 10 из них — полностью бесплатны. Во время первого этапа обучения ты поймешь, подходит ли тебе JavaRush, так что тебе никто не продаст «кота в мешке», ты будешь точно знать, что покупаешь. К тому же цена всего курса очень доступна. Столько же ты заплатишь за два месяца обучения на «дешевых очных курсах». Ссылка на подписки на курс с ценами.
  • После прохождения курса (или большей его части) ты можешь записаться на стажировку — это совместная работа над настоящим серьезным проектом. Они проходят регулярно, и для этого тебе не нужно будет переезжать куда-либо. Успешное прохождение стажировки — красивая и не пустая строчка в твоем резюме со ссылкой на готовый проект.

Подробная статья о JavaRush — javarush.ru/24.html

Первую часть статьи читайте здесь
Третью часть статьи читайте здесь.
Четвертую часть статьи читайте здесь.
  • ,

Java. Справочное руководство для интервью - Часть 1. (Перевод статьи)

Исходная статья находится по адресу:
http://www.javacodegeeks.com/2014/02/java-interview-reference-guide-part-1.html

Опубликовал: Nitin Kumar, в Core Java, 3 февраля 2014 г

Java. Объектно-Ориентированная концепция.


Java основывается на объектно-ориентированной концепции, которая дает более высокий уровень абстракции для решения любой проблемы реальным способом.

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

В Java, класс — это документация, шаблон или прототип, который определяет общее поведение объектов того же вида. Экземпляр является реализацией определенного класса, и все экземпляры класса имеют аналогичные свойства, как представлено в описании класса. Например, вы можете определить класс, который называется Дом, с числом комнат, как атрибутом, и создать объекты: дом с 2 комнатами, дом с 3 комнатами и т.д.

Преимущества:

Ниже перечислено несколько преимуществ разработки объектно-ориентированного программного обеспечения:

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

Существуют четыре основных понятия ООП:

  • Инкапсуляция
  • Наследование
  • Полиморфизм
  • Абстракция

Инкапсуляция:

Инкапсуляция представляет собой правила для других объектов, которые указывают, какие элементы скрыты, а какие открыты для доступа другим объектам. В Java мы используем модификатор доступа private для того, чтобы скрыть метод и ограничить доступ к переменной из внешней среды. Java также предусматривает различные модификаторы доступа, такие как public, который устанавливается по-умолчанию, protected и private, которые используются для ограничения видимости на различных уровнях, но конечная цель инкапсуляции — это скрыть те элементы, которые не должны изменяться. На практике лучше всего, когда класс имеет только одну причину для изменения, и инкапсуляция реализует принципы проектирования этой «одной причины».

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

Преимущества:

Метод main. Как передать в параметрах main() имена файлов?

Встретилось в одном из заданий (не на Javarush):

Есть задание — небольшая программа на Java. Одно из условий: запуск приложения через public static void main(String[] args), args[] параметра: файл входных данных, файл для записи ответа.

Не могу сообразить, как в args[] передать имена файлов:

input.txt, jutput.txt.

Подскажите, пожалуйста, если можно — на примере.

Интересный вопрос по Java

Подскажите пожалуйста: как присвоить переменной имя, равное параметру другой переменной?
к примеру:

     public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<ArrayList<String>> arrayMain = new ArrayList<ArrayList<String>>();
        int fieldSize = Integer.parseInt(reader.readLine());
        for (int i = 0; i < fieldSize; i++) {
            String alphabet = "abcdefghijklmnopqrstuvwxyz";
            String a = String.valueOf(alphabet.charAt(i));
            //ArrayList<String> /*параметр присваемый переменной a*/ = new ArrayList<String>();
        }
    }

Заранее спасибо
  • ,

А что у нас с тестами?

Прочитывая истории успеха уже нашедших себе работу ребят в который раз вижу, что многим дают выполнять на собеседовании некие тесты. Первая ссылка с гугла ведет на сайт на котором можно пройти тесты на разных уровнях знаний языка, но вот беда: если ты плохо учился(как я) и набираешь при проходе теста 20-30% правильных ответов, доступ к верным решениям заблокирован. «Глубокое гугление»(патентую это выражение) привело меня в такие дебри интернета, что я с трудом вылез так и не найдя ничего.

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