...highly skilled manufacturing jobs — the ones that require people who know how to run the computer that runs the machine. --
Thinking meta for a moment here: How far does this concept go of machine process. Could we program machines that can run the computers that run the machines? And how about machines that program those machines?
No we can't. I base that on being a software architect who sat through endless useless marketing meetings from IBM & their ilk promising the imminent advent of Doodleware (have a business person with domain knowledge & no technical skills draw a process on this monkey-easy UI tool & we'll generate a working application from it.)
I maintain that being a programmer will still be a highly paid skill in demand for decades to come for one simple reason : You can't bullshit a computer. You can't sweet-talk a machine into accepting your algorithm because of your great personality , looks or any other intangible except for knowing what you're doing.
if you want a parallel, look no further than the sorry state of machine translation & that despite the enormous amounts of datasets they've been playing with. Human intelligence & judgement, even on a very very narrowed use case is not something computers are close to replicate.
Right, the biggest barrier to creating applications isn't programming, per se, it's fully understanding all the logical relationships, dependencies, performance characteristics, and edge cases of the desired features. Compared to getting all this right, writing code is a breeze.
>it's fully understanding all the logical relationships, dependencies, performance characteristics, and edge cases of the desired features.
That IS programming. Don't confuse programming with typing. Programming means understanding a problem and coming up with a precise, logically valid solution.
To be fair, in CNC milling, it is actually possible and common to design your part in a CAD software, and then have the software write the actual instructions for the machine. But of course this still requires a lot of technical knowledge.
In a way it's only as "meta" as it is to have a compiler generate your assembler code.
This might remain true as long as human-level intelligence is the exclusive domain of humans.
And that's probably at least for decades to come. But if someone develops a strong AI, this goes out the window. Probably most familiar forms of employment along with it, possibly the entire idea of a society where the labor market is a primary form of economic participation.
Personally, I don't see any technology on the current landscape or the horizon that I think is likely to produce strong AI within decades, maybe even a century. Wouldn't rule it out, though.
I dunno. Perl does a pretty good job of "do what I mean" style programming. Sure, not every hard problem can be solved automatically, but a lot of tasks can be accomplished by a short script or banging keywords into Google, etc.
You still need to tell Perl your intent, laid out in a very specific way. by the time you're ready to write your code, you've already solved 99.9999 % of the problem at hand. you're severely underestimating your smarts.
TL;DR: Probably not on legacy industrial equipment. Or legacy people. But maybe if you start from scratch and only involve computers.
I was given a good piece of advice when I started work: "A process engineer's job is to make themselves obsolete." I've striven to make sure that I did everything I could to make sure I wasn't needed anymore.
And I'm happy to say that the processes will keep me employed for as long as I'm willing. Not from any self-serving malice, but rather that in the end it's terribly messy. The sheer inelegance of industrial manufacturing seems to defy strong automation at the meta-level. And not just because the machines are all only halfway obsolete, new, deprecated, upgraded, documented, up-kept, cleaned, and run (halfway to spec).
It's because to a computer, this mess quickly degrades into special cases. Lots of them. There actually are some shockingly clever software packages out there capable of the early stages of what you're describing, and - this is the kicker - they all require specialized engineering support to create, install, train, and use. The end product can be handled by a floor worker or management, but at some point you've got to explain the situation to a computer somehow, and that ends up being as complicated as programming.
For a much better written punchline, I'll defer to the short story Profession by Asimov [1]. I think it's cynical to think we'll never be able to solve the 'original thought' problem, but I also think it's easy to underestimate it. Things really are different today than 30 years ago, so perhaps a few more iterations will lead to tape-machines that can program the tape-machine programmer tape-machines. [2]
[2] Perhaps the worst part is we sorta already have this. There was just a post on the LLVM [3], which discussed how a computer translated and optimized a division command into machine code. That used to take a lot of work, and it took Real Programmers to optimize that code before this sort of automation. So it's not inconceivable that your ideal comes true. But I am cynical enough to think sami36 is right [4]: Doodleware is past the horizon. But computers that can talk to computers is probably in sight.
> Could we program machines that can run the computers that run the machines? And how about machines that program those machines?
Given the history of progressive rounds of optimism and failure on this idea, so far: no. Before you can replace humans, you need to ... um ... replace humans.
However, the general principle of progressively more specialised machinery and skills is not new. It's called "the division of labour"; it really ought to be called "the specialisation of process" or perhaps "the specialisation of outputs", given that capital too becomes progressively more specialised to particular tasks.
People have run software that manage mechanical turk campaigns that manage people performing tasks such as filling out online forms to create email accounts and such....
Thinking meta for a moment here: How far does this concept go of machine process. Could we program machines that can run the computers that run the machines? And how about machines that program those machines?
One of my favorite Twilight Zone episodes : http://en.wikipedia.org/wiki/The_Brain_Center_at_Whipple%27s