So far no AI written any substantial amount of not-completely-trivial code that I'd accept. And amount of time tweaking its output exceeds amount of time I'd spend writing that code.
Programming is a precise work. Every bit matters. One flipped bit could change things drastically.
Current AI works in a kind of imprecise environment. What astonishes me is that GitHub Copilot can't perform arithmetic. For example I just wrote:
// 23.56 * 4 / 3 = 31.413333333333334
// 1280 / 16 * 155 = 24800
Text after `=` was completed by Copilot. You can check with calculator that first result is correct and second result is not correct.I've encountered similar issues with ChatGPT. It tries to work as calculator but it's not reliable.
I do understand that this particular issue could be solved by adding some special handling into that AI. But this highlights general issue: this AI is imprecise.
And this is major discrepancy between current generation of AI and programming.
Drawing images imprecisely is fine. Few weird pixels won't make it or break it. 6 fingers are weird but kind of acceptable. Writing selling texts imprecisely is fine. Writing software programs imprecisely is not fine.
I think that we miss some kind of absolutely precise AI. Built on logic engine. Which will never do false statement. Which will never make false calculation. But yet more powerful than static algorithms.
With that kind of AI we could invent new programming languages which would be extra-high-level yet this AI will be able to optimize those to very fast machine code. That could change programming drastically.
With regards to coding, AI assistants could make an excellent intellisense. That would also be a big help. I don't need the tool writing huge swaths of the code for it to be useful.
What has happened instead is we now have more developers than ever and I would argue the productivity of the average developer is 10x-100x what it was when I first started, thanks to all these tools and technologies. That's how software is eating the world: more people than ever are creating an order of magnitude or more than ever and yet the global backlog of software needing to be written is increasing!
I'm looking forward to using ChatGPT to assist with my own projects. There are so many projects in my backlog and many projects that just never get done because we don't have enough manpower to get the work done and not enough money to hire (and manage) any more developers. In other words, we weren't going to be hiring anyway, yet we're going to be able to get more needed work done.
I realize the software we create will put a lot of people out of work, but at my company a full 40% of the employees are eligible for retirement within the next five years. Right now there's no way we can create enough software to eliminate those positions and there simply isn't enough people in the labor force to replace them. This technology might be the silver bullet we need to solve this problem.
Now the trick will be making sure that we don't over train the bots and end up having a really complex refined description language that the AI interprets to make code, that itself just get boiled down by interpreters and compilers a few times until the CPU finally get's the instructions it actually needs. Hopefully we'll find balance.
I like to describe AI's impact on coding like the invention of the nailgun for carpenters. No ones job is going away, things are going to get more complex and done faster.
In the US as an example; ~150 years ago 80% of the population had to farm to feed the country. Today it's 1%. Yea; '97% of jobs lost!' - but it gave the workforce the power/freedom to build other new/amazing things also.
I know that's a trite example; but I like it as it makes it clear that the status quo is not an immutable (or entirely positive) thing.
The flip side of efficiency if the workforce headcount remains constant is over capacity, which is a downward force on earning potential.
In the future it will be even easier.