Если вы хорошо знвете теорию, то вам просто не хватает практики .
У меня тоже так было, вроде смотрю решение задачи и понимаю все конструкции и как все устроено, но сам так не написать не могу. Пишите свой код, читайте и копируйте чужой. Так же тут смотрите вопросы, пытайтесь их решить ( по уровню знаний) и смотрите чужие решения.