Before you start your endevour, there are some things you should consider and investigate.
1) The CNC programming is usually the easiest part of the job. Understanding tooling, machining, workholding, and troubleshooting are equally important and usually more demanding.
2) What machines/controls do you have and are they all pretty much the same age? Your task will be complicated if you have a variety of ages or of control manufacturers. There is an ANSI standard (or was at one time at least) for G/M codes, but it only covered the more basic points. Room was always left for the control/machine manufacturer to customize, and, as controls evolved, there was more custimization and therfore more variety.
3) There are at least 4 means of part programming in existance. Two were previously listed -- G/M coding (manual programming) and CAD system based programming. In addition, there are "language" programming systems (APT, Compact II, NiCAM, etc.) These have fallen out of favor with the advent and improvement of CAD systems, but do have some advantages if your environment is a production environment rather than prototype/job shop. Finally, some controls offer on-board programming that is similar to a CAD based system. You will want to determine what systems you have available and concentrate on that one. Even if you have a higher level system, you should at least understand the G/M code.
4) KenBolen commented about variable type programming previously. If you have a control with the type of variable programming he discusses, you are a lucky man indeed! Newer controls are more likely to have this type of system. However, there are as many different systems for parametric programming as there are control manufacturers. Additionally, each generation of control could have a different system! Some earlier controls actually put parametric programming features into the G/M codes and earlier ones did not have it at all! Again, it is important to know your equipment and to look at the manuals that came with it. Usually, there is a Programmer's manual in addition to the Operator's manual which will give you more specific programming info.
Good Luck!