По опыту, подобные тупики возникают в основном из-за недостатка знаний.
Поэтому и решать их нужно через знания: нужно читать книги и статьи по теме, зависать на спец.форумах и чатиках.
Только так можно получить те кусочки информации, которых не хватает для решения задачи.
Быть может большая часть прочитанного/услышанного не будет использоваться, но однажды, когда встанет соответствующая задача, эти кусочки всплывают в памяти и встраиваются в общую картину.
Опыт нужен, но от неопытных его не почерпнуть. Авантюры с новичками мало что дают, т.к. перенимается только худшее, костыли. Нужно ориентироваться на более опытных товарищей.
Хороший вариант - открытые проекты в github, как минимум можно посмотреть как люди решают те или иные задачи, почерпнуть некоторые фишки, пообщаться в комментах с теми, кто в теме, как максимум - можно влиться в разработку, отхватить кучу гневных комментов в стиле "что за говнокод?", но заодно и получить пинок в правильную сторону быстрее, где бы то ни было.
И помни: топтаться на месте и ходить кругами можно долго. Шансы на то, что это приведет к успеху - минимальны.
Так что обязательно нужно что-то делать для развития.
Можно пройти онлайн-курсы за год. Это даст хороший уровень.
Или, если ты ленивая жопа, податься стажером на галеру - там за полгода тебя заставят прокачаться до хорошего уровня.
Фриланс без опыта - наихудшее решение, т.к. ты работаешь один, ориентироваться не на кого, никто не проверяет что ты делаешь, лишь бы работало, в итоге пишешь в своем стиле ужасный код, и никакого саморазвития не получаешь.
Таких горе-фрилансеров на рынке много, многие в таком стиле работают годами.
Встречаешь такого, вроде опыт огромный, а как глянешь в код - он хуже чем у новичка с курсов, дичь просто.
Ощущения непередаваемые: когда это видишь в реале, в голове просто не укладывается, как такое возможно.