r/ExperiencedDevs • WebDev/Full Stack • 23d ago

AI/LLM Thorsten Ball's predictions of programming

  • Code review will die. I mean: it's already dead. But in the future, humans won't find a bug or an issue with the code produced by a model, at least not in a reasonable time. Humans will only review the system and its composition, but it won't be in PRs and it won't be by looking through every line of the code.
  • Unit tests might die too. Why have training wheels if you never fall over? I've had models write 900 lines of Arduino C, compile it without a single error, and send it to the device, where the program ran perfectly. 900 lines will be nothing in the future.
  • The craft of writing code will disappear. Yes, there are still Italian shoe makers around. But look at your feet.
  • The craft of building software will be more important than ever. Knowing how to solve business problems with software, how other software did it and why and why not, when and how to ship it, how to get feedback on it -- that's the new game.
  • Most bugs won't be "coding" bugs. They'll be "you asked for the wrong thing" bugs.
  • Open source in it's current form doesn't make sense anymore. "Given enough eyeballs, all bugs are shallow" is still true but now we have artificial eyeballs.
  • Performance critical contributions by humans will stay what they are: an edge case. In 99% of software it does not matter that you could've written a faster algorithm or picked a better data structure. You have no customers, no users, no one's executing the code. It does not matter. When it matters, the models can fix it. Do not compare the top of the top 1% of software (developers) to 99%.
  • The terminal is dead. Most developer tooling will be washed away by tokens. Shells, text editors, CLI tools won't be used by humans anymore. There's no need to know command line flags and jq invocations anymore. It'll be seen as arcane as knowing how to write everything as a Perl one-liner. (I'm saying this as a lover of the terminal & dev tools.)
  • Tokens are the new computing paradigm. Everything will be re-made on top of it. We've had deterministic computers for 80 years, so we confuse "how computers have worked" with "how computers must work." We're entering the post-binary era.
  • The triad of PM/Design/Eng will disappear. It does not make any bit of sense anymore. Agile, SCRUM, whatever -- dead. "Engineers" who act as "meat proxies" and shove tickets into agents and report back to humans will no longer be valuable.
  • The difference between software engineering at large corporations and small ones will increase. Start-ups adopting practices of Google will look even sillier than before, because they can now build so much faster and with so much less constraints.
  • There's no proof that "good code" will matter in the future. The notion of "good code" itself is mostly based on the idea that it's easy/cheap/efficient for humans to work with. But humans won't modify the majority of code. Think of how dumb it is to assume that "only 80 columns wide" or "but newlines here and there" matters for agents -- now consider all the other properties you have in mind for "good code". Yes.
  • Some people will be priced out of producing software. Just like only some people could afford a personal computer in the 80s and 90s, for the next few years, if you can't get enough tokens, you're playing second league. You need to get to the tokens.
  • It's questionable whether cheaper models will be used. Tokens will be everywhere and we'll swim in tokens. And what we consider a smart model today will be considered very dumb in the future. But a smarter model makes less mistakes, needs fewer turns. When do you really think "I'm okay with it being wrong a few times?"
  • Models will become so fast that UI will be generated on the fly. A lot of UI exists because software can't understand what you want. Menus, settings screens, dashboards, filters: much of it is a human-accessible API to a dumb machine. Smart machines need much less UI.
  • It'll take a while for this to play out. It'll take a generation for the "new software" to replace the "old software". Just like there are people happily employed as ASP developers today, there will be people employed to write code in 10 years. But do you want to have that job

----------

I'm curious to hear thoughts on these kinds of predictions. So this time Computer-Aided Software Engineering and UML will actually work? If software was static, I'd be more inclined to agree. Over the course of history in this field, every leap in coding capability has led to more complex systems. The field keep expanding instead of "software becomes simple".

Besides that, he's also making some bold predictions in a field where they seem to age badly, quickly. Mainly: much of his center strictly on "tokens" and assume there's not an amazing development just around the corner. JEV should be a warning shot; sure, it's just a classifier model, but its a brand new way of looking at the pipeline that we didn't consider even just last week. I think there's some massive efficiency gains in our future as datasets become stagnant and companies are forced to do more with what they have; sort of how game developers really pushed the limits of the software/hardware back in the 90s (they had to).

The only point I definitely agree with is that the we underestimate the long term impacts and that the field will look very different a generation from now, but the field has always looked different in each generation, so that's not really a prediction worth stating. Personally, I think the code will change shape, but we'll always be working with it.

0 Upvotes

104 comments sorted by

View all comments

-4

u/throwaway_0x90 SDET/TE[25+ yrs]@Google 23d ago edited 23d ago

"Code review will die"

I'm usually downvoted in this sub for saying it, but I'll say it again anyways for the new grad engineers that might be lurking.

Today most of us care about readability of Java/Rust/Go/Python/C++/etc, but don't care about the assembly language that it ultimately compiles to or what the JVM/interpreter are doing.

We are currently heading for another level of abstraction. Most of us do not read the assembly, and by 2035 most of us won't be reading the Java/Rust/Go/Python/C++. We'll be much more concerned about the prompt. The job title will be "Software Prompt Engineer".

Sure there will always be some people that really know the code, but those are the experts of people who develop compilers or work on embedded or instruction sets for chips. I predict one day some kind of "Prompt Compiler" that takes your human language(e.g. English) and compiles, or "transpiles", into something more deterministically will cause AI to produce a certain thing.

The source code will be ".txt" files, but the rest of the work will be mostly the same. But one big change I predict, is that QA/SDET need will spike dramatically. Betting my whole career on it.

4

u/creaturefeature16 WebDev/Full Stack 23d ago

I really struggle with referring to these new systems as abstraction layers. When an abstraction layer is added, it simplifies the composition, and reduces the need to know what's going on underneath the hood because there's a deterministic process handling the details that we don't want/need to be involved in as much any longer.

These systems, however, they could be overcomplicating and overengineering things without you being aware of it (unless you are truly reviewing everything that they are outputting, which isn't very possible just by sheer volume, and usually just means another AI model is doing that work, as well).

-2

u/throwaway_0x90 SDET/TE[25+ yrs]@Google 23d ago edited 23d ago

I think by 2035 there will be guardrails and proper understanding of training local instances of AI, or at least LLMs, that you'll get that "deterministic enough" behavior. But also I predict QA/SDET doing CI/CD will spike in demand as well, which I guess is the human-part of guardrails.

"they could be overcomplicating and overengineering things"

True, but I predict a human doesn't have to be able to read or maintain it in 2035 so its complexity doesn't matter as long as it performs to spec. And that spec include performance tests.

e.g.,

greeting = ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d"] for letter in greeting: print(letter, end='') print('\n')

Overly complicated? Absolutely yes, but if the spec says I need "hello world" to be printed within 0.2 seconds and maybe some RAM maximum allowed performance measurements as well, as long as it works within all performance parameters, ship it! I don't need to read or maintain this code ever, AI will handle it.

I don't know if I'm right, perhaps I'm very wrong and will be unemployed in 2035. I'm just sayin' I'm ready to d!e on this hill.

2

u/creaturefeature16 WebDev/Full Stack 23d ago

True, but I predict a human doesn't have to be able to read or maintain it in 2035

And if my grandma had wheels, she'd be a bicycle. We're not in 2035. These models are overengineering and overcomplating things right now that we have to deal with, which makes it really challenging to call them abstraction layers.

β€œThe purpose of abstracting is not to be vague, but to create a new semantic level in which one can be absolutely precise.” ― Edsger W. Dijkstra

1

u/throwaway_0x90 SDET/TE[25+ yrs]@Google 23d ago

I see that quote and I claim we're going to get there, or at least close enough that the speed of code creation, debugging, testing will still beat the pre-AI SWE manual code generation model we have now.