> And while it is easier to become good at coding than at singing - for professional purposes at least - I believe that the effect still holds.
I can't reconcile this with my own view of things but I think "for professional purposes at least" is doing a lot of work in your sentence and I get the feeling you intend to say "good enough" by adding that bit.
Most programmers are very bad at programming (and problem solving) and only if they were compared to absolute beginners with zero insight could they be said to be "good" (and most of that comes down to them at least knowing the names of maybe a couple of concepts, etc., which makes for at least a partial map of the knowledge space). Most of them will never become good at what they do either, but will stay middling because they basically just glue libraries together and learn surface level things over and over.
If all you've ever done is learn a language, a backend framework in that language, learn how to use SQL, learn JavaScript, learn a couple of frontend frameworks for JavaScript, you've just basically learned a bunch of trivia that at best could be considered table stakes for a certain part of the industry.
If you're not actually doing free form problem solving, implementing things from scratch, reading code you didn't have to read and building and reinforcing your own fundamentals in other ways you won't ever be a good programmer.
I've worked with people who've spent 10+ years in the industry only to be essentially useless without frameworks and libraries and it regularly showed in how poor their output was. It wasn't any better when they did have frameworks and libraries to use, but they could pretend it was because at least a solution was reached. The truth is that in most of those cases a much better version could've been reached by simply re-implementing only the parts that were needed, but these types of programmers don't have the capability to do so.