The Working Dead: Which IT Jobs Are Bound For Extinction? (infoworld.com)
Slashdot reader snydeq shares an InfoWorld article identifying "The Working Dead: IT Jobs Bound For Extinction." Here's some of its predictions.
- The president of one job leadership consultancy argues C and C++ coders will soon be as obsolete as Cobol programmers. "The entire world has gone to Java or .Net. You still find C++ coders in financial companies because their systems are built on that, but they're disappearing."
- A data scientist at Stack Overflow "says demand for PHP, WordPress, and LAMP skills are seeing a steady decline, while newer frameworks and languages like React, Angular, and Scala are on the rise."
- The CEO and co-founder of an anonymous virtual private network service says "The rise of Azure and the Linux takeover has put most Windows admins out of work. Many of my old colleagues have had to retrain for Linux or go into something else entirely."
- In addition, "Thanks to the massive migration to the cloud, listings for jobs that involve maintaining IT infrastructure, like network engineer or system administrator, are trending downward, notes Terence Chiu, vice president of careers site Indeed Prime."
- The CTO of the job site Ladders adds that Smalltalk, Flex, and Pascal "quickly went from being popular to being only useful for maintaining older systems. Engineers and programmers need to continually learn new languages, or they'll find themselves maintaining systems instead of creating new products."
- The president of Dice.com says "Right now, Java and Python are really hot. In five years they may not be... jobs are changing all the time, and that's a real pain point for tech professionals."
But the regional dean of Northeastern University-Silicon Valley has the glummest prediction of all. "If I were to look at a crystal ball, I don't think the world's going to need as many coders after 2020. Ninety percent of coding is taking some business specs and translating them into computer logic. That's really ripe for machine learning and low-end AI."
*cough* What a crock of shit.
Sendmail is like emacs: A nice operating system, but missing an editor and a MTA.
Nicely put.
Low-end AI? Translating user requirements into working software that actually meets their needs is in the same part of the AI difficulty list as cold fusion and solving world hunger.
If you can actually interpret the business specs without a human putting them into a formal language, you don't need to translate them into computer logic at all. By then the AI can just execute them anyway.
The moment you need that intermediary step involving a human and a formalised representation.. we call that programming.
I hate this fact that "java programmer" is considered by some people a different job than "C++ programmer". A good programmer should be able to learn a language in a month and become proficient in three months at most. Functional languages apart, all languages are more or less the same. It doesn't matter if your hammer has a red handle or a green one, as long as you know how to hammer.
But the regional dean of Northeastern University-Silicon Valley has the glummest prediction of all. "If I were to look at a crystal ball, I don't think the world's going to need as many coders after 2020. Ninety percent of coding is taking some business specs and translating them into computer logic. That's really ripe for machine learning and low-end AI."
Sounds like a fantastic opportunity to get rich—fleecing poor bastards who actually believe this dreck. Ninety percent of coding is indeed figuring out how to wedge some business wonk's hairbrained idea into the machine, but does this clown have any idea how broad a phrase "business specs" is? That's everything. I mean e-v-e-r-y-t-h-i-n-g.
"Make my MRI machine work." Business spec. "Make my combine harvester work." Business spec. "Make my search engine work." Business spec. "Make my toy robot work." Business spec. "Present as many goddamned ad impressions as physically possible." Business spec. He's trying to claim that do-what-I-mean-not-what-I-say computers are just around the corner, readily (and cheaply) available. HA. No. You might, MIGHT be able to train a neural net to do a piece of one of those tasks. All of them? And all parts? Not even close. Not in three years.
I'm sure nVidia's new Titan Xp is a marvelous thing, with its dedicated tensor accelerator hardware, but it's not do-what-I-mean hardware. It was just released last month, which means nVidia's next card is a year away. Does anybody think it's going to be do-what-I-mean hardware? No. How about the generation after that? Maybe another node shrink? Still no. How about three generations from now? If historical Titan benchmarks are anything to go by, it'll be twice as fast as a Titan Xp. It takes nVidia about 36 months to double performance. Is it going to be able to do-what-you-mean? Mmm, no.
The world is going to need just as many coders in three years as it does now. It will probably need more. The coming wave of automation is not going to be self-programming, but it is coming. Somebody is going to have to write all that code. And baby all of those neural nets.
The president of one job leadership consultancy argues C and C++ coders will soon be as obsolete as Cobol programmers. "The entire world has gone to Java or .Net. You still find C++ coders in financial companies because their systems are built on that, but they're disappearing."
The entire world has done what now? I work in the computer vision/data processing world. It's all written in C++ on the back end, often with python driving code on the front. Currently C++ is the only language with the expressivity, speed and resource frugalness required for the job.
I've also worked on deep embedded stuff. Hell, some of the compilers don't even do C++ (looking at YOU IAR C/C++), so I wrote it in C. Otherwise I'd use C++, because there aren't any other languages with the resource control which will do the job.
Lots of other stuff seems to run on the browser. All major browsers are implemented in C++ because... well you get the idea. About the only thing which could potentially displace C and C++ is Rust since it's basically the C and C++ model but with a syntax that excludes many common bugs. But it's a way from being there yet.
A data scientist at Stack Overflow "says demand for PHP, WordPress, and LAMP skills are seeing a steady decline, while newer frameworks and languages like React, Angular, and Scala are on the rise."
There's a difference between decline and fall. The displacement is certainly happening, but you can't replace WordPress with Angular and Scala because one is an entire CMS, the other are a library and language. That's not the same thing.
SJW n. One who posts facts.
Science and engineering continue to move towards doing more simulations. Everything from chemical simulations to flow simulations. The more accurate these simulations are the more computationally intensive they get but also the more money you can make since you have to do fewer real world experiments to isolate the true running conditions and the simulations can also be used as control systems allowing you to operate closer to the true danger area.
In most chemical plants reactions are run FAR from the actual danger points in terms of product yield, purity, reaction speed etc because things like PID controllers just can't adapt to how chemical systems really work.
The problem is that for this kind of work java and .net are SLOW. They can easily but 100x to 1000x slower than a program written in C, C++ or Fortran. The tooling to support High Performance Computing type applications really doesn't exist outside of C, C++ and Fortran. They have the most advanced optimizing compilers, profilers, debuggers, libraries etc. What I often see is something like MATLAB for visualization, Python for command and control and C/C++/Fortran for the actual simulation running on clusters.
These newer microchips that have more cores per chip are only going to continue to push things in that direction. It is easy to gain a little scaling with threads but if you want to really get a program to run fast you need to either have direct memory control or you would need a far more efficient runtime than has ever been created so far.
This may come as a surprise but almost no normal software uses more than about 1% of a cpu's capabilities. Even most games are 5%. You can see this when you run them under a good profiler like VTune. Sure the CPU is technically busy running the software but it is mostly just waiting for data and working with unoptimized data structures. To get over this barrier you need to do thousands of small changes to your program.
If you need a program to run FAST you need to eliminate false sharing. If you have two threads write to different indexes in an array but the items are too close to each other in memory they could be sitting on the same cache line and this will cause the cores to have to resync and retry calculations based on which one committed first. The more cores you add the worse this problem gets. I have worked on a program that went from 30 seconds on 128 cores to 0.03 seconds on 128 cores by removing all the false sharing.
You also need fine grained control over parallelization. You need to be able to decide that a function should only be parallelized and to what degree it should be parallelized based on the amount of data being handed into that function. That is why things like TBB and OpenMP allow those to be controlled at runtime. If you make a parallel version of quicksort and run each division in parallel recursively you reach a point where you are creating parallel tasks that are far too small and have too much overhead. This means you need to understand how many cpu cycles an operation normally takes and can parallelize based on this information.
At this point I don't see any other languages really moving in to really compete with C and C++. Sure there are languages that do a lot of the high level stuff that used to be done with C and C++ but the world has also moved to harder problems and C and C++ have moved onto those harder problems also. This is a problem you can't just buy more hardware to fix. Many of these simulations take days to run in highly optimized C and C++ code and the java/.net versions would take a year to run. The time alone would kill the programs usefulness but forget ever optimizing your system using the simulation.
Computer modeling for biotech drug manufacturing is HARD!
By the way, I'm looking forward to the days when C/C++ programmers will be rare ... And expensive !
The year 2038 will be our year!
"If you don't hire me to inspect your C code for time_t usage, your IoT toaster oven will go berserk, and kill and eat your grandmother!"
"Oh, look! A time_t field in a structure that gets passed over only God knows where, and gets cast haphazardly as a pointer throughout the code! How cute!"
Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
C and C++ aren't going anywhere. Everything from operating system kernels to operating theater robots are programmed in C and/or C++.
I count at least a dozen devices in my apartment that contain some sort of microprocessor and I would bet money that all of them are using C and/or C++ in some form as part of their software.
Anyone who thinks C or C++ is going away anytime soon is either a clueless idiot or has some vested interest in pushing Java and .NET.
Still employed.
"You still find COBOL coders in financial companies because their systems are built on that"
Fixed that for you. And those guys make a pretty bunch, for being obsolete.
To Terminate, or not to Terminate, that's the question - SCSIROB
Suppose you assigned an AI to observe which user stories go in, and what code comes out as a result. How many programs would you have to complete before the AI is able to take over a majority of the work involved in building an application? {...} I'd honestly be surprised if they aren't already doing something like this.
Yes it's done. Not by google, but by others.
The short answer is that the deep neural nets produce texts that looks like code on the first glance, but doesn't even compile.
e.g.: The variables aren't even properly declared. it can write a formula (like "a = b + c")
but isn't even able to realise the link with the declaration of the variable (that the "int a;" 10 lines above is linked to the "a").
The problem is the size and complexity of modern AI.
The size of the context they can consider,
the amount of abstract models hidden behind the code, etc.
Currently what AI has managed to recreate with deep neural nets, is on the level of WW2's Pigeon guided bombs.
i.e.: leverage some image recognition net and similar basic tasks, and string a few together.
The complexity required to write actual code is several orders of magnitude bigger.
Even some humans can't do it reliably, and you hope to do it with what currently is the equivalent of the visual cortex sub-part of bird's brain.
Good luck with that.
Before achieving that we need :
- more raw processing power (you'll need way much more neurons that currently used in today's deep neural nets)
- advances in science to better understand how to combine together tons of such "function specific nets" to build a higher level of AI.
(the same way a brain is a sum of lot of small specific region, each linked to a higher level/more abstract associative layer).
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
These days, everything is a computer. Your stove, your car, your cable modem, your TV, all are computers. They all have microcontrollers or microprocessors in them to handle various functions. It is cheaper and easier than doing discrete dedicated logic, even for simple things. Well, those need software of course and it turns out C/C++ are the thing that gets used a lot because you have little memory and power to work with. Pennies count in mass production and the smaller a CU, RAM, flash, etc you can get away with the better, but that means the code needs to be small. You aren't loading up Windows and running .NET on a microwave, you are getting a little PIC24 or something and putting on some highly efficient, directed code.
Because of all these embedded devices, there's a lot of market for this kind of thing, it just isn't the trendy shit you see on hip "Web 3.0" sites. It gets done by people with engineering backgrounds at big companies.
Also, speaking of small embedded computers, regular computers themselves have tons of computers in them. Crack open a desktop and you find a lot of chips in there, many of them computers in their own right. Your NIC is a computer. A simple one to be sure, but it is a processor that runs code, it is not all hard wired. Your SSD is a computer, it has a little chip (ARM usually) that runs the code it needs to do its job. Again, someone is writing the code for all that and that code is not being written in Java.
Even when you have a platform that at a high level runs Java/.NET/whatever it had a bunch of lower level code on it.
Seriously, whilst C++ (and Fortran) are great to do the heavy computational lifting, most of that heavy lifting that goes on in computational engines can be isolated in, and accessed from, a specialised library.
After that you really don't need C++ anymore.
In fact you'll realise big productivity (and reliability) gains by *not* coding e.g. business logic or HMI's in C++. Use a script language instead and call those C++ libraries when you know exactly what you want done. I daresay that this is why languages like Python are so popular.
In most applications that business logic and HMI fiddling is 95% of the code once you put the heavy computations inside a library call.
The problem for C++ "coders" is that you don't want a load of mediocre C++ coders to build a library.
Instead you want computational scientists and domain specialists to specify the algorithms, supported by a software engineer for systems design plus one or two really good C++ programmers who can both understand the algorithms and what they do, and who just so happen to be able to implement the design plus algorithms in high-quality, robust, efficient, and elegant code.
Between changes in the standard headers, changes in keywords (without provisions to disable them for files written to older standards) Changes in API and ABI, there is a huge clusterfuck of underdocumented shortcomings in C/C++ that are mostly there because of standard ego-stroking. Many of which have no excuse for having shown up in the past decade given that most of them manifest in open source software that could have been tested against in an automated fashion to ensure that new changes to the standard didn't break older code.
I agree, for C++. Whenever I have breakages after upgrades, it's almost always C++. Programs have to be recompiled, because they've imported and extended templates that they themselves weren't in charge of. Even if the APIs remain the same, there are still breakages.
For C, there are far fewer problems. Yes, someone might change an API, but the general consensus is to not do that, but provide new functions. New standards happen, but only affect the source, and not whether binaries continue to work, like can be the case for C++.
C++ works well where you can control or dictate the runtime system, so it matches the developer toolchain. That's great for embedded-like systems where you can change the entire OS with upgrades, or long term stable systems like RHEL, where versions stay put for 10 years with only bugfix backports. But when binaries break after an OS update, they're almost always C++ ones. From big companies too.
"Thanks to the massive migration to the cloud, listings for jobs that involve maintaining IT infrastructure, like network engineer or system administrator, are trending downward"
There are many businesses that will never be in the cloud. Many companies are not comfortable putting their data on someone else's computer. Also some companies are legally required to keep their data local.
Finally, even businesses that have embraced the cloud (my organization is one of those) still have local infrastructure that needs support - switches, firewalls, telephones, security systems, building access systems - etc. Those simply can not be put in the cloud - the devices need to be local - and those devices still need to be managed.