This is a debate that we're having in our team. I believe that if we replace "AI" with software to make it easier to less technical people to make things, then this is already happening. The counter argument is that even more work will be created for developers to maintain these kinds of applications because, by virtue of being generated code that comes from different levels of abstractions, these applications will be too complex or buggy to be extended or maintained by the layperson.
As a developer, if you let AI take over your job, IMO, that's your fault. Don't blame AI. The thing is, some tasks AI cannot efficiently perform. For example, say I have an amazing AI and I want it to design a house for me. I click (or say) "AI, design me a house." The AI creates me a house... But I don't like how it laid out the bathroom on the first story and the bedrooms upstairs. I tell the AI, "Hey AI, can you fix the bathroom and bedrooms please." Ok, now I don't like what it did to the garage... Etc... etc. etc... Next thing I know, I'm essentially designing the house myself and/or verbally "programming" my AI. So this notion that AI will remove programming is false because programming is simply instructions to begin with. That was an extreme simplification and of course AI could AID in the designing of a house, but I hope you get my drift.
Fantastic read by the creator of the Leaf programming language:
While we can safely say that we don't have AI that can visualize code, design user experiences and build a great product, I think automation is definitely going to kill a lot of jobs.
Companies are always looking to cut costs. So, this is something that's already happening. I can think of two examples. CI/CD companies believe they have the tools that engineers can use to deploy their products. What that means is that, you don't need a DevOps engineer at all. Companies like RainforestQA are trying to make some great strides in the software testing industry. If they can perfect their tools, the strength of the testing teams is going to fall by a factor of 10 in the industry.
Coming to the complexity of maintaining these software, at least from my experience it's a one time thing. You are gonna spend a week analyzing a tool before integrating it. Orthogonal to your engineering tasks, you also troubleshoot this software whenever it breaks down or causes trouble.
That being said, I think automation cannot solve everything. Automation with a human touch, that's what we should look to do.
Allow me to tell a story from one of the world's biggest car companies.
Automation gone wrong:
Long long ago, in Japan, at Toyota motors they decided to automate the process of deciding whether or not a particular part of the car (I think it was the engine) was made correctly. This was a process that wad done manually until then. Keep in mind that this happened probably 40 or 50 years ago. So, the parts went through a machine, which had a threshold error factor to decide whether or not a part was made well. One day, the machine had a fault in it and kept rejecting 90% of the items that went through it. Nobody figured out that the parts were made correctly, but it was the machine that had the fault for quite a long time.
Automation with a human touch
To fix the above issue, they started assigning floor managers, who also had to keep a tab on the machine and make sure they were working smoothly without any interruptions. They later called this theory as automation with a human touch. I think we as engineers can extend this concept to our workflows, even in 2017. Automate, by all means. But, automate with a human touch.
Industrial and other tech revolutions, of course, are taking some old fashion jobs but on the same place - creating a lot of new markets and jobs as well, much more. It, indeed, means, that people, as always, just will need to adapt to a new environment and trends. It's a law of nature.
Talking about the AI, first of all, AI won't take much jobs - it will only enhance them, help people with their problems, filter a lot of data, recommend data, recommend decisions and automate a lot of work.
Talking about the AI taking jobs from developers - it's a nonsense and will never happen. Engineers always will be on demand and this demand is already huge and growing. We also have seen how monoliths and old fashion simple architectures evolved into complicated infrastructures and clouds, creating many DevOps jobs. Obviously, this trend will continue growing.
In the future computer systems and infrastructures will be more complicated, will be much bigger, there would be much more data, not mentioning the increase of Earth's population which is expected to be around 10bln in 30 years (35% growth), smart homes, cities, etc.
Stop fearing of AI, it's not a magic box and not a terminator or a Skynet. It won't take anything, it only will change the past and create much more new jobs and opportunities.
Here is a very simple example: How much people you need to take care of a horse? One, may be two. And when horses have been replaced by cars, how many you need different professionals to take care of a car, including those, making supplies, factories assembling them, people teaching you how to drive?
P.S. in your bad example and discussion in your team - "easier for non tech people to make things" is possible only because of those tech people, which is their main job - making hard job, so user would not.
I am a pragmatic person, so to me an AI is just another layer of abstraction.
If I remember correctly there was a famous quote of Gottfried Leibnitz:
It is unworthy of excellent men to lose hours like slaves in the labour of calculation which could safely be relegated to anyone else if machines were used.
This is how I see AI. It's a new tool like the computer and the calculator were before. Or the cloud is now for administrators. We can click and create clusters and networks and systems on demand.
As long as we remain with reduced forms of AI, we could build and create machines - virtual or real - who are complex without having to think about the complexity inside.
Something that cleans up the necessary details for new ideas and our productivity can go through the roof.
I personally like the low level, but if I could tell "my AI": "hey run regression tests for my software and prepare the results so we can have look at it". Creating stress tests on the fly by ML, this a huge potential that's not so far away
Amazing perspectives, still I think this will be a little longer than is hyped today. ML is one of the new cool tools of the future like the cloud was the last 10 years still, from my personal unknowing perspective, I think that's still years to come.
Our knowledge is accumulated over the last thousands of years having a tool at our disposal to give us direct access without specifically knowing what we search just by outlining an idea .... that's such an awesome idea :)
But I'm just speculating over my fantasies :)
Imagine you have codified, or specified each task you do in your company as a defined set of steps, with pre-requisites like the time it takes to carry out the task, the money or materials the task consumes, the amount of pay for the person performing the task - and at the end of the task it outputs either a result, or a usable product. This product could even be used as required input for doing another task.
Now suppose a company like Hashnode codified all of their tasks this way. Certain sets of tasks could be arranged into workflows, and tasks and workflows could be assigned to the human employees. These are the available 'agents' capable of performing tasks.
With a codified organization like this things like inventory tracking, scheduling, billing, etc can be automated because they are predictable.
Let's say some tasks can be outsourced or automated via software, as long as the workflow provides the right inputs (time, money, materials) the other company or software performs the task should be able to provide a usable result or output. It doesn't matter whether the agents performing the task are human employees, other organizations, or software, you can operate your organization running workflows using all types of agents interchangeably for the same tasks.
So back to the question - what if somebody like Hashnode were to write software agents for all of the tasks, for all of their workflow in the organization. 100% automateable.
It would no longer need the human agents to perform tasks, so unless there was a benefit to using humans (time, money, materials) it would make more sense to just have humans running the organization as the only humans in the organization.
They could still be 'employing' other humans if they outsource tasks to other organizations, so having more people running more organizations helps you build up other entrepreneurs.
I can envision a future where a process of codifying tasks, building workflows, and creating the scheduling, billing, and logistics software around those tasks and workflows could pave the road between 100% human-run organizations, allow people to automate gradually piece-by-piece over time, and eventually end up with a 100% automated organization.
What excites me about the idea of codified organizations or workflows is that just like sharing a Sim City save file if you build a city that runs well, others might be able to clone or fork your codified organization like forking a software project. If there were open-source examples for things like companies, charities, schools, hospitals, churches, libraries, stores, etc. you could offer people around the world a lot of value to improve their communities.
The other exciting part of a future like this is for whatever skill set you can perform as a human, there would be work in developing software agents that capture some of that flexibility, and interface well with the inputs and outputs people's organizations require. As long as you are human you should be able to find ways of capturing aspects of that and writing them up as software.
In this kind of a future, humans would be employed:
Todd
Software Security TechLead
Konstantinos Togias
Web applications development
When AI will able to take as input a bunch of legal documents and scripts of interviews with customers, to automatically process them, and to output software that solves the problems posed in the input, adhering to the restrictions and requirements that come of it, then, human software engineers, architects, analysts and developers will not be needed. But I think that this is vary far beyond today's AI's capabilities and I doubt that today's AI techniques (neural nets, machine learning, classification etc) will be proved suitable or enough for this task. The scenario of an AI interacting with users, "reading" legal documents and then training it self by trial and error until it produces the "right" software, does not seem quite realistic to me. But maybe my imagination is short...