Deliberate practice, eliminated deliberately
People like to take the path of least resistance whenever one presents itself.
Programming after the growing immediate usefulness of AI coding assistants is no different.
Why struggle through understanding a problem deeply, carefully developing a solution, and ultimately having to maintain something yourself,
When the alternative is to literally just hit the “TAB” key?
The appearance of the “solve my problem, right now” button is a new form of instant gratification, now in the field of programming.
Using this tool is a choice and a deliberate one at that.
However, each time you do, it’s a trade-off.
A deal with the devil.
Solve your immediate problem right now, but don’t learn anything new, nor practice anything familiar.
It’s convenient, it makes you feel good.
It even allows you to ship things faster.
But it also makes your skills trophy.
Steve Jobs envisioned computers as “bicycles for the mind”.
AI coding assistants are “cars for the mind”.
They take you from A to B, with little effort on your own.
As a result, you’ll slowly use the ability to exert effort in the first place.
And finally, once everything seems difficult, you’re beholden to the tool and what its creators have envisioned for it.
Where this will lead
I’m convinced this development will lead to a very different distribution of skills.
Before the advent of AI-assisted coding, the distribution of skill approached a normal distribution:
Anybody with a laptop could get started with programming, yielding many programmers in total, a smallish amount of beginners, the bulk of the population having an average skill level, and then a few hardened veterans who are experienced and skilled by virtue of having had years and years of practice.
With the incentive for practice eliminated, there will be few people left with the patience and access to opportunities to accumulate the years of experience necessary to become true masters of the skill.
In other words, there will be very few experienced senior engineers left – people who have the ability to see novel solutions, and to implement them.
Brace for impact
This is going to be a problem for everyone, not just current junior or mid-level software engineers.
The whole world runs on software now.
Think of the software:
Hitting “TAB” to solve the problem isn’t going to cut it.
First of all, no current LLM can even comprehend real-life large codebases in detail to understand what the exact problem even is.
Second, even if they could, it would be slow and expensive.
But without having trained the skills of analyzing problems and developing your own solutions, you won’t be in a position to make any meaningful change to these systems.
That’s “press this key and pray” software development.
Experienced software engineers will be in demand again, in those niches at the very least.
Until then, the challenge becomes preserving skills and developing the next generations of developers.
Where we’ve seen this before
This is not a new dynamic.
The popularization of automated high-quality translations has allowed many more people to communicate successfully that otherwise would not have been able to.
Yet using Google Translate is not a substitute for actually knowing a language – when it’s off you’re hopelessly lost if you don’t know the target language at all.
We still have translators, we still have people learning languages.
What’s changed is that language learning has become a choice in many cases.
There are those who persist through the difficulty of learning a language, and there are those who outsource this to a machine.
Only one of these groups reaps great long-term benefits.
Cannot agree more!
However, I have to say, that I like to jump into a code myself and then do some things instead of LLM xD.