There are two sets of attributes, the first (commonly called "skill" but perhaps better called "technique") describes how well you can carry out the "motor" activities of your job. The other, and more important in critical circumstances, is "judgement".
To describe it by analogy with driving, in the beginning you concentrate on developing experience in operating the vehicle, eventually this becomes more or less automatic. People call this skill and they are wrong, it is a set of learnt reflexes. More important is judgement, knowing how to maintain road awareness, knowing when and how to overtake, when to speed up and when to slow down etc, etc. NB when people talk about the dangers of drinking and driving it is impaired judgement they are mostly talking about (although there is some impaired skill such as poor reaction times which stops them getting out of problems their degraded judgement has got them into).
Judgement comes with experience and follows skill acquisition. With surgeons you would hope they know how to make a cut (they have technique). What you really want is someone who knows where and what to cut (they have judgement).
And yes, all of this applies to programming and systems design.