Занимаюсь веб разработкой 4+ лет.
Java - для заработки нормально.
Думаю стоит изучать в таком порядке:
- Основа: структуры данных и алгоритмы. Книга sicp. Книга небольшая, и читается легко. В интернете есть лекции на его основе, как на английском(из MIT) так и на русском.
- Основы java, ООП и шаблоны проектирования.
- java/spring boot.
Я бы начал попробовать сделать что то простое.
Например, вывод списка продуктов из базы данных, тут хватить документации hibrenate/spring.
- Затем, можно изучать глубже, что происходить в запросе, стоит углубляться в сети(OSI,безопасность и особенности протокола http), и реляционных БД.
Думаю именно на таком минимальном проекте изучать будет проще, т.к. у вас будет работающее приложение, и вам остается его разбирать и изучать по частям.
- Напишите хотя бы юнит тестов для вашего приложения. Это даст хороший плюс к пониманию процесса.
- Можно немного изменить проект и вернуться к пункту 4.
Например:
- Приложения теперь должен иметь регистрацию и авторизацию, и авторизованные пользователи могут создавать "Магазинов" и продукты в нем. Т.е. user -> shops -> products.
- Добавим возможность заказывать.
- Хорошо бы отделить оплату заказов в микросервис, чтобы критическим функционалом занимался доверенный сотрудник... (Отделим оплату заказов в микросервис, который общается с основным сервисом, например через rabbitmq)
- Далее, стоит обнаружить узкие места и оптимизировать их. Некоторые вещи лучше в очередь отправить, к примеру если отправка почты занимает много времени, или происходить ошибки во время отправки, то письмо можно отправить в очередь и обработать в другом месте, чтобы отправка почты не влияло на время ответа.
Здесь не всё, но для начало думаю достаточно, после того как сможете более менее реализовать простые проекты, лучше поискать стажировку.
Также попробуйте rust, есть отличная книга(а не тысячи книг), который охватывает всех возможностей языка. ->
rustbook
Есть дружелюбный чат на русском:
Для новичков:
https://gitter.im/ruRust/easy
И для опытных:
https://gitter.im/ruRust/generalЭто язык общего назначения, в котором можно и веб сервисы написать(https://rocket.rs/, https://actix.rs/).
Для изучение отлично подходить, поскольку стандартный инструментарий идёт в комплекте с официальной книгой, и примерами. В книге каждая строчка подробно объясняется. (Выше дал ссылку на русский перевод)
P/s Если хотите бэкендом заниматься, лучше займитесь только им, пока не чувствуете себя уверенно в нем. Поэтому лучше делайте АПИ, а не полноценное приложение с UI, так проще будет, если всё же хочется UI, то рекомендую брать angular, как наиболее простое решение, с точки зрения бэкенда.