Suppose we were in the business of making quilts. For many years I practiced sewing them by hand. I learned about different kinds of thread, poked myself many times, and produced some ugly ones at first which got better over time. I produced quite a few quilts by hand - somewhere around 250K lines by my estimates.
Now we suddenly have machines that make the quilts. Not just one that makes hand-sewing a little faster, but it makes the whole thing from start to finish. The results are basically just as good, and sometimes even better, than what I could do myself. And they do it faster and cheaper than team of 20 hand seamsters.
The previous generation machines could make the quilts really fast, but the results simply weren't as good as a proper hand-made quilt. Now, the customer can't even tell the difference. And, if it turns out they didn't like the color, the machines can turnaround fundamental changes like that with unbelivable speed.
When AI coding agents started writing better code than I could myself, I found myself in a sort of existential crisis.
Not because I was worried that AI would take my job - that's inevitable in due time. More like I've spent the past 15+ years of my life typing loops, functions, and classes into an editor almost daily.
And now, suddenly, I don't do those things anymore, yet I yield an order of magnitude more code than before.
It's like how I used to do math regularly in school. Then one day, I graduated and haven't done a math problem since. I still know about cosines and derivatives, but I couldn't write even a tenth of the proofs I used to anymore.
Skills atrophy when you stop using them. I'm not as quick to recall stdlib functions or write Rust macros, which feels kind of sad. But what I've gained is speed unimaginable in a previous life. It's simply no longer efficient for me to write most code by hand.
Is programming only about the end result or does the journey matter too? What if the thing I actually liked about programming in the first place was putting on the headphones, designing some gnarly class hierarchies, and debugging my idiotic mistakes for 11 hours?
If my reason for programming was purely mechanical "problem solving", then I'd probably just do Leetcode problems all day. Therefore, the products of programming must be important too.
So the reason I program is: design.
I simply like creating things. Hardware people are limited by what's possible by the laws of Physics. I love software because my imagination is the limit - I get to make the laws of Physics.
Prior to AI, I always had more imagination than implementation capability. Now the bottleneck is higher-level decision making. I still care about the shape of the code, but I don't worry about the details anymore, just like an abstraction.
That frees me up to think more about the overall architecture of the system - which is where my attention is better spent anyway.



