I don't regard programming as merely the act of outputing code. Planning, architecting, having a high level overview, keeping the objective in focus also matters.
Even if we regard programming as just writing code, we have to ask ourselves why we do it.
We plant cereals to be able to eat. At first we used some primitive stone tools to dig the fields. Then we used bronze tools, then iron tools. Then we employed horses to plough the fields more efficiently. Then we used tractors.
Our goal was to eat, not to plough the fields.
Many objects are mass produced now while they were the craft of the artisans centuries ago. We still have craftsmen who enjoy doing things by hand and whose products command a big premium over mass market products.
I don't have an issue if most of the code will be written by AI tools, provided that code is efficient and does exactly what we need. We will still have to manage and verify those tools, and to do that we will still have to understand the whole stack from the very bottom - digital gates and circuits to the highest abstractions.
AI is just another tool in the toolbox. Some carpenters like to use very simple hand tools while other swear by the most modern ones like CNC.
Many of us do write code for fun, but that results in a skewed perspective where we don’t realize how inaccessible it is for most people. Programmers are providers of expensive professional services and only businesses that spread the costs over many customers can afford us.
So if anything, these new tools will make some kinds of bespoke software development more accessible to people who couldn’t afford professional help before.
Although, most people don’t need to write new code at all. Using either free software or buying off-the-shelf software (such as from an app store) works fine for most people in most situations. Personal, customized software is a niche.
So much code I have written and worked with is either CRUD or compatibility layers for un/under-documented formats.
It's as of most of the industry are plumbers, but we are mining and fabricating the materials for the pipes, and digging trenches to and from every residence using completely different pipes and designs for every. single. connection.
But it takes a while because the wheel has to be reinvented many times before people give up on improving it. When a new language comes along, a lot of stuff gets reimplemented. There’s plenty of churn, but the tools do get better.
I find the opportunity for improvement exciting, and I'm optimistic for the future.
Like, statistically most software I've seen written, didn't need to be done. There were better ways, or it was already solved, and it was a knowledge or experience gap, or often a not invented here syndrome.
The main thing that frustrates me these days, is trying to do things better doesn't generally align with the quarterly mentality.
The bathwater of economics will surely dirty, but you don't need to throw out the baby of hobbies with it.
Don't get me wrong, it lets me be more productive sometimes but people that think the days of humans programming computers are numbered have a very rosy (and naive) view of the software engineering world, in my opinion.
Even before AI really took of that was an experience many developers, including me, had. Outsourcing has taken over much of the industry. If you work in the west, there is a good probability that a large part of your work is managing remote teams, often in India or other low cost countries.
What AI could change is either reducing the value of outsourcing or make software development so accessible that managing the outsourcing becomes unnecessary.
Either way, I do believe that Software Developers are here to stay. They won't be writing much code in any case. A software developer in the US costs 100k a year and writing software simply will never again be worth 100k year. There are people and programs who are much cheaper.
Forty-six percent of the global population has never hired a human programmer either because a good human programmer costs more than $5 a day{{citation needed}}.
It is also useful for learning from independent code snippets, for e.g., learning a new API.