Всем известно, что IT-сфера постоянно расширяется, требуются новые и новые специалисты. И это хорошо, потому что абсолютно у каждого есть возможность найти себе "ремесло" по душе. К тому же айтишная среда достаточно либеральна в подходах к соискателям. В большинстве случаев всех интересуют твои знания и умения, а не просто диплом специализированного ВУЗа. Диплом - это лишь дополнение, а не обязательный атрибут, то есть лишним не будет, но не критично.
И вот ты решил взяться за самообразование, набрал в поисковике: "Как стать программистом с нуля"... стой. Не делай лишних движений. Сейчас я тебе помогу.
Я расскажу, как правильно стать классным java-разработчиком и не возьму за это ни копейки. Для меня это не бизнес, а личные убеждения. Знаешь, иногда убеждения бывают дороже любых материальных ценностей. По мнению Платона идеи правят миром. Я с ним полностью согласен.
Друг, первое и самое главное что тебе потребуется - это желание. Второе - терпение, третье - настойчивость, четвертое - время. Это очень важный момент. Я бы даже сказал - первоочередной.
Шаг 1: учись регулярно, заведи привычку распределять свое время. Забудь о бесполезных вещах. Выдели для себя приоритеты и уделяй время им, а не всякой чепухе. Подумай, что тебе даст 1 час пустого времяпровождения в соцсетях? А что даст тот же час, проведенный за чтением полезной книги? Возвращайся к этому шагу каждый день.
О том как научиться управлять временем, я обязательно расскажу в отдельной статье (или даже цикле статей). А сейчас давай уже перейдем к конкретным знаниям, которые нужно будет приобрести и определимся с дорожной картой. Составим список основных тем, которые ты пошагово будешь осваивать. Не переживай, если список покажется слишком большим. Постепенно ты изучишь все - "Шаг 1" тебе в помощь. Каждую тему мы разобьем на отдельные подтемы, каждую задачу на отдельные подзадачи. Все это впереди. Сейчас мы с тобой составляем план и крупными мазками мажем основу твоего будущего мастерства.
Шаг 2: хорошо изучи базу. Пойми как вообще все устроено и работает. Без хороших знаний основы, двигаться дальше ты просто не сможешь. Иногда будет казаться, что все слишком сложно, но отчаиваться нет смысла. Постепенно картина в голове начнет вырисовываться. К этому шагу, как и к первому возвращаться придется постоянно. Поверь, чем больше ты будешь развиваться, тем чаще начнешь видеть в основах то, чего не замечал раньше.
- Computer sciense - фундамент на котором основывается вся суть программирования. Без знания некоторых базовых вещей, классным разработчиком стать сложно. Двоичный код, математическая логика, алгоритмы, структуры данных и много других интересных тем. По русски это называется информатикой.
- ООП - объектно-ориентированное программирование. Парадигма программирования, на которую опирается Java. Здесь ты познакомишься с такими фундаментальными понятиями, как наследование, инкапсуляция, полиморфизм, композиция. Узнаешь о принципах SOLID.
- Java Core 1 - самые основополагающие понятия языка Java, его структура. Здесь ты пройдешь инициацию и начнешь познавать тайные знания о том, как вообще все устроено. Синтаксис языка, операторы, конструкции, возможности. Поймешь что такое класс, интерфейс, перечисления, настройки приватности, исключения. Начнешь писать свои первые программы и проникаться магией программирования.
- Java Core 2 - сортировка пузырьком для тебя уже детский лепет. Ты хочешь двигаться дальше и подниматься по ступеням посвящения. Тебя ждут дженерики, коллекции, функциональные интерфейсы, лямбда-выражения, стримы. Вместе с уровнем мастерства повышается твоя уверенность в себе. Ты уже не просто новичок - ты приобщился по-настоящему и жаждешь дальнейшего развития. Путь воина - твоя судьба и цель ясна как никогда раньше.
- Concurrency - ты развиваешься дальше и начинаешь осознавать в чем разница между процессом и потоком. Теперь тебе понятно зачем у процессоров бывает несколько ядер. Пул потоков, потокобезопасные коллекции, синхронизация, атомарные данные. Тебя уже не интересует суета повседневности, потому что ты понял суть бытия. Твой клинок остр и латы крепки.
Шаг 3: ты готов к тому, чтобы приблизиться к реальной разработке и даже изучить некоторые сторонние технологии. Программирование - это прежде всего работа с информацией, а информацию где-то нужно хранить. Ты часто слышал понятие "база данных" - теперь ты будешь не просто слышать, теперь ты будешь знать.
- SQL - пришло время развивать параллельные навыки. Сам по себе язык Java крут, но не так, как в союзе с базами данных. Ведь используется он в основном в бэкенд разработке, а это непосредственная работа с данными. Тебе нужно уметь создавать объекты базы данных, добавлять, изменять, удалять данные, делать запросы. Ты узнаешь, что такое транзакция и уровни её изолированности. Уровень твоих познаний стремится ввысь.
- JDBC / ORM / JPA / Hibernate - ты научился работать с базами данных, но ты же java-разработчик и хочешь манипулировать данными и управлять транзакциями в привычном для тебя ООП стиле. Эти технологии позволят тебе делать именно так. Твоя магическая сила отныне несокрушима.
Шаг 4: давай еще ближе к реальной разработке. Слышал ли ты когда-нибудь о таком явлении как фреймворки? На этом этапе ты познакомишься с самым распространенным java фреймвороком. Это очень мощный инструмент, который помогает создавать крутые приложения.
- Spring Framework - ты уже много чего знаешь и много чего умеешь, но с помощью спринга твой уровень мастерства взлетит до небывалых высот. На самом деле Spring - это набор инструментов для разных случаев жизни. Когда дорастешь, все узнаешь сам.
Шаг 5: на самом деле уже предыдущих четырех шагов достаточно, чтобы начать профессиональную деятельность в качестве java-разработчика. Но, чтобы стать действительно востребованным на рынке труда, в настоящее время стоит изучить еще кое что.
- Docker - технология, которая позволяет упаковать приложение со всеми зависимостями в один "контейнер". Тебе пока не очень понятны преимущества такого подхода, но он позволяет очень существенно сократить время развертывания приложения. В определенной степени это виртуальная машина.
- Микросервисная архитектура - когда большое(монолитное) приложение разбивают на несколько взаимодействующих между собой сервисов. Применяют для крупных, расширяющихся платформ.
Конечно, я не перечислил все досконально, но примерное представление о твоем пути в профессию дал. Что дальше? Работа. Постоянная работа над собой. Спокойно, уверенно, без суеты.
В этом блоге я дам возможность пройти весь путь от начала до конца каждому, кто в этом нуждается. Статьи буду писать, придерживаясь намеченного плана.
Ну что. Ты готов? Тогда держись крепче и погнали!