1. Get a copy of Machinery’s Handbook and compare it to the information in a tooling catalog
The folks on the ‘Zone were adamant about the importance of Machinery’s Handbook. I have one, in fact, I have 2 different editions of Machinery’s Handbook and one edition of another handbook, and I have a confession to make: I refer to them very seldom. I might not refer to them at all except for my work on the G-Wizard Machinist’s Calculator which includes a lot of information I cross check there. If I were stuck on a dessert island with no Internet collection, I would insist on a Machinery’s Handbook to help me in my machine tasks. But, as it stands, I’m a big believer in having Internet access in the shop because I find I use it constantly to look up all sorts of things. Therefore, I am modifying this one slightly to read that you should get a copy of Machinery’s Handbook, but then grab a tooling catalog and compare the information in the two. I suggest this for a couple of reasons. First, you’ll learn your way around the handbook as well as a tooling catalog (they’re all pretty similar) more quickly with a task like this. Get some endmill manufacturer’s pdf catalog, for example. I’m not going to give you a link because you also need to know how to find stuff like that on Google. Just be sure you pick one from one of the big brands like Sandvik or Kennametal because those catalogs have tons of valuable technical information on how to get the best performance out of the tools.
The second thing you will learn by comparing the two is that except for things that are standards, like screw thread specifications, the numbers in any one source are not sacrosanct. There is no single source of truth for what the surface speed for a carbide endmill in 6061 aluminum should be. Machinery’s Handbook will have one value (BTW, it’s pretty dated compared to the tooling folks!) and almost every tooling manufacturer will have their own values. They will be reasonably close, but sometimes you’ll see things that make your jaw drop. Check out some of the really expensive aerospace tooling and just see how much more performance they claim to get from those fancy endmills.
Being able to lay hands on information like this is critical to the machinist. Thumbing through Tooling Catalogs or Machinery’s Handbook is a good way to learn and absorb all sorts of useful facts and trivia. One of my motivations for creating the G-Wizard Calculator is I was coming across so many great rules of thumb (like Dapra’s information on how to know whether you should use climb or conventional milling) that I couldn’t keep up with all of them. So I started sticking them into software so I wouldn’t have to remember so much. You can’t put everything in software and the software won’t tell you the reason why. You can learn a lot from tooling catalogs because they want to teach you to be as successful as possible with their tooling.
2. Purchase and read Smid’s books on CNC Programming, including the Fanuc Macro books
These books, together with the Fanuc and Mach3 programming books practically live on my night stand I go through them so much in the course of building the G-Wizard G-Code Editor / Simulator. To someone who has programmed in other languages, g-code seems cumbersome and overly cryptic at first. But you soon learn it works pretty darned well. Much better than you’d expect. Smid’s books are the bibles on how to write g-code by hand.
3. Read Machine Shop Trade Secrets and Metalworking Sink or Swim
More books. Sorry, but unless you have the luxury of working with a real live experienced machinist, you don’t even know what you don’t know yet. The art and skills of the Machinist are not trivial. What I like about these two books is they’re filled with the kind of non-textbook stuff you could only learn from another machinist about how to do things. Both books are excellent, but Metalworking Sink or Swim is my favorite by a small margin.
4. Perfect your ability to “cut air”. Practice being able to restart a program.
These two skills involve doing something g-code programs are not really designed to do. Air cutting means setting up your part zero so the tool is well above the workpiece, table, and any vises or fixtures. It lets you watch a program execute a bit so you can see if all looks right. It’s a useful thing to do with a new program. Being able to restart a program is another useful skill. Inevitably, you’ll run a program and something will go wrong in the middle. You’ll stop the program to fix it. How do you get started running again after fixing the problem without restarting the whole thing from the beginning?
Mastering these things is just another aspect of mastering your controller and machine.
5. Get serious about understanding g-code: take our tutorial, write some g-code by hand, and get a copy of our G-Wizard Editor/Simulator
You got Smid’s books. I know you’re not going to read them cover to cover and do all the exercises if you’re anything like me even though I said you should, LOL. Instead you’ll skim topics and maybe zero in on a few things as needed. You need to do something systematic to crank up your knowledge of g-code. If it isn’t doing all Smid’s exercises, you might instead prefer to take our G-Code Tutorial. Knock off 1 or 2 chapters a week or some such. Take it on yourself to write a g-code program from scratch for some part you’d like to make, and make the part. Get a copy of our G-Wizard G-Code Editor/Simulator–it’s free while it’s in beta and it’ll have a 30 day trial thereafter. Using a g-code simulator, you can sit in your armchair and play with g-codes. Try using it like an etch-a-sketch. It’ll be awkward at first to make the g-code describe the part you want to make. Stick to it. You’ll learn a lot!
6. Make a piece of tooling you’ll use over and over again
There’s nothing like making something useful that’ll be banging around your shop. The first useful thing I made as a manual machinist was a tailstock die holder for threading things. It was dead simple, not particularly beautiful, but it worked. One other thing: draw the plans yourself. Don’t go copy someone else’s plans. As a machinist, you should be able to draw some plans for a simple part and make the part. I don’t care if you sketch it or use a CAD program, but design your own tool.
What to build? Lots of things might be useful. It’s a touch ambitious, but a vacuum table would be sweet. A friend recently completed one based on my blog post and it sure came out nice. If you don’t want to do something that ambitious, consider some work holding accessory, or perhaps a measuring gizmo. You could make your own traminator if you have any need to tram your mill. Another one that’s ambitious, but not as hard as it looks is a powered drawbar.
7. Try some stainless steel, alloy steel, or other “difficult” material
For the first article, I stressed the need to avoid difficult materials. Assuming you have reached a level of proficiency with easier materials, its time you made a part out of something more difficult. Whether or not you succeed, you will learn something about why these materials are harder to work with. Ideally you’ll stick with it until you figure out how to deal with the material. I’m not suggesting you get too crazy and fire up an Inconel job, but try some stainless or some sort of alloy steel. It may surprise you. I’ve made a fair number of parts from 4140 steel, and it machines really nicely–better than a lot of the cheaper softer steels. That’d be a good starter, but be sure to try some stainless too. You need to experience and overcome work hardening to understand it.
8. Make 10 identical parts to a tolerance
I love doing this. I first had the opportunity to make a bunch of identical parts when I joined a team build over at the HMEM forums. I had to make 10 little connecting rods for a steam engine. They had to be made to certain tolerances or they wouldn’t fit with the parts other people were making. When you make one part, you fudge all over the place as a beginner. You make a mistake, then you compensate for it, yada, yada. It’s more art than skill and not so artsy at that. When you make a bunch of the same thing, you have a better opportunity to learn to do it right and to do it well. Tolerances force you to master the machine instead of changing the part. Fixturing starts to be worth looking into and really thinking hard about the order of operations matters. There are lots of excuses to make a bunch of identical parts. Decide to give them away as gifts, for example. Making 10 Turner’s Cubes all to a tolerance of 0.001″ would be an excellent learning experience and they make excellent gifts.
9. Set up a Tool Table and do tool changes
In our first installment of 10 things, we were individually dealing with tool lengths by doing touch offs. You can go pretty far this way, but it isn’t a very efficient way to work. Learn how to set up your tool table so you can measure your tools in advance, put the data into the table, and then tool changes become faster and easier even without a tool changer.
10. Learn how to work with offsets: Work, Wear, and Geometry
Offsets are your Swiss Army Knife of tweaks you can perform on your programs. Let’s say you’re trying to make those 10 parts to a tolerance. You’ve gotten g-code from your CAM program, you fire it up, and low and behold some dimension is just not quite right. In fact, it is not right by almost the same amount when you try a second part. What to do? Run over to the CAM software and change the g-code? Well you could, but once you get used to it, it’s a lot quicker and easier to use your controller’s various offsets to make a change. When you consider the effects of changing temperature on material expansion, or wear on the tooling changing the effective diameter of an endmill, not to mention endmills that aren’t very close to what they’re advertised to be (you’ll see!) and you want to be able to deal with this stuff without running back and changing the g-code every time.
Work offsets are great too because they make it easy to run the same g-code to make more than one part. Say you’ve got two vises on your table. Assign a work offset to each. Now you can run the same g-code and use each work offset and you can make 2 parts without having to touch the machine.
Are there 10 more things?
To be honest, there’s way more than 10. I could probably do an article like this every month for a year without running out of ideas for things beginners should learn or try. The art of CNC Machining is a deep subject. I will probably run some more articles like this, but I’m not signing up for when. Meanwhile, you’ve got 20 things now to work on. If you master all 20, I guarantee you’ll have learned a lot, you’ll be a lot more confident machinist, and you’ll be a lot faster and more productive.
Git ‘er done!
Like what you read on CNCCookbook?
Join 100,000+ CNC'ers! Get our latest blog posts delivered straight to your email inbox once a week for free. Plus, we’ll give you access to some great CNC reference materials including:
- Our Big List of over 200 CNC Tips and Techniques
- Our Free GCode Programming Basics Course
- And more!
Just enter your name and email address below:
100% Privacy: We will never Spam you!

Bob is responsible for the development and implementation of the popular G-Wizard CNC Software. Bob is also the founder of CNCCookbook, the largest CNC-related blog on the Internet.
I strongly recommend following the advice to read sink or swim, Tom Lipton’s advice and experience is SPOT on
Hi Bob,
Thanks for your great series of blogs on CNC machining. On this one I need to comment, as you present CNC machining as something difficult: much reading and training needed before it can can be applied successfully.
This may be true for the thorough approach, where a CNC user is able to edit his/her own CNC code: CNC specialist stuff.
What you do not mention is that an alternative approach is possible: use a friendly CAM system and do not mind about G-codes. Do you ever edit the files that MS Word sends to your printer ? Most users don’t. We offer CAM software and desktop CNC milling machines, and most of our users never edit the G-code file, nor are they interested in what such file looks like. We call this “CNC machining for non-machinists”. Almost all in non-metals, which makes it much easier of course.
Your approach does offer certain advantages, which I do not deny. My point is just that the claim that “beginning CNC milling users need to know all this to succeed” is not correct.
Look forward to hearing your comment.
Lex.
Lex, it sure sounds good on paper, and being associated with the CAM industry, I can’t blame you for trying to make the point. Who wouldn’t want to be able to eliminate as much learning as possible so they could get on with making chips?
In practice, it doesn’t work so easily as described.
You will notice I put the CAM programs in the first 10 things to learn. There is no question you’ll want CAM in your arsenal. But if you can’t at least read g-code, you’re going to be hampered in so many ways you’ll never reach your full potential.
Do I edit the files Word sends to my printer? No I don’t. But I sure do edit the photos that come from my digital camera before I print them or post them to the blog. We can play the analogy game all day long, but why bother? Let’s get right into g-code. Why learn it?
Here are some very simple reasons:
1. CAM programs have bugs. All of them do, because they’re non-trivial. MS Word certainly has bugs too. You need to be able to work around them rather than being a prisoner to trial and error.
2. Things happen on the road from CAM to making chips. Despite our best intentions, we may discover all sorts of things not contemplated by CAM that make our programs fail. Could be as simple as breaking a cutter. Do we really want to have to go all the way back through changing the CAM program every time something like this happens? Or would it be better to understand g-code well enough to give it a quick tweak and keep going? How about on a 3D profiling job that has run for hours and has more hours yet to run?
3. There are lots of machining activities that don’t need the complexity of creating a drawing and running a CAM program against it. They’re very easy to do. Drill a hole here. Face this surface so it is flat. Put a slot there. Manual machinists have done it for ages, and they like to say they can do this stuff faster than a CNC machinist because of a perceived need to create drawings and run CAM for every little thing. If you know g-code even just a little bit, your CNC just became the world’s greatest manual machine for quick jobs. It has a DRO and a power feed on every axis.
The truth is, g-code is really pretty simple to learn. You don’t have to be familiar with all the complexities to become much more productive. But hey, don’t take my word for it. Take a look at a survey we did on g-code familiarity:
https://www.cnccookbook.com/cnc-programming-g-code/
I was shocked to find over 80% of our readership saying they have some familiarity with g-code. Obviously a lot of machinists think it’s pretty important and found it easy enough that a very large proportion even go beyond tweaking and are writing whole g-code programs.
Give it a try, Lex. That link is the start page for our G-Code Tutorial. It’s bite-sized and easy to go through the lessons. Just do one a week and you’ll be confidently moving along in g-code in no time.
Cheers,
BW
Hi Bob,
Thanks for your extensive reply to my post.
While I do fully agree with your three reasons why learning G-code is an advantage, you are missing my point. And that point is that it is very well possible to successfully use CNC machining without knowing G-codes. The suggestion in your original post is that one absolutely needs to know G-codes before starting with CNC. Such claim will scare off many potential users, which would be a pity as it is not true.
You state that if you can’t at least read g-code … you’ll never reach your full potential.
That will be true, however successful use nevertheless is very well possible.
I will not bother you with any other analogy, still for most things in my life I do not reach my full potential. It is absolutely impossible to reach full potential for everything you do: you have to choose. So for most activities I am very happy when I can achieve what I need.
Many CNC users can create the parts they need without knowing any CNC code. Perhaps not in the most efficient way, however they don’t care as they just need to have that part. See some nice results on the Gallery at http://www.deskproto.com Sorry for this self-promotion – this is meant to illustrate my point.
Lex.
Lex, I didn’t miss your point, I just didn’t agree with it. Relax and find something more constructive to comment on.