Roadmap в IT, это путь развития или путь в никуда
Roadmap — это «дорожная карта», которую можно использовать для понимания что еще можно изучить, для каждой специальности там свои наборы навыков и знаний. Чаще всего начинающие специалисты в желании выделиться пытаются изучить всё, что там указано, без понимания, что именно им может пригодиться. Рассмотрим на примере карту backend разработчика с сайта roadmap.sh, и я дам комментарии к ней, как руководитель разработки.
При беглом взгляде на карту, можно испугаться ее размера, но на самом деле тут не так много лишнего указано. Первое, что бросается в глаза это наличие javascript в карте для backend разработчика. Если говорить про php и возможно python, то с ними можно изучать javascript, для других языков это скорее бесполезная трата времени, ведь js нужен для тех, кто сталкивается с frontend частью, но чаще всего это нужно для fullstack разработчика.
Знания про интернет могут пригодиться, но знание про работу браузера хоть и могут спросить на собеседовании, но это уже больше к frontend. Далее Git и базы данных, без этих знаний никуда и с фиолетовыми галочками я согласен, а с зелеными скорее нет. Для примера в бд указан Sqlite, это крайне специфичная бд, которая очень зависит от скорости диска и имеет очень много ограничений, поэтому достаточно просто знать, что она существует. Oracle менее специфична, чем sqlite и с ней можно познакомиться, но не так много компаний ее используют, чаще всего используют PostgreSQL и MySQL и без них считай знаний про базы нет.
Блок про API, описан достаточно хорошо, но я бы выделил SOAP и GraphQL как то, что нужно как минимум попробовать, т.к. они не редко встречаются в разных компаниях, а gRPC вообще пометил обязательным для изучения.
В блоке про кэширование лишним будет CDN, т.к. разбираться в нем нужно либо глубоко, либо просто знать что он есть и как он работает, делать свой CDN обычно дорого и поэтому используют вместе с защитой от DDoS. А вот Redis и Memcached я бы выделил одинаково, ведь они различаются и встречаются довольно часто.
Веб-безопасность выглядит лишним целиком, но при этом разбираться в алгоритмах шифрования нужно как минимум при работе с данными, а про сертификаты для https, CORS и т.д. не каждый backend разработчик вообще сталкивается, поэтому знания из блоков про веб-безопасность и шифрование будут большим плюсом, но обычно про такие вещи не спрашивают.
Блоки про тестирование и CI/CD пропущу, т.к. без тестирования никуда, а CI/CD подразумевает умение настраивать сборку проекта разработчиком, что обычно изучается при работе с git'ом и docker/kubernetes. А вот про блок с базами я бы опять остановился и обсудил, тут есть упоминание ORM, но их очень много в каждом языке и изучить все скорее всего не получится. ORM нужны для облегчения работы с бд, но при этом имеют массу проблем из-за внутренней механики при работе с несколькими таблицами(N+1 Problem и плохая нормализация например), поэтому ORM редко спрашивают и не является чем-то необходимым к освоению. Остальные части из блока точно нужно знать, т.к. рано или поздно придется проектировать базу данных для сервиса и думать над репликацией данных.
Идем дальше к принципам проектирования и разработки, знание этих блоков часто спрашивают на собеседовании, при этом в работе с этим столкнется не каждый, потому что часть решений принимают другие люди и задачей разработчика становится только написание кода.
Дальше по схеме вопрос возникает только к веб-серверам, с остальными фиолетовыми и зелеными галочками я согласен. В веб-серверах указаны Apache и MS IIS, их очень редко можно встретить, чаще всего встречается Nginx или его разновидности, Caddy вообще не встречал. Блок веб-серверов больше относится к области devops, чем к разработчику, при этом опыт в настройке серверов с "нюансами" будет плюсом, а обычная настройка а-ля скопировал файл настроек по-умолчанию и поправил в нем порты будет бесполезен в реальной работе.
Как итог из дорожной карты backend разработчика можно убрать из обязательного изучения:
- знание про то, как работает браузер
- навык работы с sqlite и Oracle
- знание про внутреннее устройство CDN
- ORM
- Apache, Caddy, MS IIS
Если остались вопросы по дорожной карте, можно заходить ко мне в ТГ канал или обсудить в комментариях, либо для самостоятельного изучения можно почитать, например в этом репозитории, тут довольно подробно всё расписано(не смотрите что про PHP, это применимо к большинству языков).