Existe uma certa diferença entre resolver esses problemas em plataformas de desafios por exemplo, e resolver os problemas dentro de projetos ali no dia a dia. Quase sempre os problemas ligados a essas plataformas de desafios vão estar relacionados a estrutura de dados, algoritmos e um pensamento mais matemático com uma lógica mais abstrata, problemas dentro de projetos ou problemas do dia a dia de projetos geralmente estão ligados a outras coisas também como ferramentas e até quando utilizar uma estrutura de dados/algoritmo para resolver determinado problema. Saber resolver esses problemas e desafios vai te trazer uma fluência na linguagem que vai te ajudar a conseguir resolver outros tipos de problemas de forma mais rápida talvez, mas não necessáriamente vai te fazer ficar bom em programação. Se você já consegue fazer um CRUD básico sozinho aplicando os conceitos de polimorfismo arriscando ali um pouco de boas práticas sem precisar de um apoio, vídeos no yt ou olhando alguém fazer isso em cursos por exemplo, já é um indicador de evolução, um CRUD tá mais próximo do dia a dia do que um exercício dentro do leetcode.
Já parou para se perguntar o porque você quer ficar bom em resolver esses exercícios, desses sites?
Eu não me preocuparia em levar como indicador do meu aprendizado e da minha evolução a quantidade de problemas que consigo resolver no leetcode ou minha pontuação, o domínio da lógica de programação aquela que a gente usa no dia a dia vem com o tempo e quantidade de tempo que estamos envolvidos com isso.
Dê uma refletida e vê se o que te trás problemas não pode ser interpretar as regras de negócios e transformá-las em código e como de fato ser bom em resolver esses exercícios de plataformas vai te ajudar nisso p/ mim modelar alguns bancos de dados pode ser muito mais hard do que resolver esses exercícios de lógica nessas plataformas.
Espero ajudar em algo. Boa sorte.