Once AI coding agents started writing better code than I could produce myself, I found myself in a sort of existential crisis.
Not because I was worried that AI would take my job - that will surely happen regardless in due time. More like I've spent the past 15+ years of my life writing loops, functions, and classes into an editor almost every day.
And now, suddenly, I don't do those things anymore, yet I yield an order of magnitude more code than before.
Won't my programming skills atrophy if I'm not actually using them anymore? When the models are unavailable, do I go back to trad programming or do I sheepishly wait for them to come back (or for my limit to reset)?
It reminds me of how I used to do math regularly in school. Then one day, I graduated and I haven't done a math problem since. I still know about cosines and derivatives, but I couldn't write even half of the proofs and equations I used to anymore.
After college, I was able to devote my full attention to programming which I felt was a win. I lost my edge in math, but I got really good at writing code by hand.
Here are two aphorisms to remember:
- Use it or lose it
- For something to live, something must die
I may not be as quick to recall stdlib functions or type out for loops
anymore, but what I've gained is superhuman speed.
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 wicked class hierarchies, and debugging my idiotic mistakes for 11 hours?
At least I have an answer to that: 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 answer to why I program is: design.
I simply like creating cools things. Hardware people are limited by what's possible by the laws of Physics. I love software because my imagination is the limit - I make the laws of Physics.
Prior to AI, I always had more imagination than implementation capability. Now the bottleneck is my decision making. I still care about the shape of the code, but I'm certainly not reading every line. There are details in there that I simply don't have to worry about anymore, just like an abstraction.
That frees me up to think more about the overall design of the system - which is where my attention is better spent.



