Как начать зарабатывать программированием на Java? Прочитать 100500 книг, посетить сотни семинаров? А как же опыт? Подобные вопросы всегда мучают новичков. Давайте разберем, как сделать шаг в профессию.
Что хочет работодатель?
Любая фирма, в которую вы отправляете резюме, хочет, чтобы сотрудники приносили ей пользу. Формула банальная, но в ней вся суть рынка:
чтобы получить работу, нужно быть полезным фирме.
Вот есть, например, "Контора 1" и "Контора 2". "Контора 1" пишет в вакансии, что готова обучить начинающего программиста и потом взять на работу. "Контора 2" обучать не хочет, мол, приходите и сразу начинайте кодить (но перед этим покажите уже написанные проекты, конечно же). Какую фирму вы как новичок выберете?
Очень соблазнительно выглядит предложение "Конторы 1", но я бы советовал избегать таких вакансий: в этих фирмах набирают большую учебную группу кандидатов (20–30 человек) и выбирают лучшего. Все обучение сводится к самостоятельному поиску материала и решению задач, поскольку в реальности никто не заинтересован в получении вами знаний – фирме это просто не выгодно. В итоге, если вы не справляетесь с такой формой обучения, вы не получаете ни работу, ни знания, только потерянное время, которое могли бы потратить на подготовку в реальной работе. С этой точки зрения вакансия "Конторы 2" выглядит более честной.
Суммирая все сказанное, скорректирую нашу формулу: чтобы получить работу, нужно быть полезным фирме
здесь и сейчас.
Хорошие новости
Ни одна компания не пишет проект с нуля, поэтому новичку на руку то, что создание современных программ основано на различных библиотеках и фреймворках. Это тот самый случай, когда готовые решения применять не зазорно, а очень даже необходимо. Кроме того, в начале карьеры нет необходимости глубоко разбираться, как работают популярные библиотеки, нужно только уметь подключать и собирать их вместе.
Если вы сделаете простые приложения с использованием фреймворков и зальете их на GitHub, этого будет достаточно, чтобы доказать свою полезность фирме и найти первую работу.
Необходимый минимум
Предлагаю вам список того, что нужно знать Junior Java Developer.
1. Базовый синтаксис языка Java
Без основ ничего не сделаешь, поэтому в первую очередь нужно освоить операторы условия, циклы, массивы, классы и объекты, исключения.
Примеры заданий можно найти
здесь.
Книга: "Изучаем Java" Кэти Сьерра.
2. Структуры данных и простые алгоритмы
Основной ценностью в программировании являются данные, причем они хранятся не хаотично, а в структурах. Поэтому нужно очень скрупулезно подойти к этой теме, выучив основные структуры и алгоритмы для работы с данными. Всегда держите в голове, что неправильно выбранная структура может на корню испортить программу.
Знание структур и алгоритмов здорово выручит вас и на собеседованиях, где любят давать задачки на применение того или иного алгоритма для работы со структурами, например, отсортировать связанный список.
Книга: "Алгоритмы. Построение и анализ" Томаса Кормена.
3. SQL (базы данных)
Трудно найти приложение, которое бы не использовало базу данных, поэтому этот инструмент программирования – must-have в арсенале любого разработчика. Поставьте сервер базы данных PostgreSQL и потренируйтесь писать запросы.
Книга: "Head First SQL" Линн Бейли.
4. Servlet, JSP
Основная область применения Java – корпоративный сектор, для которого разрабатывают серверные приложения. Основа серверного приложения – это Servlet + JSP.
Книга: "Head First Servlet and JSP".
5. Hibernate
Первый фреймворк в списке. Позволяет извлекать данные из базы. Используется повсеместно.
Книга: "Hibernate in Action" Гэвина Кинга и Кристиана Бауэра.
6. Spring
Этот фреймворк, как вирус, постоянно совершенствуется и адаптируется к любым бизнес-требованиям. На нем можно написать все, что делает его универсальным и в то же время гибким средством разработки. Начните со Spring Boot – этот инструмент будет вашим основным орудием труда.
Книга: "Pro Spring" Роба Харропа.
7. Maven
Мы программисты, поэтому все процессы должны быть автоматизированы по максимуму. Инструменты для сборки, тестирования и интеграции будут повседневными соратниками в вашей работе.
8. Git
Программы давно не пишут в одиночку, поэтому используйте этот гибкий инструмент для командной работы.
Сколько времени требуется на подготовку?
Каждый хочет получить результат быстро, но вынужден вас огорчить: тут нельзя торопиться. Если заниматься ежедневно и не бросать дело на полпути, на освоение программы-минимум должно хватить года.
Кажется трудным, но осилит дорогу идущий, так что начинайте смело! Как и на любом новом пути, легче всего его пройти, если вас поведет опытный проводник. Наиболее быстрый способ овладеть знаниями –
заниматься с индивидуальным ментором.