Writing software is weird now. Most engineers I know are using LLM-assisted coding tools in some capacity. We can debate the pros and cons of whether this practice is a good idea and the impact it’s going to have on us and the software create, but for now, it is a reality.
The hard parts remain
The parts of software engineering that have gone away are the straightforward parts. The parts where you scaffold a new CRUD endpoint, add a new database table, or write a mapper between an external and internal representation of some data. The LLM is usually done with about as fast and you can point it at the problem. So what does that leave?
The hard parts. The time consuming, grueling bugs. The deep dives into memory leaks. Really any and everything that the LLM can’t one shot or that you can’t figure out a way to decompose into a series of tasks it can one shot.
Now that LLMs make so many things easy in software engineering, the hard and confusing parts are the only parts that are left for us humans to do.
I’ve found this shift to be exhilarating. It’s also exhausting. I now spend almost no time on problems I know how to solve.
If I know what I am doing, I usually can describe to an LLM what I need it to do and it does it. This means I now spend nearly all of my time somehow out of my depth, stretched.
I’ve never experimented so much, tried so many new ideas, or built so many toy projects. I’ve written more prose and software in each of past 2 years individually than the prior 9 combined, mostly just because I’ve done more things, which made me think, which made me write which made me think more.
What I miss
Given all this experimentation, I think my one complaint is that I haven’t built up much new competence in any particular programming language. I’ve become more familiar with frameworks like Next.js, Remix/React Router, Electron and Xcode, but I wouldn’t say I’m particularly comfortable writing Typescript or Swift, especially without an LLM.
Lately, I’ve worked a lot in Swift, using a combination of Cursor, Windsurf, and Claude Code to build my project. I’ve barely touched code at all. I’m deeply involved in the project structure. I’ve throw out 90%+ of the code the models have generated. I’ve glanced at a lot of Swift code.
I know Swift imports augment the namespace.
That HStack
, VStack
, and ZStack
are the primitives of SwiftUI layouts.
I know how to add external dependencies to a Swift project and use them.
But I definitely don’t know Swift.
I’ve hardly written a line of Swift.
I haven’t needed to write Swift to accomplish my aims with this project, but I would like to know Swift and I think a better understanding of Swift would help me do a better job building this project.
But one only has so much time. For now, I’d rather work on my ideas than dedicate to learning Swift.