CNC Programming: Basics & Tutorial Textbook
The author started out machining by accident 15 years ago. He moved to go to school and his college roommate was in a machining program and worked in a machine shop. He looked for work and ended up working in the assembly department at the shop that his roommate worked in. One night a guy called in sick and they pulled him out of assembly and put him on a load and go machine.  From that day forward he soaked up everything. He asked questions about how the machines worked and what the overwhelming codes meant. 3 months later he was "The Man" on the swing-shift that he worked on, he was his roommates lead.  From there the shop foreman took him under his wing and within a couple months, he was setting up repeat parts. Within the first 2 years he double his hourly rate and graduated in the company to work on prototype parts, which did not entail programming, but extensive editing unproven programs. He left that company and went to another machine shop that was far less structured and had to self teach himself in order to survive. He started programming everything with a calculator and a print, eventually working on the night shift, he took everything they threw at him and made it work, which ended up learning CAD/CAM.  Today, he has programmed up to 5 axis indexable milling machines, user defined variable macros, multiple sub programming, and complex surfacing. He has programmed everything in the milling area of shops, short of Custom Macro B.