Какой путь предстоит пройти, чтобы стать Junior Java Developer в одной большой (или не очень) компании я попробую сейчас уместить в один этот пост. Каждый абзац его - один этап, и если ты он тебе покажется пройденным - смело переходи к следующему. Тут все зависит от того, какой у тебя сейчас уровень. И вовсе не страшно, если этот уровень сейчас не такой высокий, как хотелось бы - если будешь вкладывать ежедневно в практику, очень скоро все догонишь. Начну с самого начала.
Допустим опыт у тебя отсутствует, как по Java так и по программированию. Помнишь лишь только, что когда-то давно уроки информатики тебя привлекали у тебя были по ней неплохие отметки. В таком случае тебе стоит разобраться с основами написания программ. Для этих целей подойдет хороший проект http://scratch.mit.edu/ Тебе надо разобраться с тем как большая задача декомпозируется (разбивается) на этапы, те в свою очередь состоят из кирпичиков-команд. Компьютер умеет делать много всяких команд, а программист объединяет их в программы используя такие штуки как например: ветвления, циклы, процедуры, простые ячейки памяти и массивы для хранения промежуточных результатов выполнения программы, используя всевозможные алгоритмы. Это все не сложно, но java я пока бы рекомендовал отложить. На время. Когда разберешься с основными штуками, которые обычно делает программист приступай к следующему этапу. Если вдруг эта игра не подойдет - вот еще одна классная подборка.
Ты уже программировал в прошлом на каком либо языке программирования в прошлом или быть может программируешь сейчас. Задачи могут быть как простые - использование компьютера в качестве калькулятора или по-сложнее - автоматизация каких-то рутинных задач. Ты пишешь программы для себя, чтобы сэкономить время, а компьютер тебе в этом помогает. Для проверки: ты уже знаешь, что такое алгоритм, ветвления, цикл, ячейка памяти, процедура, сортировка. Тут смело можно включать язык Java в твой арсенал. В сети по языку java есть множество материалов: видеоуроки, книги, статьи. Но одного знания не достаточно - надо иметь площадку для экспериментов. Такой себе задачник, где собрано много мелких задачек, которые ты будешь решать. Например http://codingbat.com/java или вот http://codeforces.ru/problemset или еще 100500 других вариантов, которые гуглятся просто "задачи по java с решениями". Так же тебе потребуется какая-то книга, которую ты купишь и будешь читать - твоя настольная книга. Их есть несколько - каждому подходит какая-то своя:
- Яков Файн "Программирование на Java для детей, родителей, дедушек и бабушек"
- Кей С. Хорстманн, Гари Корнелл "Java 2. Библиотека профессионала"
- Кэти Сиерра, Берт Бейтс HeadFirst "Изучаем Java"
- Герберт Шилдт "Java. Полное руководство"
- Брюс Эккель "Философия Java"
Так же ты сможешь найти множество видеоуроков на тему основ Java, как например:
- Youtube канал Юрия Ткача "Java Онлайн уроки"
- Курс, который создал Головач Иван
- Погугли в направлении "java онлайн видео курс" и удивишься, сколько всего уже создано в этом направлении.
Но основное тут - это практика, ведь без нее теория "в одно ухо влетело, в другое вылетело". Практики должно быть много. Очень много. Каждый день по 4+ часов. 2-3-4 месяца (как пойдет) зависит от твоей скорости.
Так же тут стоит задумываться о качестве твоего кода, и в этом тебе помогут:
Тут уже можешь заняться тем, чтобы тестировать свои познания о java с помощью какого-то мокового экзамена scjp. Вот например этого (конкретно в этом тебе надо будет зарегаться, чтобы потом получить расшифровку твоих неправильных ответов). Их в сети есть много. Очень много. Как все с java. Пройди тест в начале пути и проходи его каждую неделю, наблюдая за тем, как % растет. Дойдешь до 90% - это очень и очень хорошо. Есть книга, которая хорошо готовит к сдаче этого экзамена "OCJP Sun Certified Programmer for Java 6 Exam 310-065". Экзамен тебе нужен не для того, чтобы получить сертификат (не уверен что он тебе сильно поможет устроиться), но для того, чтобы знать где именно у тебя пробелы.
Следующая важная штука - ООП. Без нее в java никуда. Частично это покрыто в java core литературе, но опять же - одного знания что такое полиморфизм, икапсуляция, наследование и абстракция недостаточно. Надо чувствовать его. А тут без практики, на которой будут грабли - никуда. Тебе предстоит перейти от мышления в процедурном стиле в мышление в стиле ООП. Для этого потребуется отойти от алгоритмических задачек в сторону более сложных задач по моделированию части реального мира. Например: смоделировать университет со всеми его ключевыми ролями, их взаимодействиями, документооборотом, составлением расписаний, деканата и прочих артефактов. Или пиццерию, со всеми-всеми ее обитателями. Или аэропорт. Или библиотеку. Или.... Выбирать тебе. Как выбрать задачу и ментора себе и в каком направлении тут двигаться можно почитать в этом посте. Книги для понимания ООП я бы рекомендовал такие:
- Мартин Фаулер "Рефакторинг. Улучшение существующего кода"
- Фримен Эр., Фримен Эл., Бейтс Б., Сьерра К "Head First - Паттерны проектирования"
- Роберт Мартин "Быстрая разработка программ: принципы, примеры, практика"
- Гугли "java oop" и "java solid"
И опять же - много практики. Привыкай к тому, что кодить будешь целый день - это будет твоя основная задача.
Отдельно хочу сказать про английский язык. Книги и материалы я тебе предложил на русском, потому как допускаю, что с английским ты сейчас не очень дружишь. Если это так - записывайся на курсы уже сегодня и проходи его шаг за шагом. Ты должен будешь:
- гуглить решения на английском - 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 технологиях.
Книгой, которая поможет на собеседовании для будущего j2ee разработчика "Java/J2EE Job Interview Companion" автора Arulkumaran Kumaraswamipillai - очень емкая и классная подборка вопросов о core java, oop и j2ee технологиях.
Я уверен, пройдя этот путь ты точно будешь работать в компании. Тут важно понимать, что знание этого всего автоматически не означает твое трудоустройство. Устроишься ты, если будешь стучаться в компании:
- Создаешь свое резюме
- Изучишь вакансии размещаемые на сайтах компаний в разделе "Вакансии"
- Будешь ходить на собеседование
- И одно из них пройдешь!
Все получится. Но придется хорошенько потрудиться...
А что будет дальше можно увидеть в моем докладе У тебя получится.
Комментариев нет:
Отправить комментарий