Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


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

понедельник, 2 февраля 2015 г.

Что стоит сделать, чтобы подтянуть JavaCore?

Какой путь предстоит пройти, чтобы стать Junior Java Developer в одной большой (или не очень) компании я попробую сейчас уместить в один этот пост. Каждый абзац его - один этап, и если ты он тебе покажется пройденным - смело переходи к следующему. Тут все зависит от того, какой у тебя сейчас уровень. И вовсе не страшно, если этот уровень сейчас не такой высокий, как хотелось бы - если будешь вкладывать ежедневно в практику, очень скоро все догонишь. Начну с самого начала. 

Допустим опыт у тебя отсутствует, как по Java так и по программированию. Помнишь лишь только, что когда-то давно уроки информатики тебя привлекали у тебя были по ней неплохие отметки. В таком случае тебе стоит разобраться с основами написания программ. Для этих целей подойдет хороший проект http://scratch.mit.edu/ Тебе надо разобраться с тем как большая задача декомпозируется (разбивается) на этапы, те в свою очередь состоят из кирпичиков-команд. Компьютер умеет делать много всяких команд, а программист объединяет их в программы используя такие штуки как например: ветвления, циклы, процедуры, простые ячейки памяти и массивы для хранения промежуточных результатов выполнения программы, используя всевозможные алгоритмы. Это все не сложно, но java я пока бы рекомендовал отложить. На время. Когда разберешься с основными штуками, которые обычно делает программист приступай к следующему этапу. Если вдруг эта игра не подойдет - вот еще одна классная подборка

Ты уже программировал в прошлом на каком либо языке программирования в прошлом или быть может программируешь сейчас. Задачи могут быть как простые - использование компьютера в качестве калькулятора или по-сложнее - автоматизация каких-то рутинных задач. Ты пишешь программы для себя, чтобы сэкономить время, а компьютер тебе в этом помогает. Для проверки: ты уже знаешь, что такое алгоритм, ветвления, цикл, ячейка памяти, процедура, сортировка. Тут смело можно включать язык Java в твой арсенал. В сети по языку java есть множество материалов: видеоуроки, книги, статьи. Но одного знания не достаточно - надо иметь площадку для экспериментов. Такой себе задачник, где собрано много мелких задачек, которые ты будешь решать. Например http://codingbat.com/java или вот http://codeforces.ru/problemset  или еще 100500 других вариантов, которые гуглятся просто "задачи по java с решениями". Так же тебе потребуется какая-то книга, которую ты купишь и будешь читать - твоя настольная книга. Их есть несколько - каждому подходит какая-то своя:

Так же ты сможешь найти множество видеоуроков на тему основ Java, как например:
Но основное тут - это практика, ведь без нее теория "в одно ухо влетело, в другое вылетело". Практики должно быть много. Очень много. Каждый день по 4+ часов. 2-3-4 месяца (как пойдет) зависит от твоей скорости. 
Так же тут стоит задумываться о качестве твоего кода, и в этом тебе помогут:
Тут уже можешь заняться тем, чтобы тестировать свои познания о java с помощью какого-то мокового экзамена scjp. Вот например этого (конкретно в этом тебе надо будет зарегаться, чтобы потом получить расшифровку твоих неправильных ответов). Их в сети есть много. Очень много. Как все с java. Пройди тест в начале пути и проходи его каждую неделю, наблюдая за тем, как % растет. Дойдешь до 90% - это очень и очень хорошо. Есть книга, которая хорошо готовит к сдаче этого экзамена "OCJP Sun Certified Programmer for Java 6 Exam 310-065". Экзамен тебе нужен не для того, чтобы получить сертификат (не уверен что он тебе сильно поможет устроиться), но для того, чтобы знать где именно у тебя пробелы. 

Следующая важная штука - ООП. Без нее в java никуда. Частично это покрыто в java core литературе, но опять же - одного знания что такое полиморфизм, икапсуляция, наследование и абстракция недостаточно. Надо чувствовать его. А тут без практики, на которой будут грабли - никуда. Тебе предстоит перейти от мышления в процедурном стиле в мышление в стиле ООП. Для этого потребуется отойти от алгоритмических задачек в сторону более сложных задач по моделированию части реального мира. Например: смоделировать университет со всеми его ключевыми ролями, их взаимодействиями, документооборотом, составлением расписаний, деканата и прочих артефактов. Или пиццерию, со всеми-всеми ее обитателями. Или аэропорт. Или библиотеку. Или.... Выбирать тебе. Как выбрать задачу и ментора себе и в каком направлении тут двигаться можно почитать в этом посте. Книги для понимания ООП я бы рекомендовал такие:
И опять же - много практики. Привыкай к тому, что кодить будешь целый день - это будет твоя основная задача. 

Отдельно хочу сказать про английский язык. Книги и материалы я тебе предложил на русском, потому как допускаю, что с английским ты сейчас не очень дружишь. Если это так - записывайся на курсы уже сегодня и проходи его шаг за шагом. Ты должен будешь:
  • гуглить решения на английском - 70%
  • участвовать в переписке с англоязычной частью твоей команды, писать документацию по проекту - 20%
  • пройти собеседование на английском, общаться минимум раз в неделю с "заказчиком" - 10%
Это в любом случае придется сделать. Начинай сегодня же. 

Следующий этап - технологии из стека j2ee, всевозможные opensource фреймворки и прочие прибамбасы, которые уже придумали для тебя - тебе остается их скрутить вместе. Движение на этом этапе рекомендую проводить в направлении:
  • Java Web basics: Servlets, JSP, HTML5, CSS3 - преврати свой консольный проект в полноценный Web. 
  • DB/SQL - храни данные в базе.
  • JavaEE basics: Maven3, XML/JSON, Spring IoC, Hibernate, Struts2 или SpringMVC - сделай полноценное EE приложение 
  • WebServices/Rest/SOAP - дай доступ к своему api для других служб
  • JavaScript (jQuery), AJAX, JSF  - сделай свое приложение SPA, как сейчас принято в мире Web
Тут важно понимание принципов работы технологий и фреймворков. Но это не все. 

Очень важно тут нарабатывать правильные девелоперские навыки:
  • Декомпозиция большой задачи на мелкие. Большую задачу не нашинковав ее на мелкие не решить. 
  • Доведение задачи до состояния - готово, преодолевая все-все препятствия (а их будет много), постоянное чувство "приехали" - его надо преодолевать, ведь решение где-то есть, может рядом, а может тебя от них отделяет еще 20 неудачных попыток. Не сдаваться!
  • Быстро гугление ответов на свои собственные вопросы - тут книги уже не помогут, хотя они и есть - на чтение их всех уйдет оОоочень много времени, и не эффективно это. Технологии меняются, одни фреймворки приходят на смену другим. Один проект использует один набор технологий, другой - другой. Надо знать базу и уметь догугливать все остальное. 
  • Работа в команде: общий репозиторий, работа на стыке с коллегами, конвенции в команде, коммуникации и многое другое, что не передашь в рассказах, видеолекциях, книгах, а если и передаешь - понятно не будет. Тут надо окунуться с головой в командную разработку.
  • Работа по процессу, навыки планирования
  • Стрессоустойчивость
К сожалению про эти навыки не прочитать в какой-то одной книге - тут надо вливаться в команду и впитывать все, что она тебе дает. Скорее всего этот тренинг ты уже будешь проходить стажируясь в какой-то компании, либо проходя тренинг такой как у нас, в GoIT. Мы вкладываем в твои навыки больше, чем просто делимся знаниями, потому, что знаем - при правильном наборе навыков знания очень скоро ты впитаешь сам. 

В завершение хотелось бы поделиться докладом Якова Файна Становясь профессиональным Java Developer

Книгой, которая поможет на собеседовании для будущего j2ee разработчика "Java/J2EE Job Interview Companion" автора Arulkumaran Kumaraswamipillai - очень емкая и классная подборка вопросов о core java, oop и j2ee технологиях. 

Я уверен, пройдя этот путь ты точно будешь работать в компании. Тут важно понимать, что знание этого всего автоматически не означает твое трудоустройство. Устроишься ты, если будешь стучаться в компании:
  • Создаешь свое резюме
  • Изучишь вакансии размещаемые на сайтах компаний в разделе "Вакансии"
  • Будешь ходить на собеседование 
  • И одно из них пройдешь!
Все получится. Но придется хорошенько потрудиться...

А что будет дальше можно увидеть в моем докладе У тебя получится.

Комментариев нет:

Отправить комментарий