I was recently asked how coding with AI feels different from the pre-AI era, and I’ve been reflecting on this question.

Depending on who you ask, you will get different answers as to whether AI coding actually increases the efficiency and effectiveness of coding. You will get some people who argue that it is completely transformative, and you will get others who argue that there is zero scientific evidence to suggest that it has made any difference in efficiency.

I can only speak to my own experience, and it may not reflect others’. But to be clear, my personal experience is that it has completely transformed how I work day-to-day. In this post, I’m going to try to explain more concretely what I mean by that.

You can sort of imagine building anything with software or, more generally, as a pursuit of a broad vision, sort of like a mountainous hike through forests, rivers, ravines, cliffs, mountains, etc. You get the idea.

You know sort of where you want to go, and along the way, there are some known obstacles, but as you progress in your journey, a whole bunch of obstacles present themselves which you didn’t see and which may or may not be as easy to surpass as you initially anticipated. Maybe that river that you had seen at the planning stage, you thought would be easier to cross, but actually it’s much deeper than you first appreciated. Or that cliff that you planned on climbing actually hasn’t got any good footholds, which you couldn’t quite see from your planning position. The same can be said about particular technical challenges that you only really know how hard they are until you really start trying to build solutions for them.

In many ways, this is kind of how building software in the pre-AI era felt. You are pretty parochial, and that’s kind of the resolution and surroundings you are in; your goal is to climb the mountain. You may need to solve three or four big technical hurdles together, but that’s the resolution you are operating at.

Now compare the experience of coding in the post-AI era. Using our analogy, we’d compare the difference in resolution to now being able to peer into distant horizons and mountain ranges. Essentially, having flight powers to jump and zoom over cliffs, ravines, waterfalls, rivers, attach to steep cliff faces and then jump hundreds of meters all the way to the cliff of another mountain. You basically have superhuman powers compared to things that you could do before, and the equivalent in our analogy would be flying and zooming around mountain ranges. You don’t even think about the minimal lower-resolution tasks of navigating cliffs and rocks; you are just flying over them now. The equivalent would be considering authentication, permissions, database configuration, endpoint design, and test creation. All those things can now appear at a keystroke. It means you can operate at a much higher resolution and focus on the mountain regions you are aiming for. It’s truly a remarkable difference in experience.

I remember when I first started coding 15 years ago. I would easily spend a whole day trying to fix a particular error message and feel horribly frustrated by the end of it. This would be the equivalent of not being able to jump over a river or something like that after spending all day trying to cross it. Nowadays, this would be almost unheard of. You can implement things in minutes that, 10 years ago, would have taken experts weeks to do. And if you really want to understand and make sure you understand how it all works (which you should), you can ask questions until you understand the internals. This would have been impossible to imagine before

It is still possible to fail, of course, in this new era. You can easily vibe-code something you don’t really understand, have it not work, and then spend hours trying to figure out why it doesn’t work, only to fail, so you end up giving up and starting all over again. But in our analogy, these failures feel like you tried to fly a mile and parachute off a mountain, only to fail and fall off, and you need to adjust your plan and try again. Failures happen, but at a much higher level than before, so they somehow feel a bit less discouraging.

What I think this means is that instead of all of us thinking about how we’re going to cross rivers, climb cliffs, and climb mountains, we should be thinking about how to jump between mountains, fly into the air, or travel to distant planets. Air should make us feel all the more ambitious about our intellectual pursuits. We can now achieve much more when we set our minds to things, and we should all be aiming higher.