Refactoring

Refactoring

Share this post

Refactoring
Refactoring
Predictions about AI ๐Ÿ”ฎ
Copy link
Facebook
Email
Notes
More

Predictions about AI ๐Ÿ”ฎ

Looking at where we are, computing the trajectory, and thinking about the future of software development

Luca Rossi's avatar
Luca Rossi
Sep 25, 2024
โˆ™ Paid
49

Share this post

Refactoring
Refactoring
Predictions about AI ๐Ÿ”ฎ
Copy link
Facebook
Email
Notes
More
4
5
Share
Upgrade to paid to play voiceover

Over the past month I wrote a lot of code.

This alone is a surprise, given my current heightened status as a full-time newsletter writer.

The second surprise though, is that I actually wrote very little code myself, and intentionally let AI do 90% of the work. I forced myself to do so, by picking a language (Swift) I donโ€™t even know the syntax of.

But why is that?

One month ago I watched this video of an 8-year-old girl coding a Harry Potter chatbot from scratch. The girl uses Cursor and completely trusts the AI to do the job โ€” she gives incremental instructions in chat, and the AI updates the code every time.

I had used AI for coding in the past, but not that way. What I had done up to that point was AI-assisted development, while the girl was doing AI-driven development:

  • AI-assisted development โ€” means that, by default, I write the code myself. AI jumps in when I need help or to do obvious chores.

  • AI-driven development โ€” means that, by default, AI writes the code. I jump in to correct the issues.

Should we switch to AI-driven? Does AI-driven even work?

I canโ€™t say for sure, because a lot depends on your codebase and what you need to do with it, but I can tell you there is a lot you can accomplish by just trusting AI to write all the code.

Modern models (e.g. Claude 3.5) are able to incorporate a ton of context, and they rarely make mistakes. When they do, it is most often not on pure logic: they get confused on API versions, or they default to build instead of buy even when the latter is obvious.

All in all this is forgivable, and especially after a while that you work with them, you start smelling situations where they can do wrong, and easily intervene.

Of course my experience is limited: these days I am only a writer and I donโ€™t have a giant, grizzled codebase anymore on which to do deep testing, so in the past two weeks I also talked with as many managers and engineers as I could, to figure out how they are using AI on their teams.

I think our respective experiences complement each other well, and so do our biases:

  • I may be eager to try new things, but can only do so on little more than toy projects.

  • They may have full, multi-year projects to try on, but more inertia towards changing how people work.

So, this article contains my full thoughts about using AI for coding, and a list of ten predictions about where AI will take us.

I will spoiler the conclusion and say that I am an AI-optimist. There is a future where AI 1) improves how we write code (more on that later), and 2) improves the quality of our jobs, taking away most chores and letting us focus on the more creative and rewarding parts.

But I also believe this will not happen automagically โ€” in other words, itโ€™s not the only possible future. We will need to be intentional in creating workflows that leverage the best of AI + the best of humans, sometimes at the expense of some short-term gains.

So here is the agenda for today:

  1. ๐Ÿ”ฎย Predictions โ€” my 10 best predictions about how AI is going to change software engineering. Mostly good, and a few bad:

    1. Most engineers will become full-stack

    2. Product engineers will become mainstream

    3. Niche languages will become more popular

    4. We will write code with fewer dependencies

    5. AI-generated code is going to be tracked

    6. We will write more docs

    7. Static analysis is going to be huge

    8. AI will successfully scale to large codebases

    9. Software innovation will slow down

    10. It will be hard for junior developers

  2. ๐Ÿค–ย How to leverage AI as an engineer โ€” whatโ€™s the right way to approach this tech in a way that your skills and your career benefit from it, instead of the opposite!

  3. ๐Ÿ”งย The best tools right now โ€” my favorite AI tools as of today. Spoiler: copilot is not there!

Letโ€™s dive in, starting with predictions!


1) Most engineers will become full-stack

Over the past 15 years, web technology has become more complex, instead of the opposite.

DHHโ€™s thesisโ€”which I largely agree withโ€”is that this happened because we brought in a lot of layering from big tech. In fact, a lot of the most relevant open source work of recent years comes from there.

Tech layering led to job layering, especially creating a big divide between backend and frontend engineering.

I believe we will spend the next decade undoing this. Signs were already there, with the surprising resurgence of Ruby on Rails, and JS frameworks becoming increasingly full-stack.

AI will only accelerate this trend because, if anything, it gives developers basic proficiency in any language/piece of tech. Think of all those features that are, like, 80% frontend + 20% backend โ€” or vice versa. In many cases, these can now be easily owned by a single guy.

And the trend will only accelerate, rewarding engineers who can own features from top to bottom. In other words, product engineers ๐Ÿ‘‡

2) Product engineers will become mainstream

As we discussed in recent articles, this doesnโ€™t only apply to code.

AI + good tooling reduces engineersโ€™ cognitive load, opening up avenues for taking on more responsibilities. One angle is, of course, more coding (== full-stack), and another one is going after product.

This is probably going to take more time than the full-stack prediction, but to me product engineering convincingly looks like the future of software engineering ๐Ÿ‘‡

Refactoring
How to Become a Product Engineer ๐ŸŽจ
A couple of months ago, we explored how engineering management is changing, discussing the trend towards more technical managers and more autonomous engineersโ€ฆ
Read more
8 months ago ยท 75 likes ยท Luca Rossi and Rasmus Makwarth

3) Niche languages will become more popular

Another byproduct of this universal basic proficiency, is that niche languages and tech stacks become easier to pick up.

This is important because, instead, we spent the last decade consolidating most web dev around very few choices, making suboptimal calls to prioritize reusing the same skills, vs picking the right tool for the job.

Nobody thinks Electron apps feel or work better than native ones, but Electron still dominates because 1) you can write once and run everywhere, and 2) people prefer to write (e.g.) React instead of Swift.

Or, Rust is widely admired for its performance, memory safety, and concurrency. But even when these features matter, how many teams are actually learning Rust vs lazily creating yet another Node service?

AI drastically reduces the barrier to entry for any language and tech. This can do wonders to the diversity of our stacks, which, in turn, would improve the quality of our apps.

4) Fewer dependencies

You may have noticed that AI tends to write simple things from scratch, as opposed to looking for a package.

I donโ€™t know you, but it is so refreshing to cut out a lot of trivial packages and partially undo the node_modules memes ๐Ÿ‘‡

In many cases, AI even exaggerates, and itโ€™s up to humans to make good buy-vs-build calls, but thatโ€™s fine.

Dependencies are important but there is always a sneaky tradeoff in terms of maintenance, vulnerabilities, and tech debt. AI makes it easier to roll your own things when you canโ€™t find something that fits, or it is simply not worth it โ€” and thatโ€™s precious.

5) AI-generated code is going to be tracked

This post is for paid subscribers

Already a paid subscriber? Sign in
ยฉ 2025 Refactoring ETS
Privacy โˆ™ Terms โˆ™ Collection notice
Start writingGet the app
Substack is the home for great culture

Share

Copy link
Facebook
Email
Notes
More