Как стать Java-программистом? Пошаговый план

Автор: Петр Арсентьев


Road

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

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

Поэтому сперва ответьте на простой вопрос: какие мотивы лежат в основе вашего желания стать программистом Java?

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

Ответьте на вопросы:
1. Можете ли вы установить ОС Windows?
2. Можете ли вы установить ОС Linux?
3. Можете ли вы работать в командной стороке?
4. Знаете ли вы, что такое базы данных? Каким образом хранятся данные в базе данных?
5. Знаете ли вы, что такое языки программирования?
6. Имеете ли вы опыт программирования с использованием любого из языков программирования?
7. Знаете ли вы, что такое алгоритмы? Можете привести пример алгоритма?
8. Сможете ли вы написать алгоритм для прохождения статического лабиринта? Движение задается в шагах и по направлению. Например: 2 шага вперед, 3 шага влево, 8 шагов прямо. Выход.
9. Знаете ли вы, как работает браузер?
10. Знаете ли вы, что такое беспроводная сеть? Приведите примеры.

Если на большинство вопросов вы ответили положительно, значит, у вас есть все шансы стать Java-программистом. К сожалению, если большинство ответов отрицательны, вам нужно начинать с основ. Не расстраивайтесь – эти знания можно приобрести самостоятельно.

Теперь перейдем ко второй точке нашего пути. Для ее достижения нужно составить список необходимых навыков:
1. Собрать список всех вакансий, которые доступны в вашем городе.
2. Выписать все требования, указанные в каждой вакансии.
3. Сгруппировать часто встречающиеся требования, откинуть ненужные.
Такой список и будет вашей второй точкой.

При выборе конечной точки (достижение цели) обычно руководствуются минимальными возможностями. Например, с работой программиста выбирают устройство на позицию Junior. Следовательно, список будет состоять из требований к позиции Junior Java Developer. И вот здесь есть хитрый психологически момент: при такой постановке задачи для ее 100%-ного выполнения требуется освоить все навыки из вашего списка, но обычно, чтобы завершить задачу реально на 100 %, нужно приложить очень много усилий. Всегда возникают какие-нибудь мелкие недочеты, правки, переделки и желание что-то усовершенствовать. Поэтому я рекомендую ставить цель на 30 % выше, то есть готовиться так, как будто вы хотите занять позицию Middle Java Developer.

Ниже приведен минимальный список технологий и библиотек, необходимых для устройства на позицию Junior Java Developer.

1. Наследование, инкапсуляция, полиморфизм (Interface, Abstract Class, Inner Class and so on)
2. SOLID principles
3. Collections: List, Set, Tree, Hashable
4. JDBC
5. Multithreading (synchronize, monitor, wait, notify, notifyAll, deadlock)
6. Servlet, JSP, JSTL
7. SQL
8. Junit
9. Основы HTML, CSS, JS
10. Ajax
11. Maven
12. GIT
13. Tomcat

Также ниже привожу список литературы, который необходимо прочитать любому Java-программисту:

1. Head first Java
2. Head first Servlet, JSP
3. Head first SQL
4. Head first Design Patterns
5. Effective Java
6. Официальная документация по Tomcat, Git и Maven

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

Тестовое задание

Необходимо создать веб-приложение – систему заявок.
Заявки должны иметь древовидную структуру неограниченной вложенности.
Заявка должна хранить информацию: Имя, Описание, Дата создания, Автор.
К заявке можно загрузить файлы и добавить комментарии. Комментарии должны содержать информацию об авторе и дате создания.
В системе должны быть два типа пользователей: модераторы и обычные пользователи. Редактировать заявку может автор либо модератор.
Добавлять комментарии могут все. Редактировать комментарии нельзя.
В систему нужно входить по логину и паролю. Заводить новых пользователей может только модератор.
Пользовательский интерфейс должен быть представлен одностраничным сайтом. Страница должна быть разделена на две части: слева – дерево всех задач, справа – текущий список.
Должно быть предусмотрено два фильтра: плоский (показывает только заявки на одном уровне) и вложенный (отображает все заявки, включая вложенные).
Для пользовательского интерфейса использовать Angular JS.
Все данные должны храниться в базе данных PostgreSQL.

Заключение

Как видите, вам предстоит пройти нелегкий путь, но осилит дорогу идущий. Так что начинайте смело! Как и на любом новом пути, легче всего его пройти, если вас поведет опытный проводник. Наиболее быстрый способ овладеть данными знаниями – пройти курс под моим руководством.