Roadmap в IT, это путь развития или путь в никуда

Roadmap — это «дорожная карта», которую можно использовать для понимания что еще можно изучить, для каждой специальности там свои наборы навыков и знаний. Чаще всего начинающие специалисты в желании выделиться пытаются изучить всё, что там указано, без понимания, что именно им может пригодиться. Рассмотрим на примере карту backend разработчика с сайта roadmap.sh, и я дам комментарии к ней, как руководитель разработки.

Roadmap backend разработчика
Roadmap backend разработчика

При беглом взгляде на карту, можно испугаться ее размера, но на самом деле тут не так много лишнего указано. Первое, что бросается в глаза это наличие 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, это применимо к большинству языков).

Начать дискуссию