Yes it's important to know the capabilites of your language and deployment stack -- but that just requires study, which in my mind is different from practice. I've never found that coding well required the sort of intense dedication that learning to play an instrument well, or play a sport well, requires.
I agree. Which is maybe why Stackoverflow solves so many problems for a developer. You know what you want to do, you know how you want to do it. But you're stuck because you can't make sense of an API or don't know where to look for the functions you need.
But how could we use "deliberate practice" to improve coding? If we assume coding to stand for solving problems with code, then it seems we'd need to deliberately practice problem solving.
It's possible to measure problem solving skills, and push those skills outside of a comfort zone. But it's not as straightforward as measurement, "I'll play this passage without mistakes 3 times in a row", or "I'll place this golf ball on the fairway 5 times" and adjusting performance based on feedback.
You can also do katas whether it's practicing TDD or setting up a new instance of a project in whatever framework you're using. I also find katas useful for keeping familiar with syntax of languages that I don't use a lot, which is useful if you do a lot of language switching.
Maybe practicing this allows you to get into the zone more easily since you won't be thinking about the mechanics. Getting into the zone more easily can lead to getting better and deeper understanding of the material.
A guitar player practices repetitive drills that aren't creative to help improve.
Essentially I wonder if the problem is that in some things we learn (eg coding) there isn't really a defined "ladder" that allows someone to practise harder and harder things in a deliberate way.