I didn't read all of the responses, so I apologize if I mimic someone else...
You need to have a fundimental understanding of code and what it does at the machine. Most of the good operators can read code in real time and tell you what is going to happen.
Finger programming at the machine is dead (or should be). Yes there are some people that are reasonably efficient, and some machines that are more conducive to finger cam... but in today's age I never see anything other than the most basic part that can't be modeled and programmed quicker on a computer than programmed at the machine (and the machine can still be running the current job while you are programming the new part). You will get some anecdotal evidence to the contrary, and it may be applicable in certain situations, but by and large CAD CAM is significantly faster.
That being said, the computer side of programming requires a different type of diligence. You need to understand code so you can manipulate the POST until it outputs the exact code you need 100% of the time. You should never edit a program at the machine. If you need to edit to make it work exactly the way you want it to, there is a bug in the software or you have failed to make the post correct. No ifs ands or buts. This can be an incredibly laborous process that can take months to get perfect.
You also need to be fast at CAD and fast at programming. Some people struggle with software. They can't remember where the icons are or what they do. They may not have enough time on the system or not have the mental capacity to do it. It takes repition and practice. I've been running CAD CAM systems fulltime for thirty years, and I'm fast. BUT, I'm learning a new program right now and I am going through tutorials, taking notes and memorizing boring shit. I feel stupid and feel like I am wasting time, but I know that it probably takes me 2000 hours of use on a new platform to consider myself competent (not that all of that time will be tutorials; 90% will be on the job training).
(In addition to having my own machining company, I also go into other people's shops and help them get things moving when they are stymied on programming/ setup; therefore I may have a different perspective than other people.)