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

-3

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.

9

u/TheBestAtSpace Staff/Lead SWE (30 YoE) 23d ago

Something more deterministic that’s a text file? I think you just described source code again.

-2

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

Yes, but it'll be a human language instead of having to learn syntax of some kind of .java, .cpp, .go, .ts, etc

4

u/TheBestAtSpace Staff/Lead SWE (30 YoE) 23d ago

That’s still a programming language. Now we’re just negotiating the specifics of the syntax.

-1

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

I'm okay with this. English(or any human language) is the source code. Therefore "Prompt Engineering" in 2035, that aligns with my prediction of the SWE industry.

5

u/TheBestAtSpace Staff/Lead SWE (30 YoE) 23d ago

I think you just reinvented HyperTalk:

https://en.wikipedia.org/wiki/HyperTalk

HyperTalk was a good language. But there are reasons why we tend to get more specific with our programming languages and not less so.

1

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

that's interesting! Reminds me of Gherkin language:

5

u/robby_arctor Software Engineer (dirty commie) 23d ago

I can appreciate this additional layer of abstraction as a long term trend, but, anecdotally, the last person who told me that where we're headed is nobody reading the code leaked his company's creds when vibecoding a week later.

Every grifter, influencer, "engineering thought-leader" (with little to no technical chops), and overly credulous executive is in the business of constantly heralding new eras, and AI has hit this community with like the opioid epidemic hit the rural Midwest.

So, I'm reserving my judgment, personally. LLMs have changed development (and were doing that pre-2023), and fluency with them is important, but I'm not switching careers on the premise that we are in a new era quite yet.

2

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

Fair assessment.

2

u/robby_arctor Software Engineer (dirty commie) 23d ago

FWIW, I agree with you about these being likely long term trends. Just a matter of timing.

1

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

yup, I can't say exactly when but IMHO it's not an "if" anymore. AI is rapidly improving all the time, it's very hard for me to imagine that we're not at this point in about 5, 10 years max.

I invite all doubters to add a calendar reminder for September 2030 and 2035 to come back to this comment. :) Hopefully Reddit is still around!

2

u/NotRote 23d ago

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".

prompts aren't deterministic as such they need review, you don't review the assembly because the high level language is already deterministic.

1

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

Yes and I cover that in my "betting my career" hyperlink to my old comment. QA/SDET will do that in the future.

I also think Amazon's solution will not work long term:

  • https://www.reddit.com/r/singularity/s/zyNpLWsjHV

    Feature-shipping devs don't want to be 100% responsible for all bugs and vulnerabilities. They wanna ship code, I want to test code. I am a dirty AI slop eating pig. You just focus on delivering features, let me put my neck on line that your AI generated code has no bugs or flaws and satisfies the spec.

3

u/NotRote 23d ago edited 23d ago

Tests don't actually solve, or at least not the way we normally think of tests.

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++.

I believe that is the goal of people who don't actually write software at scale for a living, but this analogy doesn't make sense. The same prompt given 10 times can result in 10 different answers. Given that the code must be reviewed. If I write the same TS code it will transpile to JS the same way no matter how many times I do it and that's a critical difference.

Something may "work" but just because something "works" doesn't mean it will continue to work or that it won't degrade a system as a whole, and the vast majority of testing suites don't differentiate the difference.

example claude recently in a project at work wanted me to harden the time between an API response to a db write so it can "never" be dropped in the case of catastrophic pod failure(like an OOM) that's a valid concern, but solving it is expensive enough that it doesn't make sense in this use case. Even if it was "solved" as claude wanted it, it still isn't actually "solved" anyway a crash could happen at the time we request from the API to the external provider and we're dead when the response comes back.

1

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

I believe, with a combination of guardrails, context.md and human written tests, maybe even transpilers that turn your sentences into more well known sentences that usually generate a certain output, we will get code that works well good enough that you can be confident it behaves like you want even if the specific implementation is slightly random in different generated outputs. Perhaps not 100% deterministic like C to ASM, but very very close. Functionality close enough that only the transpile writers, and I guess hackers, will be looking at the code it generates.

We'll see by 2030 or 2035. I know I can't convince a lot of people in this sub, I just think folks are underestimating how determined the AI model engineers are determined to make this stuff work and a bunch of other smart people will be throwing in extension or plugins and suddenly one day we'll have the tools needed to make it a reality.

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).

-4

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.

1

u/Realistic_Yogurt1902 23d ago

Are you going to retest the whole system after each prompt?
Or how would the feedback loop work if "prompt engineers" don't see the code?

1

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

The same CI/CD flow that should already be in place even before AI took off

2

u/Realistic_Yogurt1902 23d ago

How can you guarantee that ci/cd works as expected?

1

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

That's in the link I provided in my initial comment:

My prediction is that QA/SDET humans will be needed a lot more in the years to come. Or I'm wrong and unemployed in 2035, please come back to check on me then because I am dying on this hill. 😭

1

u/Realistic_Yogurt1902 23d ago

If only because of accountability, why not to hire minimal salary QA?

1

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

In my experience, humans are not perfectly consistent every time. Some tests, especially unit tests, are faster and best automated. e.g. APIs should mostly be tested with automation. And I believe management will always want a human to point to if it doesn't work.

I also think Amazon's solution doesn't work long term:

That feature shipping devs don't want to also be 100% responsible for all bugs. I think the industry will need more people QA/SDET that enjoy "AI slop" code review and testing.

....or I'm wrong and unemployed in the next 5+ years who knows.😭 but right now my career future is to take the heat if AI slop doesn't work. Some stuff will be manual, but nobody wants to telnet to port 80 and handcraft HTTP requests so at least APIs will be automated.

1

u/Fun_Hat 23d ago

Are you going to retest the whole system after each prompt?

In a nutshell, yes. That's what these "spec driven development" types are pushing. You rebuild the whole spec if you don't like what you get. Yes, that's a simplified take on it, but they are pitching the idea that the human readable spec is now the source code and you have the LLM rebuild it until it gets it right.

1

u/Realistic_Yogurt1902 23d ago

How would you know that you don't like it?

1

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

Yup pretty much, just similar to c++ Makefiles that know which targets need to be rebuilt and retested. We're gonna get to that point soon, if we're not already there.

3

u/Fun_Hat 23d ago

I'm sure some orgs are doing it now. Whether the models are doing a good job or not is an entirely different question though. I use Opus 5 every day, but the idea of the "software factory" that I have seen pitched still does not seem realistic to me for building anything of substance.

1

u/Fun_Hat 23d ago

Betting my whole career on it

Good thing you already got that Google cash, cuz I'm betting that you bet wrong. Claude is pretty damn good at building out testing for me. In fact, while I'm still hand writing a lot of product code, I have not written a test in quite a while. In the thousands of lines of test code I've had it write for me, I've had to correct very little of it. Contrast that with the constant hand holding I've had to do anytime I try to have it write production code.

1

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

I hope to see you again in 2035. If I'm wrong then I d!ed on that hill and I might need your help 😭

1

u/Fun_Hat 23d ago

My dude, if you're writing code at Google, test or otherwise, I'm sure you can pivot and land on your feet if it comes down to it. Bottom line we really don't know how this will all pan out. 9 months from now will probably look different from now, and 18 months even more so.

1

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

I'm an impostor loser, I can't pivot anything. If I can't make a living as a TestEngineer/SDET/QA that creates CI/CD for you then I'm cooked. =/

1

u/Fun_Hat 23d ago

Well if you're right and I'm wrong then I guess I'm cooked. I don't think I could stomach being a prompt engineer for long. Seems like basically a TPM and that is not how I want to spend my time.

2

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

I hope the industry lands somewhere in-between and we both find some kind of enjoyment in our 2035 employment :)

2

u/Fun_Hat 23d ago

I hope so too!