Если вы только начинаете программировать

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

Когда вы изучаете и практикуете что-то одно, вы быстрее достигаете результата. Если вы начнете переключаться между бэкендом и фронтендом, не зная ни того, ни другого, то результат будет соответствующим.

Сложно ли стать полноценным разработчиком?

Это, я думаю, в конечном счете зависит от человека, его желаний и текущей ситуации. По примеру знакомых не очень многие горят желанием переходить с фронтенда на бэкенд. В этом случае им нужно будет изучить Golang, PHP, .NET, Java и другие языки, которые используются в бэкинге. Исключением может быть NodeJS.

И наоборот, двигаясь сзади наперед, нужно изучать фреймворк или библиотеку, работать с Webpack, LESS, SASS.

Когда вы переходите с одного направления на другое или изучаете другую технологию, вам придется изучать дополнительную информацию, связанную с этим фреймворком или направлением.

Если вы сразу начали разрабатывать на фронте, то переходя на тыл, вам нужно будет знать помимо самого языка еще и базы данных и как с ними работать. Хотя бы на базовом уровне.

Расширение горизонтов и получение новых возможностей

В результате, выбрав путь становления fullstack-разработчиком, вы сможете развить свой технический кругозор. Даже если вы не станете идеальным full-stack разработчиком, вы сможете посмотреть на проблему с разных сторон. Это, в свою очередь, означает, что найти оптимальное техническое решение будет проще и быстрее. Это то, чего мы придерживаемся в нашей команде и когда разработка программного обеспечения на заказ