Manual vs CNC machining as an analogy for manual vs AI coding
The future of programming is a hot topic these days. Opinions range from those who think AI will replace all programmers within 12 months to those who think AI is just a fad and will go away, and literally everything in between.
The truth is obviously going to be between those two extremes, but with new tools coming out every day it’s hard to find one’s footing in these shifting sands.
In these situations I like looking at other industries to gain some sense of perspective. For the first extreme, consider the fact that it took decades for telephone switchboard operators to go extinct. So even if AI could replace a programmer, which, well let’s just say that such a notion is “less obvious” than the notion that an automated switiching system could replace a switchboard operator, I think it will also take many years if not decades to replace programmers.
For the other extreme I think the machining industry offers an interesting, although imperfect, comparison. Manual milling machines and lathes have largely been overtaken by Computer Numerically Controlled (CNC) machines. These machines are incredible pieces of engineering. They can move in steps of 0.0001”. A human hair is about 0.002”, so these machines can take 20 steps across a human hair!
And yet manual milling machines still exist. They’re great for training, and for having in your garage to turn out quick, simple parts. But at an industrial level, it’s all CNC machines.
And what about the operators? I would say there were basically 3 options for someone trained in manual machining in this new world of CNC machines. Option 1 is to work a place that’s just using CNC machines as part of an assembly line to churn out parts. The programs these machines are running have been tuned and optimized, and so the option 1 operator is really just babysitting the machine, putting material in, taking finished parts out, replacing a broken tool, etc. A single option 1 operator could probably monitor multiple machines, so there’s obvious efficiency gains there in terms of being able to employ less people.
Option 2 would be to work at some sort of prototype shop as a CNC operator. This will require a more detailed knowledge of machining, because this is where you might optimize a CNC program to run more quickly or reduce stress on the tools. To do this you need to know a little more about how different tools interact with different materials so you can set the “speeds and feeds” appropriately, so you’re a little more involved with the machine, despite the fact that you’re not manually turning the knobs like you used to with a manual machine.
Option 3 is to design the tool paths. This will involve much more detailed knowledge of the different tools. When do you use a 1/4” end mill vs a 1’8” ball end mill? Some of this, perhaps a lot of it, can be automated, but it’s really hard to automate fully, and someone with deep experience of machining can give feedback on the design in terms of what features might make something easier or cheaper to machine. This is the place where someone can notice that a part was made in such a way as to require an expensive and complicated 5-axis machine, but a simple change can bring it down a simpler 3-axis operation.
So how does this relate to AI assisted coding? Well, it’s an imperfect analogy, but the general idea is that all 3 options require some base level of machining knowledge, and from there they require skill sets that are simply *different* from that of a manual machinist. So for software I think it will always require some basic knowledge about computers and programming, but from there it’s going to require a new knowledge set which we’re still developing. Just as the software required for making tool paths went through a maturation period, during which falling back to manual machining may have been more expedient, I think we’re seeing the same thing with AI-assisted coding tools.
And so maybe the future of coding looks like the current world of machining. We still need manual coding to teach us the basics, but from there instead of honing our skills, we learn new skills about how to operate these more sophisticated tools.